From 0cfeb626c06b991257bc3238709feb838350f394 Mon Sep 17 00:00:00 2001 From: Mazen NEIFER Date: Wed, 8 Feb 2017 16:26:32 +0100 Subject: [PATCH] Xtensa port: Fixed scheduling bug caused to missing Endianess related macros. XCC does neither define __BYTE_ORDER__ nor __ORDER_LITTLE/BIG_ENDIAN__ macros. This resulted in field preempt of thread.base not correctly built from other union fields prio and sched_locked, which caused wrong scheduling. Change-Id: I8566ef4a5cf555906c012c4adc488f9afb26c053 Signed-off-by: Mazen NEIFER --- include/arch/xtensa/arch.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/arch/xtensa/arch.h b/include/arch/xtensa/arch.h index 318f6a86a89..e650fef22ad 100644 --- a/include/arch/xtensa/arch.h +++ b/include/arch/xtensa/arch.h @@ -24,6 +24,16 @@ extern "C" { #include #include #include +#include + +/* + * XCC does not define the following macros with the expected names, but the + * file machine/endian.h from XT_LIB defines similar ones. Thus we include it + * and define the missing macros ourselves. + */ +#define __BYTE_ORDER__ XCHAL_MEMORY_ORDER +#define __ORDER_BIG_ENDIAN__ XTHAL_BIGENDIAN +#define __ORDER_LITTLE_ENDIAN__ XTHAL_LITTLEENDIAN #define STACK_ALIGN 16 #define OCTET_TO_SIZEOFUNIT(X) (X)