mirror of
https://github.com/ziglang/zig.git
synced 2026-02-12 20:37:54 +00:00
std.Thread: Add some syscall comments to LinuxThreadImpl.ThreadCompletion.freeAndExit().
This commit is contained in:
parent
b83d10214b
commit
a59ab5ffa5
@ -1082,11 +1082,11 @@ const LinuxThreadImpl = struct {
|
||||
fn freeAndExit(self: *ThreadCompletion) noreturn {
|
||||
switch (target.cpu.arch) {
|
||||
.x86 => asm volatile (
|
||||
\\ movl $91, %%eax
|
||||
\\ movl $91, %%eax # SYS_munmap
|
||||
\\ movl %[ptr], %%ebx
|
||||
\\ movl %[len], %%ecx
|
||||
\\ int $128
|
||||
\\ movl $1, %%eax
|
||||
\\ movl $1, %%eax # SYS_exit
|
||||
\\ movl $0, %%ebx
|
||||
\\ int $128
|
||||
:
|
||||
@ -1095,9 +1095,9 @@ const LinuxThreadImpl = struct {
|
||||
: "memory"
|
||||
),
|
||||
.x86_64 => asm volatile (
|
||||
\\ movq $11, %%rax
|
||||
\\ movq $11, %%rax # SYS_munmap
|
||||
\\ syscall
|
||||
\\ movq $60, %%rax
|
||||
\\ movq $60, %%rax # SYS_exit
|
||||
\\ movq $1, %%rdi
|
||||
\\ syscall
|
||||
:
|
||||
@ -1105,11 +1105,11 @@ const LinuxThreadImpl = struct {
|
||||
[len] "{rsi}" (self.mapped.len),
|
||||
),
|
||||
.arm, .armeb, .thumb, .thumbeb => asm volatile (
|
||||
\\ mov r7, #91
|
||||
\\ mov r7, #91 // SYS_munmap
|
||||
\\ mov r0, %[ptr]
|
||||
\\ mov r1, %[len]
|
||||
\\ svc 0
|
||||
\\ mov r7, #1
|
||||
\\ mov r7, #1 // SYS_exit
|
||||
\\ mov r0, #0
|
||||
\\ svc 0
|
||||
:
|
||||
@ -1118,11 +1118,11 @@ const LinuxThreadImpl = struct {
|
||||
: "memory"
|
||||
),
|
||||
.aarch64, .aarch64_be => asm volatile (
|
||||
\\ mov x8, #215
|
||||
\\ mov x8, #215 // SYS_munmap
|
||||
\\ mov x0, %[ptr]
|
||||
\\ mov x1, %[len]
|
||||
\\ svc 0
|
||||
\\ mov x8, #93
|
||||
\\ mov x8, #93 // SYS_exit
|
||||
\\ mov x0, #0
|
||||
\\ svc 0
|
||||
:
|
||||
@ -1132,11 +1132,11 @@ const LinuxThreadImpl = struct {
|
||||
),
|
||||
.mips, .mipsel => asm volatile (
|
||||
\\ move $sp, $25
|
||||
\\ li $2, 4091
|
||||
\\ li $2, 4091 # SYS_munmap
|
||||
\\ move $4, %[ptr]
|
||||
\\ move $5, %[len]
|
||||
\\ syscall
|
||||
\\ li $2, 4001
|
||||
\\ li $2, 4001 # SYS_exit
|
||||
\\ li $4, 0
|
||||
\\ syscall
|
||||
:
|
||||
@ -1145,11 +1145,11 @@ const LinuxThreadImpl = struct {
|
||||
: "memory"
|
||||
),
|
||||
.mips64, .mips64el => asm volatile (
|
||||
\\ li $2, 4091
|
||||
\\ li $2, 4091 # SYS_munmap
|
||||
\\ move $4, %[ptr]
|
||||
\\ move $5, %[len]
|
||||
\\ syscall
|
||||
\\ li $2, 4001
|
||||
\\ li $2, 4001 # SYS_exit
|
||||
\\ li $4, 0
|
||||
\\ syscall
|
||||
:
|
||||
@ -1158,11 +1158,11 @@ const LinuxThreadImpl = struct {
|
||||
: "memory"
|
||||
),
|
||||
.powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile (
|
||||
\\ li 0, 91
|
||||
\\ li 0, 91 # SYS_munmap
|
||||
\\ mr %[ptr], 3
|
||||
\\ mr %[len], 4
|
||||
\\ sc
|
||||
\\ li 0, 1
|
||||
\\ li 0, 1 # SYS_exit
|
||||
\\ li 3, 0
|
||||
\\ sc
|
||||
\\ blr
|
||||
@ -1172,11 +1172,11 @@ const LinuxThreadImpl = struct {
|
||||
: "memory"
|
||||
),
|
||||
.riscv32 => asm volatile (
|
||||
\\ li a7, 215
|
||||
\\ li a7, 215 # SYS_munmap
|
||||
\\ mv a0, %[ptr]
|
||||
\\ mv a1, %[len]
|
||||
\\ ecall
|
||||
\\ li a7, 93
|
||||
\\ li a7, 93 # SYS_exit
|
||||
\\ mv a0, zero
|
||||
\\ ecall
|
||||
:
|
||||
@ -1185,11 +1185,11 @@ const LinuxThreadImpl = struct {
|
||||
: "memory"
|
||||
),
|
||||
.riscv64 => asm volatile (
|
||||
\\ li a7, 215
|
||||
\\ li a7, 215 # SYS_munmap
|
||||
\\ mv a0, %[ptr]
|
||||
\\ mv a1, %[len]
|
||||
\\ ecall
|
||||
\\ li a7, 93
|
||||
\\ li a7, 93 # SYS_exit
|
||||
\\ mv a0, zero
|
||||
\\ ecall
|
||||
:
|
||||
@ -1209,14 +1209,14 @@ const LinuxThreadImpl = struct {
|
||||
\\ ba 1b
|
||||
\\ restore
|
||||
\\ 2:
|
||||
\\ mov 73, %%g1
|
||||
\\ mov 73, %%g1 # SYS_munmap
|
||||
\\ mov %[ptr], %%o0
|
||||
\\ mov %[len], %%o1
|
||||
\\ # Flush register window contents to prevent background
|
||||
\\ # memory access before unmapping the stack.
|
||||
\\ flushw
|
||||
\\ t 0x6d
|
||||
\\ mov 1, %%g1
|
||||
\\ mov 1, %%g1 # SYS_exit
|
||||
\\ mov 1, %%o0
|
||||
\\ t 0x6d
|
||||
:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user