diff options
Diffstat (limited to 'src/include/endian.h')
-rw-r--r-- | src/include/endian.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/include/endian.h b/src/include/endian.h index 27248d892..5b6cb06d2 100644 --- a/src/include/endian.h +++ b/src/include/endian.h @@ -28,4 +28,42 @@ #define __BYTE_ORDER __BIG_ENDIAN +#define __swap16(x) \ + ((((x) & 0xFF00) >> 8) | \ + (((x) & 0x00FF) << 8)) + +#if __BYTE_ORDER == __BIG_ENDIAN +// Big Endian system +#define htobe16(x) (x) +#define htole16(x) __swap16(x) +#define be16toh(x) (x) +#define le16toh(x) __swap16(x) + +#define htobe32(x) (x) +#define htole32(x) __builtin_bswap32(x) +#define be32toh(x) (x) +#define le32toh(x) __builtin_bswap32(x) + +#define htobe64(x) (x) +#define htole64(x) __builtin_bswap64(x) +#define be64toh(x) (x) +#define le64toh(x) __builtin_bswap64(x) +#else +// Little Endian system +#define htobe16(x) __swap16(x) +#define htole16(x) (x) +#define be16toh(x) __swap16(x) +#define le16toh(x) (x) + +#define htobe32(x) __builtin_bswap32(x) +#define htole32(x) (x) +#define be32toh(x) __builtin_bswap32(x) +#define le32toh(x) (x) + +#define htobe64(x) __builtin_bswap64(x) +#define htole64(x) (x) +#define be64toh(x) __builtin_bswap64(x) +#define le64toh(x) (x) +#endif + #endif |