]> git.ipfire.org Git - people/arne_f/kernel.git/blame - arch/powerpc/include/asm/setup.h
powerpc/fsl: Add infrastructure to fixup branch predictor flush
[people/arne_f/kernel.git] / arch / powerpc / include / asm / setup.h
CommitLineData
560285cd
AB
1#ifndef _ASM_POWERPC_SETUP_H
2#define _ASM_POWERPC_SETUP_H
3
4#include <uapi/asm/setup.h>
5
6#ifndef __ASSEMBLY__
7extern void ppc_printk_progress(char *s, unsigned short hex);
8
9extern unsigned int rtas_data;
560285cd 10extern unsigned long long memory_limit;
1c38a84d 11extern bool init_mem_is_free;
560285cd
AB
12extern unsigned long klimit;
13extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask);
14
560285cd
AB
15struct device_node;
16extern void note_scsi_host(struct device_node *, void *);
17
18/* Used in very early kernel initialization. */
19extern unsigned long reloc_offset(void);
20extern unsigned long add_reloc_offset(unsigned long);
21extern void reloc_got2(unsigned long);
22
23#define PTRRELOC(x) ((typeof(x)) add_reloc_offset((unsigned long)(x)))
24
b88c4767 25void check_for_initrd(void);
10239733 26void initmem_init(void);
b88c4767 27void setup_panic(void);
b71d47c1 28#define ARCH_PANIC_TIMEOUT 180
b88c4767 29
d3cbff1b
BH
30#ifdef CONFIG_PPC_PSERIES
31extern void pseries_enable_reloc_on_exc(void);
32extern void pseries_disable_reloc_on_exc(void);
33extern void pseries_big_endian_exceptions(void);
34extern void pseries_little_endian_exceptions(void);
35#else
36static inline void pseries_enable_reloc_on_exc(void) {}
37static inline void pseries_disable_reloc_on_exc(void) {}
38static inline void pseries_big_endian_exceptions(void) {}
39static inline void pseries_little_endian_exceptions(void) {}
40#endif /* CONFIG_PPC_PSERIES */
41
c3b82ebe
ME
42void rfi_flush_enable(bool enable);
43
44/* These are bit flags */
45enum l1d_flush_type {
46 L1D_FLUSH_NONE = 0x1,
47 L1D_FLUSH_FALLBACK = 0x2,
48 L1D_FLUSH_ORI = 0x4,
49 L1D_FLUSH_MTTRIG = 0x8,
50};
51
5e9ea71d 52void setup_rfi_flush(enum l1d_flush_type, bool enable);
c3b82ebe 53void do_rfi_flush_fixups(enum l1d_flush_type types);
37336b68 54#ifdef CONFIG_PPC_BARRIER_NOSPEC
e1217b4a 55void setup_barrier_nospec(void);
37336b68
ME
56#else
57static inline void setup_barrier_nospec(void) { };
58#endif
f3286f1a 59void do_barrier_nospec_fixups(bool enable);
73b0f626
MS
60extern bool barrier_nospec_enabled;
61
2f8703f2 62#ifdef CONFIG_PPC_BARRIER_NOSPEC
73b0f626
MS
63void do_barrier_nospec_fixups_range(bool enable, void *start, void *end);
64#else
65static inline void do_barrier_nospec_fixups_range(bool enable, void *start, void *end) { };
66#endif
c3b82ebe 67
d91460f2
DC
68void do_btb_flush_fixups(void);
69
560285cd
AB
70#endif /* !__ASSEMBLY__ */
71
72#endif /* _ASM_POWERPC_SETUP_H */
73