]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/kernel/smp.c
powerpc: Fixes for 32-bit powermac SMP
[linux-2.6-omap-h63xx.git] / arch / powerpc / kernel / smp.c
index 7fd530898bd11c9a66beb8d13d42e91afb326124..2ffdc863bff3d78f89bc1a747974637624987dc0 100644 (file)
@@ -369,11 +369,11 @@ int generic_cpu_disable(void)
        if (cpu == boot_cpuid)
                return -EBUSY;
 
+       cpu_clear(cpu, cpu_online_map);
 #ifdef CONFIG_PPC64
        _systemcfg->processorCount--;
-#endif
-       cpu_clear(cpu, cpu_online_map);
        fixup_irqs(cpu_online_map);
+#endif
        return 0;
 }
 
@@ -391,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;
 }
 
@@ -422,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();
 }