OLD | NEW |
1 // Copyright 2009 The Go Authors. All rights reserved. | 1 // Copyright 2009 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 // | 4 // |
5 // System calls and other sys.stuff for AMD64, FreeBSD | 5 // System calls and other sys.stuff for AMD64, FreeBSD |
6 // /usr/src/sys/kern/syscalls.master for syscall numbers. | 6 // /usr/src/sys/kern/syscalls.master for syscall numbers. |
7 // | 7 // |
8 | 8 |
9 #include "zasm_GOOS_GOARCH.h" | 9 #include "zasm_GOOS_GOARCH.h" |
10 ········ | 10 ········ |
(...skipping 29 matching lines...) Expand all Loading... |
40 | 40 |
41 CALL runtime·stackcheck(SB) | 41 CALL runtime·stackcheck(SB) |
42 CALL runtime·mstart(SB) | 42 CALL runtime·mstart(SB) |
43 MOVQ 0, AX // crash (not reached) | 43 MOVQ 0, AX // crash (not reached) |
44 | 44 |
45 // Exit the entire program (like C exit) | 45 // Exit the entire program (like C exit) |
46 TEXT runtime·exit(SB),7,$-8 | 46 TEXT runtime·exit(SB),7,$-8 |
47 MOVL 8(SP), DI // arg 1 exit status | 47 MOVL 8(SP), DI // arg 1 exit status |
48 MOVL $1, AX | 48 MOVL $1, AX |
49 SYSCALL | 49 SYSCALL |
50 » CALL» runtime·notok(SB) | 50 » MOVL» $0xf1, 0xf1 // crash |
51 RET | 51 RET |
52 | 52 |
53 TEXT runtime·exit1(SB),7,$-8 | 53 TEXT runtime·exit1(SB),7,$-8 |
54 MOVQ 8(SP), DI // arg 1 exit status | 54 MOVQ 8(SP), DI // arg 1 exit status |
55 MOVL $431, AX | 55 MOVL $431, AX |
56 SYSCALL | 56 SYSCALL |
57 » CALL» runtime·notok(SB) | 57 » MOVL» $0xf1, 0xf1 // crash |
58 RET | 58 RET |
59 | 59 |
60 TEXT runtime·write(SB),7,$-8 | 60 TEXT runtime·write(SB),7,$-8 |
61 MOVL 8(SP), DI // arg 1 fd | 61 MOVL 8(SP), DI // arg 1 fd |
62 MOVQ 16(SP), SI // arg 2 buf | 62 MOVQ 16(SP), SI // arg 2 buf |
63 MOVL 24(SP), DX // arg 3 count | 63 MOVL 24(SP), DX // arg 3 count |
64 MOVL $4, AX | 64 MOVL $4, AX |
65 SYSCALL | 65 SYSCALL |
66 RET | 66 RET |
67 | 67 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 ADDQ DX, AX | 122 ADDQ DX, AX |
123 RET | 123 RET |
124 | 124 |
125 TEXT runtime·sigaction(SB),7,$-8 | 125 TEXT runtime·sigaction(SB),7,$-8 |
126 MOVL 8(SP), DI // arg 1 sig | 126 MOVL 8(SP), DI // arg 1 sig |
127 MOVQ 16(SP), SI // arg 2 act | 127 MOVQ 16(SP), SI // arg 2 act |
128 MOVQ 24(SP), DX // arg 3 oact | 128 MOVQ 24(SP), DX // arg 3 oact |
129 MOVL $416, AX | 129 MOVL $416, AX |
130 SYSCALL | 130 SYSCALL |
131 JCC 2(PC) | 131 JCC 2(PC) |
132 » CALL» runtime·notok(SB) | 132 » MOVL» $0xf1, 0xf1 // crash |
133 RET | 133 RET |
134 | 134 |
135 TEXT runtime·sigtramp(SB),7,$64 | 135 TEXT runtime·sigtramp(SB),7,$64 |
136 get_tls(BX) | 136 get_tls(BX) |
137 ········ | 137 ········ |
138 // save g | 138 // save g |
139 MOVQ g(BX), R10 | 139 MOVQ g(BX), R10 |
140 MOVQ R10, 40(SP) | 140 MOVQ R10, 40(SP) |
141 ········ | 141 ········ |
142 // g = m->signal | 142 // g = m->signal |
(...skipping 24 matching lines...) Expand all Loading... |
167 MOVL $477, AX | 167 MOVL $477, AX |
168 SYSCALL | 168 SYSCALL |
169 RET | 169 RET |
170 | 170 |
171 TEXT runtime·munmap(SB),7,$0 | 171 TEXT runtime·munmap(SB),7,$0 |
172 MOVQ 8(SP), DI // arg 1 addr | 172 MOVQ 8(SP), DI // arg 1 addr |
173 MOVQ 16(SP), SI // arg 2 len | 173 MOVQ 16(SP), SI // arg 2 len |
174 MOVL $73, AX | 174 MOVL $73, AX |
175 SYSCALL | 175 SYSCALL |
176 JCC 2(PC) | 176 JCC 2(PC) |
177 » CALL» runtime·notok(SB) | 177 » MOVL» $0xf1, 0xf1 // crash |
178 » RET | |
179 | |
180 TEXT runtime·notok(SB),7,$-8 | |
181 » MOVL» $0xf1, BP | |
182 » MOVQ» BP, (BP) | |
183 RET | 178 RET |
184 | 179 |
185 TEXT runtime·sigaltstack(SB),7,$-8 | 180 TEXT runtime·sigaltstack(SB),7,$-8 |
186 MOVQ new+8(SP), DI | 181 MOVQ new+8(SP), DI |
187 MOVQ old+16(SP), SI | 182 MOVQ old+16(SP), SI |
188 MOVQ $53, AX | 183 MOVQ $53, AX |
189 SYSCALL | 184 SYSCALL |
190 JCC 2(PC) | 185 JCC 2(PC) |
191 » CALL» runtime·notok(SB) | 186 » MOVL» $0xf1, 0xf1 // crash |
192 RET | 187 RET |
193 | 188 |
194 TEXT runtime·usleep(SB),7,$16 | 189 TEXT runtime·usleep(SB),7,$16 |
195 MOVL $0, DX | 190 MOVL $0, DX |
196 MOVL usec+0(FP), AX | 191 MOVL usec+0(FP), AX |
197 MOVL $1000000, CX | 192 MOVL $1000000, CX |
198 DIVL CX | 193 DIVL CX |
199 MOVQ AX, 0(SP) // tv_sec | 194 MOVQ AX, 0(SP) // tv_sec |
200 MOVL $1000, AX | 195 MOVL $1000, AX |
201 MULL DX | 196 MULL DX |
202 MOVQ AX, 8(SP) // tv_nsec | 197 MOVQ AX, 8(SP) // tv_nsec |
203 | 198 |
204 MOVQ SP, DI // arg 1 - rqtp | 199 MOVQ SP, DI // arg 1 - rqtp |
205 MOVQ $0, SI // arg 2 - rmtp | 200 MOVQ $0, SI // arg 2 - rmtp |
206 MOVL $240, AX // sys_nanosleep | 201 MOVL $240, AX // sys_nanosleep |
207 SYSCALL | 202 SYSCALL |
208 RET | 203 RET |
209 | 204 |
210 // set tls base to DI | 205 // set tls base to DI |
211 TEXT runtime·settls(SB),7,$8 | 206 TEXT runtime·settls(SB),7,$8 |
212 ADDQ $16, DI // adjust for ELF: wants to use -16(FS) and -8(FS) for g
and m | 207 ADDQ $16, DI // adjust for ELF: wants to use -16(FS) and -8(FS) for g
and m |
213 MOVQ DI, 0(SP) | 208 MOVQ DI, 0(SP) |
214 MOVQ SP, SI | 209 MOVQ SP, SI |
215 MOVQ $129, DI // AMD64_SET_FSBASE | 210 MOVQ $129, DI // AMD64_SET_FSBASE |
216 MOVQ $165, AX // sysarch | 211 MOVQ $165, AX // sysarch |
217 SYSCALL | 212 SYSCALL |
218 JCC 2(PC) | 213 JCC 2(PC) |
219 » CALL» runtime·notok(SB) | 214 » MOVL» $0xf1, 0xf1 // crash |
220 RET | 215 RET |
221 | 216 |
222 TEXT runtime·sysctl(SB),7,$0 | 217 TEXT runtime·sysctl(SB),7,$0 |
223 MOVQ 8(SP), DI // arg 1 - name | 218 MOVQ 8(SP), DI // arg 1 - name |
224 MOVL 16(SP), SI // arg 2 - namelen | 219 MOVL 16(SP), SI // arg 2 - namelen |
225 MOVQ 24(SP), DX // arg 3 - oldp | 220 MOVQ 24(SP), DX // arg 3 - oldp |
226 MOVQ 32(SP), R10 // arg 4 - oldlenp | 221 MOVQ 32(SP), R10 // arg 4 - oldlenp |
227 MOVQ 40(SP), R8 // arg 5 - newp | 222 MOVQ 40(SP), R8 // arg 5 - newp |
228 MOVQ 48(SP), R9 // arg 6 - newlen | 223 MOVQ 48(SP), R9 // arg 6 - newlen |
229 MOVQ $202, AX // sys___sysctl | 224 MOVQ $202, AX // sys___sysctl |
230 SYSCALL | 225 SYSCALL |
231 JCC 3(PC) | 226 JCC 3(PC) |
232 NEGL AX | 227 NEGL AX |
233 RET | 228 RET |
234 MOVL $0, AX | 229 MOVL $0, AX |
235 RET | 230 RET |
236 | 231 |
237 TEXT runtime·osyield(SB),7,$-4 | 232 TEXT runtime·osyield(SB),7,$-4 |
238 MOVL $331, AX // sys_sched_yield | 233 MOVL $331, AX // sys_sched_yield |
239 SYSCALL | 234 SYSCALL |
240 RET | 235 RET |
241 | 236 |
242 TEXT runtime·sigprocmask(SB),7,$0 | 237 TEXT runtime·sigprocmask(SB),7,$0 |
243 MOVL $3, DI // arg 1 - how (SIG_SETMASK) | 238 MOVL $3, DI // arg 1 - how (SIG_SETMASK) |
244 MOVQ 8(SP), SI // arg 2 - set | 239 MOVQ 8(SP), SI // arg 2 - set |
245 MOVQ 16(SP), DX // arg 3 - oset | 240 MOVQ 16(SP), DX // arg 3 - oset |
246 MOVL $340, AX // sys_sigprocmask | 241 MOVL $340, AX // sys_sigprocmask |
247 SYSCALL | 242 SYSCALL |
248 JAE 2(PC) | 243 JAE 2(PC) |
249 » CALL» runtime·notok(SB) | 244 » MOVL» $0xf1, 0xf1 // crash |
250 RET | 245 RET |
OLD | NEW |