diff options
| -rw-r--r-- | arch/mips/mti-malta/malta-int.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c index 7b13a4caeea4..fea823f18479 100644 --- a/arch/mips/mti-malta/malta-int.c +++ b/arch/mips/mti-malta/malta-int.c | |||
| @@ -273,16 +273,19 @@ asmlinkage void plat_irq_dispatch(void) | |||
| 273 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; | 273 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; |
| 274 | int irq; | 274 | int irq; |
| 275 | 275 | ||
| 276 | if (unlikely(!pending)) { | ||
| 277 | spurious_interrupt(); | ||
| 278 | return; | ||
| 279 | } | ||
| 280 | |||
| 276 | irq = irq_ffs(pending); | 281 | irq = irq_ffs(pending); |
| 277 | 282 | ||
| 278 | if (irq == MIPSCPU_INT_I8259A) | 283 | if (irq == MIPSCPU_INT_I8259A) |
| 279 | malta_hw0_irqdispatch(); | 284 | malta_hw0_irqdispatch(); |
| 280 | else if (gic_present && ((1 << irq) & ipi_map[smp_processor_id()])) | 285 | else if (gic_present && ((1 << irq) & ipi_map[smp_processor_id()])) |
| 281 | malta_ipi_irqdispatch(); | 286 | malta_ipi_irqdispatch(); |
| 282 | else if (irq >= 0) | ||
| 283 | do_IRQ(MIPS_CPU_IRQ_BASE + irq); | ||
| 284 | else | 287 | else |
| 285 | spurious_interrupt(); | 288 | do_IRQ(MIPS_CPU_IRQ_BASE + irq); |
| 286 | } | 289 | } |
| 287 | 290 | ||
| 288 | #ifdef CONFIG_MIPS_MT_SMP | 291 | #ifdef CONFIG_MIPS_MT_SMP |
