linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / mips / galileo-boards / ev96100 / irq.c
index ee5d672..97bf094 100644 (file)
@@ -40,6 +40,8 @@
 #include <linux/interrupt.h>
 #include <asm/irq_cpu.h>
 
+extern asmlinkage void ev96100IRQ(void);
+
 static inline unsigned int ffz8(unsigned int word)
 {
        unsigned long k;
@@ -52,26 +54,13 @@ static inline unsigned int ffz8(unsigned int word)
        return k;
 }
 
-extern void mips_timer_interrupt(struct pt_regs *regs);
-
-asmlinkage void ev96100_cpu_irq(unsigned int pending, struct pt_regs *regs)
+asmlinkage void ev96100_cpu_irq(unsigned int pendin)
 {
        do_IRQ(ffz8(pending >> 8), regs);
 }
 
-asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
-{
-       unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
-
-       if (pending & CAUSEF_IP7)
-               mips_timer_interrupt(regs);
-       else if (pending)
-               ev96100_cpu_irq(pending, regs);
-       else
-               spurious_interrupt(regs);
-}
-
 void __init arch_init_irq(void)
 {
+       set_except_vector(0, ev96100IRQ);
        mips_cpu_irq_init(0);
 }