diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2001-06-10 16:17:47 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2001-06-10 16:17:47 +0000 |
commit | 4c2d47edfd6114ce818a93c97a5f34ca38c6c5f3 (patch) | |
tree | 582925a7fcd23fb71927e4d9f0b9d0c9182572f0 /arch/mips64/kernel/scall_64.S | |
parent | 764fb51bab6c4f71a6708a275d246d260cc7fa05 (diff) |
We were not always calling handle_softirq resulting in softirqs
potencially delayed. 32-bit kernel got it wrong for the SMP case.
Diffstat (limited to 'arch/mips64/kernel/scall_64.S')
-rw-r--r-- | arch/mips64/kernel/scall_64.S | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/mips64/kernel/scall_64.S b/arch/mips64/kernel/scall_64.S index 4e10263b6..326e76ec2 100644 --- a/arch/mips64/kernel/scall_64.S +++ b/arch/mips64/kernel/scall_64.S @@ -63,8 +63,14 @@ NESTED(handle_sys64, PT_SIZE, sp) 1: sd v0, PT_R2(sp) # result FEXPORT(ret_from_sys_call_64) - 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 + lwu t0, TASK_PROCESSOR($28) + dsll t0, t0, 5 + daddu 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_64 |