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

std.os.linux.tls: add hppa support

Turns out Linux on PA-RISC does system calls in a pretty fascinating way; see arch/parisc/kernel/syscall.S for details.

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

lib/std/os/linux/tls.zig+9
...@@ -71,6 +71,7 @@ const current_variant: Variant = switch (native_arch) {...@@ -71,6 +71,7 @@ const current_variant: Variant = switch (native_arch) {
71 .arm,71 .arm,
72 .armeb,72 .armeb,
73 .csky,73 .csky,
74 .hppa,
74 .microblaze,75 .microblaze,
75 .microblazeel,76 .microblazeel,
76 .sh,77 .sh,
...@@ -144,6 +145,7 @@ const AbiTcb = switch (current_variant) {...@@ -144,6 +145,7 @@ const AbiTcb = switch (current_variant) {
144 .alpha,145 .alpha,
145 .arm,146 .arm,
146 .armeb,147 .armeb,
148 .hppa,
147 .microblaze,149 .microblaze,
148 .microblazeel,150 .microblazeel,
149 .sh,151 .sh,
...@@ -285,6 +287,13 @@ pub fn setThreadPointer(addr: usize) void {...@@ -285,6 +287,13 @@ pub fn setThreadPointer(addr: usize) void {
285 : [addr] "r" (addr),287 : [addr] "r" (addr),
286 );288 );
287 },289 },
290 .hppa => {
291 asm volatile (
292 \\ ble 0xe0(%%sr2, %%r0)
293 :
294 : [addr] "={r26}" (addr),
295 : .{ .r29 = true });
296 },
288 .loongarch32, .loongarch64 => {297 .loongarch32, .loongarch64 => {
289 asm volatile (298 asm volatile (
290 \\ move $tp, %[addr]299 \\ move $tp, %[addr]