RT-AC56 3.0.0.4.374.37 core
[tomato.git] / release / src-rt-6.x.4708 / linux / linux-2.6.36 / arch / sh / include / asm / smp-ops.h
blobc590f76856f1ecd53af5a27ddef1e8e36dc5c525
1 #ifndef __ASM_SH_SMP_OPS_H
2 #define __ASM_SH_SMP_OPS_H
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);
15 extern struct plat_smp_ops *mp_ops;
16 extern struct plat_smp_ops shx3_smp_ops;
18 #ifdef CONFIG_SMP
20 static inline void plat_smp_setup(void)
22 BUG_ON(!mp_ops);
23 mp_ops->smp_setup();
26 static inline void play_dead(void)
28 mp_ops->play_dead();
31 extern void register_smp_ops(struct plat_smp_ops *ops);
33 #else
35 static inline void plat_smp_setup(void)
37 /* UP, nothing to do ... */
40 static inline void register_smp_ops(struct plat_smp_ops *ops)
44 static inline void play_dead(void)
46 BUG();
49 #endif /* CONFIG_SMP */
51 #endif /* __ASM_SH_SMP_OPS_H */