From a2df970fca0e719e4b32e1642803590ff7bbd1ee Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 18 Mar 2019 17:15:16 -0700 Subject: [PATCH] altos: ARM ABI requires 8-byte aligned stack This makes doubles on the stack (as for var-args functions) work Signed-off-by: Keith Packard --- src/kernel/ao_task.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/kernel/ao_task.h b/src/kernel/ao_task.h index d27ef060..03b62969 100644 --- a/src/kernel/ao_task.h +++ b/src/kernel/ao_task.h @@ -26,10 +26,10 @@ #define HAS_TASK_INFO 1 #endif -/* arm stacks must be 32-bit aligned */ +/* arm stacks must be 64-bit aligned */ #ifndef AO_STACK_ALIGNMENT #ifdef __arm__ -#define AO_STACK_ALIGNMENT __attribute__ ((aligned(4))) +#define AO_STACK_ALIGNMENT __attribute__ ((aligned(8))) #else #define AO_STACK_ALIGNMENT #endif @@ -50,11 +50,11 @@ struct ao_task { struct ao_list queue; struct ao_list alarm_queue; #endif - /* Provide both 32-bit and 8-bit stacks, always 32-bit aligned */ + /* Provide both 32-bit and 8-bit stacks */ union { uint32_t stack32[AO_STACK_SIZE>>2]; uint8_t stack8[AO_STACK_SIZE]; - }; + } AO_STACK_ALIGNMENT; #if HAS_SAMPLE_PROFILE uint32_t ticks; uint32_t yields; -- 2.30.2