38 lines
1.2 KiB
Diff
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);
|
|
}
|