summaryrefslogtreecommitdiff
path: root/Build/source/utils/xz-4.999.9beta/src/common/bswap.h
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-08-28 13:56:17 +0000
committerKarl Berry <karl@freefriends.org>2009-08-28 13:56:17 +0000
commit2f43e3eb8fbcc2b9b14bb83694c6dde17c22f6d1 (patch)
treec0340a4fc049e3c95dbd0345a22db2779068a724 /Build/source/utils/xz-4.999.9beta/src/common/bswap.h
parent47876ed420256f4a2c52a4af0b0ae53824b7bcb4 (diff)
xz utils update
git-svn-id: svn://tug.org/texlive/trunk@14912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/xz-4.999.9beta/src/common/bswap.h')
-rw-r--r--Build/source/utils/xz-4.999.9beta/src/common/bswap.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/Build/source/utils/xz-4.999.9beta/src/common/bswap.h b/Build/source/utils/xz-4.999.9beta/src/common/bswap.h
new file mode 100644
index 00000000000..c8cf125aeb8
--- /dev/null
+++ b/Build/source/utils/xz-4.999.9beta/src/common/bswap.h
@@ -0,0 +1,52 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file bswap.h
+/// \brief Byte swapping
+//
+// Author: Lasse Collin
+//
+// This file has been put into the public domain.
+// You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef LZMA_BSWAP_H
+#define LZMA_BSWAP_H
+
+// NOTE: We assume that config.h is already #included.
+
+// At least glibc has byteswap.h which contains inline assembly code for
+// byteswapping. Some systems have byteswap.h but lack one or more of the
+// bswap_xx macros/functions, which is why we check them separately even
+// if byteswap.h is available.
+
+#ifdef HAVE_BYTESWAP_H
+# include <byteswap.h>
+#endif
+
+#ifndef HAVE_BSWAP_16
+# define bswap_16(num) \
+ (((num) << 8) | ((num) >> 8))
+#endif
+
+#ifndef HAVE_BSWAP_32
+# define bswap_32(num) \
+ ( (((num) << 24) ) \
+ | (((num) << 8) & UINT32_C(0x00FF0000)) \
+ | (((num) >> 8) & UINT32_C(0x0000FF00)) \
+ | (((num) >> 24) ) )
+#endif
+
+#ifndef HAVE_BSWAP_64
+# define bswap_64(num) \
+ ( (((num) << 56) ) \
+ | (((num) << 40) & UINT64_C(0x00FF000000000000)) \
+ | (((num) << 24) & UINT64_C(0x0000FF0000000000)) \
+ | (((num) << 8) & UINT64_C(0x000000FF00000000)) \
+ | (((num) >> 8) & UINT64_C(0x00000000FF000000)) \
+ | (((num) >> 24) & UINT64_C(0x0000000000FF0000)) \
+ | (((num) >> 40) & UINT64_C(0x000000000000FF00)) \
+ | (((num) >> 56) ) )
+#endif
+
+#endif