Helper functions for bit arithmetic.
More...
#include <stdint.h>
#include "cpu_conf.h"
Go to the source code of this file.
|
#define | ARCH_32_BIT (__INT_MAX__ == 2147483647) |
| 1 for 32 bit architectures, 0 otherwise
|
|
|
#define | BIT0 0x00000001 |
|
#define | BIT1 0x00000002 |
|
#define | BIT2 0x00000004 |
|
#define | BIT3 0x00000008 |
|
#define | BIT4 0x00000010 |
|
#define | BIT5 0x00000020 |
|
#define | BIT6 0x00000040 |
|
#define | BIT7 0x00000080 |
|
#define | BIT8 0x00000100 |
|
#define | BIT9 0x00000200 |
|
#define | BIT10 0x00000400 |
|
#define | BIT11 0x00000800 |
|
#define | BIT12 0x00001000 |
|
#define | BIT13 0x00002000 |
|
#define | BIT14 0x00004000 |
|
#define | BIT15 0x00008000 |
|
#define | BIT16 0x00010000 |
|
#define | BIT17 0x00020000 |
|
#define | BIT18 0x00040000 |
|
#define | BIT19 0x00080000 |
|
#define | BIT20 0x00100000 |
|
#define | BIT21 0x00200000 |
|
#define | BIT22 0x00400000 |
|
#define | BIT23 0x00800000 |
|
#define | BIT24 0x01000000 |
|
#define | BIT25 0x02000000 |
|
#define | BIT26 0x04000000 |
|
#define | BIT27 0x08000000 |
|
#define | BIT28 0x10000000 |
|
#define | BIT29 0x20000000 |
|
#define | BIT30 0x40000000 |
|
#define | BIT31 0x80000000 |
|
◆ CLRBIT
#define CLRBIT |
( |
|
val, |
|
|
|
bit |
|
) |
| val &= (~(bit)) |
Clears bitmask for a bitfield.
- Parameters
-
[in] | val | The bitfield |
[in] | bit | Specifies the bits to be cleared |
- Returns
- The modified bitfield
Definition at line 52 of file bitarithm.h.
◆ SETBIT
#define SETBIT |
( |
|
val, |
|
|
|
bit |
|
) |
| val |= (bit) |
Sets a bitmask for a bitfield.
- Parameters
-
[in] | val | The bitfield |
[in] | bit | Specifies the bits to be set |
- Returns
- The modified bitfield
Definition at line 41 of file bitarithm.h.
◆ bitarith_msb_32bit_no_native_clz()
unsigned bitarith_msb_32bit_no_native_clz |
( |
unsigned |
v | ) |
|
Returns the number of the highest '1' bit in a value.
Internal software implementation for 32 bit platforms,
use @see bitarithm_msb in application code.
- Parameters
-
- Returns
- Bit Number
◆ bitarithm_bits_set()
unsigned bitarithm_bits_set |
( |
unsigned |
v | ) |
|
Returns the number of bits set in a value.
- Parameters
-
[in] | v | Input value with platform-dependent word size |
- Returns
- Number of set bits
◆ bitarithm_bits_set_u32()
uint8_t bitarithm_bits_set_u32 |
( |
uint32_t |
v | ) |
|
Returns the (uint32_t version) number of bits set in a value.
- Parameters
-
[in] | v | Input value with 32 bit size |
- Returns
- Number of set bits
◆ bitarithm_lsb()
static unsigned bitarithm_lsb |
( |
unsigned |
v | ) |
|
|
inlinestatic |
Returns the number of the lowest '1' bit in a value.
- Parameters
-
[in] | v | Input value - must be unequal to '0', otherwise the function will produce an infinite loop |
- Returns
- Bit Number
Definition at line 166 of file bitarithm.h.
◆ bitarithm_msb()
static unsigned bitarithm_msb |
( |
unsigned |
v | ) |
|
|
inlinestatic |
◆ bitarithm_test_and_clear()
static unsigned bitarithm_test_and_clear |
( |
unsigned |
state, |
|
|
uint8_t * |
index |
|
) |
| |
|
inlinestatic |
Used for iterating over the bits in state
.
Returns the index of a set bit in state
, returns state
with that bit cleared.
- Warning
- This is a low-level helper function, arguments are not checked. It is intended to iterate over a bit map until all bits are cleared. Whether it starts with the highest or lowest bit will depend on what is fastest on the given hardware.
-
state
must not be zero.
- Parameters
-
[in] | state | Bit Map with at least one bit set |
[out] | index | Index of the first set bit. Must be initialized with 0 before the first call to this function, must not be modified between subsequent calls. |
- Returns
- new state value - must be treated as opaque value
Definition at line 211 of file bitarithm.h.