Line data Source code
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 8128 : static inline unsigned long find_next_zero_bit_le(const void *addr,
13 : unsigned long size, unsigned long offset)
14 : {
15 8128 : return find_next_zero_bit(addr, size, offset);
16 : }
17 :
18 4496 : static inline unsigned long find_next_bit_le(const void *addr,
19 : unsigned long size, unsigned long offset)
20 : {
21 4496 : return find_next_bit(addr, size, offset);
22 : }
23 :
24 : static inline unsigned long find_first_zero_bit_le(const void *addr,
25 : unsigned long size)
26 : {
27 : return find_first_zero_bit(addr, size);
28 : }
29 :
30 : #elif defined(__BIG_ENDIAN)
31 :
32 : #define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7)
33 :
34 : #ifndef find_next_zero_bit_le
35 : extern unsigned long find_next_zero_bit_le(const void *addr,
36 : unsigned long size, unsigned long offset);
37 : #endif
38 :
39 : #ifndef find_next_bit_le
40 : extern unsigned long find_next_bit_le(const void *addr,
41 : unsigned long size, unsigned long offset);
42 : #endif
43 :
44 : #ifndef find_first_zero_bit_le
45 : #define find_first_zero_bit_le(addr, size) \
46 : find_next_zero_bit_le((addr), (size), 0)
47 : #endif
48 :
49 : #else
50 : #error "Please fix <asm/byteorder.h>"
51 : #endif
52 :
53 34627 : static inline int test_bit_le(int nr, const void *addr)
54 : {
55 34627 : return test_bit(nr ^ BITOP_LE_SWIZZLE, addr);
56 : }
57 :
58 : static inline void set_bit_le(int nr, void *addr)
59 : {
60 : set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
61 : }
62 :
63 : static inline void clear_bit_le(int nr, void *addr)
64 : {
65 : clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
66 : }
67 :
68 1149 : static inline void __set_bit_le(int nr, void *addr)
69 : {
70 1149 : __set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
71 0 : }
72 :
73 8965 : static inline void __clear_bit_le(int nr, void *addr)
74 : {
75 8965 : __clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
76 : }
77 :
78 : static inline int test_and_set_bit_le(int nr, void *addr)
79 : {
80 : return test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
81 : }
82 :
83 : static inline int test_and_clear_bit_le(int nr, void *addr)
84 : {
85 : return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
86 : }
87 :
88 628 : static inline int __test_and_set_bit_le(int nr, void *addr)
89 : {
90 628 : return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
91 : }
92 :
93 1023 : static inline int __test_and_clear_bit_le(int nr, void *addr)
94 : {
95 1023 : return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
96 : }
97 :
98 : #endif /* _ASM_GENERIC_BITOPS_LE_H_ */
|