Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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.