forked from Qortal/Brooklyn
* 0day explit mitigation * Memory corruption prevention * Privilege escalation prevention * Buffer over flow prevention * File System corruption defense * Thread escape prevention This may very well be the most intensive inclusion to BrooklynR. This will not be part of an x86 suite nor it will be released as tool kit. The security core toolkit will remain part of kernel base.
98 lines
2.1 KiB
C
98 lines
2.1 KiB
C
#ifndef _ASM_GENERIC_BITOPS_LE_H_
|
|
#define _ASM_GENERIC_BITOPS_LE_H_
|
|
|
|
#include <asm/types.h>
|
|
#include <asm/byteorder.h>
|
|
|
|
#if defined(__LITTLE_ENDIAN)
|
|
|
|
#define BITOP_LE_SWIZZLE 0
|
|
|
|
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);
|
|
}
|
|
|
|
#elif defined(__BIG_ENDIAN)
|
|
|
|
#define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7)
|
|
|
|
#ifndef find_next_zero_bit_le
|
|
extern unsigned long find_next_zero_bit_le(const void *addr,
|
|
unsigned long size, unsigned long offset);
|
|
#endif
|
|
|
|
#ifndef find_next_bit_le
|
|
extern unsigned long find_next_bit_le(const void *addr,
|
|
unsigned long size, unsigned long offset);
|
|
#endif
|
|
|
|
#ifndef find_first_zero_bit_le
|
|
#define find_first_zero_bit_le(addr, size) \
|
|
find_next_zero_bit_le((addr), (size), 0)
|
|
#endif
|
|
|
|
#else
|
|
#error "Please fix <asm/byteorder.h>"
|
|
#endif
|
|
|
|
static inline int test_bit_le(int nr, const void *addr)
|
|
{
|
|
return test_bit(nr ^ BITOP_LE_SWIZZLE, addr);
|
|
}
|
|
|
|
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 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);
|
|
}
|
|
|
|
#endif /* _ASM_GENERIC_BITOPS_LE_H_ */
|