 763142d1ef
			
		
	
	
	763142d1ef
	
	
	
		
			
			This adds preliminary support for CPU hotplug for SH SMP systems. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			973 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			973 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __ASM_SH_SMP_OPS_H
 | |
| #define __ASM_SH_SMP_OPS_H
 | |
| 
 | |
| struct plat_smp_ops {
 | |
| 	void (*smp_setup)(void);
 | |
| 	unsigned int (*smp_processor_id)(void);
 | |
| 	void (*prepare_cpus)(unsigned int max_cpus);
 | |
| 	void (*start_cpu)(unsigned int cpu, unsigned long entry_point);
 | |
| 	void (*send_ipi)(unsigned int cpu, unsigned int message);
 | |
| 	int (*cpu_disable)(unsigned int cpu);
 | |
| 	void (*cpu_die)(unsigned int cpu);
 | |
| 	void (*play_dead)(void);
 | |
| };
 | |
| 
 | |
| extern struct plat_smp_ops *mp_ops;
 | |
| extern struct plat_smp_ops shx3_smp_ops;
 | |
| 
 | |
| #ifdef CONFIG_SMP
 | |
| 
 | |
| static inline void plat_smp_setup(void)
 | |
| {
 | |
| 	BUG_ON(!mp_ops);
 | |
| 	mp_ops->smp_setup();
 | |
| }
 | |
| 
 | |
| static inline void play_dead(void)
 | |
| {
 | |
| 	mp_ops->play_dead();
 | |
| }
 | |
| 
 | |
| extern void register_smp_ops(struct plat_smp_ops *ops);
 | |
| 
 | |
| #else
 | |
| 
 | |
| static inline void plat_smp_setup(void)
 | |
| {
 | |
| 	/* UP, nothing to do ... */
 | |
| }
 | |
| 
 | |
| static inline void register_smp_ops(struct plat_smp_ops *ops)
 | |
| {
 | |
| }
 | |
| 
 | |
| static inline void play_dead(void)
 | |
| {
 | |
| 	BUG();
 | |
| }
 | |
| 
 | |
| #endif /* CONFIG_SMP */
 | |
| 
 | |
| #endif /* __ASM_SH_SMP_OPS_H */
 |