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 | |
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>
-rw-r--r-- | arch/frv/Kconfig | 4 | ||||
-rw-r--r-- | arch/h8300/Kconfig | 4 | ||||
-rw-r--r-- | arch/m32r/Kconfig | 4 | ||||
-rw-r--r-- | arch/m68knommu/Kconfig | 4 | ||||
-rw-r--r-- | arch/microblaze/Kconfig | 3 | ||||
-rw-r--r-- | arch/mips/Kconfig | 4 | ||||
-rw-r--r-- | arch/parisc/Kconfig | 4 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 4 | ||||
-rw-r--r-- | arch/sh/Kconfig | 3 | ||||
-rw-r--r-- | arch/sparc/Kconfig | 4 | ||||
-rw-r--r-- | arch/xtensa/Kconfig | 3 | ||||
-rw-r--r-- | lib/Kconfig | 3 | ||||
-rw-r--r-- | lib/Makefile | 1 | ||||
-rw-r--r-- | lib/find_next_bit.c | 3 |
14 files changed, 48 insertions, 0 deletions
diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig index 747499a1b31e..f6037b2da25e 100644 --- a/arch/frv/Kconfig +++ b/arch/frv/Kconfig | |||
@@ -22,6 +22,10 @@ config GENERIC_FIND_NEXT_BIT | |||
22 | bool | 22 | bool |
23 | default y | 23 | default y |
24 | 24 | ||
25 | config GENERIC_FIND_BIT_LE | ||
26 | bool | ||
27 | default y | ||
28 | |||
25 | config GENERIC_HWEIGHT | 29 | config GENERIC_HWEIGHT |
26 | bool | 30 | bool |
27 | default y | 31 | default y |
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig index 6df692d1475f..9624db193e3c 100644 --- a/arch/h8300/Kconfig +++ b/arch/h8300/Kconfig | |||
@@ -45,6 +45,10 @@ config GENERIC_FIND_NEXT_BIT | |||
45 | bool | 45 | bool |
46 | default y | 46 | default y |
47 | 47 | ||
48 | config GENERIC_FIND_BIT_LE | ||
49 | bool | ||
50 | default y | ||
51 | |||
48 | config GENERIC_HWEIGHT | 52 | config GENERIC_HWEIGHT |
49 | bool | 53 | bool |
50 | default y | 54 | default y |
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig index ef4c1e442be3..62afe23c9a49 100644 --- a/arch/m32r/Kconfig +++ b/arch/m32r/Kconfig | |||
@@ -260,6 +260,10 @@ config GENERIC_FIND_NEXT_BIT | |||
260 | bool | 260 | bool |
261 | default y | 261 | default y |
262 | 262 | ||
263 | config GENERIC_FIND_BIT_LE | ||
264 | bool | ||
265 | default y | ||
266 | |||
263 | config GENERIC_HWEIGHT | 267 | config GENERIC_HWEIGHT |
264 | bool | 268 | bool |
265 | default y | 269 | default y |
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index b5424cf948e6..5795f58728ca 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig | |||
@@ -42,6 +42,10 @@ config GENERIC_FIND_NEXT_BIT | |||
42 | bool | 42 | bool |
43 | default y | 43 | default y |
44 | 44 | ||
45 | config GENERIC_FIND_BIT_LE | ||
46 | bool | ||
47 | default y | ||
48 | |||
45 | config GENERIC_GPIO | 49 | config GENERIC_GPIO |
46 | bool | 50 | bool |
47 | default n | 51 | default n |
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index 922c4194c7bb..5f0cf0e32653 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig | |||
@@ -37,6 +37,9 @@ config ARCH_HAS_ILOG2_U64 | |||
37 | config GENERIC_FIND_NEXT_BIT | 37 | config GENERIC_FIND_NEXT_BIT |
38 | def_bool y | 38 | def_bool y |
39 | 39 | ||
40 | config GENERIC_FIND_BIT_LE | ||
41 | def_bool y | ||
42 | |||
40 | config GENERIC_HWEIGHT | 43 | config GENERIC_HWEIGHT |
41 | def_bool y | 44 | def_bool y |
42 | 45 | ||
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index d88983516e26..6e9811d40c9f 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -777,6 +777,10 @@ config GENERIC_FIND_NEXT_BIT | |||
777 | bool | 777 | bool |
778 | default y | 778 | default y |
779 | 779 | ||
780 | config GENERIC_FIND_BIT_LE | ||
781 | bool | ||
782 | default y | ||
783 | |||
780 | config GENERIC_HWEIGHT | 784 | config GENERIC_HWEIGHT |
781 | bool | 785 | bool |
782 | default y | 786 | default y |
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index fafdf30bea9e..9b1f427cdc37 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig | |||
@@ -52,6 +52,10 @@ config GENERIC_FIND_NEXT_BIT | |||
52 | bool | 52 | bool |
53 | default y | 53 | default y |
54 | 54 | ||
55 | config GENERIC_FIND_BIT_LE | ||
56 | bool | ||
57 | default y | ||
58 | |||
55 | config GENERIC_BUG | 59 | config GENERIC_BUG |
56 | bool | 60 | bool |
57 | default y | 61 | default y |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 71ba04721beb..ce9ff55e1026 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -95,6 +95,10 @@ config GENERIC_FIND_NEXT_BIT | |||
95 | bool | 95 | bool |
96 | default y | 96 | default y |
97 | 97 | ||
98 | config GENERIC_FIND_BIT_LE | ||
99 | bool | ||
100 | default y | ||
101 | |||
98 | config GENERIC_GPIO | 102 | config GENERIC_GPIO |
99 | bool | 103 | bool |
100 | help | 104 | help |
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 2d264fa84959..1fbf0c7583d0 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -75,6 +75,9 @@ config GENERIC_CSUM | |||
75 | config GENERIC_FIND_NEXT_BIT | 75 | config GENERIC_FIND_NEXT_BIT |
76 | def_bool y | 76 | def_bool y |
77 | 77 | ||
78 | config GENERIC_FIND_BIT_LE | ||
79 | def_bool y | ||
80 | |||
78 | config GENERIC_HWEIGHT | 81 | config GENERIC_HWEIGHT |
79 | def_bool y | 82 | def_bool y |
80 | 83 | ||
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index e48f471be547..f766e6bf370e 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
@@ -192,6 +192,10 @@ config GENERIC_FIND_NEXT_BIT | |||
192 | bool | 192 | bool |
193 | default y | 193 | default y |
194 | 194 | ||
195 | config GENERIC_FIND_BIT_LE | ||
196 | bool | ||
197 | default y | ||
198 | |||
195 | config GENERIC_HWEIGHT | 199 | config GENERIC_HWEIGHT |
196 | bool | 200 | bool |
197 | default y if !ULTRA_HAS_POPULATION_COUNT | 201 | default y if !ULTRA_HAS_POPULATION_COUNT |
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index d373d159e75e..72839190f503 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig | |||
@@ -21,6 +21,9 @@ config RWSEM_XCHGADD_ALGORITHM | |||
21 | config GENERIC_FIND_NEXT_BIT | 21 | config GENERIC_FIND_NEXT_BIT |
22 | def_bool y | 22 | def_bool y |
23 | 23 | ||
24 | config GENERIC_FIND_BIT_LE | ||
25 | def_bool y | ||
26 | |||
24 | config GENERIC_HWEIGHT | 27 | config GENERIC_HWEIGHT |
25 | def_bool y | 28 | def_bool y |
26 | 29 | ||
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 */ |