commit d3bf6c518f304741140a6a51236daefe5c87c0ef (tree)
parent 8fea9f68e8c7ea256d8137e3b311aafacef25e3a
Author: Alex Rønne Petersen <alex@alexrp.com>
Date: Mon, 7 Apr 2025 13:08:40 +0200
start: Align the stack on m68k.
Diffstat:
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/std/start.zig b/lib/std/start.zig
@@ -366,7 +366,11 @@ fn _start() callconv(.naked) noreturn {
// Note that the - 8 is needed because pc in the jsr instruction points into the middle
// of the jsr instruction. (The lea is 6 bytes, the jsr is 4 bytes.)
\\ suba.l %%fp, %%fp
- \\ move.l %%sp, -(%%sp)
+ \\ move.l %%sp, %%a0
+ \\ move.l %%a0, %%d0
+ \\ and.l #-4, %%d0
+ \\ move.l %%d0, %%sp
+ \\ move.l %%a0, -(%%sp)
\\ lea %[posixCallMainAndExit] - . - 8, %%a0
\\ jsr (%%pc, %%a0)
,