void __init
tx4938_irq_init(void)
{
+ extern asmlinkage void tx4938_irq_handler(void);
+
tx4938_irq_cp0_init();
tx4938_irq_pic_init();
+ set_except_vector(0, tx4938_irq_handler);
return;
}
wbflush();
return (sw_irq);
}
-
-asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
-{
- unsigned int pending = read_c0_cause() & read_c0_status();
-
- if (pending & STATUSF_IP7)
- do_IRQ(TX4938_IRQ_CPU_TIMER, regs);
- else if (pending & STATUSF_IP2) {
- int irq = tx4938_irq_nested();
- if (irq)
- do_IRQ(irq, regs);
- else
- spurious_interrupt(regs);
- } else if (pending & STATUSF_IP1)
- do_IRQ(TX4938_IRQ_USER1, regs);
- else if (pending & STATUSF_IP0)
- do_IRQ(TX4938_IRQ_USER0, regs);
-}