From mboxrd@z Thu Jan 1 00:00:00 1970 From: kgene.kim@samsung.com (Kukjin Kim) Date: Tue, 28 Sep 2010 23:07:35 +0900 Subject: [PATCH] ARM: S5PV310: Optimize interrupt source searching code In-Reply-To: References: <1285637510-16740-1-git-send-email-kgene.kim@samsung.com> <4CA1E387.709@ru.mvista.com> Message-ID: <00c201cb5f16$839461d0$8abd2570$%kim@samsung.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Michal Nazarewicz wrote: > Hi :-) > On Tue, 28 Sep 2010 14:45:59 +0200, Sergei Shtylyov > wrote: > > > Hello. > > > > On 28-09-2010 5:31, Kukjin Kim wrote: > > > >> From: Changhwan Youn > > > >> It is reported by Junseok Jung that using clz instruction is > >> better instead of using for-loop to find the interrupt source. > >> This patch modifies interrupt source searching code using __fls(). > >> The __fls() is implemented using clz instruction. > > > >> Suggested-by: Junseok Jung > >> Signed-off-by: Changhwan Youn > >> Signed-off-by: Kukjin Kim > >> --- > >> arch/arm/mach-s5pv310/irq-combiner.c | 6 +----- > >> 1 files changed, 1 insertions(+), 5 deletions(-) > > > >> diff --git a/arch/arm/mach-s5pv310/irq-combiner.c b/arch/arm/mach-s5pv310/irq- > combiner.c > >> index 0f70521..39e3647 100644 > >> --- a/arch/arm/mach-s5pv310/irq-combiner.c > >> +++ b/arch/arm/mach-s5pv310/irq-combiner.c > >> @@ -66,11 +66,7 @@ static void combiner_handle_cascade_irq(unsigned int > irq, struct irq_desc *desc) > >> if (status == 0) > >> goto out; > >> > >> - for (combiner_irq = 0; combiner_irq< 32; combiner_irq++) { > >> - if (status & 0x1) > >> - break; > >> - status>>= 1; > >> - } > >> + combiner_irq = __fls(status); > > > > But the loop finds the *first* set bit, not the last... > > __ffs than? > Yes, already re-submitted. Thanks. Best regards, Kgene. -- Kukjin Kim , Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.