Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
smp-ops.h
Go to the documentation of this file.
1 #ifndef __ASM_SH_SMP_OPS_H
2 #define __ASM_SH_SMP_OPS_H
3 
4 struct plat_smp_ops {
6  unsigned int (*smp_processor_id)(void);
7  void (*prepare_cpus)(unsigned int max_cpus);
8  void (*start_cpu)(unsigned int cpu, unsigned long entry_point);
9  void (*send_ipi)(unsigned int cpu, unsigned int message);
10  int (*cpu_disable)(unsigned int cpu);
11  void (*cpu_die)(unsigned int cpu);
13 };
14 
15 extern struct plat_smp_ops *mp_ops;
16 extern struct plat_smp_ops shx3_smp_ops;
17 
18 #ifdef CONFIG_SMP
19 
20 static inline void plat_smp_setup(void)
21 {
22  BUG_ON(!mp_ops);
23  mp_ops->smp_setup();
24 }
25 
26 static inline void play_dead(void)
27 {
28  mp_ops->play_dead();
29 }
30 
31 extern void register_smp_ops(struct plat_smp_ops *ops);
32 
33 #else
34 
35 static inline void plat_smp_setup(void)
36 {
37  /* UP, nothing to do ... */
38 }
39 
40 static inline void register_smp_ops(struct plat_smp_ops *ops)
41 {
42 }
43 
44 static inline void play_dead(void)
45 {
46  BUG();
47 }
48 
49 #endif /* CONFIG_SMP */
50 
51 #endif /* __ASM_SH_SMP_OPS_H */