mirror of
https://git.planet-casio.com/Vhex-Kernel-Core/fxlibc.git
synced 2025-05-28 14:35:12 +02:00
55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
#ifndef __ENDIAN_H__
|
|
# define __ENDIAN_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <stdint.h>
|
|
|
|
/* Follow macros provided by GCC. */
|
|
#define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
|
|
#define BIG_ENDIAN __ORDER_BIG_ENDIAN__
|
|
#define BYTE_ORDER __BYTE_ORDER__
|
|
|
|
#if BYTE_ORDER == LITTLE_ENDIAN
|
|
|
|
#define htobe16(x) __builtin_bswap16(x)
|
|
#define htole16(x) (x)
|
|
#define be16toh(x) __builtin_bswap16(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)
|
|
|
|
#elif BYTE_ORDER == BIG_ENDIAN
|
|
|
|
#define htobe16(x) (x)
|
|
#define htole16(x) __builtin_bswap16(x)
|
|
#define be16toh(x) (x)
|
|
#define le16toh(x) __builtin_bswap16(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)
|
|
|
|
#endif /* LITTLE_ENDIAN vs. BIG_ENDIAN */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /*__ENDIAN_H__*/
|