diff options
Diffstat (limited to 'arch/mips/sibyte/sb1250/irq.c')
-rw-r--r-- | arch/mips/sibyte/sb1250/irq.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index a451b4c7732d..f9bd9f074517 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -442,7 +442,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
442 | * blasting the high 32 bits. | 442 | * blasting the high 32 bits. |
443 | */ | 443 | */ |
444 | 444 | ||
445 | pending = read_c0_cause(); | 445 | pending = read_c0_cause() & read_c0_status(); |
446 | 446 | ||
447 | #ifdef CONFIG_SIBYTE_SB1250_PROF | 447 | #ifdef CONFIG_SIBYTE_SB1250_PROF |
448 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ | 448 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ |
@@ -476,5 +476,8 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
476 | R_IMR_INTERRUPT_STATUS_BASE))); | 476 | R_IMR_INTERRUPT_STATUS_BASE))); |
477 | if (mask) | 477 | if (mask) |
478 | do_IRQ(fls64(mask) - 1, regs); | 478 | do_IRQ(fls64(mask) - 1, regs); |
479 | } | 479 | else |
480 | spurious_interrupt(regs); | ||
481 | } else | ||
482 | spurious_interrupt(regs); | ||
480 | } | 483 | } |