Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
a53c8fab | 2 | * Copyright IBM Corp. 1999, 2012 |
c20c89a6 HC |
3 | * Author(s): Denis Joseph Barrow, |
4 | * Martin Schwidefsky <schwidefsky@de.ibm.com>, | |
5 | * Heiko Carstens <heiko.carstens@de.ibm.com>, | |
1da177e4 LT |
6 | */ |
7 | #ifndef __ASM_SMP_H | |
8 | #define __ASM_SMP_H | |
9 | ||
c20c89a6 | 10 | #ifdef CONFIG_SMP |
1da177e4 | 11 | |
a0616cde | 12 | #include <asm/lowcore.h> |
2b67fc46 | 13 | |
7b468488 | 14 | #define raw_smp_processor_id() (S390_lowcore.cpu_nr) |
1da177e4 | 15 | |
dbd70fb4 | 16 | extern struct mutex smp_cpu_state_mutex; |
8b646bd7 | 17 | |
8239c25f | 18 | extern int __cpu_up(unsigned int cpu, struct task_struct *tidle); |
dbd70fb4 | 19 | |
ca9fc75a | 20 | extern void arch_send_call_function_single_ipi(int cpu); |
630cd046 | 21 | extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); |
ca9fc75a | 22 | |
8b646bd7 MS |
23 | extern void smp_call_online_cpu(void (*func)(void *), void *); |
24 | extern void smp_call_ipl_cpu(void (*func)(void *), void *); | |
2c2df118 | 25 | |
8b646bd7 MS |
26 | extern int smp_find_processor_id(u16 address); |
27 | extern int smp_store_status(int cpu); | |
28 | extern int smp_vcpu_scheduled(int cpu); | |
29 | extern void smp_yield_cpu(int cpu); | |
30 | extern void smp_yield(void); | |
31 | extern void smp_stop_cpu(void); | |
50ab9a9a HC |
32 | extern void smp_cpu_set_polarization(int cpu, int val); |
33 | extern int smp_cpu_get_polarization(int cpu); | |
d80512f8 | 34 | extern void smp_fill_possible_mask(void); |
59b69787 | 35 | |
2c2df118 HC |
36 | #else /* CONFIG_SMP */ |
37 | ||
8b646bd7 | 38 | static inline void smp_call_ipl_cpu(void (*func)(void *), void *data) |
2c2df118 HC |
39 | { |
40 | func(data); | |
41 | } | |
42 | ||
8b646bd7 | 43 | static inline void smp_call_online_cpu(void (*func)(void *), void *data) |
1943f53c | 44 | { |
8b646bd7 | 45 | func(data); |
1943f53c MH |
46 | } |
47 | ||
0d0e471b | 48 | static inline int smp_find_processor_id(u16 address) { return 0; } |
29a877fa | 49 | static inline int smp_store_status(int cpu) { return 0; } |
8b646bd7 MS |
50 | static inline int smp_vcpu_scheduled(int cpu) { return 1; } |
51 | static inline void smp_yield_cpu(int cpu) { } | |
52 | static inline void smp_yield(void) { } | |
53 | static inline void smp_stop_cpu(void) { } | |
d80512f8 | 54 | static inline void smp_fill_possible_mask(void) { } |
59b69787 | 55 | |
c20c89a6 | 56 | #endif /* CONFIG_SMP */ |
1da177e4 | 57 | |
1e489518 HC |
58 | #ifdef CONFIG_HOTPLUG_CPU |
59 | extern int smp_rescan_cpus(void); | |
da7f51c1 | 60 | extern void __noreturn cpu_die(void); |
8b646bd7 MS |
61 | extern void __cpu_die(unsigned int cpu); |
62 | extern int __cpu_disable(void); | |
1e489518 HC |
63 | #else |
64 | static inline int smp_rescan_cpus(void) { return 0; } | |
da7f51c1 | 65 | static inline void cpu_die(void) { } |
1e489518 HC |
66 | #endif |
67 | ||
c20c89a6 | 68 | #endif /* __ASM_SMP_H */ |