asmlinkage void plat_irq_dispatch(void) { unsigned int pending = read_c0_status() & read_c0_cause(); if (pending & CAUSEF_IP7) do_IRQ(MIPS_CPU_IRQ_BASE + 7); else if (pending & CAUSEF_IP2) intc0_req0_irqdispatch(); else if (pending & CAUSEF_IP3) intc0_req1_irqdispatch(); else if (pending & CAUSEF_IP4) intc1_req0_irqdispatch(); else if (pending & CAUSEF_IP5) intc1_req1_irqdispatch(); else spurious_interrupt(); }
asmlinkage void plat_irq_dispatch(struct pt_regs *regs) { unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; if (pending & CAUSEF_IP7) mips_timer_interrupt(regs); else if (pending & CAUSEF_IP2) intc0_req0_irqdispatch(regs); else if (pending & CAUSEF_IP3) intc0_req1_irqdispatch(regs); else if (pending & CAUSEF_IP4) intc1_req0_irqdispatch(regs); else if (pending & CAUSEF_IP5) intc1_req1_irqdispatch(regs); else spurious_interrupt(regs); }