aboutsummaryrefslogtreecommitdiff
path: root/lib/libk/endian/little.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libk/endian/little.c')
-rw-r--r--lib/libk/endian/little.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/libk/endian/little.c b/lib/libk/endian/little.c
new file mode 100644
index 0000000..042bb55
--- /dev/null
+++ b/lib/libk/endian/little.c
@@ -0,0 +1,43 @@
+//=====================================================================
+// spdx-license-identifier: ISC
+//=====================================================================
+
+#include "endian.h"
+
+#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
+#error little.c included in build on big endian target
+#endif
+
+uint16_t
+htole16(uint16_t host_16b)
+{
+ return host_16b;
+}
+
+uint32_t
+htole32(uint32_t host_32b)
+{
+ return host_32b;
+}
+
+uint64_t
+htole64(uint64_t host_64b)
+{
+ return host_64b;
+}
+
+uint16_t
+htobe16(uint16_t host_16b)
+{
+ return __builtin_bswap16(host_16b);
+}
+uint32_t
+htobe32(uint32_t host_32b)
+{
+ return __builtin_bswap32(host_32b);
+}
+uint64_t
+htobe64(uint64_t host_64b)
+{
+ return __builtin_bswap64(host_64b);
+}