diff options
author | Akinobu Mita <akinobu.mita@gmail.com> | 2011-03-23 19:41:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-23 22:46:14 -0400 |
commit | 0664996b7c2fdb1b7f90954469cc242274abd7db (patch) | |
tree | 21bcf25afb94791f87fc5aa8c7e79ac1a8845ad8 /lib | |
parent | 3f5527fe7e0fb50556b97b8addbe3832985f793e (diff) |
bitops: introduce CONFIG_GENERIC_FIND_BIT_LE
This introduces CONFIG_GENERIC_FIND_BIT_LE to tell whether to use generic
implementation of find_*_bit_le() in lib/find_next_bit.c or not.
For now we select CONFIG_GENERIC_FIND_BIT_LE for all architectures which
enable CONFIG_GENERIC_FIND_NEXT_BIT.
But m68knommu wants to define own faster find_next_zero_bit_le() and
continues using generic find_next_{,zero_}bit().
(CONFIG_GENERIC_FIND_NEXT_BIT and !CONFIG_GENERIC_FIND_BIT_LE)
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Greg Ungerer <gerg@uclinux.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Kconfig | 3 | ||||
-rw-r--r-- | lib/Makefile | 1 | ||||
-rw-r--r-- | lib/find_next_bit.c | 3 |
3 files changed, 7 insertions, 0 deletions
diff --git a/lib/Kconfig b/lib/Kconfig index 3a55a43c43eb..23fa7a359db7 100644 --- a/lib/Kconfig +++ b/lib/Kconfig | |||
@@ -22,6 +22,9 @@ config GENERIC_FIND_FIRST_BIT | |||
22 | config GENERIC_FIND_NEXT_BIT | 22 | config GENERIC_FIND_NEXT_BIT |
23 | bool | 23 | bool |
24 | 24 | ||
25 | config GENERIC_FIND_BIT_LE | ||
26 | bool | ||
27 | |||
25 | config GENERIC_FIND_LAST_BIT | 28 | config GENERIC_FIND_LAST_BIT |
26 | bool | 29 | bool |
27 | default y | 30 | default y |
diff --git a/lib/Makefile b/lib/Makefile index 8c9de027ebb1..d7872b5c4c1c 100644 --- a/lib/Makefile +++ b/lib/Makefile | |||
@@ -40,6 +40,7 @@ lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o | |||
40 | lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o | 40 | lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o |
41 | lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o | 41 | lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o |
42 | lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o | 42 | lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o |
43 | lib-$(CONFIG_GENERIC_FIND_BIT_LE) += find_next_bit.o | ||
43 | obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o | 44 | obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o |
44 | 45 | ||
45 | CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS)) | 46 | CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS)) |
diff --git a/lib/find_next_bit.c b/lib/find_next_bit.c index 7667c3d907d3..b0a8767282bf 100644 --- a/lib/find_next_bit.c +++ b/lib/find_next_bit.c | |||
@@ -160,6 +160,7 @@ EXPORT_SYMBOL(find_first_zero_bit); | |||
160 | #endif /* CONFIG_GENERIC_FIND_FIRST_BIT */ | 160 | #endif /* CONFIG_GENERIC_FIND_FIRST_BIT */ |
161 | 161 | ||
162 | #ifdef __BIG_ENDIAN | 162 | #ifdef __BIG_ENDIAN |
163 | #ifdef CONFIG_GENERIC_FIND_BIT_LE | ||
163 | 164 | ||
164 | /* include/linux/byteorder does not support "unsigned long" type */ | 165 | /* include/linux/byteorder does not support "unsigned long" type */ |
165 | static inline unsigned long ext2_swabp(const unsigned long * x) | 166 | static inline unsigned long ext2_swabp(const unsigned long * x) |
@@ -273,4 +274,6 @@ found_middle_swap: | |||
273 | return result + __ffs(ext2_swab(tmp)); | 274 | return result + __ffs(ext2_swab(tmp)); |
274 | } | 275 | } |
275 | EXPORT_SYMBOL(find_next_bit_le); | 276 | EXPORT_SYMBOL(find_next_bit_le); |
277 | |||
278 | #endif /* CONFIG_GENERIC_FIND_BIT_LE */ | ||
276 | #endif /* __BIG_ENDIAN */ | 279 | #endif /* __BIG_ENDIAN */ |