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>
This commit is contained in:
Родитель
3f5527fe7e
Коммит
0664996b7c
|
@ -22,6 +22,10 @@ config GENERIC_FIND_NEXT_BIT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -45,6 +45,10 @@ config GENERIC_FIND_NEXT_BIT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -260,6 +260,10 @@ config GENERIC_FIND_NEXT_BIT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -42,6 +42,10 @@ config GENERIC_FIND_NEXT_BIT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config GENERIC_GPIO
|
config GENERIC_GPIO
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
|
|
@ -37,6 +37,9 @@ config ARCH_HAS_ILOG2_U64
|
||||||
config GENERIC_FIND_NEXT_BIT
|
config GENERIC_FIND_NEXT_BIT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
|
|
@ -777,6 +777,10 @@ config GENERIC_FIND_NEXT_BIT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -52,6 +52,10 @@ config GENERIC_FIND_NEXT_BIT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config GENERIC_BUG
|
config GENERIC_BUG
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -95,6 +95,10 @@ config GENERIC_FIND_NEXT_BIT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config GENERIC_GPIO
|
config GENERIC_GPIO
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
|
|
@ -75,6 +75,9 @@ config GENERIC_CSUM
|
||||||
config GENERIC_FIND_NEXT_BIT
|
config GENERIC_FIND_NEXT_BIT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
|
|
@ -192,6 +192,10 @@ config GENERIC_FIND_NEXT_BIT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
bool
|
bool
|
||||||
default y if !ULTRA_HAS_POPULATION_COUNT
|
default y if !ULTRA_HAS_POPULATION_COUNT
|
||||||
|
|
|
@ -21,6 +21,9 @@ config RWSEM_XCHGADD_ALGORITHM
|
||||||
config GENERIC_FIND_NEXT_BIT
|
config GENERIC_FIND_NEXT_BIT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,9 @@ config GENERIC_FIND_FIRST_BIT
|
||||||
config GENERIC_FIND_NEXT_BIT
|
config GENERIC_FIND_NEXT_BIT
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config GENERIC_FIND_BIT_LE
|
||||||
|
bool
|
||||||
|
|
||||||
config GENERIC_FIND_LAST_BIT
|
config GENERIC_FIND_LAST_BIT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -40,6 +40,7 @@ lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
|
||||||
lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
|
lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
|
||||||
lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.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_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
|
obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o
|
||||||
|
|
||||||
CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS))
|
CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS))
|
||||||
|
|
|
@ -160,6 +160,7 @@ EXPORT_SYMBOL(find_first_zero_bit);
|
||||||
#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
|
#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
|
||||||
|
|
||||||
#ifdef __BIG_ENDIAN
|
#ifdef __BIG_ENDIAN
|
||||||
|
#ifdef CONFIG_GENERIC_FIND_BIT_LE
|
||||||
|
|
||||||
/* include/linux/byteorder does not support "unsigned long" type */
|
/* include/linux/byteorder does not support "unsigned long" type */
|
||||||
static inline unsigned long ext2_swabp(const unsigned long * x)
|
static inline unsigned long ext2_swabp(const unsigned long * x)
|
||||||
|
@ -273,4 +274,6 @@ found_middle_swap:
|
||||||
return result + __ffs(ext2_swab(tmp));
|
return result + __ffs(ext2_swab(tmp));
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(find_next_bit_le);
|
EXPORT_SYMBOL(find_next_bit_le);
|
||||||
|
|
||||||
|
#endif /* CONFIG_GENERIC_FIND_BIT_LE */
|
||||||
#endif /* __BIG_ENDIAN */
|
#endif /* __BIG_ENDIAN */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче