aboutsummaryrefslogtreecommitdiff
path: root/lib/std/os/linux/arm64.zig
diff options
context:
space:
mode:
Diffstat (limited to 'lib/std/os/linux/arm64.zig')
-rw-r--r--lib/std/os/linux/arm64.zig20
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 {