commit c29da84c0e0793683904a32deb8a7eff1ba98b54 (tree)
parent 23433fb3172597b10d57d9dda49fcd0d13950fb4
Author: Koakuma <koachan@protonmail.com>
Date: Sat, 22 Aug 2020 16:30:17 +0700
Add sp loading
Diffstat:
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