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 | 
|   | Bit 0 set define. 
  | 
|   | 
| 
#define  | BIT1   0x00000002 | 
|   | Bit 1 set define. 
  | 
|   | 
| 
#define  | BIT2   0x00000004 | 
|   | Bit 2 set define. 
  | 
|   | 
| 
#define  | BIT3   0x00000008 | 
|   | Bit 3 set define. 
  | 
|   | 
| 
#define  | BIT4   0x00000010 | 
|   | Bit 4 set define. 
  | 
|   | 
| 
#define  | BIT5   0x00000020 | 
|   | Bit 5 set define. 
  | 
|   | 
| 
#define  | BIT6   0x00000040 | 
|   | Bit 6 set define. 
  | 
|   | 
| 
#define  | BIT7   0x00000080 | 
|   | Bit 7 set define. 
  | 
|   | 
| 
#define  | BIT8   0x00000100 | 
|   | Bit 8 set define. 
  | 
|   | 
| 
#define  | BIT9   0x00000200 | 
|   | Bit 9 set define. 
  | 
|   | 
| 
#define  | BIT10   0x00000400 | 
|   | Bit 10 set define. 
  | 
|   | 
| 
#define  | BIT11   0x00000800 | 
|   | Bit 11 set define. 
  | 
|   | 
| 
#define  | BIT12   0x00001000 | 
|   | Bit 12 set define. 
  | 
|   | 
| 
#define  | BIT13   0x00002000 | 
|   | Bit 13 set define. 
  | 
|   | 
| 
#define  | BIT14   0x00004000 | 
|   | Bit 14 set define. 
  | 
|   | 
| 
#define  | BIT15   0x00008000 | 
|   | Bit 15 set define. 
  | 
|   | 
| 
#define  | BIT16   0x00010000 | 
|   | Bit 16 set define. 
  | 
|   | 
| 
#define  | BIT17   0x00020000 | 
|   | Bit 17 set define. 
  | 
|   | 
| 
#define  | BIT18   0x00040000 | 
|   | Bit 18 set define. 
  | 
|   | 
| 
#define  | BIT19   0x00080000 | 
|   | Bit 19 set define. 
  | 
|   | 
| 
#define  | BIT20   0x00100000 | 
|   | Bit 20 set define. 
  | 
|   | 
| 
#define  | BIT21   0x00200000 | 
|   | Bit 21 set define. 
  | 
|   | 
| 
#define  | BIT22   0x00400000 | 
|   | Bit 22 set define. 
  | 
|   | 
| 
#define  | BIT23   0x00800000 | 
|   | Bit 23 set define. 
  | 
|   | 
| 
#define  | BIT24   0x01000000 | 
|   | Bit 24 set define. 
  | 
|   | 
| 
#define  | BIT25   0x02000000 | 
|   | Bit 25 set define. 
  | 
|   | 
| 
#define  | BIT26   0x04000000 | 
|   | Bit 26 set define. 
  | 
|   | 
| 
#define  | BIT27   0x08000000 | 
|   | Bit 27 set define. 
  | 
|   | 
| 
#define  | BIT28   0x10000000 | 
|   | Bit 28 set define. 
  | 
|   | 
| 
#define  | BIT29   0x20000000 | 
|   | Bit 29 set define. 
  | 
|   | 
| 
#define  | BIT30   0x40000000 | 
|   | Bit 30 set define. 
  | 
|   | 
| 
#define  | BIT31   0x80000000 | 
|   | Bit 31 set define. 
  | 
|   | 
◆ 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 51 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 40 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_clzb()
  
  
      
        
          | static uint8_t bitarithm_clzb  | 
          ( | 
          uint8_t  | 
          x | ) | 
           | 
         
       
   | 
  
inlinestatic   | 
  
 
Returns the number of leading 0-bits in x, starting at the most significant bit position. 
If x is 0, the result is undefined.
- Parameters
 - 
  
  
 
- Returns
 - Number of leading zero bits 
 
Definition at line 175 of file bitarithm.h.
 
 
◆ 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 205 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 253 of file bitarithm.h.