X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fsparc%2Fkernel%2Fsun4d_smp.c;h=e5e1349035707706cfb99db48a9888fb42f0976b;hb=1341115471cc16954510b0e67295468f5a32b088;hp=9f659c2f4196d60eafa4763da0faf2b412f2205e;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c index 9f659c2f4..e5e134903 100644 --- a/arch/sparc/kernel/sun4d_smp.c +++ b/arch/sparc/kernel/sun4d_smp.c @@ -43,6 +43,7 @@ extern ctxd_t *srmmu_ctx_table_phys; extern void calibrate_delay(void); extern volatile int smp_processors_ready; +extern unsigned long cpu_present_map; extern int smp_num_cpus; static int smp_highest_cpu; extern int smp_threads_ready; @@ -99,6 +100,8 @@ void __init smp4d_callin(void) * the SMP initialization the master will be just allowed * to call the scheduler code. */ + init_idle(); + /* Get our local ticker going. */ smp_setup_percpu_timer(); @@ -149,6 +152,7 @@ void __init smp4d_callin(void) extern int cpu_idle(void *unused); extern void init_IRQ(void); extern void cpu_panic(void); +extern int start_secondary(void *unused); /* * Cycle through the processors asking the PROM to start each one. @@ -170,12 +174,12 @@ void __init smp4d_boot_cpus(void) current_set[0] = NULL; local_irq_enable(); - cpus_clear(cpu_present_map); + cpu_present_map = 0; /* XXX This whole thing has to go. See sparc64. */ for (i = 0; !cpu_find_by_instance(i, NULL, &mid); i++) - cpu_set(mid, cpu_present_map); - SMP_PRINTK(("cpu_present_map %08lx\n", cpus_addr(cpu_present_map)[0])); + cpu_present_map |= (1<