diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-12 13:48:57 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-12 13:48:57 +0100 |
commit | 45ab6b0c76d0e4cce5bd608ccf97b0f6b20f18df (patch) | |
tree | 4d51c73533c386aee16fde1e74b5e3bc22eedc53 /arch/arm/include/asm/bitops.h | |
parent | 81444a799550214f549caf579cf65a0ca55e70b7 (diff) | |
parent | d65bd5ecb2bd166cea4952a59b7e16cc3ad6ef6c (diff) | |
download | kernel_samsung_smdk4412-45ab6b0c76d0e4cce5bd608ccf97b0f6b20f18df.zip kernel_samsung_smdk4412-45ab6b0c76d0e4cce5bd608ccf97b0f6b20f18df.tar.gz kernel_samsung_smdk4412-45ab6b0c76d0e4cce5bd608ccf97b0f6b20f18df.tar.bz2 |
Merge branch 'sched/core' into cpus4096
Conflicts:
include/linux/ftrace.h
kernel/sched.c
Diffstat (limited to 'arch/arm/include/asm/bitops.h')
-rw-r--r-- | arch/arm/include/asm/bitops.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h index 9a1db20..63a481f 100644 --- a/arch/arm/include/asm/bitops.h +++ b/arch/arm/include/asm/bitops.h @@ -237,6 +237,7 @@ extern int _find_next_bit_be(const unsigned long *p, int size, int offset); #if __LINUX_ARM_ARCH__ < 5 #include <asm-generic/bitops/ffz.h> +#include <asm-generic/bitops/__fls.h> #include <asm-generic/bitops/__ffs.h> #include <asm-generic/bitops/fls.h> #include <asm-generic/bitops/ffs.h> @@ -277,16 +278,19 @@ static inline int constant_fls(int x) * the clz instruction for much better code efficiency. */ -#define __fls(x) \ - ( __builtin_constant_p(x) ? constant_fls(x) : \ - ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) ) - -/* Implement fls() in C so that 64-bit args are suitably truncated */ static inline int fls(int x) { - return __fls(x); + int ret; + + if (__builtin_constant_p(x)) + return constant_fls(x); + + asm("clz\t%0, %1" : "=r" (ret) : "r" (x) : "cc"); + ret = 32 - ret; + return ret; } +#define __fls(x) (fls(x) - 1) #define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); }) #define __ffs(x) (ffs(x) - 1) #define ffz(x) __ffs( ~(x) ) |