Skip to content

Commit

Permalink
bitops: introduce CONFIG_GENERIC_FIND_BIT_LE
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Greg Ungerer <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
mita authored and torvalds committed Mar 24, 2011
1 parent 3f5527f commit 0664996
Show file tree
Hide file tree
Showing 14 changed files with 48 additions and 0 deletions.
4 changes: 4 additions & 0 deletions arch/frv/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ config GENERIC_FIND_NEXT_BIT
bool
default y

config GENERIC_FIND_BIT_LE
bool
default y

config GENERIC_HWEIGHT
bool
default y
Expand Down
4 changes: 4 additions & 0 deletions arch/h8300/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ config GENERIC_FIND_NEXT_BIT
bool
default y

config GENERIC_FIND_BIT_LE
bool
default y

config GENERIC_HWEIGHT
bool
default y
Expand Down
4 changes: 4 additions & 0 deletions arch/m32r/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,10 @@ config GENERIC_FIND_NEXT_BIT
bool
default y

config GENERIC_FIND_BIT_LE
bool
default y

config GENERIC_HWEIGHT
bool
default y
Expand Down
4 changes: 4 additions & 0 deletions arch/m68knommu/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ config GENERIC_FIND_NEXT_BIT
bool
default y

config GENERIC_FIND_BIT_LE
bool
default y

config GENERIC_GPIO
bool
default n
Expand Down
3 changes: 3 additions & 0 deletions arch/microblaze/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ config ARCH_HAS_ILOG2_U64
config GENERIC_FIND_NEXT_BIT
def_bool y

config GENERIC_FIND_BIT_LE
def_bool y

config GENERIC_HWEIGHT
def_bool y

Expand Down
4 changes: 4 additions & 0 deletions arch/mips/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,10 @@ config GENERIC_FIND_NEXT_BIT
bool
default y

config GENERIC_FIND_BIT_LE
bool
default y

config GENERIC_HWEIGHT
bool
default y
Expand Down
4 changes: 4 additions & 0 deletions arch/parisc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ config GENERIC_FIND_NEXT_BIT
bool
default y

config GENERIC_FIND_BIT_LE
bool
default y

config GENERIC_BUG
bool
default y
Expand Down
4 changes: 4 additions & 0 deletions arch/powerpc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,10 @@ config GENERIC_FIND_NEXT_BIT
bool
default y

config GENERIC_FIND_BIT_LE
bool
default y

config GENERIC_GPIO
bool
help
Expand Down
3 changes: 3 additions & 0 deletions arch/sh/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ config GENERIC_CSUM
config GENERIC_FIND_NEXT_BIT
def_bool y

config GENERIC_FIND_BIT_LE
def_bool y

config GENERIC_HWEIGHT
def_bool y

Expand Down
4 changes: 4 additions & 0 deletions arch/sparc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,10 @@ config GENERIC_FIND_NEXT_BIT
bool
default y

config GENERIC_FIND_BIT_LE
bool
default y

config GENERIC_HWEIGHT
bool
default y if !ULTRA_HAS_POPULATION_COUNT
Expand Down
3 changes: 3 additions & 0 deletions arch/xtensa/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ config RWSEM_XCHGADD_ALGORITHM
config GENERIC_FIND_NEXT_BIT
def_bool y

config GENERIC_FIND_BIT_LE
def_bool y

config GENERIC_HWEIGHT
def_bool y

Expand Down
3 changes: 3 additions & 0 deletions lib/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ config GENERIC_FIND_FIRST_BIT
config GENERIC_FIND_NEXT_BIT
bool

config GENERIC_FIND_BIT_LE
bool

config GENERIC_FIND_LAST_BIT
bool
default y
Expand Down
1 change: 1 addition & 0 deletions lib/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o
lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o
lib-$(CONFIG_GENERIC_FIND_BIT_LE) += find_next_bit.o
obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o

CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS))
Expand Down
3 changes: 3 additions & 0 deletions lib/find_next_bit.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ EXPORT_SYMBOL(find_first_zero_bit);
#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */

#ifdef __BIG_ENDIAN
#ifdef CONFIG_GENERIC_FIND_BIT_LE

/* include/linux/byteorder does not support "unsigned long" type */
static inline unsigned long ext2_swabp(const unsigned long * x)
Expand Down Expand Up @@ -273,4 +274,6 @@ unsigned long find_next_bit_le(const void *addr, unsigned
return result + __ffs(ext2_swab(tmp));
}
EXPORT_SYMBOL(find_next_bit_le);

#endif /* CONFIG_GENERIC_FIND_BIT_LE */
#endif /* __BIG_ENDIAN */

0 comments on commit 0664996

Please sign in to comment.