authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-07-28 18:46:25+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-07-30 02:33:16+02:00
logd2b21d582341a2958cf41dde046466a1607926fb
treeb47f448fafa0cbfa14787384bc0f6b17f2c4b667
parent9db992bd9bf67efef3a81c76fc3896ac1c94d7e4
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.os.linux.tls: Add s390x support.


1 files changed, 12 insertions(+), 0 deletions(-)

lib/std/os/linux/tls.zig+12
...@@ -84,6 +84,7 @@ const current_variant: Variant = switch (native_arch) {...@@ -84,6 +84,7 @@ const current_variant: Variant = switch (native_arch) {
84 .riscv32,84 .riscv32,
85 .riscv64,85 .riscv64,
86 => .I_modified,86 => .I_modified,
87 .s390x,
87 .sparc64,88 .sparc64,
88 .x86,89 .x86,
89 .x86_64,90 .x86_64,
...@@ -277,6 +278,17 @@ pub fn setThreadPointer(addr: usize) void {...@@ -277,6 +278,17 @@ pub fn setThreadPointer(addr: usize) void {
277 : [addr] "r" (addr),278 : [addr] "r" (addr),
278 );279 );
279 },280 },
281 .s390x => {
282 asm volatile (
283 \\ lgr %%r0, %[addr]
284 \\ sar %%a1, %%r0
285 \\ srlg %%r0, %%r0, 32
286 \\ sar %%a0, %%r0
287 :
288 : [addr] "r" (addr),
289 : "r0"
290 );
291 },
280 .sparc64 => {292 .sparc64 => {
281 asm volatile (293 asm volatile (
282 \\ mov %[addr], %%g7294 \\ mov %[addr], %%g7