1 #ifndef _ASM_GENERIC_BITOPS_LE_H_ 2 #define _ASM_GENERIC_BITOPS_LE_H_ 3 4 #include <asm/types.h> 5 #include <asm/byteorder.h> 6 7 #if defined(__LITTLE_ENDIAN) 8 9 #define BITOP_LE_SWIZZLE 0 10 11 static inline unsigned long find_next_zero_bit_le(const void *addr, 12 unsigned long size, unsigned long offset) 13 { 14 return find_next_zero_bit(addr, size, offset); 15 } 16 17 static inline unsigned long find_next_bit_le(const void *addr, 18 unsigned long size, unsigned long offset) 19 { 20 return find_next_bit(addr, size, offset); 21 } 22 23 static inline unsigned long find_first_zero_bit_le(const void *addr, 24 unsigned long size) 25 { 26 return find_first_zero_bit(addr, size); 27 } 28 29 #elif defined(__BIG_ENDIAN) 30 31 #define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7) 32 33 extern unsigned long find_next_zero_bit_le(const void *addr, 34 unsigned long size, unsigned long offset); 35 extern unsigned long find_next_bit_le(const void *addr, 36 unsigned long size, unsigned long offset); 37 38 #define find_first_zero_bit_le(addr, size) \ 39 find_next_zero_bit_le((addr), (size), 0) 40 41 #else 42 #error "Please fix <asm/byteorder.h>" 43 #endif 44 45 static inline int test_bit_le(int nr, const void *addr) 46 { 47 return test_bit(nr ^ BITOP_LE_SWIZZLE, addr); 48 } 49 50 static inline void __set_bit_le(int nr, void *addr) 51 { 52 __set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 53 } 54 55 static inline void __clear_bit_le(int nr, void *addr) 56 { 57 __clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 58 } 59 60 static inline int test_and_set_bit_le(int nr, void *addr) 61 { 62 return test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 63 } 64 65 static inline int test_and_clear_bit_le(int nr, void *addr) 66 { 67 return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 68 } 69 70 static inline int __test_and_set_bit_le(int nr, void *addr) 71 { 72 return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr); 73 } 74 75 static inline int __test_and_clear_bit_le(int nr, void *addr) 76 { 77 return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr); 78 } 79 80 #endif /* _ASM_GENERIC_BITOPS_LE_H_ */ 81