From: Felix Fietkau <nbd@nbd.name>
Date: Wed, 11 Jan 2023 17:39:02 +0000 (+0100)
Subject: tools/include: add more endian macros
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=169757c7fd483787fb910c9d7b366fcd91ead49f;p=openwrt%2Fstaging%2Fsvanheule.git

tools/include: add more endian macros

Signed-off-by: Felix Fietkau <nbd@nbd.name>
---

diff --git a/tools/include/endian.h b/tools/include/endian.h
index e2ac755667..f625689f3d 100644
--- a/tools/include/endian.h
+++ b/tools/include/endian.h
@@ -37,4 +37,52 @@
 #define __LITTLE_ENDIAN LITTLE_ENDIAN
 #endif
 
+#ifndef __linux__
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define htobe16(x) bswap_16(x)
+#define be16toh(x) bswap_16(x)
+#define htobe32(x) bswap_32(x)
+#define be32toh(x) bswap_32(x)
+#define htobe64(x) bswap_64(x)
+#define be64toh(x) bswap_64(x)
+#define htole16(x) (uint16_t)(x)
+#define le16toh(x) (uint16_t)(x)
+#define htole32(x) (uint32_t)(x)
+#define le32toh(x) (uint32_t)(x)
+#define htole64(x) (uint64_t)(x)
+#define le64toh(x) (uint64_t)(x)
+#else
+#define htobe16(x) (uint16_t)(x)
+#define be16toh(x) (uint16_t)(x)
+#define htobe32(x) (uint32_t)(x)
+#define be32toh(x) (uint32_t)(x)
+#define htobe64(x) (uint64_t)(x)
+#define be64toh(x) (uint64_t)(x)
+#define htole16(x) bswap_16(x)
+#define le16toh(x) bswap_16(x)
+#define htole32(x) bswap_32(x)
+#define le32toh(x) bswap_32(x)
+#define htole64(x) bswap_64(x)
+#define le64toh(x) bswap_64(x)
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define betoh16(x) bswap_16(x)
+#define betoh32(x) bswap_32(x)
+#define betoh64(x) bswap_64(x)
+#define letoh16(x) (uint16_t)(x)
+#define letoh32(x) (uint32_t)(x)
+#define letoh64(x) (uint64_t)(x)
+#else
+#define betoh16(x) (uint16_t)(x)
+#define betoh32(x) (uint32_t)(x)
+#define betoh64(x) (uint64_t)(x)
+#define letoh16(x) bswap_16(x)
+#define letoh32(x) bswap_32(x)
+#define letoh64(x) bswap_64(x)
+#endif
+#endif
+#endif
+
 #endif