aboutsummaryrefslogtreecommitdiff
path: root/include/apos/types.h
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2021-08-22 20:38:48 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2021-08-22 22:25:57 +0300
commitb235f49f31d11e68019c42f48b6641c37e4c986e (patch)
treea9f9e7960b04ded4df61cac9a029d0c30e2d6199 /include/apos/types.h
parentf05aaa0561e071a54785ae7dfae3d8a34c9df06a (diff)
downloadkmi-b235f49f31d11e68019c42f48b6641c37e4c986e.tar.gz
kmi-b235f49f31d11e68019c42f48b6641c37e4c986e.zip
Integrated libfdt
+ Added new common/ directory, into which code that should be shared with init and kernel is to be added. Currently string.c and bytes.c. Code in common/ should be marked with __weak, so as to allow the arch to implement a better, more optimised version of the function if possible/required. + Created include/apos/types.h with macros essentially providing the libc limits.h and stdint.h. At the moment I use gcc/clang predefined macros for most things.
Diffstat (limited to 'include/apos/types.h')
-rw-r--r--include/apos/types.h208
1 files changed, 207 insertions, 1 deletions
diff --git a/include/apos/types.h b/include/apos/types.h
index 2e30080..04afd4c 100644
--- a/include/apos/types.h
+++ b/include/apos/types.h
@@ -1,4 +1,210 @@
-#ifdef APOS_TYPES_H
+#ifndef APOS_TYPES_H
#define APOS_TYPES_H
+typedef _Bool bool;
+#define true 1
+#define false 0
+
+typedef __SIZE_TYPE__ size_t;
+typedef __PTRDIFF_TYPE__ ptrdiff_t;
+typedef __WCHAR_TYPE__ wchar_t;
+typedef __WINT_TYPE__ wint_t;
+typedef __INTMAX_TYPE__ intmax_t;
+typedef __UINTMAX_TYPE__ uintmax_t;
+typedef __SIG_ATOMIC_TYPE__ sig_atomic_t;
+typedef __INT8_TYPE__ int8_t;
+typedef __INT16_TYPE__ int16_t;
+typedef __INT32_TYPE__ int32_t;
+typedef __INT64_TYPE__ int64_t;
+typedef __UINT8_TYPE__ uint8_t;
+typedef __UINT16_TYPE__ uint16_t;
+typedef __UINT32_TYPE__ uint32_t;
+typedef __UINT64_TYPE__ uint64_t;
+typedef __INT_LEAST8_TYPE__ int_least8_t;
+typedef __INT_LEAST16_TYPE__ int_least16_t;
+typedef __INT_LEAST32_TYPE__ int_least32_t;
+typedef __INT_LEAST64_TYPE__ int_least64_t;
+typedef __UINT_LEAST8_TYPE__ uint_least8_t;
+typedef __UINT_LEAST16_TYPE__ uint_least16_t;
+typedef __UINT_LEAST32_TYPE__ uint_least32_t;
+typedef __UINT_LEAST64_TYPE__ uint_least64_t;
+typedef __INT_FAST8_TYPE__ int_fast8_t;
+typedef __INT_FAST16_TYPE__ int_fast16_t;
+typedef __INT_FAST32_TYPE__ int_fast32_t;
+typedef __INT_FAST64_TYPE__ int_fast64_t;
+typedef __UINT_FAST8_TYPE__ uint_fast8_t;
+typedef __UINT_FAST16_TYPE__ uint_fast16_t;
+typedef __UINT_FAST32_TYPE__ uint_fast32_t;
+typedef __UINT_FAST64_TYPE__ uint_fast64_t;
+typedef __INTPTR_TYPE__ intptr_t;
+typedef __UINTPTR_TYPE__ uintptr_t;
+
+#define INT8_C __INT8_C
+#define INT16_C __INT16_C
+#define INT32_C __INT32_C
+#define INT64_C __INT64_C
+#define UINT8_C __UINT8_C
+#define UINT16_C __UINT16_C
+#define UINT32_C __UINT32_C
+#define UINT64_C __UINT64_C
+#define INTMAX_C __INTMAX_C
+#define UINTMAX_C __UINTMAX_C
+
+#define CHAR_BIT __CHAR_BIT__
+
+#define SCHAR_MAX __SCHAR_MAX__
+#define SCHAR_MIN (-__SCHAR_MAX - 1)
+#define UCHAR_MAX (2 * __SCHAR_MAX__ - 1)
+
+#ifdef __CHAR_UNSIGNED__
+#define CHAR_MIN 0
+#define CHAR_MAX UCHAR_MAX
+#else
+#define CHAR_MIN SCHAR_MIN
+#define CHAR_MAX SCHAR_MAX
+#endif
+
+/* probably not necessary? */
+#define MB_LEN_MAX 16
+
+#define SHRT_MAX __SHRT_MAX__
+#define SHRT_MIN (-__SHRT_MAX - 1)
+#define USHRT_MAX (2 * __SHRT_MAX + 1)
+
+#define INT_MAX __INT_MAX__
+#define INT_MIN (-__INT_MAX__ - 1)
+#define UINT_MAX (2 * __INT_MAX__ + 1)
+
+#define LONG_MAX __LONG__MAX__
+#define LONG_MIN (-__LONG_MAX__ - 1)
+#define ULONG_MAX (2 * __INT_MAX__ + 1)
+
+#define LLONG_MAX __LONG_LONG_MAX__
+#define LLONG_MIN (-__LONG_LONG_MAX__ - 1)
+#define ULLONG_MAX (2 * __LONG_LONG_MAX__ + 1)
+
+#define INT8_MAX __INT8_MAX__
+#define INT8_MIN (-__INT8_MAX__ - 1)
+#define UINT8_MAX __UINT8_MAX__
+
+#define INT16_MAX __INT16_MAX__
+#define INT16_MIN (-__INT16_MAX__ - 1)
+#define UINT16_MAX __UINT16_MAX__
+
+#define INT32_MAX __INT32_MAX__
+#define INT32_MIN (-__INT32_MAX__ - 1)
+#define UINT32_MAX __UINT32_MAX__
+
+#define INT64_MAX __INT64_MAX__
+#define INT64_MIN (-__INT64_MAX__ - 1)
+#define UINT64_MAX __UINT64_MAX__
+
+#define INT_LEAST8_MAX __INT_LEAST8_MAX__
+#define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)
+#define UINT_LEAST8_MAX __UINT_LEAST8_MAX__
+
+#define INT_LEAST16_MAX __INT_LEAST16_MAX__
+#define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)
+#define UINT_LEAST16_MAX __UINT_LEAST16_MAX__
+
+#define INT_LEAST32_MAX __INT_LEAST32_MAX__
+#define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)
+#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__
+
+#define INT_LEAST64_MAX __INT_LEAST64_MAX__
+#define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)
+#define UINT_LEAST64_MAX __UINT_LEAST64_MAX__
+
+#define INT_FAST8_MAX __INT_FAST8_MAX__
+#define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)
+#define UINT_FAST8_MAX __UINT_FAST8_MAX__
+
+#define INT_FAST16_MAX __INT_FAST16_MAX__
+#define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)
+#define UINT_FAST16_MAX __UINT_FAST16_MAX__
+
+#define INT_FAST32_MAX __INT_FAST32_MAX__
+#define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)
+#define UINT_FAST32_MAX __UINT_FAST32_MAX__
+
+#define INT_FAST64_MAX __INT_FAST64_MAX__
+#define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)
+#define UINT_FAST64_MAX __UINT_FAST64_MAX__
+
+#define INTPTR_MAX __INTPTR_MAX__
+#define INTPTR_MIN (-__INTPTR_MAX__ - 1)
+#define UINTPTR_MAX __UINTPTR_MAX__
+
+#define INTMAX_MAX __INTMAX_MAX__
+#define INTMAX_MIN (-__INTMAX_MAX__ - 1)
+#define UINTMAX_MAX __UINTMAX_MAX__
+
+#define INT8_WIDTH 8
+#define INT16_WIDTH 16
+#define INT32_WIDTH 32
+#define INT64_WIDTH 64
+#define UINT8_WIDTH 8
+#define UINT16_WIDTH 16
+#define UINT32_WIDTH 32
+#define UINT64_WIDTH 64
+
+#define INT_FAST8_WIDTH __INT_FAST8_WIDTH__
+#define INT_FAST16_WIDTH __INT_FAST16_WIDTH__
+#define INT_FAST32_WIDTH __INT_FAST32_WIDTH__
+#define INT_FAST64_WIDTH __INT_FAST64_WIDTH__
+#define UINT_FAST8_WIDTH __INT_FAST8_WIDTH__
+#define UINT_FAST16_WIDTH __INT_FAST16_WIDTH__
+#define UINT_FAST32_WIDTH __INT_FAST32_WIDTH__
+#define UINT_FAST64_WIDTH __INT_FAST64_WIDTH__
+
+#define INT_LEAST8_WIDTH __INT_LEAST8_WIDTH__
+#define INT_LEAST16_WIDTH __INT_LEAST16_WIDTH__
+#define INT_LEAST32_WIDTH __INT_LEAST32_WIDTH__
+#define INT_LEAST64_WIDTH __INT_LEAST64_WIDTH__
+#define UINT_LEAST8_WIDTH __INT_LEAST8_WIDTH__
+#define UINT_LEAST16_WIDTH __INT_LEAST16_WIDTH__
+#define UINT_LEAST32_WIDTH __INT_LEAST32_WIDTH__
+#define UINT_LEAST64_WIDTH __INT_LEAST64_WIDTH__
+
+#define INTPTR_WIDTH __INTPTR_WIDTH__
+#define INTMAX_WIDTH __INTMAX_WIDTH__
+#define UINTPTR_WIDTH __INTPTR_WIDTH__
+#define UINTMAX_WIDTH __INTMAX_WIDTH__
+
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define be16_to_cpu(x) __builtin_bswap16(x)
+#define be32_to_cpu(x) __builtin_bswap32(x)
+#define be64_to_cpu(x) __builtin_bswap64(x)
+
+#define cpu_to_be16(x) __builtin_bswap16(x)
+#define cpu_to_be32(x) __builtin_bswap32(x)
+#define cpu_to_be64(x) __builtin_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) __builtin_bswap16(x)
+#define le32_to_cpu(x) __builtin_bswap32(x)
+#define le64_to_cpu(x) __builtin_bswap64(x)
+
+#define cpu_to_le16(x) __builtin_bswap16(x)
+#define cpu_to_le32(x) __builtin_bswap32(x)
+#define cpu_to_le64(x) __builtin_bswap64(x)
+#endif
+
+#define NULL 0
+
#endif /* APOS_TYPES_H */