summaryrefslogtreecommitdiff
path: root/arch/mn10300/kernel/switch_to.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mn10300/kernel/switch_to.S')
-rw-r--r--arch/mn10300/kernel/switch_to.S17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/mn10300/kernel/switch_to.S b/arch/mn10300/kernel/switch_to.S
index 630aad71b946..b08cb2e3aebd 100644
--- a/arch/mn10300/kernel/switch_to.S
+++ b/arch/mn10300/kernel/switch_to.S
@@ -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