Date: Wed, 23 Mar 2005 19:08:28 +0200 From: Andriy Gapon <avg@icyb.net.ua> To: freebsd-sparc64@freebsd.org Subject: udfclient-0.3.3_1 failed on sparc64: bswap.h Message-ID: <4241A28C.4060309@icyb.net.ua> In-Reply-To: <42415375.4080107@icyb.net.ua> References: <42415375.4080107@icyb.net.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Volunteers with big endian hardware, could you please test the attached
patch to sysutils/udfclient port? At least that it compiles, it is only
a few .c files.
--
Andriy Gapon
[-- Attachment #2 --]
--- ./work/UDFclient.0.3.3/udf_bswap.h.orig Wed Mar 23 18:00:36 2005
+++ ./work/UDFclient.0.3.3/udf_bswap.h Wed Mar 23 19:00:10 2005
@@ -52,8 +52,33 @@
/* rest only relevant for big endian machines */
#if (BYTE_ORDER == BIG_ENDIAN)
+#if !defined(__FreeBSD__)
#include <machine/bswap.h>
#include <sys/bswap.h>
+#else
+#if !defined(bswap16)
+/* this version of FreeBSD does not provide bswap*() functions */
+static __inline u_int16_t
+bswap16(u_int16_t x)
+{
+ return ((x >> 8) | ((x << 8) & 0xff00U));
+}
+static __inline u_int32_t
+bswap32(u_int32_t x)
+{
+ return ((x >> 24) | ((x >> 8) & 0xff00U) | ((x << 8) & 0xff0000U) |
+ ((x << 24) & 0xff000000U));
+}
+static __inline u_int64_t
+bswap64(u_int64_t x)
+{
+ return ((x >> 56) | ((x >> 40) & 0xff00UL) | ((x >> 24) & 0xff0000UL) |
+ ((x >> 8) & 0xff000000UL) | ((x << 8) & 0xff00000000UL) |
+ ((x << 24) & 0xff0000000000UL) | ((x << 40) & 0xff000000000000UL) |
+ ((x << 56)));
+}
+#endif
+#endif
/* inlines for access to swapped data */
static __inline u_int16_t udf_rw16 __P((u_int16_t));
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4241A28C.4060309>
