xref: /openbmc/linux/include/asm-generic/bitops/le.h (revision c4945b9ed472e8796e352f10df9dbc2841ba7b61)
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*c4945b9eSAkinobu Mita #define find_next_zero_bit_le(addr, size, offset) \
1263ab595fSAkinobu Mita 	find_next_zero_bit(addr, size, offset)
13*c4945b9eSAkinobu Mita #define find_next_bit_le(addr, size, offset) \
14aa02ad67SAneesh Kumar K.V 	find_next_bit(addr, size, offset)
15*c4945b9eSAkinobu Mita #define find_first_zero_bit_le(addr, size) \
1663ab595fSAkinobu Mita 	find_first_zero_bit(addr, size)
17930ae745SAkinobu Mita 
18930ae745SAkinobu Mita #elif defined(__BIG_ENDIAN)
19930ae745SAkinobu Mita 
2063ab595fSAkinobu Mita #define BITOP_LE_SWIZZLE	((BITS_PER_LONG-1) & ~0x7)
2163ab595fSAkinobu Mita 
22*c4945b9eSAkinobu Mita extern unsigned long find_next_zero_bit_le(const unsigned long *addr,
2363ab595fSAkinobu Mita 		unsigned long size, unsigned long offset);
24*c4945b9eSAkinobu Mita extern unsigned long find_next_bit_le(const unsigned long *addr,
2563ab595fSAkinobu Mita 		unsigned long size, unsigned long offset);
2663ab595fSAkinobu Mita 
27*c4945b9eSAkinobu Mita #define find_first_zero_bit_le(addr, size) \
28*c4945b9eSAkinobu Mita 	find_next_zero_bit_le((addr), (size), 0)
2963ab595fSAkinobu Mita 
3063ab595fSAkinobu Mita #else
3163ab595fSAkinobu Mita #error "Please fix <asm/byteorder.h>"
3263ab595fSAkinobu Mita #endif
3363ab595fSAkinobu Mita 
34*c4945b9eSAkinobu Mita #define test_bit_le(nr, addr) \
35930ae745SAkinobu Mita 	test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
36*c4945b9eSAkinobu Mita #define __set_bit_le(nr, addr) \
37930ae745SAkinobu Mita 	__set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
38*c4945b9eSAkinobu Mita #define __clear_bit_le(nr, addr) \
39930ae745SAkinobu Mita 	__clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
40930ae745SAkinobu Mita 
41*c4945b9eSAkinobu Mita #define test_and_set_bit_le(nr, addr) \
42930ae745SAkinobu Mita 	test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
43*c4945b9eSAkinobu Mita #define test_and_clear_bit_le(nr, addr) \
44930ae745SAkinobu Mita 	test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
45930ae745SAkinobu Mita 
46*c4945b9eSAkinobu Mita #define __test_and_set_bit_le(nr, addr) \
47930ae745SAkinobu Mita 	__test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
48*c4945b9eSAkinobu Mita #define __test_and_clear_bit_le(nr, addr) \
49930ae745SAkinobu Mita 	__test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
50930ae745SAkinobu Mita 
51930ae745SAkinobu Mita #endif /* _ASM_GENERIC_BITOPS_LE_H_ */
52