Are there other parts of the code that might unalign the stack, even if the stack is properly aligned to begin with? i.e passing an uneven number of function arguments on the stack or inside interrupt handlers? Alpha does not make use of a separate interrupt stack, right? On stack alignment in "ALPHA Calling Standard": D.3.1 Stack Alignment "This standard requires that stacks be octaword aligned at the time a new procedure is invoked. During the body of a procedure, however, there is no requirement to keep this level of alignment (even though it may be beneficial). This implies that any asynchronous interrupt handlers must properly align the stack before any standard calls are made." For now I've reverted the stack alignment patch and I'm now just applying this patch. Now the ES40 is stable again --- smp.orig 2025-01-24 17:50:18.822326213 +0100 +++ smp.h 2025-01-24 17:51:13.772835769 +0100 @@ -30,8 +30,7 @@ (struct __call_single_data){ .func = (_func), .info = (_info), } /* Use __aligned() to avoid to use 2 cache lines for 1 csd */ -typedef struct __call_single_data call_single_data_t - __aligned(sizeof(struct __call_single_data)); +typedef struct __call_single_data call_single_data_t; #define INIT_CSD(_csd, _func, _info) \ do { \ /Magnus