aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Thread.zig
diff options
context:
space:
mode:
authorYANG Xudong <yangxudong@ymatrix.cn>2024-08-09 08:30:57 +0800
committerGitHub <noreply@github.com>2024-08-09 00:30:57 +0000
commita9b65b6fd4021b6b303b6a4d35cfaba56aac0c32 (patch)
treef5b4db2ce9476a2a419d00c9e5a64ad75ba5ac27 /lib/std/Thread.zig
parenta854ce3021773a3f5cd1dce8ac6bc9eb5f4f937c (diff)
downloadzig-a9b65b6fd4021b6b303b6a4d35cfaba56aac0c32.tar.gz
zig-a9b65b6fd4021b6b303b6a4d35cfaba56aac0c32.zip
std: add loongarch64 support (#20915)
Co-authored-by: Alex Rønne Petersen <alex@alexrp.com>
Diffstat (limited to 'lib/std/Thread.zig')
-rw-r--r--lib/std/Thread.zig13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig
index 224a309730..dadf50e5ad 100644
--- a/lib/std/Thread.zig
+++ b/lib/std/Thread.zig
@@ -1224,6 +1224,19 @@ const LinuxThreadImpl = struct {
[len] "r" (self.mapped.len),
: "memory"
),
+ .loongarch64 => asm volatile (
+ \\ or $a0, $zero, %[ptr]
+ \\ or $a1, $zero, %[len]
+ \\ ori $a7, $zero, 215 # SYS_munmap
+ \\ syscall 0 # call munmap
+ \\ ori $a0, $zero, 0
+ \\ ori $a7, $zero, 93 # SYS_exit
+ \\ syscall 0 # call exit
+ :
+ : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
+ [len] "r" (self.mapped.len),
+ : "memory"
+ ),
else => |cpu_arch| @compileError("Unsupported linux arch: " ++ @tagName(cpu_arch)),
}
unreachable;