2006-03-26 13:39:15 +04:00
# ifndef _ASM_GENERIC_BITOPS_LE_H_
# define _ASM_GENERIC_BITOPS_LE_H_
# include <asm/types.h>
# include <asm/byteorder.h>
# if defined(__LITTLE_ENDIAN)
2011-03-24 02:41:46 +03:00
# define BITOP_LE_SWIZZLE 0
2006-03-26 13:39:15 +04:00
2011-03-24 02:41:50 +03:00
static inline unsigned long find_next_zero_bit_le ( const void * addr ,
unsigned long size , unsigned long offset )
{
return find_next_zero_bit ( addr , size , offset ) ;
}
static inline unsigned long find_next_bit_le ( const void * addr ,
unsigned long size , unsigned long offset )
{
return find_next_bit ( addr , size , offset ) ;
}
static inline unsigned long find_first_zero_bit_le ( const void * addr ,
unsigned long size )
{
return find_first_zero_bit ( addr , size ) ;
}
2006-03-26 13:39:15 +04:00
# elif defined(__BIG_ENDIAN)
2011-03-24 02:41:46 +03:00
# define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7)
2011-05-27 03:26:09 +04:00
# ifndef find_next_zero_bit_le
2011-03-24 02:41:50 +03:00
extern unsigned long find_next_zero_bit_le ( const void * addr ,
2011-03-24 02:41:46 +03:00
unsigned long size , unsigned long offset ) ;
2011-05-27 03:26:09 +04:00
# endif
# ifndef find_next_bit_le
2011-03-24 02:41:50 +03:00
extern unsigned long find_next_bit_le ( const void * addr ,
2011-03-24 02:41:46 +03:00
unsigned long size , unsigned long offset ) ;
2011-05-27 03:26:09 +04:00
# endif
2011-03-24 02:41:46 +03:00
2011-05-27 03:26:09 +04:00
# ifndef find_first_zero_bit_le
2011-03-24 02:41:47 +03:00
# define find_first_zero_bit_le(addr, size) \
find_next_zero_bit_le ( ( addr ) , ( size ) , 0 )
2011-05-27 03:26:09 +04:00
# endif
2011-03-24 02:41:46 +03:00
# else
# error "Please fix <asm / byteorder.h>"
# endif
2011-03-24 02:41:50 +03:00
static inline int test_bit_le ( int nr , const void * addr )
{
return test_bit ( nr ^ BITOP_LE_SWIZZLE , addr ) ;
}
2012-10-05 04:13:07 +04:00
static inline void set_bit_le ( int nr , void * addr )
{
set_bit ( nr ^ BITOP_LE_SWIZZLE , addr ) ;
}
static inline void clear_bit_le ( int nr , void * addr )
{
clear_bit ( nr ^ BITOP_LE_SWIZZLE , addr ) ;
}
2011-03-24 02:41:50 +03:00
static inline void __set_bit_le ( int nr , void * addr )
{
__set_bit ( nr ^ BITOP_LE_SWIZZLE , addr ) ;
}
static inline void __clear_bit_le ( int nr , void * addr )
{
__clear_bit ( nr ^ BITOP_LE_SWIZZLE , addr ) ;
}
static inline int test_and_set_bit_le ( int nr , void * addr )
{
return test_and_set_bit ( nr ^ BITOP_LE_SWIZZLE , addr ) ;
}
static inline int test_and_clear_bit_le ( int nr , void * addr )
{
return test_and_clear_bit ( nr ^ BITOP_LE_SWIZZLE , addr ) ;
}
static inline int __test_and_set_bit_le ( int nr , void * addr )
{
return __test_and_set_bit ( nr ^ BITOP_LE_SWIZZLE , addr ) ;
}
static inline int __test_and_clear_bit_le ( int nr , void * addr )
{
return __test_and_clear_bit ( nr ^ BITOP_LE_SWIZZLE , addr ) ;
}
2006-03-26 13:39:15 +04:00
# endif /* _ASM_GENERIC_BITOPS_LE_H_ */