xref: /linux/include/asm-generic/bitops/le.h (revision 0526b56cbc3c489642bd6a5fe4b718dea7ef0ee8)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_GENERIC_BITOPS_LE_H_
3 #define _ASM_GENERIC_BITOPS_LE_H_
4 
5 #include <asm/types.h>
6 #include <asm/byteorder.h>
7 
8 #if defined(__LITTLE_ENDIAN)
9 
10 #define BITOP_LE_SWIZZLE	0
11 
12 #elif defined(__BIG_ENDIAN)
13 
14 #define BITOP_LE_SWIZZLE	((BITS_PER_LONG-1) & ~0x7)
15 
16 #endif
17 
18 
19 static inline int test_bit_le(int nr, const void *addr)
20 {
21 	return test_bit(nr ^ BITOP_LE_SWIZZLE, addr);
22 }
23 
24 static inline void set_bit_le(int nr, void *addr)
25 {
26 	set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
27 }
28 
29 static inline void clear_bit_le(int nr, void *addr)
30 {
31 	clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
32 }
33 
34 static inline void __set_bit_le(int nr, void *addr)
35 {
36 	__set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
37 }
38 
39 static inline void __clear_bit_le(int nr, void *addr)
40 {
41 	__clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
42 }
43 
44 static inline int test_and_set_bit_le(int nr, void *addr)
45 {
46 	return test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
47 }
48 
49 static inline int test_and_clear_bit_le(int nr, void *addr)
50 {
51 	return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
52 }
53 
54 static inline int __test_and_set_bit_le(int nr, void *addr)
55 {
56 	return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
57 }
58 
59 static inline int __test_and_clear_bit_le(int nr, void *addr)
60 {
61 	return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
62 }
63 
64 #endif /* _ASM_GENERIC_BITOPS_LE_H_ */
65