Branch data Line data Source code
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 : 1105199 : 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 : 83283 : 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 : : #ifndef find_next_zero_bit_le
34 : : extern unsigned long find_next_zero_bit_le(const void *addr,
35 : : unsigned long size, unsigned long offset);
36 : : #endif
37 : :
38 : : #ifndef find_next_bit_le
39 : : extern unsigned long find_next_bit_le(const void *addr,
40 : : unsigned long size, unsigned long offset);
41 : : #endif
42 : :
43 : : #ifndef find_first_zero_bit_le
44 : : #define find_first_zero_bit_le(addr, size) \
45 : : find_next_zero_bit_le((addr), (size), 0)
46 : : #endif
47 : :
48 : : #else
49 : : #error "Please fix <asm/byteorder.h>"
50 : : #endif
51 : :
52 : : static inline int test_bit_le(int nr, const void *addr)
53 : : {
54 : : return test_bit(nr ^ BITOP_LE_SWIZZLE, addr);
55 : : }
56 : :
57 : : static inline void set_bit_le(int nr, void *addr)
58 : : {
59 : : set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
60 : : }
61 : :
62 : : static inline void clear_bit_le(int nr, void *addr)
63 : : {
64 : : clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
65 : : }
66 : :
67 : : static inline void __set_bit_le(int nr, void *addr)
68 : : {
69 : : __set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
70 : : }
71 : :
72 : : static inline void __clear_bit_le(int nr, void *addr)
73 : : {
74 : : __clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
75 : : }
76 : :
77 : : static inline int test_and_set_bit_le(int nr, void *addr)
78 : : {
79 : 0 : return test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
80 : : }
81 : :
82 : : static inline int test_and_clear_bit_le(int nr, void *addr)
83 : : {
84 : 0 : return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
85 : : }
86 : :
87 : : static inline int __test_and_set_bit_le(int nr, void *addr)
88 : : {
89 : : return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
90 : : }
91 : :
92 : : static inline int __test_and_clear_bit_le(int nr, void *addr)
93 : : {
94 : : return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
95 : : }
96 : :
97 : : #endif /* _ASM_GENERIC_BITOPS_LE_H_ */
|