aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/alchemy
diff options
context:
space:
mode:
authorManuel Lauss <manuel.lauss@googlemail.com>2009-10-13 14:26:31 -0400
committerRalf Baechle <ralf@linux-mips.org>2010-02-27 06:52:53 -0500
commitf1fc6645a4d2cb944320ce8ed1e40f88059779e1 (patch)
treebd2d87cbf0bb729f7d3ee65c7e234e663c2fda8e /arch/mips/alchemy
parent788144656b8a862e724a1296e64ab6375eb541ed (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/alchemy')
-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)
519 unsigned long s, off; 519 unsigned long s, off;
520 520
521 if (pending & CAUSEF_IP7) { 521 if (pending & CAUSEF_IP7) {
522 do_IRQ(MIPS_CPU_IRQ_BASE + 7); 522 off = MIPS_CPU_IRQ_BASE + 7;
523 return; 523 goto handle;
524 } else if (pending & CAUSEF_IP2) { 524 } else if (pending & CAUSEF_IP2) {
525 s = IC0_REQ0INT; 525 s = IC0_REQ0INT;
526 off = AU1000_INTC0_INT_BASE; 526 off = AU1000_INTC0_INT_BASE;
@@ -542,7 +542,9 @@ spurious:
542 spurious_interrupt(); 542 spurious_interrupt();
543 return; 543 return;
544 } 544 }
545 do_IRQ(__ffs(s) + off); 545 off += __ffs(s);
546handle:
547 do_IRQ(off);
546} 548}
547 549
548/* setup edge/level and assign request 0/1 */ 550/* setup edge/level and assign request 0/1 */