Commit d599def5 authored by Maciej W. Rozycki's avatar Maciej W. Rozycki Committed by Ralf Baechle

[MIPS] SB1250: Interrupt handler fixes

Mask cp0.status against cp0.cause.  Additionally, spurious interrupts are
not recorded.
Signed-off-by: default avatarMaciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent af8b1287
...@@ -442,7 +442,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) ...@@ -442,7 +442,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
* blasting the high 32 bits. * blasting the high 32 bits.
*/ */
pending = read_c0_cause(); pending = read_c0_cause() & read_c0_status();
#ifdef CONFIG_SIBYTE_SB1250_PROF #ifdef CONFIG_SIBYTE_SB1250_PROF
if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
...@@ -476,5 +476,8 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) ...@@ -476,5 +476,8 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
R_IMR_INTERRUPT_STATUS_BASE))); R_IMR_INTERRUPT_STATUS_BASE)));
if (mask) if (mask)
do_IRQ(fls64(mask) - 1, regs); do_IRQ(fls64(mask) - 1, regs);
} else
spurious_interrupt(regs);
} else
spurious_interrupt(regs);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment