LEFT | RIGHT |
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 // | 5 // |
6 // System calls and other sys.stuff for AMD64, Linux | 6 // System calls and other sys.stuff for AMD64, Linux |
7 // | 7 // |
8 | 8 |
9 #include "zasm_GOOS_GOARCH.h" | 9 #include "zasm_GOOS_GOARCH.h" |
10 | |
11 TEXT runtime·raiseprio(SB),7,$0 | |
12 MOVL $186, AX // syscall - gettid | |
13 SYSCALL | |
14 MOVL AX, DI // tid | |
15 MOVL $1, SI // SCHED_FIFO | |
16 MOVQ 8(SP), DX | |
17 MOVL $144, AX // syscall - sched_setscheduler | |
18 SYSCALL | |
19 RET | |
20 | 10 |
21 TEXT runtime·exit(SB),7,$0-8 | 11 TEXT runtime·exit(SB),7,$0-8 |
22 MOVL 8(SP), DI | 12 MOVL 8(SP), DI |
23 MOVL $231, AX // exitgroup - force all os threads to exit | 13 MOVL $231, AX // exitgroup - force all os threads to exit |
24 SYSCALL | 14 SYSCALL |
25 RET | 15 RET |
26 | 16 |
27 TEXT runtime·exit1(SB),7,$0-8 | 17 TEXT runtime·exit1(SB),7,$0-8 |
28 MOVL 8(SP), DI | 18 MOVL 8(SP), DI |
29 MOVL $60, AX // exit - exit the current os thread | 19 MOVL $60, AX // exit - exit the current os thread |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 TEXT runtime·mincore(SB),7,$0-24 | 141 TEXT runtime·mincore(SB),7,$0-24 |
152 MOVQ 8(SP), DI | 142 MOVQ 8(SP), DI |
153 MOVQ 16(SP), SI | 143 MOVQ 16(SP), SI |
154 MOVQ 24(SP), DX | 144 MOVQ 24(SP), DX |
155 MOVL $27, AX // syscall entry | 145 MOVL $27, AX // syscall entry |
156 SYSCALL | 146 SYSCALL |
157 RET | 147 RET |
158 | 148 |
159 // func now() (sec int64, nsec int32) | 149 // func now() (sec int64, nsec int32) |
160 TEXT time·now(SB), 7, $32 | 150 TEXT time·now(SB), 7, $32 |
| 151 MOVQ runtime·__vdso_clock_gettime_sym(SB), AX |
| 152 CMPQ AX, $0 |
| 153 JEQ fallback_gtod |
| 154 MOVL $0, DI // CLOCK_REALTIME |
| 155 LEAQ 8(SP), SI |
| 156 CALL AX |
| 157 MOVQ 8(SP), AX // sec |
| 158 MOVQ 16(SP), DX // nsec |
| 159 MOVQ AX, sec+0(FP) |
| 160 MOVL DX, nsec+8(FP) |
| 161 RET |
| 162 fallback_gtod: |
161 LEAQ 8(SP), DI | 163 LEAQ 8(SP), DI |
162 MOVQ $0, SI | 164 MOVQ $0, SI |
163 » MOVQ» $0xffffffffff600000, AX | 165 » MOVQ» runtime·__vdso_gettimeofday_sym(SB), AX |
164 CALL AX | 166 CALL AX |
165 MOVQ 8(SP), AX // sec | 167 MOVQ 8(SP), AX // sec |
166 MOVL 16(SP), DX // usec | 168 MOVL 16(SP), DX // usec |
167 | 169 » IMULQ» $1000, DX |
168 » // sec is in AX, usec in DX | |
169 MOVQ AX, sec+0(FP) | 170 MOVQ AX, sec+0(FP) |
170 IMULQ $1000, DX | |
171 MOVL DX, nsec+8(FP) | 171 MOVL DX, nsec+8(FP) |
172 RET | 172 RET |
173 | 173 |
174 TEXT runtime·nanotime(SB), 7, $32 | 174 TEXT runtime·nanotime(SB), 7, $32 |
175 » LEAQ» 8(SP), DI | 175 » CALL» time·now(SB) |
176 » MOVQ» $0, SI | 176 » MOVQ» 0(SP), AX» // sec |
177 » MOVQ» $0xffffffffff600000, AX | 177 » MOVL» 8(SP), DX» // nsec |
178 » CALL» AX | |
179 » MOVQ» 8(SP), AX» // sec | |
180 » MOVL» 16(SP), DX» // usec | |
181 | 178 |
182 // sec is in AX, usec in DX | 179 // sec is in AX, usec in DX |
183 // return nsec in AX | 180 // return nsec in AX |
184 IMULQ $1000000000, AX | 181 IMULQ $1000000000, AX |
185 IMULQ $1000, DX | |
186 ADDQ DX, AX | 182 ADDQ DX, AX |
187 RET | 183 RET |
188 | 184 |
189 TEXT runtime·rtsigprocmask(SB),7,$0-32 | 185 TEXT runtime·rtsigprocmask(SB),7,$0-32 |
190 MOVL 8(SP), DI | 186 MOVL 8(SP), DI |
191 MOVQ 16(SP), SI | 187 MOVQ 16(SP), SI |
192 MOVQ 24(SP), DX | 188 MOVQ 24(SP), DX |
193 MOVL 32(SP), R10 | 189 MOVL 32(SP), R10 |
194 MOVL $14, AX // syscall entry | 190 MOVL $14, AX // syscall entry |
195 SYSCALL | 191 SYSCALL |
(...skipping 10 matching lines...) Expand all Loading... |
206 MOVL $13, AX // syscall entry | 202 MOVL $13, AX // syscall entry |
207 SYSCALL | 203 SYSCALL |
208 RET | 204 RET |
209 | 205 |
210 TEXT runtime·sigtramp(SB),7,$64 | 206 TEXT runtime·sigtramp(SB),7,$64 |
211 get_tls(BX) | 207 get_tls(BX) |
212 | 208 |
213 // check that m exists | 209 // check that m exists |
214 MOVQ m(BX), BP | 210 MOVQ m(BX), BP |
215 CMPQ BP, $0 | 211 CMPQ BP, $0 |
216 » JNE» 2(PC) | 212 » JNE» 4(PC) |
| 213 » MOVQ» DI, 0(SP) |
217 CALL runtime·badsignal(SB) | 214 CALL runtime·badsignal(SB) |
| 215 RET |
218 | 216 |
219 // save g | 217 // save g |
220 MOVQ g(BX), R10 | 218 MOVQ g(BX), R10 |
221 MOVQ R10, 40(SP) | 219 MOVQ R10, 40(SP) |
222 | 220 |
223 // g = m->gsignal | 221 // g = m->gsignal |
224 MOVQ m_gsignal(BP), BP | 222 MOVQ m_gsignal(BP), BP |
225 MOVQ BP, g(BX) | 223 MOVQ BP, g(BX) |
226 | 224 |
227 MOVQ DI, 0(SP) | 225 MOVQ DI, 0(SP) |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 SYSCALL | 365 SYSCALL |
368 RET | 366 RET |
369 | 367 |
370 TEXT runtime·sched_getaffinity(SB),7,$0 | 368 TEXT runtime·sched_getaffinity(SB),7,$0 |
371 MOVQ 8(SP), DI | 369 MOVQ 8(SP), DI |
372 MOVL 16(SP), SI | 370 MOVL 16(SP), SI |
373 MOVQ 24(SP), DX | 371 MOVQ 24(SP), DX |
374 MOVL $204, AX // syscall entry | 372 MOVL $204, AX // syscall entry |
375 SYSCALL | 373 SYSCALL |
376 RET | 374 RET |
LEFT | RIGHT |