linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / mips / gt64120 / ev64120 / irq.c
index 46c468b..3b18615 100644 (file)
 #include <asm/system.h>
 #include <asm/gt64120.h>
 
-asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
+asmlinkage inline void pci_intA(struct pt_regs *regs)
 {
-       unsigned int pending = read_c0_status() & read_c0_cause();
-
-       if (pending & STATUSF_IP4)              /* int2 hardware line (timer) */
-               do_IRQ(4, regs);
-       else if (pending & STATUSF_IP2)         /* int0 hardware line */
-               do_IRQ(GT_INTA, regs);
-       else if (pending & STATUSF_IP5)         /* int3 hardware line */
-               do_IRQ(GT_INTD, regs);
-       else if (pending & STATUSF_IP6)         /* int4 hardware line */
-               do_IRQ(6, regs);
-       else if (pending & STATUSF_IP7)         /* compare int */
-               do_IRQ(7, regs);
-       else
-               spurious_interrupt(regs);
+       do_IRQ(GT_INTA, regs);
+}
+
+asmlinkage inline void pci_intD(struct pt_regs *regs)
+{
+       do_IRQ(GT_INTD, regs);
 }
 
 static void disable_ev64120_irq(unsigned int irq_nr)
@@ -117,11 +109,16 @@ static struct hw_interrupt_type ev64120_irq_type = {
 
 void gt64120_irq_setup(void)
 {
+       extern asmlinkage void galileo_handle_int(void);
+
        /*
         * Clear all of the interrupts while we change the able around a bit.
         */
        clear_c0_status(ST0_IM);
 
+       /* Sets the exception_handler array. */
+       set_except_vector(0, galileo_handle_int);
+
        local_irq_disable();
 
        /*