setup.h 2.1 KB
Newer Older
1
/* SPDX-License-Identifier: GPL-2.0 */
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#ifndef _ASM_POWERPC_SETUP_H
#define _ASM_POWERPC_SETUP_H

#include <uapi/asm/setup.h>

#ifndef __ASSEMBLY__
extern void ppc_printk_progress(char *s, unsigned short hex);

extern unsigned int rtas_data;
extern unsigned long long memory_limit;
extern unsigned long klimit;
extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask);

struct device_node;
extern void note_scsi_host(struct device_node *, void *);

/* Used in very early kernel initialization. */
extern unsigned long reloc_offset(void);
extern unsigned long add_reloc_offset(unsigned long);
extern void reloc_got2(unsigned long);

#define PTRRELOC(x)	((typeof(x)) add_reloc_offset((unsigned long)(x)))

25
void check_for_initrd(void);
26
void mem_topology_setup(void);
27
void initmem_init(void);
28
void setup_panic(void);
29
#define ARCH_PANIC_TIMEOUT 180
30

31 32 33 34 35 36 37 38 39 40 41 42
#ifdef CONFIG_PPC_PSERIES
extern void pseries_enable_reloc_on_exc(void);
extern void pseries_disable_reloc_on_exc(void);
extern void pseries_big_endian_exceptions(void);
extern void pseries_little_endian_exceptions(void);
#else
static inline void pseries_enable_reloc_on_exc(void) {}
static inline void pseries_disable_reloc_on_exc(void) {}
static inline void pseries_big_endian_exceptions(void) {}
static inline void pseries_little_endian_exceptions(void) {}
#endif /* CONFIG_PPC_PSERIES */

43 44 45 46 47 48 49 50 51 52
void rfi_flush_enable(bool enable);

/* These are bit flags */
enum l1d_flush_type {
	L1D_FLUSH_NONE		= 0x1,
	L1D_FLUSH_FALLBACK	= 0x2,
	L1D_FLUSH_ORI		= 0x4,
	L1D_FLUSH_MTTRIG	= 0x8,
};

53
void setup_rfi_flush(enum l1d_flush_type, bool enable);
54
void do_rfi_flush_fixups(enum l1d_flush_type types);
55
#ifdef CONFIG_PPC_BARRIER_NOSPEC
56
void setup_barrier_nospec(void);
57 58 59
#else
static inline void setup_barrier_nospec(void) { };
#endif
60
void do_barrier_nospec_fixups(bool enable);
61 62
extern bool barrier_nospec_enabled;

63
#ifdef CONFIG_PPC_BARRIER_NOSPEC
64 65 66 67
void do_barrier_nospec_fixups_range(bool enable, void *start, void *end);
#else
static inline void do_barrier_nospec_fixups_range(bool enable, void *start, void *end) { };
#endif
68

69 70 71 72
#endif /* !__ASSEMBLY__ */

#endif	/* _ASM_POWERPC_SETUP_H */