diff options
| -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 | } |
