aboutsummaryrefslogtreecommitdiff
path: root/include/apos/bytes.h
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2021-08-31 00:13:40 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2021-08-31 00:13:40 +0300
commit1ab464d959b9ee3d3bb6758ac0d9d33fc6c77e46 (patch)
tree8d6832f0eadacce1613778bcecfcdaa2391aba79 /include/apos/bytes.h
parent2939b749b1169a0c01c19698a3f0026034346ebd (diff)
downloadkmi-1ab464d959b9ee3d3bb6758ac0d9d33fc6c77e46.tar.gz
kmi-1ab464d959b9ee3d3bb6758ac0d9d33fc6c77e46.zip
Improved linkind process, added padding generator
Diffstat (limited to 'include/apos/bytes.h')
-rw-r--r--include/apos/bytes.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/include/apos/bytes.h b/include/apos/bytes.h
new file mode 100644
index 0000000..da0ab67
--- /dev/null
+++ b/include/apos/bytes.h
@@ -0,0 +1,56 @@
+#ifndef APOS_BYTES_H
+#define APOS_BYTES_H
+
+#include <apos/types.h>
+
+uint16_t __bswap16(uint16_t u);
+uint32_t __bswap32(uint32_t u);
+uint64_t __bswap64(uint64_t u);
+
+#if __has_builtin(__builtin_bswap16)
+#define __bswap16(x) __builtin_bswap16(x)
+#endif
+
+#if __has_builtin(__builtin_bswap32)
+#define __bswap32(x) __builtin_bswap32(x)
+#endif
+
+#if __has_builtin(__builtin_bswap64)
+#define __bswap64(x) __builtin_bswap64(x)
+#endif
+
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define be16_to_cpu(x) __bswap16(x)
+#define be32_to_cpu(x) __bswap32(x)
+#define be64_to_cpu(x) __bswap64(x)
+
+#define cpu_to_be16(x) __bswap16(x)
+#define cpu_to_be32(x) __bswap32(x)
+#define cpu_to_be64(x) __bswap64(x)
+
+#define le16_to_cpu(x) (x)
+#define le32_to_cpu(x) (x)
+#define le64_to_cpu(x) (x)
+
+#define cpu_to_le16(x) (x)
+#define cpu_to_le32(x) (x)
+#define cpu_to_le64(x) (x)
+#else
+#define be16_to_cpu(x) (x)
+#define be32_to_cpu(x) (x)
+#define be64_to_cpu(x) (x)
+
+#define cpu_to_be16(x) (x)
+#define cpu_to_be32(x) (x)
+#define cpu_to_be64(x) (x)
+
+#define le16_to_cpu(x) __bswap16(x)
+#define le32_to_cpu(x) __bswap32(x)
+#define le64_to_cpu(x) __bswap64(x)
+
+#define cpu_to_le16(x) __bswap16(x)
+#define cpu_to_le32(x) __bswap32(x)
+#define cpu_to_le64(x) __bswap64(x)
+#endif
+
+#endif /* APOS_BYTES_H */