authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-18 15:02:12+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-18 22:27:35+02:00
log5e57ed9fdaaad4571f224baa58e3ac8edb1d747b
tree1de29e7cf7c85df409ebb8974c3da5eb2f89b6eb
parent562b88f7b1044723477184c705393b01e7b33a11
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.Thread: implement freeAndExit() for or1k


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

lib/std/Thread.zig+12
...@@ -1288,6 +1288,18 @@ const LinuxThreadImpl = struct {...@@ -1288,6 +1288,18 @@ const LinuxThreadImpl = struct {
1288 : [ptr] "r" (@intFromPtr(self.mapped.ptr)),1288 : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
1289 [len] "r" (self.mapped.len),1289 [len] "r" (self.mapped.len),
1290 : .{ .memory = true }),1290 : .{ .memory = true }),
1291 .or1k => asm volatile (
1292 \\ l.ori r11, r0, 215 # SYS_munmap
1293 \\ l.ori r3, %[ptr]
1294 \\ l.ori r4, %[len]
1295 \\ l.sys 1
1296 \\ l.ori r11, r0, 93 # SYS_exit
1297 \\ l.ori r3, r0, r0
1298 \\ l.sys 1
1299 :
1300 : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
1301 [len] "r" (self.mapped.len),
1302 : .{ .memory = true }),
1291 .powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile (1303 .powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile (
1292 \\ li 0, 91 # SYS_munmap1304 \\ li 0, 91 # SYS_munmap
1293 \\ mr 3, %[ptr]1305 \\ mr 3, %[ptr]