| ... | @@ -1191,12 +1191,22 @@ const LinuxThreadImpl = struct { | ... | @@ -1191,12 +1191,22 @@ const LinuxThreadImpl = struct { |
| 1191 | : [ptr] "r" (@intFromPtr(self.mapped.ptr)), | 1191 | : [ptr] "r" (@intFromPtr(self.mapped.ptr)), |
| 1192 | [len] "r" (self.mapped.len), | 1192 | [len] "r" (self.mapped.len), |
| 1193 | : .{ .memory = true }), | 1193 | : .{ .memory = true }), |
| 1194 | .x86_64 => asm volatile ( | 1194 | .x86_64 => asm volatile (switch (target.abi) { |
| 1195 | \\ movq $11, %%rax # SYS_munmap | 1195 | .gnux32, .muslx32 => |
| 1196 | \\ syscall | 1196 | \\ movl $0x4000000b, %%eax # SYS_munmap |
| 1197 | \\ movq $60, %%rax # SYS_exit | 1197 | \\ syscall |
| 1198 | \\ movq $1, %%rdi | 1198 | \\ movl $0x4000003c, %%eax # SYS_exit |
| 1199 | \\ syscall | 1199 | \\ xor %%rdi, %%rdi |
| | 1200 | \\ syscall |
| | 1201 | , |
| | 1202 | else => |
| | 1203 | \\ movl $11, %%eax # SYS_munmap |
| | 1204 | \\ syscall |
| | 1205 | \\ movl $60, %%eax # SYS_exit |
| | 1206 | \\ xor %%rdi, %%rdi |
| | 1207 | \\ syscall |
| | 1208 | , |
| | 1209 | } |
| 1200 | : | 1210 | : |
| 1201 | : [ptr] "{rdi}" (@intFromPtr(self.mapped.ptr)), | 1211 | : [ptr] "{rdi}" (@intFromPtr(self.mapped.ptr)), |
| 1202 | [len] "{rsi}" (self.mapped.len), | 1212 | [len] "{rsi}" (self.mapped.len), |