* [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard @ 2011-04-20 14:20 Akinobu Mita 2011-04-20 14:20 ` [PATCH 2/3] arm: use asm-generic/bitops/le.h Akinobu Mita 2011-04-20 14:31 ` [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard Arnd Bergmann 0 siblings, 2 replies; 5+ messages in thread From: Akinobu Mita @ 2011-04-20 14:20 UTC (permalink / raw) To: linux-arm-kernel Some architectures have optimized find_*_bit_le() as static inline functions but other little-endian bitops are identical to the generic version. This adds #ifdef CONFIG_GENERIC_FIND_BIT_LE guard for find_*_bit_le() in asm-generic/bitops/le.h so that those architectures can use this header file. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: linux-arch at vger.kernel.org Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: linux390 at de.ibm.com Cc: linux-s390 at vger.kernel.org Cc: Russell King <linux@arm.linux.org.uk> Cc: linux-arm-kernel at lists.infradead.org --- include/asm-generic/bitops/le.h | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/include/asm-generic/bitops/le.h b/include/asm-generic/bitops/le.h index 946a21b..bd2253e 100644 --- a/include/asm-generic/bitops/le.h +++ b/include/asm-generic/bitops/le.h @@ -30,6 +30,8 @@ static inline unsigned long find_first_zero_bit_le(const void *addr, #define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7) +#ifdef CONFIG_GENERIC_FIND_BIT_LE + extern unsigned long find_next_zero_bit_le(const void *addr, unsigned long size, unsigned long offset); extern unsigned long find_next_bit_le(const void *addr, @@ -38,6 +40,8 @@ extern unsigned long find_next_bit_le(const void *addr, #define find_first_zero_bit_le(addr, size) \ find_next_zero_bit_le((addr), (size), 0) +#endif /* CONFIG_GENERIC_FIND_BIT_LE */ + #else #error "Please fix <asm/byteorder.h>" #endif -- 1.7.4.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] arm: use asm-generic/bitops/le.h 2011-04-20 14:20 [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard Akinobu Mita @ 2011-04-20 14:20 ` Akinobu Mita 2011-04-20 14:31 ` [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard Arnd Bergmann 1 sibling, 0 replies; 5+ messages in thread From: Akinobu Mita @ 2011-04-20 14:20 UTC (permalink / raw) To: linux-arm-kernel The previous change enables to use asm-generic/bitops/le.h on arm. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: linux-arm-kernel at lists.infradead.org --- arch/arm/include/asm/bitops.h | 41 ++++------------------------------------- 1 files changed, 4 insertions(+), 37 deletions(-) diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h index ec2e0d4..4615e1b 100644 --- a/arch/arm/include/asm/bitops.h +++ b/arch/arm/include/asm/bitops.h @@ -203,8 +203,6 @@ extern int _find_next_bit_be(const unsigned long *p, int size, int offset); #define find_first_bit(p,sz) _find_first_bit_le(p,sz) #define find_next_bit(p,sz,off) _find_next_bit_le(p,sz,off) -#define WORD_BITOFF_TO_LE(x) ((x)) - #else /* * These are the big endian, atomic definitions. @@ -214,8 +212,6 @@ extern int _find_next_bit_be(const unsigned long *p, int size, int offset); #define find_first_bit(p,sz) _find_first_bit_be(p,sz) #define find_next_bit(p,sz,off) _find_next_bit_be(p,sz,off) -#define WORD_BITOFF_TO_LE(x) ((x) ^ 0x18) - #endif #if __LINUX_ARM_ARCH__ < 5 @@ -287,40 +283,9 @@ static inline int fls(int x) #include <asm-generic/bitops/hweight.h> #include <asm-generic/bitops/lock.h> -static inline void __set_bit_le(int nr, void *addr) -{ - __set_bit(WORD_BITOFF_TO_LE(nr), addr); -} - -static inline void __clear_bit_le(int nr, void *addr) -{ - __clear_bit(WORD_BITOFF_TO_LE(nr), addr); -} - -static inline int __test_and_set_bit_le(int nr, void *addr) -{ - return __test_and_set_bit(WORD_BITOFF_TO_LE(nr), addr); -} +#include <asm-generic/bitops/le.h> -static inline int test_and_set_bit_le(int nr, void *addr) -{ - return test_and_set_bit(WORD_BITOFF_TO_LE(nr), addr); -} - -static inline int __test_and_clear_bit_le(int nr, void *addr) -{ - return __test_and_clear_bit(WORD_BITOFF_TO_LE(nr), addr); -} - -static inline int test_and_clear_bit_le(int nr, void *addr) -{ - return test_and_clear_bit(WORD_BITOFF_TO_LE(nr), addr); -} - -static inline int test_bit_le(int nr, const void *addr) -{ - return test_bit(WORD_BITOFF_TO_LE(nr), addr); -} +#ifdef __ARMEB__ static inline int find_first_zero_bit_le(const void *p, unsigned size) { @@ -337,6 +302,8 @@ static inline int find_next_bit_le(const void *p, int size, int offset) return _find_next_bit_le(p, size, offset); } +#endif + /* * Ext2 is defined to use little-endian byte ordering. */ -- 1.7.4.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard 2011-04-20 14:20 [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard Akinobu Mita 2011-04-20 14:20 ` [PATCH 2/3] arm: use asm-generic/bitops/le.h Akinobu Mita @ 2011-04-20 14:31 ` Arnd Bergmann 2011-04-20 22:59 ` Akinobu Mita 1 sibling, 1 reply; 5+ messages in thread From: Arnd Bergmann @ 2011-04-20 14:31 UTC (permalink / raw) To: linux-arm-kernel On Wednesday 20 April 2011, Akinobu Mita wrote: > index 946a21b..bd2253e 100644 > --- a/include/asm-generic/bitops/le.h > +++ b/include/asm-generic/bitops/le.h > @@ -30,6 +30,8 @@ static inline unsigned long find_first_zero_bit_le(const void *addr, > > #define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7) > > +#ifdef CONFIG_GENERIC_FIND_BIT_LE > + > extern unsigned long find_next_zero_bit_le(const void *addr, > unsigned long size, unsigned long offset); > extern unsigned long find_next_bit_le(const void *addr, > @@ -38,6 +40,8 @@ extern unsigned long find_next_bit_le(const void *addr, > #define find_first_zero_bit_le(addr, size) \ > find_next_zero_bit_le((addr), (size), 0) > > +#endif /* CONFIG_GENERIC_FIND_BIT_LE */ > + > #else > #error "Please fix <asm/byteorder.h>" > #endif The style that we normally use in asm-generic is to test the macro itself for existence, so in asm-generic, do: #ifndef find_next_zero_bit_le extern unsigned long find_next_zero_bit_le(const void *addr, unsigned long size, unsigned long offset); #endif and in the architectures, write static inline unsigned long find_next_zero_bit_le(const void *addr, unsigned long size, unsigned long offset) #define find_next_zero_bit_le find_next_zero_bit_le I guess we can do the #ifdef separately for each of the three macros, or choose one of them to use as a key. Arnd ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard 2011-04-20 14:31 ` [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard Arnd Bergmann @ 2011-04-20 22:59 ` Akinobu Mita 2011-04-21 9:03 ` Arnd Bergmann 0 siblings, 1 reply; 5+ messages in thread From: Akinobu Mita @ 2011-04-20 22:59 UTC (permalink / raw) To: linux-arm-kernel 2011/4/20 Arnd Bergmann <arnd@arndb.de>: > On Wednesday 20 April 2011, Akinobu Mita wrote: >> index 946a21b..bd2253e 100644 >> --- a/include/asm-generic/bitops/le.h >> +++ b/include/asm-generic/bitops/le.h >> @@ -30,6 +30,8 @@ static inline unsigned long find_first_zero_bit_le(const void *addr, >> >> ?#define BITOP_LE_SWIZZLE ? ? ? ((BITS_PER_LONG-1) & ~0x7) >> >> +#ifdef CONFIG_GENERIC_FIND_BIT_LE >> + >> ?extern unsigned long find_next_zero_bit_le(const void *addr, >> ? ? ? ? ? ? ? ? unsigned long size, unsigned long offset); >> ?extern unsigned long find_next_bit_le(const void *addr, >> @@ -38,6 +40,8 @@ extern unsigned long find_next_bit_le(const void *addr, >> ?#define find_first_zero_bit_le(addr, size) \ >> ? ? ? ? find_next_zero_bit_le((addr), (size), 0) >> >> +#endif /* CONFIG_GENERIC_FIND_BIT_LE */ >> + >> ?#else >> ?#error "Please fix <asm/byteorder.h>" >> ?#endif > > The style that we normally use in asm-generic is to test the macro itself > for existence, so in asm-generic, do: > > #ifndef find_next_zero_bit_le > extern unsigned long find_next_zero_bit_le(const void *addr, > ? ? ? ? ? ? ? ? unsigned long size, unsigned long offset); > #endif > > and in the architectures, write > > static inline unsigned long find_next_zero_bit_le(const void *addr, > ? ? ? ? ? ? ? ? unsigned long size, unsigned long offset) > #define find_next_zero_bit_le find_next_zero_bit_le > > I guess we can do the #ifdef separately for each of the three macros, > or choose one of them to use as a key. I see. Should we also kill CONFIG_GENERIC_FIND_BIT_LE option comletely, then add the #ifdef for each find_*() in lib/find_next_bit.c and always build it unconditionally ? ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard 2011-04-20 22:59 ` Akinobu Mita @ 2011-04-21 9:03 ` Arnd Bergmann 0 siblings, 0 replies; 5+ messages in thread From: Arnd Bergmann @ 2011-04-21 9:03 UTC (permalink / raw) To: linux-arm-kernel On Thursday 21 April 2011, Akinobu Mita wrote: > Should we also kill CONFIG_GENERIC_FIND_BIT_LE option comletely, > then add the #ifdef for each find_*() in lib/find_next_bit.c and always build > it unconditionally ? I think that would be more consistent. It's not a big difference anyway, so do it only if you feel motivated. There are a lot of other things that could be changed this way, I'd only change it while reworking other aspects in order to avoid accidentally breaking things. Arnd ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-04-21 9:03 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-04-20 14:20 [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard Akinobu Mita 2011-04-20 14:20 ` [PATCH 2/3] arm: use asm-generic/bitops/le.h Akinobu Mita 2011-04-20 14:31 ` [PATCH 1/3] bitops: add ifdef CONFIG_GENERIC_FIND_BIT_LE guard Arnd Bergmann 2011-04-20 22:59 ` Akinobu Mita 2011-04-21 9:03 ` Arnd Bergmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).