aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Thread.zig
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2024-08-18 02:29:54 +0200
committerAlex Rønne Petersen <alex@alexrp.com>2024-08-19 08:38:05 +0200
commitf0d6a211e06cbd3765411e3acd70c0eb037bea62 (patch)
tree5d982d71ce6e504d8bf738b57ee2a418908ed65d /lib/std/Thread.zig
parent8e4feca8abbef78567ef789e6c8d8316ebe09119 (diff)
downloadzig-f0d6a211e06cbd3765411e3acd70c0eb037bea62.tar.gz
zig-f0d6a211e06cbd3765411e3acd70c0eb037bea62.zip
std.Thread: Implement freeAndExit() for hexagon.
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 e07c02baa3..87a4eec921 100644
--- a/lib/std/Thread.zig
+++ b/lib/std/Thread.zig
@@ -1130,6 +1130,19 @@ const LinuxThreadImpl = struct {
[len] "r" (self.mapped.len),
: "memory"
),
+ .hexagon => asm volatile (
+ \\ r6 = #215 // SYS_munmap
+ \\ r0 = %[ptr]
+ \\ r1 = %[len]
+ \\ trap0(#1)
+ \\ r6 = #93 // SYS_exit
+ \\ r0 = #0
+ \\ trap0(#1)
+ :
+ : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
+ [len] "r" (self.mapped.len),
+ : "memory"
+ ),
// We set `sp` to the address of the current function as a workaround for a Linux
// kernel bug that caused syscalls to return EFAULT if the stack pointer is invalid.
// The bug was introduced in 46e12c07b3b9603c60fc1d421ff18618241cb081 and fixed in