31#define BITBAND_FUNCTIONS_PROVIDED 0 
   33#define BME_AND_MASK        (1 << 26)  
   34#define BME_OR_MASK         (1 << 27)  
   35#define BME_XOR_MASK        (3 << 26)  
   36#define BME_LAC1_MASK(BIT)  ((1 << 27) | ((BIT) << 21))  
   37#define BME_LAS1_MASK(BIT)  ((3 << 26) | ((BIT) << 21))  
   45#define BME_BF_MASK(bit, width) ((1 << 28) | ((bit) << 23) | (((width) - 1 ) << 19)) 
   59static inline volatile void *
bme_bf_addr(
volatile void *ptr, uintptr_t bit, uintptr_t width)
 
   61    return (
volatile void *)(((uintptr_t)ptr) | 
BME_BF_MASK(bit, width));
 
 
   79static inline volatile uint32_t *
bme_bitfield32(
volatile uint32_t *ptr, uint8_t bit, uint8_t width)
 
   81    return (
volatile uint32_t *)(
bme_bf_addr(ptr, bit, width));
 
 
   99static inline volatile uint16_t *
bme_bitfield16(
volatile uint16_t *ptr, uint8_t bit, uint8_t width)
 
  101    return (
volatile uint16_t *)(
bme_bf_addr(ptr, bit, width));
 
 
  119static inline volatile uint8_t *
bme_bitfield8(
volatile uint8_t *ptr, uint8_t bit, uint8_t width)
 
  121    return (
volatile uint8_t *)(
bme_bf_addr(ptr, bit, width));
 
 
  124#if BITBAND_FUNCTIONS_PROVIDED 
  142static inline void bit_set32(
volatile uint32_t *ptr, uint8_t bit)
 
  144    *((
volatile uint32_t *)(((uintptr_t)ptr) | 
BME_OR_MASK)) = (uint32_t)((1ul << bit));
 
  162static inline void bit_set16(
volatile uint16_t *ptr, uint8_t bit)
 
  164    *((
volatile uint16_t *)(((uintptr_t)ptr) | 
BME_OR_MASK)) = (uint16_t)((1ul << bit));
 
  182static inline void bit_set8(
volatile uint8_t *ptr, uint8_t bit)
 
  184    *((
volatile uint8_t *)(((uintptr_t)ptr) | 
BME_OR_MASK)) = (uint8_t)((1ul << bit));
 
  202static inline void bit_clear32(
volatile uint32_t *ptr, uint8_t bit)
 
  204    *((
volatile uint32_t *)(((uintptr_t)ptr) | 
BME_AND_MASK)) = (uint32_t)(~(1ul << bit));
 
  222static inline void bit_clear16(
volatile uint16_t *ptr, uint8_t bit)
 
  224    *((
volatile uint16_t *)(((uintptr_t)ptr) | 
BME_AND_MASK)) = (uint16_t)(~(1ul << bit));
 
  242static inline void bit_clear8(
volatile uint8_t *ptr, uint8_t bit)
 
  244    *((
volatile uint8_t *)(((uintptr_t)ptr) | 
BME_AND_MASK)) = (uint8_t)(~(1ul << bit));
 
static void bit_clear8(volatile uint8_t *ptr, uint8_t bit)
Clear a single bit in the 8 bit byte pointed to by ptr.
 
static void bit_set16(volatile uint16_t *ptr, uint8_t bit)
Set a single bit in the 16 bit word pointed to by ptr.
 
static void bit_clear32(volatile uint32_t *ptr, uint8_t bit)
Clear a single bit in the 32 bit word pointed to by ptr.
 
static void bit_set8(volatile uint8_t *ptr, uint8_t bit)
Set a single bit in the 8 bit byte pointed to by ptr.
 
static void bit_set32(volatile uint32_t *ptr, uint8_t bit)
Set a single bit in the 32 bit word pointed to by ptr.
 
static void bit_clear16(volatile uint16_t *ptr, uint8_t bit)
Clear a single bit in the 16 bit word pointed to by ptr.
 
#define BME_BF_MASK(bit, width)
Bit field extraction bitmask.
 
#define BME_OR_MASK
OR decoration bitmask.
 
static volatile void * bme_bf_addr(volatile void *ptr, uintptr_t bit, uintptr_t width)
Bit field address macro.
 
static volatile uint8_t * bme_bitfield8(volatile uint8_t *ptr, uint8_t bit, uint8_t width)
Access a bitfield (8 bit load/store)
 
static volatile uint16_t * bme_bitfield16(volatile uint16_t *ptr, uint8_t bit, uint8_t width)
Access a bitfield (16 bit load/store)
 
#define BME_AND_MASK
AND decoration bitmask.
 
static volatile uint32_t * bme_bitfield32(volatile uint32_t *ptr, uint8_t bit, uint8_t width)
Access a bitfield (32 bit load/store)