powerpc: Fixes for 32-bit powermac SMP
[cascardo/linux.git] / arch / powerpc / kernel / smp.c
index 1794a69..2ffdc86 100644 (file)
 #include <asm/prom.h>
 #include <asm/smp.h>
 #include <asm/time.h>
-#include <asm/xmon.h>
 #include <asm/machdep.h>
 #include <asm/cputable.h>
 #include <asm/system.h>
 #include <asm/mpic.h>
+#include <asm/systemcfg.h>
 #ifdef CONFIG_PPC64
 #include <asm/paca.h>
 #endif
@@ -369,9 +369,11 @@ int generic_cpu_disable(void)
        if (cpu == boot_cpuid)
                return -EBUSY;
 
-       systemcfg->processorCount--;
        cpu_clear(cpu, cpu_online_map);
+#ifdef CONFIG_PPC64
+       _systemcfg->processorCount--;
        fixup_irqs(cpu_online_map);
+#endif
        return 0;
 }
 
@@ -389,9 +391,11 @@ int generic_cpu_enable(unsigned int cpu)
        while (!cpu_online(cpu))
                cpu_relax();
 
+#ifdef CONFIG_PPC64
        fixup_irqs(cpu_online_map);
        /* counter the irq disable in fixup_irqs */
        local_irq_enable();
+#endif
        return 0;
 }
 
@@ -420,7 +424,9 @@ void generic_mach_cpu_die(void)
        while (__get_cpu_var(cpu_state) != CPU_UP_PREPARE)
                cpu_relax();
 
+#ifdef CONFIG_PPC64
        flush_tlb_pending();
+#endif
        cpu_set(cpu, cpu_online_map);
        local_irq_enable();
 }