MIPS: Alchemy: reduce size of irq dispatcher
authorManuel Lauss <manuel.lauss@googlemail.com>
Tue, 13 Oct 2009 18:26:31 +0000 (20:26 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Sat, 27 Feb 2010 11:52:53 +0000 (12:52 +0100)
By replacing an extra do_IRQ with a goto, the assembly shrinks
from 260 to 212 bytes (gcc-4.3.4).

Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/alchemy/common/irq.c

index f5b148af8b8c4e90c059abd289665881824d7fe4..960a3ee2bd4cbd279bcab5d79f740cf4ae6c7d8c 100644 (file)
@@ -519,8 +519,8 @@ asmlinkage void plat_irq_dispatch(void)
        unsigned long s, off;
 
        if (pending & CAUSEF_IP7) {
-               do_IRQ(MIPS_CPU_IRQ_BASE + 7);
-               return;
+               off = MIPS_CPU_IRQ_BASE + 7;
+               goto handle;
        } else if (pending & CAUSEF_IP2) {
                s = IC0_REQ0INT;
                off = AU1000_INTC0_INT_BASE;
@@ -542,7 +542,9 @@ spurious:
                spurious_interrupt();
                return;
        }
-       do_IRQ(__ffs(s) + off);
+       off += __ffs(s);
+handle:
+       do_IRQ(off);
 }
 
 /* setup edge/level and assign request 0/1 */