commit d2b21d582341a2958cf41dde046466a1607926fb (tree)
parent 9db992bd9bf67efef3a81c76fc3896ac1c94d7e4
Author: Alex Rønne Petersen <alex@alexrp.com>
Date: Sun, 28 Jul 2024 18:46:25 +0200
std.os.linux.tls: Add s390x support.
Diffstat:
1 file changed, 12 insertions(+), 0 deletions(-)
diff --git 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