[MIPS] do_IRQ cleanup
Atsushi Nemoto [Wed, 25 Oct 2006 14:57:04 +0000 (23:57 +0900)]
Now we have both function and macro version of do_IRQ() and the former
is used only by DEC and non-preemptive kernel.  This patch makes
everyone use the macro version and removes the function version.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

arch/mips/dec/int-handler.S
arch/mips/dec/setup.c
arch/mips/kernel/irq.c
include/asm-mips/irq.h

index 31dd47d..b251ef8 100644 (file)
@@ -267,7 +267,7 @@ handle_it:
                LONG_L  s0, TI_REGS($28)
                LONG_S  sp, TI_REGS($28)
                PTR_LA  ra, ret_from_irq
-               j       do_IRQ
+               j       dec_irq_dispatch
                 nop
 
 #ifdef CONFIG_32BIT
index 6b7481e..d34032a 100644 (file)
@@ -761,3 +761,9 @@ void __init arch_init_irq(void)
        if (dec_interrupt[DEC_IRQ_HALT] >= 0)
                setup_irq(dec_interrupt[DEC_IRQ_HALT], &haltirq);
 }
+
+asmlinkage unsigned int dec_irq_dispatch(unsigned int irq)
+{
+       do_IRQ(irq);
+       return 0;
+}
index e997c94..b339798 100644 (file)
@@ -88,25 +88,6 @@ atomic_t irq_err_count;
 unsigned long irq_hwmask[NR_IRQS];
 #endif /* CONFIG_MIPS_MT_SMTC */
 
-#undef do_IRQ
-
-/*
- * do_IRQ handles all normal device IRQ's (the special
- * SMP cross-CPU interrupts have their own specific
- * handlers).
- */
-asmlinkage unsigned int do_IRQ(unsigned int irq)
-{
-       irq_enter();
-
-       __DO_IRQ_SMTC_HOOK();
-       __do_IRQ(irq);
-
-       irq_exit();
-
-       return 1;
-}
-
 /*
  * Generic, controller-independent functions:
  */
index aed3707..6765708 100644 (file)
@@ -24,8 +24,6 @@ static inline int irq_canonicalize(int irq)
 #define irq_canonicalize(irq) (irq)    /* Sane hardware, sane code ... */
 #endif
 
-extern asmlinkage unsigned int do_IRQ(unsigned int irq);
-
 #ifdef CONFIG_MIPS_MT_SMTC
 /*
  * Clear interrupt mask handling "backstop" if irq_hwmask
@@ -43,8 +41,6 @@ do {                                                                  \
 #define __DO_IRQ_SMTC_HOOK() do { } while (0)
 #endif
 
-#ifdef CONFIG_PREEMPT
-
 /*
  * do_IRQ handles all normal device IRQ's (the special
  * SMP cross-CPU interrupts have their own specific
@@ -61,8 +57,6 @@ do {                                                                  \
        irq_exit();                                                     \
 } while (0)
 
-#endif
-
 extern void arch_init_irq(void);
 extern void spurious_interrupt(void);