aboutsummaryrefslogtreecommitdiffstats
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 @@
15#include <linux/linkage.h> 15#include <linux/linkage.h>
16#include <asm/thread_info.h> 16#include <asm/thread_info.h>
17#include <asm/cpu-regs.h> 17#include <asm/cpu-regs.h>
18#ifdef CONFIG_SMP
19#include <proc/smp-regs.h>
20#endif /* CONFIG_SMP */
18 21
19 .text 22 .text
20 23
@@ -35,7 +38,14 @@ ENTRY(__switch_to)
35 mov d1,a1 38 mov d1,a1
36 39
37 # save prev context 40 # save prev context
41#ifdef CONFIG_SMP
42 mov (CPUID),a2
43 add a2,a2
44 add a2,a2
45 mov (___frame,a2),d0
46#else /* CONFIG_SMP */
38 mov (__frame),d0 47 mov (__frame),d0
48#endif /* CONFIG_SMP */
39 mov d0,(THREAD_FRAME,a0) 49 mov d0,(THREAD_FRAME,a0)
40 mov __switch_back,d0 50 mov __switch_back,d0
41 mov d0,(THREAD_PC,a0) 51 mov d0,(THREAD_PC,a0)
@@ -59,7 +69,14 @@ ENTRY(__switch_to)
59#endif 69#endif
60 70
61 mov (THREAD_FRAME,a1),a2 71 mov (THREAD_FRAME,a1),a2
72#ifdef CONFIG_SMP
73 mov (CPUID),a0
74 add a0,a0
75 add a0,a0
76 mov a2,(___frame,a0)
77#else /* CONFIG_SMP */
62 mov a2,(__frame) 78 mov a2,(__frame)
79#endif /* CONFIG_SMP */
63 mov (THREAD_PC,a1),a2 80 mov (THREAD_PC,a1),a2
64 mov d2,d0 # for ret_from_fork 81 mov d2,d0 # for ret_from_fork
65 mov d0,a0 # for __switch_to 82 mov d0,a0 # for __switch_to