rendered paste bodyasmlinkage 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;