| ... | @@ -240,6 +240,14 @@ fn _start() callconv(.Naked) noreturn { | ... | @@ -240,6 +240,14 @@ fn _start() callconv(.Naked) noreturn { |
| 240 | : [tos] "={rax}" (-> *std.os.plan9.Tos), | 240 | : [tos] "={rax}" (-> *std.os.plan9.Tos), |
| 241 | ); | 241 | ); |
| 242 | } | 242 | } |
| | 243 | switch (native_arch) { |
| | 244 | // https://github.com/ziglang/zig/issues/16799 |
| | 245 | .riscv64 => @export(argc_argv_ptr, .{ |
| | 246 | .name = "__zig_argc_argv_ptr", |
| | 247 | .visibility = .hidden, |
| | 248 | }), |
| | 249 | else => {}, |
| | 250 | } |
| 243 | asm volatile (switch (native_arch) { | 251 | asm volatile (switch (native_arch) { |
| 244 | .x86_64 => | 252 | .x86_64 => |
| 245 | \\ xorl %%ebp, %%ebp | 253 | \\ xorl %%ebp, %%ebp |
| ... | @@ -270,7 +278,8 @@ fn _start() callconv(.Naked) noreturn { | ... | @@ -270,7 +278,8 @@ fn _start() callconv(.Naked) noreturn { |
| 270 | .riscv64 => | 278 | .riscv64 => |
| 271 | \\ li s0, 0 | 279 | \\ li s0, 0 |
| 272 | \\ li ra, 0 | 280 | \\ li ra, 0 |
| 273 | \\ sd sp, %[argc_argv_ptr] | 281 | \\ lui a0, %hi(__zig_argc_argv_ptr) |
| | 282 | \\ sd sp, %lo(__zig_argc_argv_ptr)(a0) |
| 274 | \\ andi sp, sp, -16 | 283 | \\ andi sp, sp, -16 |
| 275 | \\ tail %[posixCallMainAndExit]@plt | 284 | \\ tail %[posixCallMainAndExit]@plt |
| 276 | , | 285 | , |