zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 4193ea8239264c7ee6891e9ef5ee756e13833fb2 (tree)
parent c792ebfee2fab3ee9c633e7abc344d0e7535c983
Author: Alex Rønne Petersen <alex@alexrp.com>
Date:   Thu, 23 Oct 2025 06:18:22 +0200

std.start: add sh support

Diffstat:
Mlib/std/start.zig | 16++++++++++++++++
1 file changed, 16 insertions(+), 0 deletions(-)

diff --git a/lib/std/start.zig b/lib/std/start.zig @@ -212,6 +212,7 @@ fn _start() callconv(.naked) noreturn { else ".cfi_undefined ra", .s390x => ".cfi_undefined %%r14", + .sh, .sheb => ".cfi_undefined pr", .sparc, .sparc64 => ".cfi_undefined %%i7", .x86 => ".cfi_undefined %%eip", .x86_64 => ".cfi_undefined %%rip", @@ -455,6 +456,21 @@ fn _start() callconv(.naked) noreturn { \\ stg %%r0, 0(%%r15) \\ jg %[posixCallMainAndExit] , + .sh, .sheb => + // r14 = FP, r15 = SP, pr = LR + \\ mov #0, r0 + \\ lds r0, pr + \\ mov r0, r14 + \\ mov r15, r4 + \\ mov #-4, r0 + \\ and r0, r15 + \\ mov.l 2f, r1 + \\1: + \\ bsrf r1 + \\2: + \\ .balign 4 + \\ .long %[posixCallMainAndExit]@PCREL - (1b + 4 - .) + , .sparc => // argc is stored after a register window (16 registers * 4 bytes). // i7 = LR