linux/debian/patches/bugfix/mips/sb1250_interrupt_fixes.patch

38 lines
1.2 KiB
Diff

From: Maciej W. Rozycki <macro@linux-mips.org>
Date: Tue, 3 Oct 2006 11:42:02 +0000 (+0100)
Subject: [MIPS] SB1250: Interrupt handler fixes
X-Git-Tag: linux-1.1.68
X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff;h=c9477be2bb9e9a1885630627f439d19d7df6d33a
[MIPS] SB1250: Interrupt handler fixes
Mask cp0.status against cp0.cause. Additionally, spurious interrupts are
not recorded.
Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from 0196782e2ac607a19cfc88d9d2bd3f3f03e5908b commit)
---
--- a/arch/mips/sibyte/sb1250/irq.c
+++ b/arch/mips/sibyte/sb1250/irq.c
@@ -442,7 +442,7 @@ asmlinkage void plat_irq_dispatch(struct
* blasting the high 32 bits.
*/
- pending = read_c0_cause();
+ pending = read_c0_cause() & read_c0_status();
#ifdef CONFIG_SIBYTE_SB1250_PROF
if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
@@ -476,5 +476,8 @@ asmlinkage void plat_irq_dispatch(struct
R_IMR_INTERRUPT_STATUS_BASE)));
if (mask)
do_IRQ(fls64(mask) - 1, regs);
- }
+ else
+ spurious_interrupt(regs);
+ } else
+ spurious_interrupt(regs);
}