33 #ifndef __SILICON_LABS_EM_COMMON_H__
34 #define __SILICON_LABS_EM_COMMON_H__
54 #if !defined(__GNUC__)
57 #define EFM32_MIN(a, b) ((a) < (b) ? (a) : (b))
59 #define EFM32_MAX(a, b) ((a) > (b) ? (a) : (b))
62 #define STRINGIZE(X) #X
63 #define EFM32_PACK_START(X) _Pragma( STRINGIZE( pack( X ) ) )
64 #define EFM32_PACK_END() _Pragma( "pack()" )
65 #define __attribute__(...)
69 #define EFM32_ALIGN(X) __align(X)
73 #define EFM32_ALIGN(X) _Pragma( STRINGIZE( data_alignment=X ) )
76 #else // !defined(__GNUC__)
79 #define EFM32_MIN(a, b) ({ __typeof__(a) _a = (a); __typeof__(b) _b = (b); _a < _b ? _a : _b; })
81 #define EFM32_MAX(a, b) ({ __typeof__(a) _a = (a); __typeof__(b) _b = (b); _a > _b ? _a : _b; })
88 #define EFM32_PACK_START( x )
95 #define EFM32_PACK_END()
103 #define EFM32_ALIGN(X)
105 #endif // !defined(__GNUC__)
123 #if (__CORTEX_M >= 3)
124 return __CLZ(__RBIT(value));
128 for(zeros=0; (zeros<32) && ((value&0x1) == 0); zeros++, value>>=1);
CMSIS Cortex-M Peripheral Access Layer for Silicon Laboratories microcontroller devices.
__STATIC_INLINE uint32_t EFM32_CTZ(uint32_t value)
Count trailing number of zero's.