X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Fendian.h;h=172c43203af12bde8a5cbb6f300fe2a11d2d6663;hb=07616721f1fa6cb215ffbef23441cae80412484f;hp=9652c30b6ef0f7965f1b6d9e5e51a93bbc3f3469;hpb=b959d04644d99f27d9f10344e76c079a12bc1ffd;p=musl diff --git a/include/endian.h b/include/endian.h index 9652c30b..172c4320 100644 --- a/include/endian.h +++ b/include/endian.h @@ -1,41 +1,32 @@ #ifndef _ENDIAN_H #define _ENDIAN_H -#define __LITTLE_ENDIAN 1234 -#define __BIG_ENDIAN 4321 -#define __PDP_ENDIAN 3412 +#include -#include +#define __NEED_uint16_t +#define __NEED_uint32_t +#define __NEED_uint64_t -#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#include + +#define __PDP_ENDIAN 3412 #define BIG_ENDIAN __BIG_ENDIAN #define LITTLE_ENDIAN __LITTLE_ENDIAN #define PDP_ENDIAN __PDP_ENDIAN #define BYTE_ORDER __BYTE_ORDER -#include - -#if __STDC_VERSION__ >= 199901L -inline -#endif -static uint16_t __bswap16(uint16_t __x) +static __inline uint16_t __bswap16(uint16_t __x) { return __x<<8 | __x>>8; } -#if __STDC_VERSION__ >= 199901L -inline -#endif -static uint32_t __bswap32(uint32_t __x) +static __inline uint32_t __bswap32(uint32_t __x) { return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24; } -#if __STDC_VERSION__ >= 199901L -inline -#endif -static uint64_t __bswap64(uint64_t __x) +static __inline uint64_t __bswap64(uint64_t __x) { return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32); } @@ -43,43 +34,47 @@ static uint64_t __bswap64(uint64_t __x) #if __BYTE_ORDER == __LITTLE_ENDIAN #define htobe16(x) __bswap16(x) #define be16toh(x) __bswap16(x) -#define betoh16(x) __bswap16(x) #define htobe32(x) __bswap32(x) #define be32toh(x) __bswap32(x) -#define betoh32(x) __bswap32(x) #define htobe64(x) __bswap64(x) #define be64toh(x) __bswap64(x) -#define betoh64(x) __bswap64(x) #define htole16(x) (uint16_t)(x) #define le16toh(x) (uint16_t)(x) -#define letoh16(x) (uint16_t)(x) #define htole32(x) (uint32_t)(x) #define le32toh(x) (uint32_t)(x) -#define letoh32(x) (uint32_t)(x) #define htole64(x) (uint64_t)(x) #define le64toh(x) (uint64_t)(x) -#define letoh64(x) (uint64_t)(x) #else #define htobe16(x) (uint16_t)(x) #define be16toh(x) (uint16_t)(x) -#define betoh16(x) (uint16_t)(x) #define htobe32(x) (uint32_t)(x) #define be32toh(x) (uint32_t)(x) -#define betoh32(x) (uint32_t)(x) #define htobe64(x) (uint64_t)(x) #define be64toh(x) (uint64_t)(x) -#define betoh64(x) (uint64_t)(x) #define htole16(x) __bswap16(x) #define le16toh(x) __bswap16(x) -#define letoh16(x) __bswap16(x) #define htole32(x) __bswap32(x) #define le32toh(x) __bswap32(x) -#define letoh32(x) __bswap32(x) #define htole64(x) __bswap64(x) #define le64toh(x) __bswap64(x) -#define letoh64(x) __bswap64(x) #endif +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define betoh16(x) __bswap16(x) +#define betoh32(x) __bswap32(x) +#define betoh64(x) __bswap64(x) +#define letoh16(x) (uint16_t)(x) +#define letoh32(x) (uint32_t)(x) +#define letoh64(x) (uint64_t)(x) +#else +#define betoh16(x) (uint16_t)(x) +#define betoh32(x) (uint32_t)(x) +#define betoh64(x) (uint64_t)(x) +#define letoh16(x) __bswap16(x) +#define letoh32(x) __bswap32(x) +#define letoh64(x) __bswap64(x) +#endif #endif #endif