|
@@ -6,40 +6,6 @@
|
|
|
#ifndef _BSWAP_H
|
|
|
#define _BSWAP_H 1
|
|
|
|
|
|
-#if !defined(__BYTE_ORDER) && defined(BYTE_ORDER)
|
|
|
-# define __BYTE_ORDER BYTE_ORDER
|
|
|
-# if !defined(__BIG_ENDIAN) && defined(BIG_ENDIAN)
|
|
|
-# define __BIG_ENDIAN BIG_ENDIAN
|
|
|
-# endif
|
|
|
-# if !defined(__LITTLE_ENDIAN) && defined(LITTLE_ENDIAN)
|
|
|
-# define __LITTLE_ENDIAN LITTLE_ENDIAN
|
|
|
-# endif
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifndef __BYTE_ORDER
|
|
|
-# ifdef __linux__
|
|
|
-# include <endian.h>
|
|
|
-# else
|
|
|
-# define __LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */
|
|
|
-# define __BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
|
|
|
-# define __PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp) */
|
|
|
-
|
|
|
-# if defined(sun386) || defined(i386) || defined(__LITTLE_ENDIAN__)
|
|
|
-# define __BYTE_ORDER __LITTLE_ENDIAN
|
|
|
-# endif
|
|
|
-
|
|
|
-# if defined(sparc) || defined(__BIG_ENDIAN__)
|
|
|
-# define __BYTE_ORDER __BIG_ENDIAN
|
|
|
-# endif
|
|
|
-
|
|
|
-# endif /* __linux__ */
|
|
|
-#endif /* __BYTE_ORDER */
|
|
|
-
|
|
|
-
|
|
|
-#ifndef __BYTE_ORDER
|
|
|
-# error "Undefined __BYTE_ORDER"
|
|
|
-#endif
|
|
|
-
|
|
|
#ifdef __linux__
|
|
|
# include <byteswap.h>
|
|
|
#else
|
|
@@ -56,6 +22,24 @@ static __inline__ uint32_t bswap_32(uint32_t x)
|
|
|
(((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
|