diff options
Diffstat (limited to 'lib/std/os/linux/arm64.zig')
| -rw-r--r-- | lib/std/os/linux/arm64.zig | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/std/os/linux/arm64.zig b/lib/std/os/linux/arm64.zig index 0824a9e9a4..b9b37dbafa 100644 --- a/lib/std/os/linux/arm64.zig +++ b/lib/std/os/linux/arm64.zig @@ -106,20 +106,24 @@ pub extern fn clone(func: CloneFn, stack: usize, flags: u32, arg: usize, ptid: * pub const restore = restore_rt; pub fn restore_rt() callconv(.Naked) void { - switch (@import("builtin").zig_backend) { - .stage2_c => return asm volatile ( + if (@import("builtin").zig_backend == .stage2_c) { + asm volatile ( \\ mov x8, %[number] \\ svc #0 + \\ ret : : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), : "memory", "cc" - ), - else => return asm volatile ("svc #0" - : - : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory", "cc" - ), + ); + unreachable; } + + asm volatile ( + \\ svc #0 + : + : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)), + : "memory", "cc" + ); } pub const O = struct { |
