summaryrefslogtreecommitdiff
path: root/arch/mips
diff options
context:
space:
mode:
authorManuel Lauss <manuel.lauss@googlemail.com>2009-10-13 20:26:31 +0200
committerRalf Baechle <ralf@linux-mips.org>2009-12-19 22:44:59 +0000
commite57a7baff11edba11e3807e9057ff84e93f6048c (patch)
treee463f386a824d5a5c9c357b3bd090abd00bc8204 /arch/mips
parentcb5dfaa1b34b720a63b0ab86506f8357a74f9db2 (diff)
MIPS: Alchemy: reduce size of irq dispatcher
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>
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/alchemy/common/irq.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/mips/alchemy/common/irq.c b/arch/mips/alchemy/common/irq.c
index f5b148af8b8c..960a3ee2bd4c 100644
--- a/arch/mips/alchemy/common/irq.c
+++ b/arch/mips/alchemy/common/irq.c
@@ -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 */