authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-08-08 14:08:27+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-08-09 16:56:23+02:00
log19a0cef7e8adfff9dea6f9672cc022ad267939ef
treeb1a3414946d485ee716209cee32b0d240656e896
parentef4ce7def1d4868d1d54832fba473f84938e40be
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.start: simplify sh _start assembly a bit

A couple extra instructions, but this looks significantly less arcane.

1 files changed, 5 insertions(+), 4 deletions(-)

lib/std/start.zig+5-4
......@@ -476,13 +476,14 @@ fn _start() callconv(.naked) noreturn {
476476 \\ mov r15, r4
477477 \\ mov #-4, r0
478478 \\ and r0, r15
479 \\ mova 2f, r0
479480 \\ mov.l 2f, r1
480 \\1:
481 \\ braf r1
481 \\ add r0, r1
482 \\ jmp @r1
482483 \\ nop
483 \\2:
484484 \\ .balign 4
485 \\ .long %[posixCallMainAndExit]@PCREL - (1b + 4 - .)
485 \\1:
486 \\ .long %[posixCallMainAndExit] - .
486487 ,
487488 .sparc =>
488489 // argc is stored after a register window (16 registers * 4 bytes).