linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / mips / pmc-sierra / yosemite / irq.c
index b91d0aa..f4e2897 100644 (file)
@@ -2,8 +2,6 @@
  * Copyright (C) 2003 PMC-Sierra Inc.
  * Author: Manish Lachwani (lachwani@pmc-sierra.com)
  *
- * Copyright (C) 2006 Ralf Baechle (ralf@linux-mips.org)
- *
  *  This program is free software; you can redistribute  it and/or modify it
  *  under  the terms of  the GNU General  Public License as published by the
  *  Free Software Foundation;  either version 2 of the  License, or (at your
@@ -26,6 +24,7 @@
  *
  * Second level Interrupt handlers for the PMC-Sierra Titan/Yosemite board
  */
+#include <linux/config.h>
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <linux/kernel_stat.h>
@@ -56,6 +55,7 @@
 #define HYPERTRANSPORT_INTC     0x7a           /* INTC# */
 #define HYPERTRANSPORT_INTD     0x7b           /* INTD# */
 
+extern asmlinkage void titan_handle_int(void);
 extern void jaguar_mailbox_irq(struct pt_regs *);
 
 /*
@@ -125,35 +125,6 @@ asmlinkage void do_extended_irq(struct pt_regs *regs)
 
 }
 
-asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
-{
-       unsigned int cause = read_c0_cause();
-       unsigned int status = read_c0_status();
-       unsigned int pending = cause & status;
-
-       if (pending & STATUSF_IP7) {
-               do_IRQ(7, regs);
-       } else if (pending & STATUSF_IP2) {
-#ifdef CONFIG_HYPERTRANSPORT
-               ll_ht_smp_irq_handler(2, regs);
-#else
-               do_IRQ(2, regs);
-#endif
-       } else if (pending & STATUSF_IP3) {
-               do_IRQ(3, regs);
-       } else if (pending & STATUSF_IP4) {
-               do_IRQ(4, regs);
-       } else if (pending & STATUSF_IP5) {
-#ifdef CONFIG_SMP
-               titan_mailbox_irq(regs);
-#else
-               do_IRQ(5, regs);
-#endif
-       } else if (pending & STATUSF_IP6) {
-               do_IRQ(4, regs);
-       }
-}
-
 #ifdef CONFIG_KGDB
 extern void init_second_port(void);
 #endif
@@ -165,6 +136,7 @@ void __init arch_init_irq(void)
 {
        clear_c0_status(ST0_IM);
 
+       set_except_vector(0, titan_handle_int);
        mips_cpu_irq_init(0);
        rm7k_cpu_irq_init(8);
        rm9k_cpu_irq_init(12);