motiejus/zig

fork of https://codeberg.org/ziglang/zig
git clone https://git.jakstys.lt/motiejus/zig.git
Log | Tree | Refs | README | LICENSE

commit c29da84c0e0793683904a32deb8a7eff1ba98b54 (tree)
parent 23433fb3172597b10d57d9dda49fcd0d13950fb4
Author: Koakuma <koachan@protonmail.com>
Date:   Sat, 22 Aug 2020 16:30:17 +0700

Add sp loading

Diffstat:
Mlib/std/os/bits/linux/sparc64.zig | 3+++
Mlib/std/start.zig | 5+++++
2 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/lib/std/os/bits/linux/sparc64.zig b/lib/std/os/bits/linux/sparc64.zig @@ -544,6 +544,9 @@ pub const timezone = extern struct { tz_dsttime: i32, }; +// TODO I'm not sure if the code below is correct, need someone with more +// knowledge about sparc64 linux internals to look into. + pub const Elf_Symndx = u32; pub const fpstate = extern struct { diff --git a/lib/std/start.zig b/lib/std/start.zig @@ -147,6 +147,11 @@ fn _start() callconv(.Naked) noreturn { : "r0" ); }, + .sparcv9 => { + starting_stack_ptr = asm ("" + : [argc] "={o6}" (-> [*]usize) + ); + }, else => @compileError("unsupported arch"), } // If LLVM inlines stack variables into _start, they will overwrite