[PATCH] ARM: S5PV310: Optimize interrupt source searching code

Kukjin Kim kgene.kim at samsung.com
Tue Sep 28 09:10:55 EDT 2010


Sergei Shtylyov wrote:
> 
> Hello.
> 
Hi ;-)

> On 28-09-2010 5:31, Kukjin Kim wrote:
> 
> > From: Changhwan Youn<chaos.youn at samsung.com>
> 
> > 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<jundols.jung at samsung.com>
> > Signed-off-by: Changhwan Youn<chaos.youn at samsung.com>
> > Signed-off-by: Kukjin Kim<kgene.kim at samsung.com>
> > ---
> >   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...
> 
Yes, you're right.
So I already re-submitted like following :-)

http://lists.infradead.org/pipermail/linux-arm-kernel/2010-September/027071.
html

Thanks for your pointing out.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.




More information about the linux-arm-kernel mailing list