Commit 0664996b7c2fdb1b7f90954469cc242274abd7db

Authored by Akinobu Mita
Committed by Linus Torvalds
1 parent 3f5527fe7e

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>

Showing 14 changed files with 48 additions and 0 deletions Side-by-side Diff

... ... @@ -22,6 +22,10 @@
22 22 bool
23 23 default y
24 24  
  25 +config GENERIC_FIND_BIT_LE
  26 + bool
  27 + default y
  28 +
25 29 config GENERIC_HWEIGHT
26 30 bool
27 31 default y
... ... @@ -45,6 +45,10 @@
45 45 bool
46 46 default y
47 47  
  48 +config GENERIC_FIND_BIT_LE
  49 + bool
  50 + default y
  51 +
48 52 config GENERIC_HWEIGHT
49 53 bool
50 54 default y
... ... @@ -260,6 +260,10 @@
260 260 bool
261 261 default y
262 262  
  263 +config GENERIC_FIND_BIT_LE
  264 + bool
  265 + default y
  266 +
263 267 config GENERIC_HWEIGHT
264 268 bool
265 269 default y
arch/m68knommu/Kconfig
... ... @@ -42,6 +42,10 @@
42 42 bool
43 43 default y
44 44  
  45 +config GENERIC_FIND_BIT_LE
  46 + bool
  47 + default y
  48 +
45 49 config GENERIC_GPIO
46 50 bool
47 51 default n
arch/microblaze/Kconfig
... ... @@ -37,6 +37,9 @@
37 37 config GENERIC_FIND_NEXT_BIT
38 38 def_bool y
39 39  
  40 +config GENERIC_FIND_BIT_LE
  41 + def_bool y
  42 +
40 43 config GENERIC_HWEIGHT
41 44 def_bool y
42 45  
... ... @@ -777,6 +777,10 @@
777 777 bool
778 778 default y
779 779  
  780 +config GENERIC_FIND_BIT_LE
  781 + bool
  782 + default y
  783 +
780 784 config GENERIC_HWEIGHT
781 785 bool
782 786 default y
... ... @@ -52,6 +52,10 @@
52 52 bool
53 53 default y
54 54  
  55 +config GENERIC_FIND_BIT_LE
  56 + bool
  57 + default y
  58 +
55 59 config GENERIC_BUG
56 60 bool
57 61 default y
arch/powerpc/Kconfig
... ... @@ -95,6 +95,10 @@
95 95 bool
96 96 default y
97 97  
  98 +config GENERIC_FIND_BIT_LE
  99 + bool
  100 + default y
  101 +
98 102 config GENERIC_GPIO
99 103 bool
100 104 help
... ... @@ -75,6 +75,9 @@
75 75 config GENERIC_FIND_NEXT_BIT
76 76 def_bool y
77 77  
  78 +config GENERIC_FIND_BIT_LE
  79 + def_bool y
  80 +
78 81 config GENERIC_HWEIGHT
79 82 def_bool y
80 83  
... ... @@ -192,6 +192,10 @@
192 192 bool
193 193 default y
194 194  
  195 +config GENERIC_FIND_BIT_LE
  196 + bool
  197 + default y
  198 +
195 199 config GENERIC_HWEIGHT
196 200 bool
197 201 default y if !ULTRA_HAS_POPULATION_COUNT
... ... @@ -21,6 +21,9 @@
21 21 config GENERIC_FIND_NEXT_BIT
22 22 def_bool y
23 23  
  24 +config GENERIC_FIND_BIT_LE
  25 + def_bool y
  26 +
24 27 config GENERIC_HWEIGHT
25 28 def_bool y
26 29  
... ... @@ -22,6 +22,9 @@
22 22 config GENERIC_FIND_NEXT_BIT
23 23 bool
24 24  
  25 +config GENERIC_FIND_BIT_LE
  26 + bool
  27 +
25 28 config GENERIC_FIND_LAST_BIT
26 29 bool
27 30 default y
... ... @@ -40,6 +40,7 @@
40 40 lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
41 41 lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o
42 42 lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o
  43 +lib-$(CONFIG_GENERIC_FIND_BIT_LE) += find_next_bit.o
43 44 obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o
44 45  
45 46 CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS))
... ... @@ -160,6 +160,7 @@
160 160 #endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
161 161  
162 162 #ifdef __BIG_ENDIAN
  163 +#ifdef CONFIG_GENERIC_FIND_BIT_LE
163 164  
164 165 /* include/linux/byteorder does not support "unsigned long" type */
165 166 static inline unsigned long ext2_swabp(const unsigned long * x)
... ... @@ -273,5 +274,7 @@
273 274 return result + __ffs(ext2_swab(tmp));
274 275 }
275 276 EXPORT_SYMBOL(find_next_bit_le);
  277 +
  278 +#endif /* CONFIG_GENERIC_FIND_BIT_LE */
276 279 #endif /* __BIG_ENDIAN */