From d2b21d582341a2958cf41dde046466a1607926fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sun, 28 Jul 2024 18:46:25 +0200 Subject: [PATCH] std.os.linux.tls: Add s390x support. --- lib/std/os/linux/tls.zig | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/std/os/linux/tls.zig b/lib/std/os/linux/tls.zig index 212de9ccb2..7319f4863e 100644 --- a/lib/std/os/linux/tls.zig +++ b/lib/std/os/linux/tls.zig @@ -84,6 +84,7 @@ const current_variant: Variant = switch (native_arch) { .riscv32, .riscv64, => .I_modified, + .s390x, .sparc64, .x86, .x86_64, @@ -277,6 +278,17 @@ pub fn setThreadPointer(addr: usize) void { : [addr] "r" (addr), ); }, + .s390x => { + asm volatile ( + \\ lgr %%r0, %[addr] + \\ sar %%a1, %%r0 + \\ srlg %%r0, %%r0, 32 + \\ sar %%a0, %%r0 + : + : [addr] "r" (addr), + : "r0" + ); + }, .sparc64 => { asm volatile ( \\ mov %[addr], %%g7