asmlinkage void plat_irq_dispatch(void) { unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; if (pending & CAUSEF_IP7){ do_IRQ(MIPS_CPU_TIMER_IRQ); goto out; } else { if(pending & (CAUSEF_IP2 << 0)){ danube_hw4_irqdispatch(); goto out; } if(pending & (CAUSEF_IP2 << 1)){ danube_hw4_irqdispatch(); goto out; } if(pending & (CAUSEF_IP2 << 2)){ danube_hw4_irqdispatch(); goto out; } if(pending & (CAUSEF_IP2 << 3)){ danube_hw4_irqdispatch(); goto out; } if(pending & (CAUSEF_IP2 << 4)){ danube_hw4_irqdispatch(); goto out; } } printk("Spurious IRQ: CAUSE=0x%08x\n", read_c0_status()); out: return;