authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-07-20 05:34:25+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-07-29 09:50:40+02:00
loga59ab5ffa5aacbc2fb372c45c23868bcd92a6385
tree553e9961bbee45fe614bdcad98d25961ae62464a
parentb83d10214bf723c21a912e809fb39f4407dae927
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.Thread: Add some syscall comments to LinuxThreadImpl.ThreadCompletion.freeAndExit().


1 files changed, 20 insertions(+), 20 deletions(-)

lib/std/Thread.zig+20-20
......@@ -1082,11 +1082,11 @@ const LinuxThreadImpl = struct {
10821082 fn freeAndExit(self: *ThreadCompletion) noreturn {
10831083 switch (target.cpu.arch) {
10841084 .x86 => asm volatile (
1085 \\ movl $91, %%eax
1085 \\ movl $91, %%eax # SYS_munmap
10861086 \\ movl %[ptr], %%ebx
10871087 \\ movl %[len], %%ecx
10881088 \\ int $128
1089 \\ movl $1, %%eax
1089 \\ movl $1, %%eax # SYS_exit
10901090 \\ movl $0, %%ebx
10911091 \\ int $128
10921092 :
......@@ -1095,9 +1095,9 @@ const LinuxThreadImpl = struct {
10951095 : "memory"
10961096 ),
10971097 .x86_64 => asm volatile (
1098 \\ movq $11, %%rax
1098 \\ movq $11, %%rax # SYS_munmap
10991099 \\ syscall
1100 \\ movq $60, %%rax
1100 \\ movq $60, %%rax # SYS_exit
11011101 \\ movq $1, %%rdi
11021102 \\ syscall
11031103 :
......@@ -1105,11 +1105,11 @@ const LinuxThreadImpl = struct {
11051105 [len] "{rsi}" (self.mapped.len),
11061106 ),
11071107 .arm, .armeb, .thumb, .thumbeb => asm volatile (
1108 \\ mov r7, #91
1108 \\ mov r7, #91 // SYS_munmap
11091109 \\ mov r0, %[ptr]
11101110 \\ mov r1, %[len]
11111111 \\ svc 0
1112 \\ mov r7, #1
1112 \\ mov r7, #1 // SYS_exit
11131113 \\ mov r0, #0
11141114 \\ svc 0
11151115 :
......@@ -1118,11 +1118,11 @@ const LinuxThreadImpl = struct {
11181118 : "memory"
11191119 ),
11201120 .aarch64, .aarch64_be => asm volatile (
1121 \\ mov x8, #215
1121 \\ mov x8, #215 // SYS_munmap
11221122 \\ mov x0, %[ptr]
11231123 \\ mov x1, %[len]
11241124 \\ svc 0
1125 \\ mov x8, #93
1125 \\ mov x8, #93 // SYS_exit
11261126 \\ mov x0, #0
11271127 \\ svc 0
11281128 :
......@@ -1132,11 +1132,11 @@ const LinuxThreadImpl = struct {
11321132 ),
11331133 .mips, .mipsel => asm volatile (
11341134 \\ move $sp, $25
1135 \\ li $2, 4091
1135 \\ li $2, 4091 # SYS_munmap
11361136 \\ move $4, %[ptr]
11371137 \\ move $5, %[len]
11381138 \\ syscall
1139 \\ li $2, 4001
1139 \\ li $2, 4001 # SYS_exit
11401140 \\ li $4, 0
11411141 \\ syscall
11421142 :
......@@ -1145,11 +1145,11 @@ const LinuxThreadImpl = struct {
11451145 : "memory"
11461146 ),
11471147 .mips64, .mips64el => asm volatile (
1148 \\ li $2, 4091
1148 \\ li $2, 4091 # SYS_munmap
11491149 \\ move $4, %[ptr]
11501150 \\ move $5, %[len]
11511151 \\ syscall
1152 \\ li $2, 4001
1152 \\ li $2, 4001 # SYS_exit
11531153 \\ li $4, 0
11541154 \\ syscall
11551155 :
......@@ -1158,11 +1158,11 @@ const LinuxThreadImpl = struct {
11581158 : "memory"
11591159 ),
11601160 .powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile (
1161 \\ li 0, 91
1161 \\ li 0, 91 # SYS_munmap
11621162 \\ mr %[ptr], 3
11631163 \\ mr %[len], 4
11641164 \\ sc
1165 \\ li 0, 1
1165 \\ li 0, 1 # SYS_exit
11661166 \\ li 3, 0
11671167 \\ sc
11681168 \\ blr
......@@ -1172,11 +1172,11 @@ const LinuxThreadImpl = struct {
11721172 : "memory"
11731173 ),
11741174 .riscv32 => asm volatile (
1175 \\ li a7, 215
1175 \\ li a7, 215 # SYS_munmap
11761176 \\ mv a0, %[ptr]
11771177 \\ mv a1, %[len]
11781178 \\ ecall
1179 \\ li a7, 93
1179 \\ li a7, 93 # SYS_exit
11801180 \\ mv a0, zero
11811181 \\ ecall
11821182 :
......@@ -1185,11 +1185,11 @@ const LinuxThreadImpl = struct {
11851185 : "memory"
11861186 ),
11871187 .riscv64 => asm volatile (
1188 \\ li a7, 215
1188 \\ li a7, 215 # SYS_munmap
11891189 \\ mv a0, %[ptr]
11901190 \\ mv a1, %[len]
11911191 \\ ecall
1192 \\ li a7, 93
1192 \\ li a7, 93 # SYS_exit
11931193 \\ mv a0, zero
11941194 \\ ecall
11951195 :
......@@ -1209,14 +1209,14 @@ const LinuxThreadImpl = struct {
12091209 \\ ba 1b
12101210 \\ restore
12111211 \\ 2:
1212 \\ mov 73, %%g1
1212 \\ mov 73, %%g1 # SYS_munmap
12131213 \\ mov %[ptr], %%o0
12141214 \\ mov %[len], %%o1
12151215 \\ # Flush register window contents to prevent background
12161216 \\ # memory access before unmapping the stack.
12171217 \\ flushw
12181218 \\ t 0x6d
1219 \\ mov 1, %%g1
1219 \\ mov 1, %%g1 # SYS_exit
12201220 \\ mov 1, %%o0
12211221 \\ t 0x6d
12221222 :