#ifndef _I386_ENDIAN_H_ #define _I386_ENDIAN_H_ /* All the headers include this file. */ #include <_mingw.h> #include <sys/types.h> #define __LITTLE_ENDIAN_BITFIELD #ifdef __GNUC__ #define __swap16gen(x) __extension__({ \ __uint16_t __swap16gen_x = (x); \ \ (__uint16_t)((__swap16gen_x & 0xff) << 8 | \ (__swap16gen_x & 0xff00) >> 8); \ }) #define __swap32gen(x) __extension__({ \ __uint32_t __swap32gen_x = (x); \ \ (__uint32_t)((__swap32gen_x & 0xff) << 24 | \ (__swap32gen_x & 0xff00) << 8 | \ (__swap32gen_x & 0xff0000) >> 8 | \ (__swap32gen_x & 0xff000000) >> 24); \ }) #define __swap64gen(x) __extension__({ \ __uint64_t __swap64gen_x = (x); \ \ (__uint64_t)((__swap64gen_x & 0xff) << 56 | \ (__swap64gen_x & 0xff00ULL) << 40 | \ (__swap64gen_x & 0xff0000ULL) << 24 | \ (__swap64gen_x & 0xff000000ULL) << 8 | \ (__swap64gen_x & 0xff00000000ULL) >> 8 | \ (__swap64gen_x & 0xff0000000000ULL) >> 24 | \ (__swap64gen_x & 0xff000000000000ULL) >> 40 | \ (__swap64gen_x & 0xff00000000000000ULL) >> 56); \ }) #else /* __GNUC__ */ /* Note that these macros evaluate their arguments several times. */ #define __swap16gen(x) \ (__uint16_t)(((__uint16_t)(x) & 0xff) << 8 | ((__uint16_t)(x) & 0xff00) >> 8) #define __swap32gen(x) \ (__uint32_t)(((__uint32_t)(x) & 0xff) << 24 | \ ((__uint32_t)(x) & 0xff00) << 8 | ((__uint32_t)(x) & 0xff0000) >> 8 |\ ((__uint32_t)(x) & 0xff000000) >> 24) #define __swap64gen(x) \ (__uint64_t)((((__uint64_t)(x) & 0xff) << 56) | \ ((__uint64_t)(x) & 0xff00ULL) << 40 | \ ((__uint64_t)(x) & 0xff0000ULL) << 24 | \ ((__uint64_t)(x) & 0xff000000ULL) << 8 | \ ((__uint64_t)(x) & 0xff00000000ULL) >> 8 | \ ((__uint64_t)(x) & 0xff0000000000ULL) >> 24 | \ ((__uint64_t)(x) & 0xff000000000000ULL) >> 40 | \ ((__uint64_t)(x) & 0xff00000000000000ULL) >> 56) #endif /* __GNUC__ */ #define __swap16 __swap16gen #define __swap32 __swap32gen #define __swap64 __swap64gen #define swap16 __swap16 #define swap32 __swap32 #define swap64 __swap64 #endif /* _I386_ENDIAN_H_ */