diff options
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 @@ #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 |