123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- /*
- * Lame bswap replacements as we can't assume the host is sane and provides
- * working versions of these.
- */
- #ifndef _BSWAP_H
- #define _BSWAP_H 1
- #ifdef __linux__
- # include <byteswap.h>
- #else
- static __inline__ uint16_t bswap_16(uint16_t x)
- {
- return ((((x) & 0xff00) >> 8) | \
- (((x) & 0x00ff) << 8));
- }
- static __inline__ uint32_t bswap_32(uint32_t x)
- {
- return ((((x) & 0xff000000) >> 24) | \
- (((x) & 0x00ff0000) >> 8) | \
- (((x) & 0x0000ff00) << 8) | \
- (((x) & 0x000000ff) << 24));
- }
- static __inline__ uint64_t bswap_64(uint64_t x)
- {
- #define _uswap_64(x, sfx) \
- return ((((x) & 0xff00000000000000##sfx) >> 56) | \
- (((x) & 0x00ff000000000000##sfx) >> 40) | \
- (((x) & 0x0000ff0000000000##sfx) >> 24) | \
- (((x) & 0x000000ff00000000##sfx) >> 8) | \
- (((x) & 0x00000000ff000000##sfx) << 8) | \
- (((x) & 0x0000000000ff0000##sfx) << 24) | \
- (((x) & 0x000000000000ff00##sfx) << 40) | \
- (((x) & 0x00000000000000ff##sfx) << 56));
- #if defined(__GNUC__)
- _uswap_64(x, ull)
- #else
- _uswap_64(x, )
- #endif
- #undef _uswap_64
- }
- #endif
- #endif
|