summaryrefslogtreecommitdiffstats
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.S11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S
index 59bc8c2c9..8232e9364 100644
--- a/arch/mips/kernel/entry.S
+++ b/arch/mips/kernel/entry.S
@@ -44,12 +44,17 @@ reschedule: jal schedule
EXPORT(ret_from_sys_call)
EXPORT(ret_from_irq)
.type ret_from_irq,@function
- lw t0, irq_stat # softirq_active
- lw t1, irq_stat+4 # softirq_mask. unused delay slot
+ la t1, irq_stat # softirq_active
+#ifdef CONFIG_SMP
+ lw t0, TASK_PROCESSOR($28)
+ sll t0, t0, 5
+ addu t1, t0
+#endif
+ lw t0, 0(t1) # softirq_active
+ lw t1, 4(t1) # softirq_mask. unused delay slot
and t0, t1
bnez t0, handle_softirq
-
9: lw t0,PT_STATUS(sp) # returning to kernel mode?
lw t2, TASK_NEED_RESCHED($28)
andi t1, t0, KU_USER