Merge branch 'virtio' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux...
[pandora-kernel.git] / arch / sh / include / asm / smp-ops.h
1 #ifndef __ASM_SH_SMP_OPS_H
2 #define __ASM_SH_SMP_OPS_H
3
4 struct plat_smp_ops {
5         void (*smp_setup)(void);
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);
12         void (*play_dead)(void);
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 */