From c22b03a04362f6ebf53eb87080f8d67dcaace74f Mon Sep 17 00:00:00 2001 From: lukileczo Date: Fri, 1 Dec 2023 11:39:54 +0100 Subject: [PATCH] Use predefined byte order macros Previously used macros weren't properly defined and used while preprocessing files. JIRA: RTOS-702 --- include/arch/arm-imx/arch.h | 2 -- include/arch/armv7/arch.h | 2 -- include/arch/ia32/arch.h | 2 -- include/arch/riscv64/arch.h | 2 -- include/arch/sparcv8leon3/arch.h | 2 -- include/endian.h | 16 +++++++++------- math/common.h | 6 ++++-- 7 files changed, 13 insertions(+), 19 deletions(-) diff --git a/include/arch/arm-imx/arch.h b/include/arch/arm-imx/arch.h index a8c398aa..90cf1bc5 100644 --- a/include/arch/arm-imx/arch.h +++ b/include/arch/arm-imx/arch.h @@ -16,8 +16,6 @@ #ifndef _LIBPHOENIX_ARCH_ARM_IMX_ARCH_H_ #define _LIBPHOENIX_ARCH_ARM_IMX_ARCH_H_ -#define __BYTE_ORDER __LITTLE_ENDIAN - #define __ARCH_STDINT #define __ARCH_LIMITS #define __ARCH_SYS_TYPES diff --git a/include/arch/armv7/arch.h b/include/arch/armv7/arch.h index 80a263f3..020d1070 100644 --- a/include/arch/armv7/arch.h +++ b/include/arch/armv7/arch.h @@ -16,8 +16,6 @@ #ifndef _LIBPHOENIX_ARCH_ARMV7_ARCH_H_ #define _LIBPHOENIX_ARCH_ARMV7_ARCH_H_ -#define __BYTE_ORDER __LITTLE_ENDIAN - #define __ARCH_STDINT #define __ARCH_LIMITS #define __ARCH_SYS_TYPES diff --git a/include/arch/ia32/arch.h b/include/arch/ia32/arch.h index b52dcd57..322833dd 100644 --- a/include/arch/ia32/arch.h +++ b/include/arch/ia32/arch.h @@ -16,8 +16,6 @@ #ifndef _LIBPHOENIX_ARCH_IA32_ARCH_H_ #define _LIBPHOENIX_ARCH_IA32_ARCH_H_ -#define __BYTE_ORDER __LITTLE_ENDIAN - #define __ARCH_STDINT #define __ARCH_LIMITS #define __ARCH_SYS_TYPES diff --git a/include/arch/riscv64/arch.h b/include/arch/riscv64/arch.h index a13af367..f8edc414 100644 --- a/include/arch/riscv64/arch.h +++ b/include/arch/riscv64/arch.h @@ -16,8 +16,6 @@ #ifndef _LIBPHOENIX_ARCH_RISCV64_ARCH_H_ #define _LIBPHOENIX_ARCH_RISCV64_ARCH_H_ -#define __BYTE_ORDER __LITTLE_ENDIAN - #define __ARCH_STDINT #define __ARCH_LIMITS #define __ARCH_SYS_TYPES diff --git a/include/arch/sparcv8leon3/arch.h b/include/arch/sparcv8leon3/arch.h index 4c7f7ce4..dec24b6c 100644 --- a/include/arch/sparcv8leon3/arch.h +++ b/include/arch/sparcv8leon3/arch.h @@ -16,8 +16,6 @@ #ifndef _LIBPHOENIX_ARCH_SPARCV8LEON3_ARCH_H_ #define _LIBPHOENIX_ARCH_SPARCV8LEON3_ARCH_H_ -#define __BYTE_ORDER __BIG_ENDIAN - #define __ARCH_STDINT #define __ARCH_LIMITS #define __ARCH_SYS_TYPES diff --git a/include/endian.h b/include/endian.h index d266d0a8..635238d5 100644 --- a/include/endian.h +++ b/include/endian.h @@ -24,22 +24,24 @@ extern "C" { #endif - -#define __LITTLE_ENDIAN 0 -#define __BIG_ENDIAN 1 +#define __BYTE_ORDER __BYTE_ORDER__ +#define __LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__ +#define __BIG_ENDIAN __ORDER_BIG_ENDIAN__ #include -#define __CPP_CONCAT1(x, y) x ## y -#define __CPP_CONCAT(x, y) __CPP_CONCAT1(x, y) +#define __CPP_CONCAT1(x, y) x##y +#define __CPP_CONCAT(x, y) __CPP_CONCAT1(x, y) -#if __BYTE_ORDER == __LITTLE_ENDIAN +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #define __swap_le__(b) __CPP_CONCAT(__CPP_CONCAT(uint, b), _t) #define __swap_be__(b) __CPP_CONCAT(__builtin_bswap, b) -#else +#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define __swap_le__(b) __CPP_CONCAT(__builtin_bswap, b) #define __swap_be__(b) __CPP_CONCAT(__CPP_CONCAT(uint, b), _t) +#else +#error "Unsupported byte order" #endif diff --git a/math/common.h b/math/common.h index 72edb641..444e58c4 100644 --- a/math/common.h +++ b/math/common.h @@ -21,14 +21,16 @@ typedef union { struct { -#if __BYTE_ORDER == __LITTLE_ENDIAN +#if __FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__ uint64_t mantisa:52; uint16_t exponent:11; uint8_t sign:1; -#else +#elif __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__ uint8_t sign:1; uint16_t exponent:11; uint64_t mantisa:52; +#else +#error "Unsupported byte order" #endif } i; double d;