12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2b1923caaSBenjamin Herrenschmidt /* 3b1923caaSBenjamin Herrenschmidt * Prototypes for functions that are shared between setup_(32|64|common).c 4b1923caaSBenjamin Herrenschmidt * 5b1923caaSBenjamin Herrenschmidt * Copyright 2016 Michael Ellerman, IBM Corporation. 6b1923caaSBenjamin Herrenschmidt */ 7b1923caaSBenjamin Herrenschmidt 8b1923caaSBenjamin Herrenschmidt #ifndef __ARCH_POWERPC_KERNEL_SETUP_H 9b1923caaSBenjamin Herrenschmidt #define __ARCH_POWERPC_KERNEL_SETUP_H 10b1923caaSBenjamin Herrenschmidt 11b1923caaSBenjamin Herrenschmidt void initialize_cache_info(void); 12b1923caaSBenjamin Herrenschmidt void irqstack_early_init(void); 13b1923caaSBenjamin Herrenschmidt 14b1923caaSBenjamin Herrenschmidt #ifdef CONFIG_PPC32 15b1923caaSBenjamin Herrenschmidt void setup_power_save(void); 16b1923caaSBenjamin Herrenschmidt #else setup_power_save(void)176c6fdbb2SChengyang Fanstatic inline void setup_power_save(void) { } 18b1923caaSBenjamin Herrenschmidt #endif 19b1923caaSBenjamin Herrenschmidt 20b1923caaSBenjamin Herrenschmidt #if defined(CONFIG_PPC64) && defined(CONFIG_SMP) 21b1923caaSBenjamin Herrenschmidt void check_smt_enabled(void); 22b1923caaSBenjamin Herrenschmidt #else check_smt_enabled(void)236c6fdbb2SChengyang Fanstatic inline void check_smt_enabled(void) { } 24b1923caaSBenjamin Herrenschmidt #endif 25b1923caaSBenjamin Herrenschmidt 26*e0d68273SChristophe Leroy #if defined(CONFIG_PPC_BOOK3E_64) && defined(CONFIG_SMP) 27b1923caaSBenjamin Herrenschmidt void setup_tlb_core_data(void); 28b1923caaSBenjamin Herrenschmidt #else setup_tlb_core_data(void)296c6fdbb2SChengyang Fanstatic inline void setup_tlb_core_data(void) { } 30b1923caaSBenjamin Herrenschmidt #endif 31b1923caaSBenjamin Herrenschmidt 32047a6fd4SChristophe Leroy #ifdef CONFIG_BOOKE_OR_40x 33b1923caaSBenjamin Herrenschmidt void exc_lvl_early_init(void); 34b1923caaSBenjamin Herrenschmidt #else exc_lvl_early_init(void)356c6fdbb2SChengyang Fanstatic inline void exc_lvl_early_init(void) { } 36b1923caaSBenjamin Herrenschmidt #endif 37b1923caaSBenjamin Herrenschmidt 383978eb78SChristophe Leroy #if defined(CONFIG_PPC64) || defined(CONFIG_VMAP_STACK) 39b1923caaSBenjamin Herrenschmidt void emergency_stack_init(void); 40b1923caaSBenjamin Herrenschmidt #else emergency_stack_init(void)416c6fdbb2SChengyang Fanstatic inline void emergency_stack_init(void) { } 42b1923caaSBenjamin Herrenschmidt #endif 43b1923caaSBenjamin Herrenschmidt 441696d0fbSNicholas Piggin #ifdef CONFIG_PPC64 451af19331SNicholas Piggin u64 ppc64_bolted_size(void); 46c0abd0c7SNicholas Piggin 47c0abd0c7SNicholas Piggin /* Default SPR values from firmware/kexec */ 48c0abd0c7SNicholas Piggin extern unsigned long spr_default_dscr; 491af19331SNicholas Piggin #endif 501af19331SNicholas Piggin 51b1923caaSBenjamin Herrenschmidt /* 52b1923caaSBenjamin Herrenschmidt * Having this in kvm_ppc.h makes include dependencies too 53b1923caaSBenjamin Herrenschmidt * tricky to solve for setup-common.c so have it here. 54b1923caaSBenjamin Herrenschmidt */ 55b1923caaSBenjamin Herrenschmidt #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE 56b1923caaSBenjamin Herrenschmidt void kvm_cma_reserve(void); 57b1923caaSBenjamin Herrenschmidt #else kvm_cma_reserve(void)586c6fdbb2SChengyang Fanstatic inline void kvm_cma_reserve(void) { } 59b1923caaSBenjamin Herrenschmidt #endif 60b1923caaSBenjamin Herrenschmidt 61bd13ac95SMathieu Malaterre #ifdef CONFIG_TAU 62bd13ac95SMathieu Malaterre u32 cpu_temp(unsigned long cpu); 63bd13ac95SMathieu Malaterre u32 cpu_temp_both(unsigned long cpu); 64bd13ac95SMathieu Malaterre u32 tau_interrupts(unsigned long cpu); 65bd13ac95SMathieu Malaterre #endif /* CONFIG_TAU */ 66bd13ac95SMathieu Malaterre 67b1923caaSBenjamin Herrenschmidt #endif /* __ARCH_POWERPC_KERNEL_SETUP_H */ 68