aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkinobu Mita <akinobu.mita@gmail.com>2011-03-23 19:41:59 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-23 22:46:14 -0400
commit0664996b7c2fdb1b7f90954469cc242274abd7db (patch)
tree21bcf25afb94791f87fc5aa8c7e79ac1a8845ad8
parent3f5527fe7e0fb50556b97b8addbe3832985f793e (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/Kconfig4
-rw-r--r--arch/h8300/Kconfig4
-rw-r--r--arch/m32r/Kconfig4
-rw-r--r--arch/m68knommu/Kconfig4
-rw-r--r--arch/microblaze/Kconfig3
-rw-r--r--arch/mips/Kconfig4
-rw-r--r--arch/parisc/Kconfig4
-rw-r--r--arch/powerpc/Kconfig4
-rw-r--r--arch/sh/Kconfig3
-rw-r--r--arch/sparc/Kconfig4
-rw-r--r--arch/xtensa/Kconfig3
-rw-r--r--lib/Kconfig3
-rw-r--r--lib/Makefile1
-rw-r--r--lib/find_next_bit.c3
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
25config GENERIC_FIND_BIT_LE
26 bool
27 default y
28
25config GENERIC_HWEIGHT 29config 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
48config GENERIC_FIND_BIT_LE
49 bool
50 default y
51
48config GENERIC_HWEIGHT 52config 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
263config GENERIC_FIND_BIT_LE
264 bool
265 default y
266
263config GENERIC_HWEIGHT 267config 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
45config GENERIC_FIND_BIT_LE
46 bool
47 default y
48
45config GENERIC_GPIO 49config 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
37config GENERIC_FIND_NEXT_BIT 37config GENERIC_FIND_NEXT_BIT
38 def_bool y 38 def_bool y
39 39
40config GENERIC_FIND_BIT_LE
41 def_bool y
42
40config GENERIC_HWEIGHT 43config 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
780config GENERIC_FIND_BIT_LE
781 bool
782 default y
783
780config GENERIC_HWEIGHT 784config 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
55config GENERIC_FIND_BIT_LE
56 bool
57 default y
58
55config GENERIC_BUG 59config 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
98config GENERIC_FIND_BIT_LE
99 bool
100 default y
101
98config GENERIC_GPIO 102config 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
75config GENERIC_FIND_NEXT_BIT 75config GENERIC_FIND_NEXT_BIT
76 def_bool y 76 def_bool y
77 77
78config GENERIC_FIND_BIT_LE
79 def_bool y
80
78config GENERIC_HWEIGHT 81config 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
195config GENERIC_FIND_BIT_LE
196 bool
197 default y
198
195config GENERIC_HWEIGHT 199config 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
21config GENERIC_FIND_NEXT_BIT 21config GENERIC_FIND_NEXT_BIT
22 def_bool y 22 def_bool y
23 23
24config GENERIC_FIND_BIT_LE
25 def_bool y
26
24config GENERIC_HWEIGHT 27config 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
22config GENERIC_FIND_NEXT_BIT 22config GENERIC_FIND_NEXT_BIT
23 bool 23 bool
24 24
25config GENERIC_FIND_BIT_LE
26 bool
27
25config GENERIC_FIND_LAST_BIT 28config 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
40lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o 40lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
41lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o 41lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o
42lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o 42lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o
43lib-$(CONFIG_GENERIC_FIND_BIT_LE) += find_next_bit.o
43obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o 44obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o
44 45
45CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS)) 46CFLAGS_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 */
165static inline unsigned long ext2_swabp(const unsigned long * x) 166static 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}
275EXPORT_SYMBOL(find_next_bit_le); 276EXPORT_SYMBOL(find_next_bit_le);
277
278#endif /* CONFIG_GENERIC_FIND_BIT_LE */
276#endif /* __BIG_ENDIAN */ 279#endif /* __BIG_ENDIAN */