| ... | @@ -63,12 +63,13 @@ const Variant = enum { | ... | @@ -63,12 +63,13 @@ const Variant = enum { |
| 63 | }; | 63 | }; |
| 64 | | 64 | |
| 65 | const current_variant: Variant = switch (native_arch) { | 65 | const 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 ( |