commit a80ff87a04acff1cd5e5c0496a65d2dbed823c0d (tree)
parent 7e51c731b85f15dc6898e57301c51802e43a924a
Author: Alex Rønne Petersen <alex@alexrp.com>
Date: Fri, 29 May 2026 08:20:27 +0200
std.start: add xtensa call0 support
Diffstat:
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/lib/std/start.zig b/lib/std/start.zig
@@ -487,14 +487,22 @@ fn _start() callconv(.naked) noreturn {
\\ sub %%sp, 2047, %%sp
\\ ba,a %[posixCallMainAndExit]
,
- .xtensa, .xtensaeb =>
- // a0 = LR, a7 = FP, a1 = SP
- \\ movi a0, 0
- \\ movi a7, 0
- \\ mov a6, sp
- \\ movi a8, -16
- \\ and sp, sp, a8
- \\ call4 %[posixCallMainAndExit]
+ .xtensa, .xtensaeb => if (builtin.abi == .call0)
+ // a0 = LR, a15 = FP, a1 = SP
+ \\ movi a0, 0
+ \\ movi a15, 0
+ \\ mov a2, sp
+ \\ movi a8, -16
+ \\ and sp, sp, a8
+ \\ call0 %[posixCallMainAndExit]
+ else
+ // a0 = LR, a7 = FP, a1 = SP
+ \\ movi a0, 0
+ \\ movi a7, 0
+ \\ mov a6, sp
+ \\ movi a8, -16
+ \\ and sp, sp, a8
+ \\ call4 %[posixCallMainAndExit]
,
else => @compileError("unsupported arch"),
}