}
 }
 
+#define UNUSED_IPS (CAUSEF_IP5 | CAUSEF_IP4 | CAUSEF_IP1 | CAUSEF_IP0)
+
 void mach_irq_dispatch(unsigned int pending)
 {
        if (pending & CAUSEF_IP7)
                do_IRQ(LOONGSON_TIMER_IRQ);
 #if defined(CONFIG_SMP)
-       else if (pending & CAUSEF_IP6)
+       if (pending & CAUSEF_IP6)
                loongson3_ipi_interrupt(NULL);
 #endif
-       else if (pending & CAUSEF_IP3)
+       if (pending & CAUSEF_IP3)
                ht_irqdispatch();
-       else if (pending & CAUSEF_IP2)
+       if (pending & CAUSEF_IP2)
                do_IRQ(LOONGSON_UART_IRQ);
-       else {
+       if (pending & UNUSED_IPS) {
                pr_err("%s : spurious interrupt\n", __func__);
                spurious_interrupt();
        }