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 11a56560b3SAkinobu Mita static inline unsigned long find_next_zero_bit_le(const void *addr, 12a56560b3SAkinobu Mita unsigned long size, unsigned long offset) 13a56560b3SAkinobu Mita { 14a56560b3SAkinobu Mita return find_next_zero_bit(addr, size, offset); 15a56560b3SAkinobu Mita } 16a56560b3SAkinobu Mita 17a56560b3SAkinobu Mita static inline unsigned long find_next_bit_le(const void *addr, 18a56560b3SAkinobu Mita unsigned long size, unsigned long offset) 19a56560b3SAkinobu Mita { 20a56560b3SAkinobu Mita return find_next_bit(addr, size, offset); 21a56560b3SAkinobu Mita } 22a56560b3SAkinobu Mita 23a56560b3SAkinobu Mita static inline unsigned long find_first_zero_bit_le(const void *addr, 24a56560b3SAkinobu Mita unsigned long size) 25a56560b3SAkinobu Mita { 26a56560b3SAkinobu Mita return find_first_zero_bit(addr, size); 27a56560b3SAkinobu 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*19de85efSAkinobu Mita #ifndef find_next_zero_bit_le 34a56560b3SAkinobu Mita extern unsigned long find_next_zero_bit_le(const void *addr, 3563ab595fSAkinobu Mita unsigned long size, unsigned long offset); 36*19de85efSAkinobu Mita #endif 37*19de85efSAkinobu Mita 38*19de85efSAkinobu Mita #ifndef find_next_bit_le 39a56560b3SAkinobu Mita extern unsigned long find_next_bit_le(const void *addr, 4063ab595fSAkinobu Mita unsigned long size, unsigned long offset); 41*19de85efSAkinobu Mita #endif 4263ab595fSAkinobu Mita 43*19de85efSAkinobu Mita #ifndef find_first_zero_bit_le 44c4945b9eSAkinobu Mita #define find_first_zero_bit_le(addr, size) \ 45c4945b9eSAkinobu Mita find_next_zero_bit_le((addr), (size), 0) 46*19de85efSAkinobu Mita #endif 4763ab595fSAkinobu Mita 4863ab595fSAkinobu Mita #else 4963ab595fSAkinobu Mita #error "Please fix <asm/byteorder.h>" 5063ab595fSAkinobu Mita #endif 5163ab595fSAkinobu Mita 52a56560b3SAkinobu Mita static inline int test_bit_le(int nr, const void *addr) 53a56560b3SAkinobu Mita { 54a56560b3SAkinobu Mita return test_bit(nr ^ BITOP_LE_SWIZZLE, addr); 55a56560b3SAkinobu Mita } 56930ae745SAkinobu Mita 57a56560b3SAkinobu Mita static inline void __set_bit_le(int nr, void *addr) 58a56560b3SAkinobu Mita { 59a56560b3SAkinobu Mita __set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 60a56560b3SAkinobu Mita } 61930ae745SAkinobu Mita 62a56560b3SAkinobu Mita static inline void __clear_bit_le(int nr, void *addr) 63a56560b3SAkinobu Mita { 64a56560b3SAkinobu Mita __clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 65a56560b3SAkinobu Mita } 66a56560b3SAkinobu Mita 67a56560b3SAkinobu Mita static inline int test_and_set_bit_le(int nr, void *addr) 68a56560b3SAkinobu Mita { 69a56560b3SAkinobu Mita return test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 70a56560b3SAkinobu Mita } 71a56560b3SAkinobu Mita 72a56560b3SAkinobu Mita static inline int test_and_clear_bit_le(int nr, void *addr) 73a56560b3SAkinobu Mita { 74a56560b3SAkinobu Mita return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 75a56560b3SAkinobu Mita } 76a56560b3SAkinobu Mita 77a56560b3SAkinobu Mita static inline int __test_and_set_bit_le(int nr, void *addr) 78a56560b3SAkinobu Mita { 79a56560b3SAkinobu Mita return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 80a56560b3SAkinobu Mita } 81a56560b3SAkinobu Mita 82a56560b3SAkinobu Mita static inline int __test_and_clear_bit_le(int nr, void *addr) 83a56560b3SAkinobu Mita { 84a56560b3SAkinobu Mita return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 85a56560b3SAkinobu Mita } 86930ae745SAkinobu Mita 87930ae745SAkinobu Mita #endif /* _ASM_GENERIC_BITOPS_LE_H_ */ 88