|
66 | 66 | #define TU_LITTLE_ENDIAN (0x12u) |
67 | 67 | #define TU_BIG_ENDIAN (0x21u) |
68 | 68 |
|
| 69 | +#define TU_BITFIELD_LE (0x34u) |
| 70 | +#define TU_BITFIELD_BE (0x43u) |
| 71 | + |
69 | 72 | /*------------------------------------------------------------------*/ |
70 | 73 | /* Count number of arguments of __VA_ARGS__ |
71 | 74 | * - reference www.stackoverflow.com/questions/2124339/c-preprocessor-va-args-number-of-arguments |
|
167 | 170 | // For TI ARM compiler, __BYTE_ORDER__ is not defined for MSP430 but still LE |
168 | 171 | #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ || defined(__MSP430__) |
169 | 172 | #define TU_BYTE_ORDER TU_LITTLE_ENDIAN |
| 173 | + #define TU_BITFIELD_ORDER TU_BITFIELD_LE |
170 | 174 | #else |
171 | 175 | #define TU_BYTE_ORDER TU_BIG_ENDIAN |
| 176 | + #define TU_BITFIELD_ORDER TU_BITFIELD_BE |
172 | 177 | #endif |
173 | 178 |
|
174 | 179 | // Unfortunately XC16 doesn't provide builtins for 32bit endian conversion |
|
212 | 217 | // Endian conversion use well-known host to network (big endian) naming |
213 | 218 | #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ |
214 | 219 | #define TU_BYTE_ORDER TU_LITTLE_ENDIAN |
| 220 | + #define TU_BITFIELD_ORDER TU_BITFIELD_LE |
215 | 221 | #else |
216 | 222 | #define TU_BYTE_ORDER TU_BIG_ENDIAN |
| 223 | + #define TU_BITFIELD_ORDER TU_BITFIELD_BE |
217 | 224 | #endif |
218 | 225 |
|
219 | 226 | #define TU_BSWAP16(u16) (__iar_builtin_REV16(u16)) |
|
239 | 246 | // Endian conversion use well-known host to network (big endian) naming |
240 | 247 | #if defined(__LIT) |
241 | 248 | #define TU_BYTE_ORDER TU_LITTLE_ENDIAN |
| 249 | + #define TU_BITFIELD_ORDER TU_BITFIELD_LE |
242 | 250 | #else |
243 | 251 | #define TU_BYTE_ORDER TU_BIG_ENDIAN |
| 252 | + #define TU_BITFIELD_ORDER TU_BITFIELD_BE |
244 | 253 | #endif |
245 | 254 |
|
246 | 255 | #define TU_BSWAP16(u16) ((unsigned short)_builtin_revw((unsigned long)u16)) |
|
0 commit comments