Loading arch/sh/include/asm/smp.h +3 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ #include <linux/spinlock.h> #include <asm/atomic.h> #include <asm/current.h> #include <asm/percpu.h> #define raw_smp_processor_id() (current_thread_info()->cpu) Loading @@ -30,6 +31,8 @@ enum { SMP_MSG_NR, /* must be last */ }; DECLARE_PER_CPU(int, cpu_state); void smp_message_recv(unsigned int msg); void smp_timer_broadcast(const struct cpumask *mask); Loading arch/sh/kernel/smp.c +10 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,9 @@ int __cpu_logical_map[NR_CPUS]; /* Map logical to physical */ struct plat_smp_ops *mp_ops = NULL; /* State of each CPU */ DEFINE_PER_CPU(int, cpu_state) = { 0 }; void __cpuinit register_smp_ops(struct plat_smp_ops *ops) { if (mp_ops) Loading Loading @@ -72,11 +75,13 @@ void __devinit smp_prepare_boot_cpu(void) set_cpu_online(cpu, true); set_cpu_possible(cpu, true); per_cpu(cpu_state, cpu) = CPU_ONLINE; } asmlinkage void __cpuinit start_secondary(void) { unsigned int cpu; unsigned int cpu = smp_processor_id(); struct mm_struct *mm = &init_mm; enable_mmu(); Loading @@ -90,12 +95,10 @@ asmlinkage void __cpuinit start_secondary(void) preempt_disable(); notify_cpu_starting(smp_processor_id()); notify_cpu_starting(cpu); local_irq_enable(); cpu = smp_processor_id(); /* Enable local timers */ local_timer_setup(cpu); calibrate_delay(); Loading @@ -103,6 +106,7 @@ asmlinkage void __cpuinit start_secondary(void) smp_store_cpu_info(cpu); set_cpu_online(cpu, true); per_cpu(cpu_state, cpu) = CPU_ONLINE; cpu_idle(); } Loading @@ -127,6 +131,8 @@ int __cpuinit __cpu_up(unsigned int cpu) return PTR_ERR(tsk); } per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; /* Fill in data in head.S for secondary cpus */ stack_start.sp = tsk->thread.sp; stack_start.thread_info = tsk->stack; Loading Loading
arch/sh/include/asm/smp.h +3 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ #include <linux/spinlock.h> #include <asm/atomic.h> #include <asm/current.h> #include <asm/percpu.h> #define raw_smp_processor_id() (current_thread_info()->cpu) Loading @@ -30,6 +31,8 @@ enum { SMP_MSG_NR, /* must be last */ }; DECLARE_PER_CPU(int, cpu_state); void smp_message_recv(unsigned int msg); void smp_timer_broadcast(const struct cpumask *mask); Loading
arch/sh/kernel/smp.c +10 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,9 @@ int __cpu_logical_map[NR_CPUS]; /* Map logical to physical */ struct plat_smp_ops *mp_ops = NULL; /* State of each CPU */ DEFINE_PER_CPU(int, cpu_state) = { 0 }; void __cpuinit register_smp_ops(struct plat_smp_ops *ops) { if (mp_ops) Loading Loading @@ -72,11 +75,13 @@ void __devinit smp_prepare_boot_cpu(void) set_cpu_online(cpu, true); set_cpu_possible(cpu, true); per_cpu(cpu_state, cpu) = CPU_ONLINE; } asmlinkage void __cpuinit start_secondary(void) { unsigned int cpu; unsigned int cpu = smp_processor_id(); struct mm_struct *mm = &init_mm; enable_mmu(); Loading @@ -90,12 +95,10 @@ asmlinkage void __cpuinit start_secondary(void) preempt_disable(); notify_cpu_starting(smp_processor_id()); notify_cpu_starting(cpu); local_irq_enable(); cpu = smp_processor_id(); /* Enable local timers */ local_timer_setup(cpu); calibrate_delay(); Loading @@ -103,6 +106,7 @@ asmlinkage void __cpuinit start_secondary(void) smp_store_cpu_info(cpu); set_cpu_online(cpu, true); per_cpu(cpu_state, cpu) = CPU_ONLINE; cpu_idle(); } Loading @@ -127,6 +131,8 @@ int __cpuinit __cpu_up(unsigned int cpu) return PTR_ERR(tsk); } per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; /* Fill in data in head.S for secondary cpus */ stack_start.sp = tsk->thread.sp; stack_start.thread_info = tsk->stack; Loading