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

Sergei Shtylyov sshtylyov at mvista.com
Tue Sep 28 08:45:59 EDT 2010


Hello.

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...

WBR, Sergei



More information about the linux-arm-kernel mailing list