Commit d2b21d5823

Alex Rønne Petersen <alex@alexrp.com>
2024-07-28 18:46:25
std.os.linux.tls: Add s390x support.
1 parent 9db992b
Changed files (1)
lib
std
os
linux
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