linux-mips
[Top] [All Lists]

[PATCH] MIPS: Alchemy: reduce size of irq dispatcher

To: Ralf Baechle <ralf@linux-mips.org>, Linux-MIPS <linux-mips@linux-mips.org>
Subject: [PATCH] MIPS: Alchemy: reduce size of irq dispatcher
From: Manuel Lauss <manuel.lauss@googlemail.com>
Date: Tue, 13 Oct 2009 20:26:31 +0200
Cc: Manuel Lauss <manuel.lauss@gmail.com>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer; bh=0wl621iMbzVSsaVED6i9HqaMeIKQVCsvj0QQOMb4Wa0=; b=H0ieA5rPcGwy0NeaEfclVda4I3DI/ctCzweQXgJsLjh1AcgzuxeqKg/26cA2LRBD62 tdTsvdEOeeSKSciJLpczA0nzrLHF9fy/R6o0JijqI2t1uYvKB8Wfg/0EtQwBvKjul/vJ UAwRNzgvYPqhqx98DEq/UCvh/ctyjxbJ/Hxwo=
Domainkey-signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; b=TaTVwcLYbeG010ZkaFlIPh5TL/2jW6haHUSy7uEQRhJ3YyDArlxlLYWq7NNFaXCdix YsFEunY7Pr6btXIG6Bt80ZXUbmydm8meVobrpbbGRMcM2qagQbOhdiI2Cwbpbl8cH/m+ rm7Ymx62ER7JIYMHdK2ZCmPm0E8lJZKaH8eDc=
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
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>
---
 Applies on top of the irq changes in -queue.

 arch/mips/alchemy/common/irq.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/mips/alchemy/common/irq.c b/arch/mips/alchemy/common/irq.c
index ab65997..b2a1e4e 100644
--- a/arch/mips/alchemy/common/irq.c
+++ b/arch/mips/alchemy/common/irq.c
@@ -501,8 +501,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;
@@ -524,7 +524,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 */
-- 
1.6.5.rc2


<Prev in Thread] Current Thread [Next in Thread>