diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2024-08-18 02:29:54 +0200 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2024-08-19 08:38:05 +0200 |
| commit | f0d6a211e06cbd3765411e3acd70c0eb037bea62 (patch) | |
| tree | 5d982d71ce6e504d8bf738b57ee2a418908ed65d /lib/std/Thread.zig | |
| parent | 8e4feca8abbef78567ef789e6c8d8316ebe09119 (diff) | |
| download | zig-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.zig | 13 |
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 |
