13 #ifndef OPENOCD_HELPER_BITS_H
14 #define OPENOCD_HELPER_BITS_H
19 #define BIT(nr) (1UL << (nr))
20 #define BIT_ULL(nr) (1ULL << (nr))
21 #define BITS_PER_BYTE 8
22 #define BITS_PER_LONG (BITS_PER_BYTE * sizeof(long))
23 #define BITS_PER_LONG_LONG (BITS_PER_BYTE * sizeof(long long))
24 #define GENMASK(h, l) (((~0UL) - (1UL << (l)) + 1) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
25 #define GENMASK_ULL(h, l) (((~0ULL) - (1ULL << (l)) + 1) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))
26 #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
27 #define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
28 #define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
29 #define DECLARE_BITMAP(name, bits) unsigned long name[BITS_TO_LONGS(bits)]
36 static inline void bitmap_zero(
unsigned long *dst,
unsigned int nbits)
38 unsigned int len =
BITS_TO_LONGS(nbits) *
sizeof(
unsigned long);
47 static inline void clear_bit(
unsigned int nr,
volatile unsigned long *
addr)
50 unsigned long *p = ((
unsigned long *)
addr) +
BIT_WORD(nr);
60 static inline void set_bit(
unsigned int nr,
volatile unsigned long *
addr)
63 unsigned long *p = ((
unsigned long *)
addr) +
BIT_WORD(nr);
73 static inline int test_bit(
unsigned int nr,
const volatile unsigned long *
addr)
static int test_bit(unsigned int nr, const volatile unsigned long *addr)
test_bit - Determine whether a bit is set
static void bitmap_zero(unsigned long *dst, unsigned int nbits)
bitmap_zero - Clears all the bits in memory
static void set_bit(unsigned int nr, volatile unsigned long *addr)
set_bit - Set a bit in memory
#define BITS_TO_LONGS(nr)
static void clear_bit(unsigned int nr, volatile unsigned long *addr)
clear_bit - Clear a bit in memory