blob: c6a592b673866d34c8ea82ba130c995d85ef0ffc [file] [log] [blame]
Benjamin Herrenschmidtb1923ca2016-07-05 15:07:51 +10001/*
2 * Prototypes for functions that are shared between setup_(32|64|common).c
3 *
4 * Copyright 2016 Michael Ellerman, IBM Corporation.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11
12#ifndef __ARCH_POWERPC_KERNEL_SETUP_H
13#define __ARCH_POWERPC_KERNEL_SETUP_H
14
15void initialize_cache_info(void);
16void irqstack_early_init(void);
17
18#ifdef CONFIG_PPC32
19void setup_power_save(void);
20#else
21static inline void setup_power_save(void) { };
22#endif
23
24#if defined(CONFIG_PPC64) && defined(CONFIG_SMP)
25void check_smt_enabled(void);
26#else
27static inline void check_smt_enabled(void) { };
28#endif
29
30#if defined(CONFIG_PPC_BOOK3E) && defined(CONFIG_SMP)
31void setup_tlb_core_data(void);
32#else
33static inline void setup_tlb_core_data(void) { };
34#endif
35
36#if defined(CONFIG_PPC_BOOK3E) || defined(CONFIG_BOOKE) || defined(CONFIG_40x)
37void exc_lvl_early_init(void);
38#else
39static inline void exc_lvl_early_init(void) { };
40#endif
41
42#ifdef CONFIG_PPC64
43void emergency_stack_init(void);
44#else
45static inline void emergency_stack_init(void) { };
46#endif
47
Nicholas Piggin1696d0f2017-10-24 21:44:44 +100048#ifdef CONFIG_PPC64
Nicholas Piggin1af19332017-12-22 21:17:13 +100049u64 ppc64_bolted_size(void);
Nicholas Pigginc0abd0c2018-02-14 01:08:17 +100050
51/* Default SPR values from firmware/kexec */
52extern unsigned long spr_default_dscr;
Nicholas Piggin1af19332017-12-22 21:17:13 +100053#endif
54
Benjamin Herrenschmidtb1923ca2016-07-05 15:07:51 +100055/*
56 * Having this in kvm_ppc.h makes include dependencies too
57 * tricky to solve for setup-common.c so have it here.
58 */
59#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
60void kvm_cma_reserve(void);
61#else
62static inline void kvm_cma_reserve(void) { };
63#endif
64
Mathieu Malaterrebd13ac92018-04-04 22:10:28 +020065#ifdef CONFIG_TAU
66u32 cpu_temp(unsigned long cpu);
67u32 cpu_temp_both(unsigned long cpu);
68u32 tau_interrupts(unsigned long cpu);
69#endif /* CONFIG_TAU */
70
Benjamin Herrenschmidtb1923ca2016-07-05 15:07:51 +100071#endif /* __ARCH_POWERPC_KERNEL_SETUP_H */