asm-generic: add another generic ext2 atomic bitops
The majority of architectures implement ext2 atomic bitops as test_and_{set,clear}_bit() without spinlock. This adds this type of generic implementation in ext2-atomic-setbit.h and use it wherever possible. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Suggested-by: Andreas Dilger <adilger@dilger.ca> Suggested-by: Arnd Bergmann <arnd@arndb.de> Acked-by: 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:

committed by
Linus Torvalds

parent
b2c9cd3793
commit
148817ba09
@@ -108,19 +108,7 @@ static inline unsigned long __fls(unsigned long word)
|
||||
#include <asm-generic/bitops/find.h>
|
||||
#include <asm-generic/bitops/le.h>
|
||||
|
||||
#ifdef __XTENSA_EL__
|
||||
# define ext2_set_bit_atomic(lock,nr,addr) \
|
||||
test_and_set_bit((nr), (unsigned long*)(addr))
|
||||
# define ext2_clear_bit_atomic(lock,nr,addr) \
|
||||
test_and_clear_bit((nr), (unsigned long*)(addr))
|
||||
#elif defined(__XTENSA_EB__)
|
||||
# define ext2_set_bit_atomic(lock,nr,addr) \
|
||||
test_and_set_bit((nr) ^ 0x18, (unsigned long*)(addr))
|
||||
# define ext2_clear_bit_atomic(lock,nr,addr) \
|
||||
test_and_clear_bit((nr) ^ 0x18, (unsigned long*)(addr))
|
||||
#else
|
||||
# error processor byte order undefined!
|
||||
#endif
|
||||
#include <asm-generic/bitops/ext2-atomic-setbit.h>
|
||||
|
||||
#include <asm-generic/bitops/hweight.h>
|
||||
#include <asm-generic/bitops/lock.h>
|
||||
|
Reference in New Issue
Block a user