]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/mn10300/kernel/switch_to.S
MN10300: And Panasonic AM34 subarch and implement SMP
[net-next-2.6.git] / arch / mn10300 / kernel / switch_to.S
index 630aad71b9461513aa0db71445d9fc1adc2f4ed6..b08cb2e3aebd834a762414ee73a1314b9753393f 100644 (file)
@@ -15,6 +15,9 @@
 #include <linux/linkage.h>
 #include <asm/thread_info.h>
 #include <asm/cpu-regs.h>
+#ifdef CONFIG_SMP
+#include <proc/smp-regs.h>
+#endif /* CONFIG_SMP */
 
        .text
 
@@ -35,7 +38,14 @@ ENTRY(__switch_to)
        mov     d1,a1
 
        # save prev context
+#ifdef CONFIG_SMP
+       mov     (CPUID),a2
+       add     a2,a2
+       add     a2,a2
+       mov     (___frame,a2),d0
+#else  /* CONFIG_SMP */
        mov     (__frame),d0
+#endif /* CONFIG_SMP */
        mov     d0,(THREAD_FRAME,a0)
        mov     __switch_back,d0
        mov     d0,(THREAD_PC,a0)
@@ -59,7 +69,14 @@ ENTRY(__switch_to)
 #endif
 
        mov     (THREAD_FRAME,a1),a2
+#ifdef CONFIG_SMP
+       mov     (CPUID),a0
+       add     a0,a0
+       add     a0,a0
+       mov     a2,(___frame,a0)
+#else  /* CONFIG_SMP */
        mov     a2,(__frame)
+#endif /* CONFIG_SMP */
        mov     (THREAD_PC,a1),a2
        mov     d2,d0                   # for ret_from_fork
        mov     d0,a0                   # for __switch_to