X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fsh%2Fkernel%2Fsmp.c;h=6c0fb7c4af1190f40f1fcca3f93b2e15a82fedc9;hb=16c70f8c1b54b61c3b951b6fb220df250fe09b32;hp=6ff83edf8374ea308ab2efc2225e77ea15575dbb;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 6ff83edf8..6c0fb7c4a 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c @@ -10,7 +10,6 @@ * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ -#include #include #include #include @@ -22,6 +21,7 @@ #include #include #include +#include #include #include @@ -34,15 +34,14 @@ * but is designed to be usable regardless if there's an MMU * present or not. */ -int smp_threads_ready = 0; struct sh_cpuinfo cpu_data[NR_CPUS]; -extern int cpu_idle(void *unused); extern void per_cpu_trap_init(void); cpumask_t cpu_possible_map; +EXPORT_SYMBOL(cpu_possible_map); + cpumask_t cpu_online_map; -unsigned long cache_decay_ticks = HZ / 100; static atomic_t cpus_booted = ATOMIC_INIT(0); /* These are defined by the board-specific code. */ @@ -103,7 +102,7 @@ int __cpu_up(unsigned int cpu) if (IS_ERR(tsk)) panic("Failed forking idle task for cpu %d\n", cpu); - tsk->thread_info->cpu = cpu; + task_thread_info(tsk)->cpu = cpu; cpu_set(cpu, cpu_online_map); @@ -112,7 +111,9 @@ int __cpu_up(unsigned int cpu) int start_secondary(void *unused) { - unsigned int cpu = smp_processor_id(); + unsigned int cpu; + + cpu = smp_processor_id(); atomic_inc(&init_mm.mm_count); current->active_mm = &init_mm; @@ -120,16 +121,17 @@ int start_secondary(void *unused) smp_store_cpu_info(cpu); __smp_slave_init(cpu); + preempt_disable(); per_cpu_trap_init(); atomic_inc(&cpus_booted); - return cpu_idle(0); + cpu_idle(); + return 0; } void __init smp_cpus_done(unsigned int max_cpus) { - smp_threads_ready = 1; smp_mb(); }