Merge branch 'misc' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc...
[pandora-kernel.git] / arch / mips / tx4938 / common / irq.c
index 4f90d7f..8738051 100644 (file)
@@ -392,11 +392,8 @@ tx4938_irq_pic_end(unsigned int irq)
 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;
 }
@@ -422,3 +419,21 @@ tx4938_irq_nested(void)
        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);
+}