linux/include/asm-generic/bitops/le.h
<<
>>
Prefs
   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
  11static 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
  17static 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
  23static 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
  34extern 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
  39extern 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
  52static inline int test_bit_le(int nr, const void *addr)
  53{
  54        return test_bit(nr ^ BITOP_LE_SWIZZLE, addr);
  55}
  56
  57static inline void set_bit_le(int nr, void *addr)
  58{
  59        set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
  60}
  61
  62static inline void clear_bit_le(int nr, void *addr)
  63{
  64        clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
  65}
  66
  67static inline void __set_bit_le(int nr, void *addr)
  68{
  69        __set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
  70}
  71
  72static inline void __clear_bit_le(int nr, void *addr)
  73{
  74        __clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
  75}
  76
  77static 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
  82static 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
  87static 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
  92static 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