0001
0002 #ifndef _ASM_GENERIC_BITOPS_LE_H_
0003 #define _ASM_GENERIC_BITOPS_LE_H_
0004
0005 #include <asm/types.h>
0006 #include <asm/byteorder.h>
0007
0008 #if defined(__LITTLE_ENDIAN)
0009
0010 #define BITOP_LE_SWIZZLE 0
0011
0012 #elif defined(__BIG_ENDIAN)
0013
0014 #define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7)
0015
0016 #endif
0017
0018
0019 static inline int test_bit_le(int nr, const void *addr)
0020 {
0021 return test_bit(nr ^ BITOP_LE_SWIZZLE, addr);
0022 }
0023
0024 static inline void set_bit_le(int nr, void *addr)
0025 {
0026 set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
0027 }
0028
0029 static inline void clear_bit_le(int nr, void *addr)
0030 {
0031 clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
0032 }
0033
0034 static inline void __set_bit_le(int nr, void *addr)
0035 {
0036 __set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
0037 }
0038
0039 static inline void __clear_bit_le(int nr, void *addr)
0040 {
0041 __clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
0042 }
0043
0044 static inline int test_and_set_bit_le(int nr, void *addr)
0045 {
0046 return test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
0047 }
0048
0049 static inline int test_and_clear_bit_le(int nr, void *addr)
0050 {
0051 return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
0052 }
0053
0054 static inline int __test_and_set_bit_le(int nr, void *addr)
0055 {
0056 return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
0057 }
0058
0059 static inline int __test_and_clear_bit_le(int nr, void *addr)
0060 {
0061 return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
0062 }
0063
0064 #endif