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 {...@@ -1082,11 +1082,11 @@ const LinuxThreadImpl = struct {
1082 fn freeAndExit(self: *ThreadCompletion) noreturn {1082 fn freeAndExit(self: *ThreadCompletion) noreturn {
1083 switch (target.cpu.arch) {1083 switch (target.cpu.arch) {
1084 .x86 => asm volatile (1084 .x86 => asm volatile (
1085 \\ movl $91, %%eax1085 \\ movl $91, %%eax # SYS_munmap
1086 \\ movl %[ptr], %%ebx1086 \\ movl %[ptr], %%ebx
1087 \\ movl %[len], %%ecx1087 \\ movl %[len], %%ecx
1088 \\ int $1281088 \\ int $128
1089 \\ movl $1, %%eax1089 \\ movl $1, %%eax # SYS_exit
1090 \\ movl $0, %%ebx1090 \\ movl $0, %%ebx
1091 \\ int $1281091 \\ int $128
1092 :1092 :
...@@ -1095,9 +1095,9 @@ const LinuxThreadImpl = struct {...@@ -1095,9 +1095,9 @@ const LinuxThreadImpl = struct {
1095 : "memory"1095 : "memory"
1096 ),1096 ),
1097 .x86_64 => asm volatile (1097 .x86_64 => asm volatile (
1098 \\ movq $11, %%rax1098 \\ movq $11, %%rax # SYS_munmap
1099 \\ syscall1099 \\ syscall
1100 \\ movq $60, %%rax1100 \\ movq $60, %%rax # SYS_exit
1101 \\ movq $1, %%rdi1101 \\ movq $1, %%rdi
1102 \\ syscall1102 \\ syscall
1103 :1103 :
...@@ -1105,11 +1105,11 @@ const LinuxThreadImpl = struct {...@@ -1105,11 +1105,11 @@ const LinuxThreadImpl = struct {
1105 [len] "{rsi}" (self.mapped.len),1105 [len] "{rsi}" (self.mapped.len),
1106 ),1106 ),
1107 .arm, .armeb, .thumb, .thumbeb => asm volatile (1107 .arm, .armeb, .thumb, .thumbeb => asm volatile (
1108 \\ mov r7, #911108 \\ mov r7, #91 // SYS_munmap
1109 \\ mov r0, %[ptr]1109 \\ mov r0, %[ptr]
1110 \\ mov r1, %[len]1110 \\ mov r1, %[len]
1111 \\ svc 01111 \\ svc 0
1112 \\ mov r7, #11112 \\ mov r7, #1 // SYS_exit
1113 \\ mov r0, #01113 \\ mov r0, #0
1114 \\ svc 01114 \\ svc 0
1115 :1115 :
...@@ -1118,11 +1118,11 @@ const LinuxThreadImpl = struct {...@@ -1118,11 +1118,11 @@ const LinuxThreadImpl = struct {
1118 : "memory"1118 : "memory"
1119 ),1119 ),
1120 .aarch64, .aarch64_be => asm volatile (1120 .aarch64, .aarch64_be => asm volatile (
1121 \\ mov x8, #2151121 \\ mov x8, #215 // SYS_munmap
1122 \\ mov x0, %[ptr]1122 \\ mov x0, %[ptr]
1123 \\ mov x1, %[len]1123 \\ mov x1, %[len]
1124 \\ svc 01124 \\ svc 0
1125 \\ mov x8, #931125 \\ mov x8, #93 // SYS_exit
1126 \\ mov x0, #01126 \\ mov x0, #0
1127 \\ svc 01127 \\ svc 0
1128 :1128 :
...@@ -1132,11 +1132,11 @@ const LinuxThreadImpl = struct {...@@ -1132,11 +1132,11 @@ const LinuxThreadImpl = struct {
1132 ),1132 ),
1133 .mips, .mipsel => asm volatile (1133 .mips, .mipsel => asm volatile (
1134 \\ move $sp, $251134 \\ move $sp, $25
1135 \\ li $2, 40911135 \\ li $2, 4091 # SYS_munmap
1136 \\ move $4, %[ptr]1136 \\ move $4, %[ptr]
1137 \\ move $5, %[len]1137 \\ move $5, %[len]
1138 \\ syscall1138 \\ syscall
1139 \\ li $2, 40011139 \\ li $2, 4001 # SYS_exit
1140 \\ li $4, 01140 \\ li $4, 0
1141 \\ syscall1141 \\ syscall
1142 :1142 :
...@@ -1145,11 +1145,11 @@ const LinuxThreadImpl = struct {...@@ -1145,11 +1145,11 @@ const LinuxThreadImpl = struct {
1145 : "memory"1145 : "memory"
1146 ),1146 ),
1147 .mips64, .mips64el => asm volatile (1147 .mips64, .mips64el => asm volatile (
1148 \\ li $2, 40911148 \\ li $2, 4091 # SYS_munmap
1149 \\ move $4, %[ptr]1149 \\ move $4, %[ptr]
1150 \\ move $5, %[len]1150 \\ move $5, %[len]
1151 \\ syscall1151 \\ syscall
1152 \\ li $2, 40011152 \\ li $2, 4001 # SYS_exit
1153 \\ li $4, 01153 \\ li $4, 0
1154 \\ syscall1154 \\ syscall
1155 :1155 :
...@@ -1158,11 +1158,11 @@ const LinuxThreadImpl = struct {...@@ -1158,11 +1158,11 @@ const LinuxThreadImpl = struct {
1158 : "memory"1158 : "memory"
1159 ),1159 ),
1160 .powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile (1160 .powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile (
1161 \\ li 0, 911161 \\ li 0, 91 # SYS_munmap
1162 \\ mr %[ptr], 31162 \\ mr %[ptr], 3
1163 \\ mr %[len], 41163 \\ mr %[len], 4
1164 \\ sc1164 \\ sc
1165 \\ li 0, 11165 \\ li 0, 1 # SYS_exit
1166 \\ li 3, 01166 \\ li 3, 0
1167 \\ sc1167 \\ sc
1168 \\ blr1168 \\ blr
...@@ -1172,11 +1172,11 @@ const LinuxThreadImpl = struct {...@@ -1172,11 +1172,11 @@ const LinuxThreadImpl = struct {
1172 : "memory"1172 : "memory"
1173 ),1173 ),
1174 .riscv32 => asm volatile (1174 .riscv32 => asm volatile (
1175 \\ li a7, 2151175 \\ li a7, 215 # SYS_munmap
1176 \\ mv a0, %[ptr]1176 \\ mv a0, %[ptr]
1177 \\ mv a1, %[len]1177 \\ mv a1, %[len]
1178 \\ ecall1178 \\ ecall
1179 \\ li a7, 931179 \\ li a7, 93 # SYS_exit
1180 \\ mv a0, zero1180 \\ mv a0, zero
1181 \\ ecall1181 \\ ecall
1182 :1182 :
...@@ -1185,11 +1185,11 @@ const LinuxThreadImpl = struct {...@@ -1185,11 +1185,11 @@ const LinuxThreadImpl = struct {
1185 : "memory"1185 : "memory"
1186 ),1186 ),
1187 .riscv64 => asm volatile (1187 .riscv64 => asm volatile (
1188 \\ li a7, 2151188 \\ li a7, 215 # SYS_munmap
1189 \\ mv a0, %[ptr]1189 \\ mv a0, %[ptr]
1190 \\ mv a1, %[len]1190 \\ mv a1, %[len]
1191 \\ ecall1191 \\ ecall
1192 \\ li a7, 931192 \\ li a7, 93 # SYS_exit
1193 \\ mv a0, zero1193 \\ mv a0, zero
1194 \\ ecall1194 \\ ecall
1195 :1195 :
...@@ -1209,14 +1209,14 @@ const LinuxThreadImpl = struct {...@@ -1209,14 +1209,14 @@ const LinuxThreadImpl = struct {
1209 \\ ba 1b1209 \\ ba 1b
1210 \\ restore1210 \\ restore
1211 \\ 2:1211 \\ 2:
1212 \\ mov 73, %%g11212 \\ mov 73, %%g1 # SYS_munmap
1213 \\ mov %[ptr], %%o01213 \\ mov %[ptr], %%o0
1214 \\ mov %[len], %%o11214 \\ mov %[len], %%o1
1215 \\ # Flush register window contents to prevent background1215 \\ # Flush register window contents to prevent background
1216 \\ # memory access before unmapping the stack.1216 \\ # memory access before unmapping the stack.
1217 \\ flushw1217 \\ flushw
1218 \\ t 0x6d1218 \\ t 0x6d
1219 \\ mov 1, %%g11219 \\ mov 1, %%g1 # SYS_exit
1220 \\ mov 1, %%o01220 \\ mov 1, %%o0
1221 \\ t 0x6d1221 \\ t 0x6d
1222 :1222 :