| ... | @@ -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], %%g7 | 294 | \\ mov %[addr], %%g7 |