authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-08-18 02:29:54+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-08-19 08:38:05+02:00
logf0d6a211e06cbd3765411e3acd70c0eb037bea62
tree5d982d71ce6e504d8bf738b57ee2a418908ed65d
parent8e4feca8abbef78567ef789e6c8d8316ebe09119

std.Thread: Implement freeAndExit() for hexagon.


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

lib/std/Thread.zig+13
......@@ -1130,6 +1130,19 @@ const LinuxThreadImpl = struct {
11301130 [len] "r" (self.mapped.len),
11311131 : "memory"
11321132 ),
1133 .hexagon => asm volatile (
1134 \\ r6 = #215 // SYS_munmap
1135 \\ r0 = %[ptr]
1136 \\ r1 = %[len]
1137 \\ trap0(#1)
1138 \\ r6 = #93 // SYS_exit
1139 \\ r0 = #0
1140 \\ trap0(#1)
1141 :
1142 : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
1143 [len] "r" (self.mapped.len),
1144 : "memory"
1145 ),
11331146 // We set `sp` to the address of the current function as a workaround for a Linux
11341147 // kernel bug that caused syscalls to return EFAULT if the stack pointer is invalid.
11351148 // The bug was introduced in 46e12c07b3b9603c60fc1d421ff18618241cb081 and fixed in