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 3319de85efSAkinobu 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); 3619de85efSAkinobu Mita #endif 3719de85efSAkinobu Mita 3819de85efSAkinobu 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); 4119de85efSAkinobu Mita #endif 4263ab595fSAkinobu Mita 4319de85efSAkinobu 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) 4619de85efSAkinobu 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 57*b9034bf1STakuya Yoshikawa static inline void set_bit_le(int nr, void *addr) 58*b9034bf1STakuya Yoshikawa { 59*b9034bf1STakuya Yoshikawa set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 60*b9034bf1STakuya Yoshikawa } 61*b9034bf1STakuya Yoshikawa 62*b9034bf1STakuya Yoshikawa static inline void clear_bit_le(int nr, void *addr) 63*b9034bf1STakuya Yoshikawa { 64*b9034bf1STakuya Yoshikawa clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 65*b9034bf1STakuya Yoshikawa } 66*b9034bf1STakuya Yoshikawa 67a56560b3SAkinobu Mita static inline void __set_bit_le(int nr, void *addr) 68a56560b3SAkinobu Mita { 69a56560b3SAkinobu Mita __set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 70a56560b3SAkinobu Mita } 71930ae745SAkinobu Mita 72a56560b3SAkinobu Mita static inline void __clear_bit_le(int nr, void *addr) 73a56560b3SAkinobu Mita { 74a56560b3SAkinobu Mita __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 } 86a56560b3SAkinobu Mita 87a56560b3SAkinobu Mita static inline int __test_and_set_bit_le(int nr, void *addr) 88a56560b3SAkinobu Mita { 89a56560b3SAkinobu Mita return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 90a56560b3SAkinobu Mita } 91a56560b3SAkinobu Mita 92a56560b3SAkinobu Mita static inline int __test_and_clear_bit_le(int nr, void *addr) 93a56560b3SAkinobu Mita { 94a56560b3SAkinobu Mita return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 95a56560b3SAkinobu Mita } 96930ae745SAkinobu Mita 97930ae745SAkinobu Mita #endif /* _ASM_GENERIC_BITOPS_LE_H_ */ 98