From b235f49f31d11e68019c42f48b6641c37e4c986e Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 22 Aug 2021 20:38:48 +0300 Subject: 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. --- include/apos/types.h | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 207 insertions(+), 1 deletion(-) (limited to 'include/apos/types.h') 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 */ -- cgit v1.3