1930ae745SAkinobu Mita #ifndef _ASM_GENERIC_BITOPS_LE_H_ 2930ae745SAkinobu Mita #define _ASM_GENERIC_BITOPS_LE_H_ 3930ae745SAkinobu Mita 4930ae745SAkinobu Mita #include <asm/types.h> 5930ae745SAkinobu Mita #include <asm/byteorder.h> 6930ae745SAkinobu Mita 7930ae745SAkinobu Mita #if defined(__LITTLE_ENDIAN) 8930ae745SAkinobu Mita 963ab595fSAkinobu Mita #define BITOP_LE_SWIZZLE 0 10930ae745SAkinobu Mita 11*a56560b3SAkinobu Mita static inline unsigned long find_next_zero_bit_le(const void *addr, 12*a56560b3SAkinobu Mita unsigned long size, unsigned long offset) 13*a56560b3SAkinobu Mita { 14*a56560b3SAkinobu Mita return find_next_zero_bit(addr, size, offset); 15*a56560b3SAkinobu Mita } 16*a56560b3SAkinobu Mita 17*a56560b3SAkinobu Mita static inline unsigned long find_next_bit_le(const void *addr, 18*a56560b3SAkinobu Mita unsigned long size, unsigned long offset) 19*a56560b3SAkinobu Mita { 20*a56560b3SAkinobu Mita return find_next_bit(addr, size, offset); 21*a56560b3SAkinobu Mita } 22*a56560b3SAkinobu Mita 23*a56560b3SAkinobu Mita static inline unsigned long find_first_zero_bit_le(const void *addr, 24*a56560b3SAkinobu Mita unsigned long size) 25*a56560b3SAkinobu Mita { 26*a56560b3SAkinobu Mita return find_first_zero_bit(addr, size); 27*a56560b3SAkinobu Mita } 28930ae745SAkinobu Mita 29930ae745SAkinobu Mita #elif defined(__BIG_ENDIAN) 30930ae745SAkinobu Mita 3163ab595fSAkinobu Mita #define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7) 3263ab595fSAkinobu Mita 33*a56560b3SAkinobu Mita extern unsigned long find_next_zero_bit_le(const void *addr, 3463ab595fSAkinobu Mita unsigned long size, unsigned long offset); 35*a56560b3SAkinobu Mita extern unsigned long find_next_bit_le(const void *addr, 3663ab595fSAkinobu Mita unsigned long size, unsigned long offset); 3763ab595fSAkinobu Mita 38c4945b9eSAkinobu Mita #define find_first_zero_bit_le(addr, size) \ 39c4945b9eSAkinobu Mita find_next_zero_bit_le((addr), (size), 0) 4063ab595fSAkinobu Mita 4163ab595fSAkinobu Mita #else 4263ab595fSAkinobu Mita #error "Please fix <asm/byteorder.h>" 4363ab595fSAkinobu Mita #endif 4463ab595fSAkinobu Mita 45*a56560b3SAkinobu Mita static inline int test_bit_le(int nr, const void *addr) 46*a56560b3SAkinobu Mita { 47*a56560b3SAkinobu Mita return test_bit(nr ^ BITOP_LE_SWIZZLE, addr); 48*a56560b3SAkinobu Mita } 49930ae745SAkinobu Mita 50*a56560b3SAkinobu Mita static inline void __set_bit_le(int nr, void *addr) 51*a56560b3SAkinobu Mita { 52*a56560b3SAkinobu Mita __set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 53*a56560b3SAkinobu Mita } 54930ae745SAkinobu Mita 55*a56560b3SAkinobu Mita static inline void __clear_bit_le(int nr, void *addr) 56*a56560b3SAkinobu Mita { 57*a56560b3SAkinobu Mita __clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 58*a56560b3SAkinobu Mita } 59*a56560b3SAkinobu Mita 60*a56560b3SAkinobu Mita static inline int test_and_set_bit_le(int nr, void *addr) 61*a56560b3SAkinobu Mita { 62*a56560b3SAkinobu Mita return test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 63*a56560b3SAkinobu Mita } 64*a56560b3SAkinobu Mita 65*a56560b3SAkinobu Mita static inline int test_and_clear_bit_le(int nr, void *addr) 66*a56560b3SAkinobu Mita { 67*a56560b3SAkinobu Mita return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 68*a56560b3SAkinobu Mita } 69*a56560b3SAkinobu Mita 70*a56560b3SAkinobu Mita static inline int __test_and_set_bit_le(int nr, void *addr) 71*a56560b3SAkinobu Mita { 72*a56560b3SAkinobu Mita return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 73*a56560b3SAkinobu Mita } 74*a56560b3SAkinobu Mita 75*a56560b3SAkinobu Mita static inline int __test_and_clear_bit_le(int nr, void *addr) 76*a56560b3SAkinobu Mita { 77*a56560b3SAkinobu Mita return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 78*a56560b3SAkinobu Mita } 79930ae745SAkinobu Mita 80930ae745SAkinobu Mita #endif /* _ASM_GENERIC_BITOPS_LE_H_ */ 81