authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-21 04:07:19+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-23 09:27:17+02:00
log9fde44229c30d6dbdc943af2a2c2cb82adf703f6
tree64b3c50d3243785d76ed0477f45486844f69179c
parent2b54437f243ef62a2e490350943bb313d5827639
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.os.linux.tls: add alpha support


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

lib/std/os/linux/tls.zig+12-2
...@@ -63,12 +63,13 @@ const Variant = enum {...@@ -63,12 +63,13 @@ const Variant = enum {
63};63};
6464
65const current_variant: Variant = switch (native_arch) {65const current_variant: Variant = switch (native_arch) {
66 .aarch64,
67 .aarch64_be,
68 .alpha,
66 .arc,69 .arc,
67 .arceb,70 .arceb,
68 .arm,71 .arm,
69 .armeb,72 .armeb,
70 .aarch64,
71 .aarch64_be,
72 .csky,73 .csky,
73 .thumb,74 .thumb,
74 .thumbeb,75 .thumbeb,
...@@ -138,6 +139,7 @@ const AbiTcb = switch (current_variant) {...@@ -138,6 +139,7 @@ const AbiTcb = switch (current_variant) {
138 // usual, while the second one is unspecified.139 // usual, while the second one is unspecified.
139 .aarch64,140 .aarch64,
140 .aarch64_be,141 .aarch64_be,
142 .alpha,
141 .arm,143 .arm,
142 .armeb,144 .armeb,
143 .thumb,145 .thumb,
...@@ -244,6 +246,14 @@ pub fn setThreadPointer(addr: usize) void {...@@ -244,6 +246,14 @@ pub fn setThreadPointer(addr: usize) void {
244 : [addr] "r" (addr),246 : [addr] "r" (addr),
245 );247 );
246 },248 },
249 .alpha => {
250 asm volatile (
251 \\ lda a0, %[addr]
252 \\ wruniq
253 :
254 : [addr] "r" (addr),
255 );
256 },
247 .arc, .arceb => {257 .arc, .arceb => {
248 // We apparently need to both set r25 (TP) *and* inform the kernel...258 // We apparently need to both set r25 (TP) *and* inform the kernel...
249 asm volatile (259 asm volatile (