authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-23 06:18:22+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-23 09:27:17+02:00
log4193ea8239264c7ee6891e9ef5ee756e13833fb2
treeceb2795143bfbd338df8229158018a386ae1a30d
parentc792ebfee2fab3ee9c633e7abc344d0e7535c983
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.start: add sh support


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

lib/std/start.zig+16
...@@ -212,6 +212,7 @@ fn _start() callconv(.naked) noreturn {...@@ -212,6 +212,7 @@ fn _start() callconv(.naked) noreturn {
212 else212 else
213 ".cfi_undefined ra",213 ".cfi_undefined ra",
214 .s390x => ".cfi_undefined %%r14",214 .s390x => ".cfi_undefined %%r14",
215 .sh, .sheb => ".cfi_undefined pr",
215 .sparc, .sparc64 => ".cfi_undefined %%i7",216 .sparc, .sparc64 => ".cfi_undefined %%i7",
216 .x86 => ".cfi_undefined %%eip",217 .x86 => ".cfi_undefined %%eip",
217 .x86_64 => ".cfi_undefined %%rip",218 .x86_64 => ".cfi_undefined %%rip",
...@@ -455,6 +456,21 @@ fn _start() callconv(.naked) noreturn {...@@ -455,6 +456,21 @@ fn _start() callconv(.naked) noreturn {
455 \\ stg %%r0, 0(%%r15)456 \\ stg %%r0, 0(%%r15)
456 \\ jg %[posixCallMainAndExit]457 \\ jg %[posixCallMainAndExit]
457 ,458 ,
459 .sh, .sheb =>
460 // r14 = FP, r15 = SP, pr = LR
461 \\ mov #0, r0
462 \\ lds r0, pr
463 \\ mov r0, r14
464 \\ mov r15, r4
465 \\ mov #-4, r0
466 \\ and r0, r15
467 \\ mov.l 2f, r1
468 \\1:
469 \\ bsrf r1
470 \\2:
471 \\ .balign 4
472 \\ .long %[posixCallMainAndExit]@PCREL - (1b + 4 - .)
473 ,
458 .sparc =>474 .sparc =>
459 // argc is stored after a register window (16 registers * 4 bytes).475 // argc is stored after a register window (16 registers * 4 bytes).
460 // i7 = LR476 // i7 = LR