In trying to find a way do deal with endianess issues I found this thread. Subsequently came to find these little gems that are built into GNU C:
uint16_t __builtin_bswap16 (uint16 t x) [Built-in Function]
Returns x with the order of the bytes reversed; for example, 0xaabb becomes 0xbbaa.
Byte here always means exactly 8 bits.
uint32_t __builtin_bswap32 (uint32 t x) [Built-in Function]
Similar to __builtin_bswap16, except the argument and return types are 32 bit.
uint64_t __builtin_bswap64 (uint64 t x) [Built-in Function]
Similar to __builtin_bswap32, except the argument and return types are 64 bit.
I verified for the 32-bit case that the compiler generates the ARM 'REV' instruction.