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 {
6363};
6464
6565const current_variant: Variant = switch (native_arch) {
66 .aarch64,
67 .aarch64_be,
68 .alpha,
6669 .arc,
6770 .arceb,
6871 .arm,
6972 .armeb,
70 .aarch64,
71 .aarch64_be,
7273 .csky,
7374 .thumb,
7475 .thumbeb,
......@@ -138,6 +139,7 @@ const AbiTcb = switch (current_variant) {
138139 // usual, while the second one is unspecified.
139140 .aarch64,
140141 .aarch64_be,
142 .alpha,
141143 .arm,
142144 .armeb,
143145 .thumb,
......@@ -244,6 +246,14 @@ pub fn setThreadPointer(addr: usize) void {
244246 : [addr] "r" (addr),
245247 );
246248 },
249 .alpha => {
250 asm volatile (
251 \\ lda a0, %[addr]
252 \\ wruniq
253 :
254 : [addr] "r" (addr),
255 );
256 },
247257 .arc, .arceb => {
248258 // We apparently need to both set r25 (TP) *and* inform the kernel...
249259 asm volatile (