xref: /openbmc/linux/arch/powerpc/kernel/setup.h (revision 8e2a46a4)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Prototypes for functions that are shared between setup_(32|64|common).c
4  *
5  * Copyright 2016 Michael Ellerman, IBM Corporation.
6  */
7 
8 #ifndef __ARCH_POWERPC_KERNEL_SETUP_H
9 #define __ARCH_POWERPC_KERNEL_SETUP_H
10 
11 #ifdef CONFIG_CC_IS_CLANG
12 #define __nostackprotector
13 #else
14 #define __nostackprotector __attribute__((__optimize__("no-stack-protector")))
15 #endif
16 
17 void initialize_cache_info(void);
18 void irqstack_early_init(void);
19 
20 #ifdef CONFIG_PPC32
21 void setup_power_save(void);
22 #else
23 static inline void setup_power_save(void) { };
24 #endif
25 
26 #if defined(CONFIG_PPC64) && defined(CONFIG_SMP)
27 void check_smt_enabled(void);
28 #else
29 static inline void check_smt_enabled(void) { };
30 #endif
31 
32 #if defined(CONFIG_PPC_BOOK3E) && defined(CONFIG_SMP)
33 void setup_tlb_core_data(void);
34 #else
35 static inline void setup_tlb_core_data(void) { };
36 #endif
37 
38 #if defined(CONFIG_PPC_BOOK3E) || defined(CONFIG_BOOKE) || defined(CONFIG_40x)
39 void exc_lvl_early_init(void);
40 #else
41 static inline void exc_lvl_early_init(void) { };
42 #endif
43 
44 #if defined(CONFIG_PPC64) || defined(CONFIG_VMAP_STACK)
45 void emergency_stack_init(void);
46 #else
47 static inline void emergency_stack_init(void) { };
48 #endif
49 
50 #ifdef CONFIG_PPC64
51 u64 ppc64_bolted_size(void);
52 
53 /* Default SPR values from firmware/kexec */
54 extern unsigned long spr_default_dscr;
55 #endif
56 
57 /*
58  * Having this in kvm_ppc.h makes include dependencies too
59  * tricky to solve for setup-common.c so have it here.
60  */
61 #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
62 void kvm_cma_reserve(void);
63 #else
64 static inline void kvm_cma_reserve(void) { };
65 #endif
66 
67 #ifdef CONFIG_TAU
68 u32 cpu_temp(unsigned long cpu);
69 u32 cpu_temp_both(unsigned long cpu);
70 u32 tau_interrupts(unsigned long cpu);
71 #endif /* CONFIG_TAU */
72 
73 #endif /* __ARCH_POWERPC_KERNEL_SETUP_H */
74