]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/cris/arch-v32/kernel/smp.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/x86
[linux-2.6-omap-h63xx.git] / arch / cris / arch-v32 / kernel / smp.c
index 2c5cae04a95c8d794d3f2f2babf15aee80086939..da40d19a151e28a76b7814a8e1d9ac6805a35c4c 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/kernel.h>
 #include <linux/cpumask.h>
 #include <linux/interrupt.h>
+#include <linux/module.h>
 
 #define IPI_SCHEDULE 1
 #define IPI_CALL 2
@@ -28,6 +29,7 @@ spinlock_t cris_atomic_locks[] = { [0 ... LOCK_COUNT - 1] = SPIN_LOCK_UNLOCKED};
 /* CPU masks */
 cpumask_t cpu_online_map = CPU_MASK_NONE;
 cpumask_t phys_cpu_present_map = CPU_MASK_NONE;
+EXPORT_SYMBOL(phys_cpu_present_map);
 
 /* Variables used during SMP boot */
 volatile int cpu_now_booting = 0;
@@ -111,10 +113,10 @@ smp_boot_one_cpu(int cpuid)
        if (IS_ERR(idle))
                panic("SMP: fork failed for CPU:%d", cpuid);
 
-       idle->thread_info->cpu = cpuid;
+       task_thread_info(idle)->cpu = cpuid;
 
        /* Information to the CPU that is about to boot */
-       smp_init_current_idle_thread = idle->thread_info;
+       smp_init_current_idle_thread = task_thread_info(idle);
        cpu_now_booting = cpuid;
 
        /* Wait for CPU to come online */
@@ -159,6 +161,7 @@ void __init smp_callin(void)
        REG_WR(intr_vect, irq_regs[cpu], rw_mask, vect_mask);
        unmask_irq(IPI_INTR_VECT);
        unmask_irq(TIMER_INTR_VECT);
+       preempt_disable();
        local_irq_enable();
 
        cpu_set(cpu, cpu_online_map);