| ... | @@ -1316,30 +1316,29 @@ const LinuxThreadImpl = struct { | ... | @@ -1316,30 +1316,29 @@ const LinuxThreadImpl = struct { |
| 1316 | [len] "{r4}" (self.mapped.len), | 1316 | [len] "{r4}" (self.mapped.len), |
| 1317 | ), | 1317 | ), |
| 1318 | .powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile ( | 1318 | .powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile ( |
| 1319 | \\ li 0, 91 # SYS_munmap | 1319 | \\ li 0, 91 # SYS_munmap |
| 1320 | \\ sc | 1320 | \\ sc |
| 1321 | \\ li 0, 1 # SYS_exit | 1321 | \\ li 0, 1 # SYS_exit |
| 1322 | \\ li 3, 0 | 1322 | \\ li 3, 0 |
| 1323 | \\ sc | 1323 | \\ sc |
| 1324 | \\ blr | | |
| 1325 | : | 1324 | : |
| 1326 | : [ptr] "{r3}" (@intFromPtr(self.mapped.ptr)), | 1325 | : [ptr] "{r3}" (@intFromPtr(self.mapped.ptr)), |
| 1327 | [len] "{r4}" (self.mapped.len), | 1326 | [len] "{r4}" (self.mapped.len), |
| 1328 | ), | 1327 | ), |
| 1329 | .riscv32, .riscv64 => asm volatile ( | 1328 | .riscv32, .riscv64 => asm volatile ( |
| 1330 | \\ li a7, 215 # SYS_munmap | 1329 | \\ li a7, 215 # SYS_munmap |
| 1331 | \\ ecall | 1330 | \\ ecall |
| 1332 | \\ li a7, 93 # SYS_exit | 1331 | \\ li a7, 93 # SYS_exit |
| 1333 | \\ mv a0, zero | 1332 | \\ mv a0, zero |
| 1334 | \\ ecall | 1333 | \\ ecall |
| 1335 | : | 1334 | : |
| 1336 | : [ptr] "{a0}" (@intFromPtr(self.mapped.ptr)), | 1335 | : [ptr] "{a0}" (@intFromPtr(self.mapped.ptr)), |
| 1337 | [len] "{a1}" (self.mapped.len), | 1336 | [len] "{a1}" (self.mapped.len), |
| 1338 | ), | 1337 | ), |
| 1339 | .s390x => asm volatile ( | 1338 | .s390x => asm volatile ( |
| 1340 | \\ svc 91 # SYS_munmap | 1339 | \\ svc 91 # SYS_munmap |
| 1341 | \\ lghi %%r2, 0 | 1340 | \\ lghi %%r2, 0 |
| 1342 | \\ svc 1 # SYS_exit | 1341 | \\ svc 1 # SYS_exit |
| 1343 | : | 1342 | : |
| 1344 | : [ptr] "{r2}" (@intFromPtr(self.mapped.ptr)), | 1343 | : [ptr] "{r2}" (@intFromPtr(self.mapped.ptr)), |
| 1345 | [len] "{r3}" (self.mapped.len), | 1344 | [len] "{r3}" (self.mapped.len), |
| ... | @@ -1379,7 +1378,7 @@ const LinuxThreadImpl = struct { | ... | @@ -1379,7 +1378,7 @@ const LinuxThreadImpl = struct { |
| 1379 | : [ptr] "{g1}" (@intFromPtr(self.mapped.ptr)), | 1378 | : [ptr] "{g1}" (@intFromPtr(self.mapped.ptr)), |
| 1380 | [len] "{g2}" (self.mapped.len), | 1379 | [len] "{g2}" (self.mapped.len), |
| 1381 | [stack] "{g3}" (&sparc_exit_stack), | 1380 | [stack] "{g3}" (&sparc_exit_stack), |
| 1382 | : .{ .memory = true }), | 1381 | ), |
| 1383 | .sparc64 => asm volatile ( | 1382 | .sparc64 => asm volatile ( |
| 1384 | \\ // Ensure that the kernel only has to flush the current register window. | 1383 | \\ // Ensure that the kernel only has to flush the current register window. |
| 1385 | \\ flushw | 1384 | \\ flushw |
| ... | @@ -1398,7 +1397,7 @@ const LinuxThreadImpl = struct { | ... | @@ -1398,7 +1397,7 @@ const LinuxThreadImpl = struct { |
| 1398 | : [ptr] "{g1}" (@intFromPtr(self.mapped.ptr)), | 1397 | : [ptr] "{g1}" (@intFromPtr(self.mapped.ptr)), |
| 1399 | [len] "{g2}" (self.mapped.len), | 1398 | [len] "{g2}" (self.mapped.len), |
| 1400 | [stack] "{g3}" (&sparc_exit_stack), | 1399 | [stack] "{g3}" (&sparc_exit_stack), |
| 1401 | : .{ .memory = true }), | 1400 | ), |
| 1402 | .loongarch32, .loongarch64 => asm volatile ( | 1401 | .loongarch32, .loongarch64 => asm volatile ( |
| 1403 | \\ ori $a7, $zero, 215 # SYS_munmap | 1402 | \\ ori $a7, $zero, 215 # SYS_munmap |
| 1404 | \\ syscall 0 # call munmap | 1403 | \\ syscall 0 # call munmap |
| ... | @@ -1408,7 +1407,7 @@ const LinuxThreadImpl = struct { | ... | @@ -1408,7 +1407,7 @@ const LinuxThreadImpl = struct { |
| 1408 | : | 1407 | : |
| 1409 | : [ptr] "{r4}" (@intFromPtr(self.mapped.ptr)), | 1408 | : [ptr] "{r4}" (@intFromPtr(self.mapped.ptr)), |
| 1410 | [len] "{r5}" (self.mapped.len), | 1409 | [len] "{r5}" (self.mapped.len), |
| 1411 | : .{ .memory = true }), | 1410 | ), |
| 1412 | .csky => asm volatile ( | 1411 | .csky => asm volatile ( |
| 1413 | \\ movi r7, 215 # SYS_munmap | 1412 | \\ movi r7, 215 # SYS_munmap |
| 1414 | \\ trap 0 | 1413 | \\ trap 0 |
| ... | @@ -1418,7 +1417,7 @@ const LinuxThreadImpl = struct { | ... | @@ -1418,7 +1417,7 @@ const LinuxThreadImpl = struct { |
| 1418 | : | 1417 | : |
| 1419 | : [ptr] "{r0}" (@intFromPtr(self.mapped.ptr)), | 1418 | : [ptr] "{r0}" (@intFromPtr(self.mapped.ptr)), |
| 1420 | [len] "{r1}" (self.mapped.len), | 1419 | [len] "{r1}" (self.mapped.len), |
| 1421 | : .{ .memory = true }), | 1420 | ), |
| 1422 | .xtensa, .xtensaeb => asm volatile ( | 1421 | .xtensa, .xtensaeb => asm volatile ( |
| 1423 | \\ movi a2, 81 // SYS_munmap | 1422 | \\ movi a2, 81 // SYS_munmap |
| 1424 | \\ syscall | 1423 | \\ syscall |
| ... | @@ -1428,7 +1427,7 @@ const LinuxThreadImpl = struct { | ... | @@ -1428,7 +1427,7 @@ const LinuxThreadImpl = struct { |
| 1428 | : | 1427 | : |
| 1429 | : [ptr] "{a6}" (@intFromPtr(self.mapped.ptr)), | 1428 | : [ptr] "{a6}" (@intFromPtr(self.mapped.ptr)), |
| 1430 | [len] "{a3}" (self.mapped.len), | 1429 | [len] "{a3}" (self.mapped.len), |
| 1431 | : .{ .memory = true }), | 1430 | ), |
| 1432 | else => |cpu_arch| @compileError("Unsupported linux arch: " ++ @tagName(cpu_arch)), | 1431 | else => |cpu_arch| @compileError("Unsupported linux arch: " ++ @tagName(cpu_arch)), |
| 1433 | } | 1432 | } |
| 1434 | unreachable; | 1433 | unreachable; |