aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/kernel/entry.S')
-rw-r--r--arch/mips/kernel/entry.S15
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S
index 766655f35250..417c08ac76eb 100644
--- a/arch/mips/kernel/entry.S
+++ b/arch/mips/kernel/entry.S
@@ -20,10 +20,7 @@
20#include <asm/mipsmtregs.h> 20#include <asm/mipsmtregs.h>
21#endif 21#endif
22 22
23#ifdef CONFIG_PREEMPT 23#ifndef CONFIG_PREEMPT
24 .macro preempt_stop
25 .endm
26#else
27 .macro preempt_stop 24 .macro preempt_stop
28 local_irq_disable 25 local_irq_disable
29 .endm 26 .endm
@@ -32,9 +29,16 @@
32 29
33 .text 30 .text
34 .align 5 31 .align 5
32FEXPORT(ret_from_irq)
33 LONG_S s0, TI_REGS($28)
34#ifdef CONFIG_PREEMPT
35FEXPORT(ret_from_exception)
36#else
37 b _ret_from_irq
35FEXPORT(ret_from_exception) 38FEXPORT(ret_from_exception)
36 preempt_stop 39 preempt_stop
37FEXPORT(ret_from_irq) 40#endif
41FEXPORT(_ret_from_irq)
38 LONG_L t0, PT_STATUS(sp) # returning to kernel mode? 42 LONG_L t0, PT_STATUS(sp) # returning to kernel mode?
39 andi t0, t0, KU_USER 43 andi t0, t0, KU_USER
40 beqz t0, resume_kernel 44 beqz t0, resume_kernel
@@ -79,7 +83,6 @@ FEXPORT(syscall_exit)
79FEXPORT(restore_all) # restore full frame 83FEXPORT(restore_all) # restore full frame
80#ifdef CONFIG_MIPS_MT_SMTC 84#ifdef CONFIG_MIPS_MT_SMTC
81/* Detect and execute deferred IPI "interrupts" */ 85/* Detect and execute deferred IPI "interrupts" */
82 move a0,sp
83 jal deferred_smtc_ipi 86 jal deferred_smtc_ipi
84/* Re-arm any temporarily masked interrupts not explicitly "acked" */ 87/* Re-arm any temporarily masked interrupts not explicitly "acked" */
85 mfc0 v0, CP0_TCSTATUS 88 mfc0 v0, CP0_TCSTATUS