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 | 10 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 RET | 43 RET |
44 | 44 |
45 TEXT runtime·read(SB),7,$0-24 | 45 TEXT runtime·read(SB),7,$0-24 |
46 MOVL 8(SP), DI | 46 MOVL 8(SP), DI |
47 MOVQ 16(SP), SI | 47 MOVQ 16(SP), SI |
48 MOVL 24(SP), DX | 48 MOVL 24(SP), DX |
49 MOVL $0, AX // syscall entry | 49 MOVL $0, AX // syscall entry |
50 SYSCALL | 50 SYSCALL |
51 RET | 51 RET |
52 | 52 |
| 53 TEXT runtime·epollcreate(SB),7,$0-8 |
| 54 MOVL 8(SP), DI |
| 55 MOVL $213, AX // syscall entry |
| 56 SYSCALL |
| 57 CMPQ AX, $0xfffffffffffff001 |
| 58 JLS epollcreateok |
| 59 NEGQ AX |
| 60 RET |
| 61 epollcreateok: |
| 62 MOVQ 16(SP), DI |
| 63 MOVL AX, (DI) |
| 64 MOVL $0, AX |
| 65 RET |
| 66 |
53 TEXT runtime·epollcreate1(SB),7,$0-8 | 67 TEXT runtime·epollcreate1(SB),7,$0-8 |
54 MOVL 8(SP), DI | 68 MOVL 8(SP), DI |
55 MOVL $291, AX // syscall entry | 69 MOVL $291, AX // syscall entry |
56 SYSCALL | 70 SYSCALL |
| 71 CMPQ AX, $0xfffffffffffff001 |
| 72 JLS epollcreate1ok |
| 73 NEGQ AX |
| 74 RET |
| 75 epollcreate1ok: |
| 76 MOVQ 16(SP), DI |
| 77 MOVL AX, (DI) |
| 78 MOVL $0, AX |
57 RET | 79 RET |
58 | 80 |
59 TEXT runtime·epollctl(SB),7,$0-32 | 81 TEXT runtime·epollctl(SB),7,$0-32 |
60 MOVL 8(SP), DI | 82 MOVL 8(SP), DI |
61 » MOVL» 16(SP), SI | 83 » MOVL» 12(SP), SI |
| 84 » MOVL» 16(SP), DX |
| 85 » MOVQ» 24(SP), R10 |
| 86 » MOVL» $233, AX» » » // syscall entry |
| 87 » SYSCALL |
| 88 » RET |
| 89 |
| 90 TEXT runtime·epollwait(SB),7,$0-32 |
| 91 » MOVL» 8(SP), DI |
| 92 » MOVQ» 16(SP), SI |
62 MOVL 24(SP), DX | 93 MOVL 24(SP), DX |
63 » MOVQ» 32(SP), R10 | 94 » MOVL» 28(SP), R10 |
64 » MOVL» $233, AX» » » // syscall entry | |
65 » SYSCALL | |
66 » RET | |
67 | |
68 TEXT runtime·epollwait(SB),7,$0-32 | |
69 » MOVL» 8(SP), DI | |
70 » MOVQ» 16(SP), SI | |
71 » MOVL» 24(SP), DX | |
72 » MOVL» 32(SP), R10 | |
73 MOVL $232, AX // syscall entry | 95 MOVL $232, AX // syscall entry |
74 SYSCALL | 96 SYSCALL |
75 RET | 97 RET |
76 | 98 |
77 TEXT runtime·getrlimit(SB),7,$0-24 | 99 TEXT runtime·getrlimit(SB),7,$0-24 |
78 MOVL 8(SP), DI | 100 MOVL 8(SP), DI |
79 MOVQ 16(SP), SI | 101 MOVQ 16(SP), SI |
80 MOVL $97, AX // syscall entry | 102 MOVL $97, AX // syscall entry |
81 SYSCALL | 103 SYSCALL |
82 RET | 104 RET |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 TEXT runtime·mincore(SB),7,$0-24 | 141 TEXT runtime·mincore(SB),7,$0-24 |
120 MOVQ 8(SP), DI | 142 MOVQ 8(SP), DI |
121 MOVQ 16(SP), SI | 143 MOVQ 16(SP), SI |
122 MOVQ 24(SP), DX | 144 MOVQ 24(SP), DX |
123 MOVL $27, AX // syscall entry | 145 MOVL $27, AX // syscall entry |
124 SYSCALL | 146 SYSCALL |
125 RET | 147 RET |
126 | 148 |
127 // func now() (sec int64, nsec int32) | 149 // func now() (sec int64, nsec int32) |
128 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: |
129 LEAQ 8(SP), DI | 163 LEAQ 8(SP), DI |
130 MOVQ $0, SI | 164 MOVQ $0, SI |
131 » MOVQ» $0xffffffffff600000, AX | 165 » MOVQ» runtime·__vdso_gettimeofday_sym(SB), AX |
132 CALL AX | 166 CALL AX |
133 MOVQ 8(SP), AX // sec | 167 MOVQ 8(SP), AX // sec |
134 MOVL 16(SP), DX // usec | 168 MOVL 16(SP), DX // usec |
135 | 169 » IMULQ» $1000, DX |
136 » // sec is in AX, usec in DX | |
137 MOVQ AX, sec+0(FP) | 170 MOVQ AX, sec+0(FP) |
138 IMULQ $1000, DX | |
139 MOVL DX, nsec+8(FP) | 171 MOVL DX, nsec+8(FP) |
140 RET | 172 RET |
141 | 173 |
142 TEXT runtime·nanotime(SB), 7, $32 | 174 TEXT runtime·nanotime(SB), 7, $32 |
143 » LEAQ» 8(SP), DI | 175 » CALL» time·now(SB) |
144 » MOVQ» $0, SI | 176 » MOVQ» 0(SP), AX» // sec |
145 » MOVQ» $0xffffffffff600000, AX | 177 » MOVL» 8(SP), DX» // nsec |
146 » CALL» AX | |
147 » MOVQ» 8(SP), AX» // sec | |
148 » MOVL» 16(SP), DX» // usec | |
149 | 178 |
150 // sec is in AX, usec in DX | 179 // sec is in AX, usec in DX |
151 // return nsec in AX | 180 // return nsec in AX |
152 IMULQ $1000000000, AX | 181 IMULQ $1000000000, AX |
153 IMULQ $1000, DX | |
154 ADDQ DX, AX | 182 ADDQ DX, AX |
155 RET | 183 RET |
156 | 184 |
157 TEXT runtime·rtsigprocmask(SB),7,$0-32 | 185 TEXT runtime·rtsigprocmask(SB),7,$0-32 |
158 MOVL 8(SP), DI | 186 MOVL 8(SP), DI |
159 MOVQ 16(SP), SI | 187 MOVQ 16(SP), SI |
160 MOVQ 24(SP), DX | 188 MOVQ 24(SP), DX |
161 MOVL 32(SP), R10 | 189 MOVL 32(SP), R10 |
162 MOVL $14, AX // syscall entry | 190 MOVL $14, AX // syscall entry |
163 SYSCALL | 191 SYSCALL |
(...skipping 10 matching lines...) Expand all Loading... |
174 MOVL $13, AX // syscall entry | 202 MOVL $13, AX // syscall entry |
175 SYSCALL | 203 SYSCALL |
176 RET | 204 RET |
177 | 205 |
178 TEXT runtime·sigtramp(SB),7,$64 | 206 TEXT runtime·sigtramp(SB),7,$64 |
179 get_tls(BX) | 207 get_tls(BX) |
180 | 208 |
181 // check that m exists | 209 // check that m exists |
182 MOVQ m(BX), BP | 210 MOVQ m(BX), BP |
183 CMPQ BP, $0 | 211 CMPQ BP, $0 |
184 » JNE» 2(PC) | 212 » JNE» 4(PC) |
| 213 » MOVQ» DI, 0(SP) |
185 CALL runtime·badsignal(SB) | 214 CALL runtime·badsignal(SB) |
| 215 RET |
186 | 216 |
187 // save g | 217 // save g |
188 MOVQ g(BX), R10 | 218 MOVQ g(BX), R10 |
189 MOVQ R10, 40(SP) | 219 MOVQ R10, 40(SP) |
190 | 220 |
191 // g = m->gsignal | 221 // g = m->gsignal |
192 MOVQ m_gsignal(BP), BP | 222 MOVQ m_gsignal(BP), BP |
193 MOVQ BP, g(BX) | 223 MOVQ BP, g(BX) |
194 | 224 |
195 MOVQ DI, 0(SP) | 225 MOVQ DI, 0(SP) |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 SYSCALL | 365 SYSCALL |
336 RET | 366 RET |
337 | 367 |
338 TEXT runtime·sched_getaffinity(SB),7,$0 | 368 TEXT runtime·sched_getaffinity(SB),7,$0 |
339 MOVQ 8(SP), DI | 369 MOVQ 8(SP), DI |
340 MOVL 16(SP), SI | 370 MOVL 16(SP), SI |
341 MOVQ 24(SP), DX | 371 MOVQ 24(SP), DX |
342 MOVL $204, AX // syscall entry | 372 MOVL $204, AX // syscall entry |
343 SYSCALL | 373 SYSCALL |
344 RET | 374 RET |
LEFT | RIGHT |