authorgravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2020-10-24 19:54:58+07:00
committergravatar for koachan@protonmail.comKoakuma <koachan@protonmail.com> 2020-10-24 20:05:36+07:00
log792526c0bd45754bced18298573ad2a145a7141e
treed2d923c3d6b837c68b86703d5a816a0222bcfaed
parentcdbf66e36ec110993347e5158005ec1cc0adaf13

Fix sparc64 argument loading


1 files changed, 8 insertions(+), 2 deletions(-)

lib/std/start.zig+8-2
...@@ -148,8 +148,14 @@ fn _start() callconv(.Naked) noreturn {...@@ -148,8 +148,14 @@ fn _start() callconv(.Naked) noreturn {
148 );148 );
149 },149 },
150 .sparcv9 => {150 .sparcv9 => {
151 starting_stack_ptr = asm (""151 // On sparc64, the stack pointer register points to a place
152 : [argc] "={o6}" (-> [*]usize)152 // 2047 bytes below the actual stack. Also, argc and friends are
153 // placed starting at [stack-start + 128], so we need to account for that too.
154 // Ref: System V Application Binary Interface: SPARC Version 9 Processor Supplement
155 // Version 1.35, figure 3-16.
156 // TODO: find a better way to do this.
157 starting_stack_ptr = asm ("add %%o6, 2175, %[argc]"
158 : [argc] "=r" (-> [*]usize)
153 );159 );
154 },160 },
155 else => @compileError("unsupported arch"),161 else => @compileError("unsupported arch"),