diff options
author | Akira Takeuchi <takeuchi.akr@jp.panasonic.com> | 2010-10-27 12:28:55 -0400 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2010-10-27 12:28:55 -0400 |
commit | 368dd5acd154b09c043cc4392a74da01599b37d5 (patch) | |
tree | dd94ae3d044f6e774dec2437613515bd6b46dacb /arch/mn10300/kernel/switch_to.S | |
parent | 04157a6e7df99fd5ed64955233d6e00ab6613614 (diff) |
MN10300: And Panasonic AM34 subarch and implement SMP
Implement the Panasonic MN10300 AM34 CPU subarch and implement SMP support for
MN10300. Also implement support for the MN2WS0060 processor and the ASB2364
evaluation board which are AM34 based.
Signed-off-by: Akira Takeuchi <takeuchi.akr@jp.panasonic.com>
Signed-off-by: Kiyoshi Owada <owada.kiyoshi@jp.panasonic.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'arch/mn10300/kernel/switch_to.S')
-rw-r--r-- | arch/mn10300/kernel/switch_to.S | 17 |
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 |