File: /Users/paulross/dev/linux/linux-3.13/include/asm-generic/bitops/le.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       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:     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:     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:     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:     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_ */
      98: