authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-05-29 08:20:27+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-05-29 08:20:27+02:00
loga80ff87a04acff1cd5e5c0496a65d2dbed823c0d
treeaf4279775cf1e044c3326ed95530ad05f4cdf0ed
parent7e51c731b85f15dc6898e57301c51802e43a924a
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.start: add xtensa call0 support


1 files changed, 16 insertions(+), 8 deletions(-)

lib/std/start.zig+16-8
......@@ -487,14 +487,22 @@ fn _start() callconv(.naked) noreturn {
487487 \\ sub %%sp, 2047, %%sp
488488 \\ ba,a %[posixCallMainAndExit]
489489 ,
490 .xtensa, .xtensaeb =>
491 // a0 = LR, a7 = FP, a1 = SP
492 \\ movi a0, 0
493 \\ movi a7, 0
494 \\ mov a6, sp
495 \\ movi a8, -16
496 \\ and sp, sp, a8
497 \\ call4 %[posixCallMainAndExit]
490 .xtensa, .xtensaeb => if (builtin.abi == .call0)
491 // a0 = LR, a15 = FP, a1 = SP
492 \\ movi a0, 0
493 \\ movi a15, 0
494 \\ mov a2, sp
495 \\ movi a8, -16
496 \\ and sp, sp, a8
497 \\ call0 %[posixCallMainAndExit]
498 else
499 // a0 = LR, a7 = FP, a1 = SP
500 \\ movi a0, 0
501 \\ movi a7, 0
502 \\ mov a6, sp
503 \\ movi a8, -16
504 \\ and sp, sp, a8
505 \\ call4 %[posixCallMainAndExit]
498506 ,
499507 else => @compileError("unsupported arch"),
500508 }