COMMONEMLIB
Detailed Description
General purpose utilities and cross-compiler support.
This SDK supports the following compilers/IDEs:
- Simplicity Studio
 - IAR Embedded Workbench
 - Atollic TrueSTUDIO IDE
 - Rowley Associates CrossWorks for ARM
 - Keil µVision IDE
 - Plain armgcc
 
Certain compiler features such as alignment is implemented differently in the tools. Therefore, macros such as SL_ALIGN are provided to enable compiler independent code.
- Note
 - RAM code macros are implemented in a separate module RAMFUNC . Cross-compiler RAM code support needs extended documentation and it is therefore implemented as a separate module.
 
         Macros | 
       |
| #define | SL_ALIGN (X) | 
| 
         A macro for aligning a variable.
          Use this macro before the variable definition. X denotes the storage alignment value in bytes. To be GCC-compatible, use SL_ATTRIBUTE_ALIGN(X) before the semicolon on normal variables. Use SL_ATTRIBUTE_ALIGN(X) before the opening curly brace on structure variables.  | 
       |
| #define | SL_ATTRIBUTE_ALIGN (X) __attribute__ ((aligned(X))) | 
| 
         GCC style macro for aligning a variable.
          | 
       |
| #define | SL_ATTRIBUTE_PACKED __attribute__ ((packed)) | 
| 
         A GCC style macro for handling packed structures.
          | 
       |
| #define | SL_ATTRIBUTE_SECTION (X) __attribute__ ((section(X))) | 
| #define | SL_CEILING (n, i) ((((n) + (i) - 1U) / (i)) * (i)) | 
| 
         Round n up to closest interval of i.
          | 
       |
| #define | SL_FALLTHROUGH | 
| 
         A macro for notifying the compiler of an intended switch case fallthrough.
          | 
       |
| #define | SL_FLOOR (n, i) ((n / i) * i)) | 
| 
         Round n down to closest interval of i.
          | 
       |
| #define | SL_MAX (a, b) __extension__({ __typeof__(a)_a = (a); __typeof__(b)_b = (b); _a > _b ? _a : _b; }) | 
| 
         A macro for getting the maximum value. No sideeffects, a and b are evaluated one time only.
          | 
       |
| #define | SL_MIN (a, b) __extension__({ __typeof__(a)_a = (a); __typeof__(b)_b = (b); _a < _b ? _a : _b; }) | 
| 
         A macro for getting the minimum value. No sideeffects, a and b are evaluated one time only.
          | 
       |
| #define | SL_NORETURN __attribute__ ((noreturn)) | 
| 
         A macro for handling non-returning functions.
          | 
       |
| #define | SL_PACK_END () | 
| 
         A macro for handling packed structures.
          Use this macro after the structure definition. With GCC, add SL_ATTRIBUTE_PACKED after the closing curly braces of the structure definition.  | 
       |
| #define | SL_PACK_START (x) | 
| 
         A macro for handling packed structures.
          Use this macro before the structure definition. X denotes the maximum alignment of structure members. X is not supported with GCC. GCC always uses 1 byte maximum alignment.  | 
       |
| #define | SL_WEAK __attribute__ ((weak)) | 
| 
         A macro for defining a weak symbol.
          | 
       |
| #define | STRINGIZE (X) #X | 
| 
         Stringify X.
          | 
       |
         Functions | 
       |
| __STATIC_INLINE uint32_t | EFM32_CTZ (uint32_t value) | 
| __STATIC_INLINE uint32_t | SL_CTZ (uint32_t value) | 
| 
         Count trailing number of zeros. Use CLZ instruction if available.
          | 
       |
| __STATIC_INLINE uint32_t | SL_RBIT (uint32_t value) | 
| 
         Reverse the bits. Use the RBIT instruction if available, else process.
          | 
       |
| __STATIC_INLINE uint32_t | SL_RBIT16 (uint32_t value) | 
| 
         Reverse the bits. Use the RBIT instruction if available, else process.
          | 
       |
Macro Definition Documentation
| #define SL_ATTRIBUTE_SECTION | ( | 
           
            X
           
           | 
          ) | __attribute__ ((section(X))) | 
        A macro for placing a variable in a section.
        
        Use this macro after the variable definition, before the equal sign or a semicolon.
        
        X denotes the section to place the variable in.
       
        Definition at line
        
         202
        
        of file
        
         em_common.h
        
        .
       
Function Documentation
| __STATIC_INLINE uint32_t SL_CTZ | ( | uint32_t | 
           
            value
           
           | 
          ) | 
Count trailing number of zeros. Use CLZ instruction if available.
- Parameters
 - 
         
[in] valueData value to check for number of trailing zero bits.  
- Returns
 - A number of trailing zeros in value.
 
        Definition at line
        
         224
        
        of file
        
         em_common.h
        
        .
       
Referenced by GPIOINT_CallbackRegister() , and RMU_ResetControl() .
| __STATIC_INLINE uint32_t SL_RBIT | ( | uint32_t | 
           
            value
           
           | 
          ) | 
Reverse the bits. Use the RBIT instruction if available, else process.
- Parameters
 - 
         
[in] valueData value to reverse.  
- Returns
 - A reversed value.
 
        Definition at line
        
         254
        
        of file
        
         em_common.h
        
        .
       
Referenced by SL_RBIT16() .
| __STATIC_INLINE uint32_t SL_RBIT16 | ( | uint32_t | 
           
            value
           
           | 
          ) | 
Reverse the bits. Use the RBIT instruction if available, else process.
- Parameters
 - 
         
[in] value16-bit data value to reverse.  
- Returns
 - A 16-bit reversed value.
 
        Definition at line
        
         284
        
        of file
        
         em_common.h
        
        .
       
References SL_RBIT() .