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 // | 5 // |
6 // System calls and other sys.stuff for 386, Linux | 6 // System calls and other sys.stuff for 386, Linux |
7 // | 7 // |
8 | 8 |
9 #include "zasm_GOOS_GOARCH.h" | 9 #include "zasm_GOOS_GOARCH.h" |
10 #include "../../cmd/ld/textflag.h" | 10 #include "textflag.h" |
11 | 11 |
12 TEXT runtime·exit(SB),NOSPLIT,$0 | 12 TEXT runtime·exit(SB),NOSPLIT,$0 |
13 MOVL $252, AX // syscall number | 13 MOVL $252, AX // syscall number |
14 » MOVL» 4(SP), BX | 14 » MOVL» code+0(FP), BX |
15 CALL *runtime·_vdso(SB) | 15 CALL *runtime·_vdso(SB) |
16 INT $3 // not reached | 16 INT $3 // not reached |
17 RET | 17 RET |
18 | 18 |
19 TEXT runtime·exit1(SB),NOSPLIT,$0 | 19 TEXT runtime·exit1(SB),NOSPLIT,$0 |
20 MOVL $1, AX // exit - exit the current os thread | 20 MOVL $1, AX // exit - exit the current os thread |
21 » MOVL» 4(SP), BX | 21 » MOVL» code+0(FP), BX |
22 CALL *runtime·_vdso(SB) | 22 CALL *runtime·_vdso(SB) |
23 INT $3 // not reached | 23 INT $3 // not reached |
24 RET | 24 RET |
25 | 25 |
26 TEXT runtime·open(SB),NOSPLIT,$0 | 26 TEXT runtime·open(SB),NOSPLIT,$0 |
27 MOVL $5, AX // syscall - open | 27 MOVL $5, AX // syscall - open |
28 » MOVL» 4(SP), BX | 28 » MOVL» name+0(FP), BX |
29 » MOVL» 8(SP), CX | 29 » MOVL» mode+4(FP), CX |
30 » MOVL» 12(SP), DX | 30 » MOVL» perm+8(FP), DX |
31 CALL *runtime·_vdso(SB) | 31 CALL *runtime·_vdso(SB) |
| 32 MOVL AX, ret+12(FP) |
32 RET | 33 RET |
33 | 34 |
34 TEXT runtime·close(SB),NOSPLIT,$0 | 35 TEXT runtime·close(SB),NOSPLIT,$0 |
35 MOVL $6, AX // syscall - close | 36 MOVL $6, AX // syscall - close |
36 » MOVL» 4(SP), BX | 37 » MOVL» fd+0(FP), BX |
37 CALL *runtime·_vdso(SB) | 38 CALL *runtime·_vdso(SB) |
| 39 MOVL AX, ret+4(FP) |
38 RET | 40 RET |
39 | 41 |
40 TEXT runtime·write(SB),NOSPLIT,$0 | 42 TEXT runtime·write(SB),NOSPLIT,$0 |
41 MOVL $4, AX // syscall - write | 43 MOVL $4, AX // syscall - write |
42 » MOVL» 4(SP), BX | 44 » MOVL» fd+0(FP), BX |
43 » MOVL» 8(SP), CX | 45 » MOVL» p+4(FP), CX |
44 » MOVL» 12(SP), DX | 46 » MOVL» n+8(FP), DX |
45 CALL *runtime·_vdso(SB) | 47 CALL *runtime·_vdso(SB) |
| 48 MOVL AX, ret+12(FP) |
46 RET | 49 RET |
47 | 50 |
48 TEXT runtime·read(SB),NOSPLIT,$0 | 51 TEXT runtime·read(SB),NOSPLIT,$0 |
49 MOVL $3, AX // syscall - read | 52 MOVL $3, AX // syscall - read |
50 » MOVL» 4(SP), BX | 53 » MOVL» fd+0(FP), BX |
51 » MOVL» 8(SP), CX | 54 » MOVL» p+4(FP), CX |
52 » MOVL» 12(SP), DX | 55 » MOVL» n+8(FP), DX |
53 CALL *runtime·_vdso(SB) | 56 CALL *runtime·_vdso(SB) |
| 57 MOVL AX, ret+12(FP) |
54 RET | 58 RET |
55 | 59 |
56 TEXT runtime·getrlimit(SB),NOSPLIT,$0 | 60 TEXT runtime·getrlimit(SB),NOSPLIT,$0 |
57 MOVL $191, AX // syscall - ugetrlimit | 61 MOVL $191, AX // syscall - ugetrlimit |
58 » MOVL» 4(SP), BX | 62 » MOVL» kind+0(FP), BX |
59 » MOVL» 8(SP), CX | 63 » MOVL» limit+4(FP), CX |
60 CALL *runtime·_vdso(SB) | 64 CALL *runtime·_vdso(SB) |
| 65 MOVL AX, ret+8(FP) |
61 RET | 66 RET |
62 | 67 |
63 TEXT runtime·usleep(SB),NOSPLIT,$8 | 68 TEXT runtime·usleep(SB),NOSPLIT,$8 |
64 MOVL $0, DX | 69 MOVL $0, DX |
65 MOVL usec+0(FP), AX | 70 MOVL usec+0(FP), AX |
66 MOVL $1000000, CX | 71 MOVL $1000000, CX |
67 DIVL CX | 72 DIVL CX |
68 MOVL AX, 0(SP) | 73 MOVL AX, 0(SP) |
69 MOVL DX, 4(SP) | 74 MOVL DX, 4(SP) |
70 | 75 |
71 // select(0, 0, 0, 0, &tv) | 76 // select(0, 0, 0, 0, &tv) |
72 MOVL $142, AX | 77 MOVL $142, AX |
73 MOVL $0, BX | 78 MOVL $0, BX |
74 MOVL $0, CX | 79 MOVL $0, CX |
75 MOVL $0, DX | 80 MOVL $0, DX |
76 MOVL $0, SI | 81 MOVL $0, SI |
77 LEAL 0(SP), DI | 82 LEAL 0(SP), DI |
78 CALL *runtime·_vdso(SB) | 83 CALL *runtime·_vdso(SB) |
79 RET | 84 RET |
80 | 85 |
81 TEXT runtime·raise(SB),NOSPLIT,$12 | 86 TEXT runtime·raise(SB),NOSPLIT,$12 |
82 MOVL $224, AX // syscall - gettid | 87 MOVL $224, AX // syscall - gettid |
83 CALL *runtime·_vdso(SB) | 88 CALL *runtime·_vdso(SB) |
84 MOVL AX, BX // arg 1 tid | 89 MOVL AX, BX // arg 1 tid |
85 MOVL sig+0(FP), CX // arg 2 signal | 90 MOVL sig+0(FP), CX // arg 2 signal |
86 MOVL $238, AX // syscall - tkill | 91 MOVL $238, AX // syscall - tkill |
87 CALL *runtime·_vdso(SB) | 92 CALL *runtime·_vdso(SB) |
88 RET | 93 RET |
89 | 94 |
90 TEXT runtime·setitimer(SB),NOSPLIT,$0-24 | 95 TEXT runtime·setitimer(SB),NOSPLIT,$0-12 |
91 MOVL $104, AX // syscall - setitimer | 96 MOVL $104, AX // syscall - setitimer |
92 » MOVL» 4(SP), BX | 97 » MOVL» mode+0(FP), BX |
93 » MOVL» 8(SP), CX | 98 » MOVL» new+4(FP), CX |
94 » MOVL» 12(SP), DX | 99 » MOVL» old+8(FP), DX |
95 CALL *runtime·_vdso(SB) | 100 CALL *runtime·_vdso(SB) |
96 RET | 101 RET |
97 | 102 |
98 TEXT runtime·mincore(SB),NOSPLIT,$0-24 | 103 TEXT runtime·mincore(SB),NOSPLIT,$0-16 |
99 MOVL $218, AX // syscall - mincore | 104 MOVL $218, AX // syscall - mincore |
100 » MOVL» 4(SP), BX | 105 » MOVL» addr+0(FP), BX |
101 » MOVL» 8(SP), CX | 106 » MOVL» n+4(FP), CX |
102 » MOVL» 12(SP), DX | 107 » MOVL» dst+8(FP), DX |
103 CALL *runtime·_vdso(SB) | 108 CALL *runtime·_vdso(SB) |
| 109 MOVL AX, ret+12(FP) |
104 RET | 110 RET |
105 | 111 |
106 // func now() (sec int64, nsec int32) | 112 // func now() (sec int64, nsec int32) |
107 TEXT time·now(SB), NOSPLIT, $32 | 113 TEXT time·now(SB), NOSPLIT, $32 |
108 MOVL $265, AX // syscall - clock_gettime | 114 MOVL $265, AX // syscall - clock_gettime |
109 MOVL $0, BX // CLOCK_REALTIME | 115 MOVL $0, BX // CLOCK_REALTIME |
110 LEAL 8(SP), CX | 116 LEAL 8(SP), CX |
111 MOVL $0, DX | 117 MOVL $0, DX |
112 CALL *runtime·_vdso(SB) | 118 CALL *runtime·_vdso(SB) |
113 MOVL 8(SP), AX // sec | 119 MOVL 8(SP), AX // sec |
(...skipping 16 matching lines...) Expand all Loading... |
130 MOVL 8(SP), AX // sec | 136 MOVL 8(SP), AX // sec |
131 MOVL 12(SP), BX // nsec | 137 MOVL 12(SP), BX // nsec |
132 | 138 |
133 // sec is in AX, nsec in BX | 139 // sec is in AX, nsec in BX |
134 // convert to DX:AX nsec | 140 // convert to DX:AX nsec |
135 MOVL $1000000000, CX | 141 MOVL $1000000000, CX |
136 MULL CX | 142 MULL CX |
137 ADDL BX, AX | 143 ADDL BX, AX |
138 ADCL $0, DX | 144 ADCL $0, DX |
139 | 145 |
140 » MOVL» ret+0(FP), DI | 146 » MOVL» AX, ret_lo+0(FP) |
141 » MOVL» AX, 0(DI) | 147 » MOVL» DX, ret_hi+4(FP) |
142 » MOVL» DX, 4(DI) | |
143 RET | 148 RET |
144 | 149 |
145 TEXT runtime·rtsigprocmask(SB),NOSPLIT,$0 | 150 TEXT runtime·rtsigprocmask(SB),NOSPLIT,$0 |
146 MOVL $175, AX // syscall entry | 151 MOVL $175, AX // syscall entry |
147 » MOVL» 4(SP), BX | 152 » MOVL» sig+0(FP), BX |
148 » MOVL» 8(SP), CX | 153 » MOVL» new+4(FP), CX |
149 » MOVL» 12(SP), DX | 154 » MOVL» old+8(FP), DX |
150 » MOVL» 16(SP), SI | 155 » MOVL» size+12(FP), SI |
151 CALL *runtime·_vdso(SB) | 156 CALL *runtime·_vdso(SB) |
152 CMPL AX, $0xfffff001 | 157 CMPL AX, $0xfffff001 |
153 JLS 2(PC) | 158 JLS 2(PC) |
154 INT $3 | 159 INT $3 |
155 RET | 160 RET |
156 | 161 |
157 TEXT runtime·rt_sigaction(SB),NOSPLIT,$0 | 162 TEXT runtime·rt_sigaction(SB),NOSPLIT,$0 |
158 MOVL $174, AX // syscall - rt_sigaction | 163 MOVL $174, AX // syscall - rt_sigaction |
159 » MOVL» 4(SP), BX | 164 » MOVL» sig+0(FP), BX |
160 » MOVL» 8(SP), CX | 165 » MOVL» new+4(FP), CX |
161 » MOVL» 12(SP), DX | 166 » MOVL» old+8(FP), DX |
162 » MOVL» 16(SP), SI | 167 » MOVL» size+12(FP), SI |
163 CALL *runtime·_vdso(SB) | 168 CALL *runtime·_vdso(SB) |
| 169 MOVL AX, ret+16(FP) |
164 RET | 170 RET |
165 | 171 |
166 TEXT runtime·sigtramp(SB),NOSPLIT,$44 | 172 TEXT runtime·sigtramp(SB),NOSPLIT,$44 |
167 get_tls(CX) | 173 get_tls(CX) |
168 | 174 |
169 // check that g exists | 175 // check that g exists |
170 MOVL g(CX), DI | 176 MOVL g(CX), DI |
171 CMPL DI, $0 | 177 CMPL DI, $0 |
172 JNE 6(PC) | 178 JNE 6(PC) |
173 MOVL sig+0(FP), BX | 179 MOVL sig+0(FP), BX |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 TEXT runtime·sigreturn(SB),NOSPLIT,$0 | 211 TEXT runtime·sigreturn(SB),NOSPLIT,$0 |
206 MOVL $173, AX // rt_sigreturn | 212 MOVL $173, AX // rt_sigreturn |
207 // Sigreturn expects same SP as signal handler, | 213 // Sigreturn expects same SP as signal handler, |
208 // so cannot CALL *runtime._vsdo(SB) here. | 214 // so cannot CALL *runtime._vsdo(SB) here. |
209 INT $0x80 | 215 INT $0x80 |
210 INT $3 // not reached | 216 INT $3 // not reached |
211 RET | 217 RET |
212 | 218 |
213 TEXT runtime·mmap(SB),NOSPLIT,$0 | 219 TEXT runtime·mmap(SB),NOSPLIT,$0 |
214 MOVL $192, AX // mmap2 | 220 MOVL $192, AX // mmap2 |
215 » MOVL» 4(SP), BX | 221 » MOVL» addr+0(FP), BX |
216 » MOVL» 8(SP), CX | 222 » MOVL» n+4(FP), CX |
217 » MOVL» 12(SP), DX | 223 » MOVL» prot+8(FP), DX |
218 » MOVL» 16(SP), SI | 224 » MOVL» flags+12(FP), SI |
219 » MOVL» 20(SP), DI | 225 » MOVL» fd+16(FP), DI |
220 » MOVL» 24(SP), BP | 226 » MOVL» off+20(FP), BP |
221 SHRL $12, BP | 227 SHRL $12, BP |
222 CALL *runtime·_vdso(SB) | 228 CALL *runtime·_vdso(SB) |
223 CMPL AX, $0xfffff001 | 229 CMPL AX, $0xfffff001 |
224 JLS 3(PC) | 230 JLS 3(PC) |
225 NOTL AX | 231 NOTL AX |
226 INCL AX | 232 INCL AX |
| 233 MOVL AX, ret+24(FP) |
227 RET | 234 RET |
228 | 235 |
229 TEXT runtime·munmap(SB),NOSPLIT,$0 | 236 TEXT runtime·munmap(SB),NOSPLIT,$0 |
230 MOVL $91, AX // munmap | 237 MOVL $91, AX // munmap |
231 » MOVL» 4(SP), BX | 238 » MOVL» addr+0(FP), BX |
232 » MOVL» 8(SP), CX | 239 » MOVL» n+4(FP), CX |
233 CALL *runtime·_vdso(SB) | 240 CALL *runtime·_vdso(SB) |
234 CMPL AX, $0xfffff001 | 241 CMPL AX, $0xfffff001 |
235 JLS 2(PC) | 242 JLS 2(PC) |
236 INT $3 | 243 INT $3 |
237 RET | 244 RET |
238 | 245 |
239 TEXT runtime·madvise(SB),NOSPLIT,$0 | 246 TEXT runtime·madvise(SB),NOSPLIT,$0 |
240 MOVL $219, AX // madvise | 247 MOVL $219, AX // madvise |
241 » MOVL» 4(SP), BX | 248 » MOVL» addr+0(FP), BX |
242 » MOVL» 8(SP), CX | 249 » MOVL» n+4(FP), CX |
243 » MOVL» 12(SP), DX | 250 » MOVL» flags+8(FP), DX |
244 CALL *runtime·_vdso(SB) | 251 CALL *runtime·_vdso(SB) |
245 // ignore failure - maybe pages are locked | 252 // ignore failure - maybe pages are locked |
246 RET | 253 RET |
247 | 254 |
248 // int32 futex(int32 *uaddr, int32 op, int32 val, | 255 // int32 futex(int32 *uaddr, int32 op, int32 val, |
249 // struct timespec *timeout, int32 *uaddr2, int32 val2); | 256 // struct timespec *timeout, int32 *uaddr2, int32 val2); |
250 TEXT runtime·futex(SB),NOSPLIT,$0 | 257 TEXT runtime·futex(SB),NOSPLIT,$0 |
251 MOVL $240, AX // futex | 258 MOVL $240, AX // futex |
252 » MOVL» 4(SP), BX | 259 » MOVL» addr+0(FP), BX |
253 » MOVL» 8(SP), CX | 260 » MOVL» op+4(FP), CX |
254 » MOVL» 12(SP), DX | 261 » MOVL» val+8(FP), DX |
255 » MOVL» 16(SP), SI | 262 » MOVL» ts+12(FP), SI |
256 » MOVL» 20(SP), DI | 263 » MOVL» addr2+16(FP), DI |
257 » MOVL» 24(SP), BP | 264 » MOVL» val3+20(FP), BP |
258 CALL *runtime·_vdso(SB) | 265 CALL *runtime·_vdso(SB) |
| 266 MOVL AX, ret+24(FP) |
259 RET | 267 RET |
260 | 268 |
261 // int32 clone(int32 flags, void *stack, M *mp, G *gp, void (*fn)(void)); | 269 // int32 clone(int32 flags, void *stack, M *mp, G *gp, void (*fn)(void)); |
262 TEXT runtime·clone(SB),NOSPLIT,$0 | 270 TEXT runtime·clone(SB),NOSPLIT,$0 |
263 MOVL $120, AX // clone | 271 MOVL $120, AX // clone |
264 MOVL flags+4(SP), BX | 272 MOVL flags+4(SP), BX |
265 MOVL stack+8(SP), CX | 273 MOVL stack+8(SP), CX |
266 MOVL $0, DX // parent tid ptr | 274 MOVL $0, DX // parent tid ptr |
267 MOVL $0, DI // child tid ptr | 275 MOVL $0, DI // child tid ptr |
268 | 276 |
269 // Copy mp, gp, fn off parent stack for use by child. | 277 // Copy mp, gp, fn off parent stack for use by child. |
270 SUBL $16, CX | 278 SUBL $16, CX |
271 MOVL mm+12(SP), SI | 279 MOVL mm+12(SP), SI |
272 MOVL SI, 0(CX) | 280 MOVL SI, 0(CX) |
273 MOVL gg+16(SP), SI | 281 MOVL gg+16(SP), SI |
274 MOVL SI, 4(CX) | 282 MOVL SI, 4(CX) |
275 MOVL fn+20(SP), SI | 283 MOVL fn+20(SP), SI |
276 MOVL SI, 8(CX) | 284 MOVL SI, 8(CX) |
277 MOVL $1234, 12(CX) | 285 MOVL $1234, 12(CX) |
278 | 286 |
279 // cannot use CALL *runtime·_vdso(SB) here, because | 287 // cannot use CALL *runtime·_vdso(SB) here, because |
280 // the stack changes during the system call (after | 288 // the stack changes during the system call (after |
281 // CALL *runtime·_vdso(SB), the child is still using | 289 // CALL *runtime·_vdso(SB), the child is still using |
282 // the parent's stack when executing its RET instruction). | 290 // the parent's stack when executing its RET instruction). |
283 INT $0x80 | 291 INT $0x80 |
284 | 292 |
285 // In parent, return. | 293 // In parent, return. |
286 CMPL AX, $0 | 294 CMPL AX, $0 |
287 » JEQ» 2(PC) | 295 » JEQ» 3(PC) |
| 296 » MOVL» AX, ret+20(FP) |
288 RET | 297 RET |
289 | 298 |
290 // Paranoia: check that SP is as we expect. | 299 // Paranoia: check that SP is as we expect. |
291 » MOVL» 12(SP), BP | 300 » MOVL» mm+8(FP), BP |
292 CMPL BP, $1234 | 301 CMPL BP, $1234 |
293 JEQ 2(PC) | 302 JEQ 2(PC) |
294 INT $3 | 303 INT $3 |
295 | 304 |
296 // Initialize AX to Linux tid | 305 // Initialize AX to Linux tid |
297 MOVL $224, AX | 306 MOVL $224, AX |
298 CALL *runtime·_vdso(SB) | 307 CALL *runtime·_vdso(SB) |
299 | 308 |
300 // In child on new stack. Reload registers (paranoia). | 309 // In child on new stack. Reload registers (paranoia). |
301 MOVL 0(SP), BX // m | 310 MOVL 0(SP), BX // m |
302 » MOVL» 4(SP), DX» // g | 311 » MOVL» flags+0(FP), DX»// g |
303 » MOVL» 8(SP), SI» // fn | 312 » MOVL» stk+4(FP), SI» // fn |
304 | 313 |
305 MOVL AX, m_procid(BX) // save tid as m->procid | 314 MOVL AX, m_procid(BX) // save tid as m->procid |
306 | 315 |
307 // set up ldt 7+id to point at m->tls. | 316 // set up ldt 7+id to point at m->tls. |
308 // newosproc left the id in tls[0]. | 317 // newosproc left the id in tls[0]. |
309 LEAL m_tls(BX), BP | 318 LEAL m_tls(BX), BP |
310 MOVL 0(BP), DI | 319 MOVL 0(BP), DI |
311 ADDL $7, DI // m0 is LDT#7. count up. | 320 ADDL $7, DI // m0 is LDT#7. count up. |
312 // setldt(tls#, &tls, sizeof tls) | 321 // setldt(tls#, &tls, sizeof tls) |
313 PUSHAL // save registers | 322 PUSHAL // save registers |
(...skipping 16 matching lines...) Expand all Loading... |
330 MOVL 0(BX), BX | 339 MOVL 0(BX), BX |
331 | 340 |
332 // more paranoia; check that stack splitting code works | 341 // more paranoia; check that stack splitting code works |
333 PUSHAL | 342 PUSHAL |
334 CALL runtime·emptyfunc(SB) | 343 CALL runtime·emptyfunc(SB) |
335 POPAL | 344 POPAL |
336 | 345 |
337 CALL SI // fn() | 346 CALL SI // fn() |
338 CALL runtime·exit1(SB) | 347 CALL runtime·exit1(SB) |
339 MOVL $0x1234, 0x1005 | 348 MOVL $0x1234, 0x1005 |
340 RET | |
341 | 349 |
342 TEXT runtime·sigaltstack(SB),NOSPLIT,$-8 | 350 TEXT runtime·sigaltstack(SB),NOSPLIT,$-8 |
343 MOVL $186, AX // sigaltstack | 351 MOVL $186, AX // sigaltstack |
344 MOVL new+4(SP), BX | 352 MOVL new+4(SP), BX |
345 MOVL old+8(SP), CX | 353 MOVL old+8(SP), CX |
346 CALL *runtime·_vdso(SB) | 354 CALL *runtime·_vdso(SB) |
347 CMPL AX, $0xfffff001 | 355 CMPL AX, $0xfffff001 |
348 JLS 2(PC) | 356 JLS 2(PC) |
349 INT $3 | 357 INT $3 |
350 RET | 358 RET |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 | 427 |
420 RET | 428 RET |
421 | 429 |
422 TEXT runtime·osyield(SB),NOSPLIT,$0 | 430 TEXT runtime·osyield(SB),NOSPLIT,$0 |
423 MOVL $158, AX | 431 MOVL $158, AX |
424 CALL *runtime·_vdso(SB) | 432 CALL *runtime·_vdso(SB) |
425 RET | 433 RET |
426 | 434 |
427 TEXT runtime·sched_getaffinity(SB),NOSPLIT,$0 | 435 TEXT runtime·sched_getaffinity(SB),NOSPLIT,$0 |
428 MOVL $242, AX // syscall - sched_getaffinity | 436 MOVL $242, AX // syscall - sched_getaffinity |
429 » MOVL» 4(SP), BX | 437 » MOVL» pid+0(FP), BX |
430 » MOVL» 8(SP), CX | 438 » MOVL» len+4(FP), CX |
431 » MOVL» 12(SP), DX | 439 » MOVL» buf+8(FP), DX |
432 CALL *runtime·_vdso(SB) | 440 CALL *runtime·_vdso(SB) |
| 441 MOVL AX, ret+12(FP) |
433 RET | 442 RET |
434 | 443 |
435 // int32 runtime·epollcreate(int32 size); | 444 // int32 runtime·epollcreate(int32 size); |
436 TEXT runtime·epollcreate(SB),NOSPLIT,$0 | 445 TEXT runtime·epollcreate(SB),NOSPLIT,$0 |
437 MOVL $254, AX | 446 MOVL $254, AX |
438 » MOVL» 4(SP), BX | 447 » MOVL» size+0(FP), BX |
439 CALL *runtime·_vdso(SB) | 448 CALL *runtime·_vdso(SB) |
| 449 MOVL AX, ret+4(FP) |
440 RET | 450 RET |
441 | 451 |
442 // int32 runtime·epollcreate1(int32 flags); | 452 // int32 runtime·epollcreate1(int32 flags); |
443 TEXT runtime·epollcreate1(SB),NOSPLIT,$0 | 453 TEXT runtime·epollcreate1(SB),NOSPLIT,$0 |
444 MOVL $329, AX | 454 MOVL $329, AX |
445 » MOVL» 4(SP), BX | 455 » MOVL» flags+0(FP), BX |
446 CALL *runtime·_vdso(SB) | 456 CALL *runtime·_vdso(SB) |
| 457 MOVL AX, ret+4(FP) |
447 RET | 458 RET |
448 | 459 |
449 // int32 runtime·epollctl(int32 epfd, int32 op, int32 fd, EpollEvent *ev); | 460 // func epollctl(epfd, op, fd int32, ev *epollEvent) int |
450 TEXT runtime·epollctl(SB),NOSPLIT,$0 | 461 TEXT runtime·epollctl(SB),NOSPLIT,$0 |
451 MOVL $255, AX | 462 MOVL $255, AX |
452 » MOVL» 4(SP), BX | 463 » MOVL» epfd+0(FP), BX |
453 » MOVL» 8(SP), CX | 464 » MOVL» op+4(FP), CX |
454 » MOVL» 12(SP), DX | 465 » MOVL» fd+8(FP), DX |
455 » MOVL» 16(SP), SI | 466 » MOVL» ev+12(FP), SI |
456 CALL *runtime·_vdso(SB) | 467 CALL *runtime·_vdso(SB) |
| 468 MOVL AX, ret+16(FP) |
457 RET | 469 RET |
458 | 470 |
459 // int32 runtime·epollwait(int32 epfd, EpollEvent *ev, int32 nev, int32 timeout)
; | 471 // int32 runtime·epollwait(int32 epfd, EpollEvent *ev, int32 nev, int32 timeout)
; |
460 TEXT runtime·epollwait(SB),NOSPLIT,$0 | 472 TEXT runtime·epollwait(SB),NOSPLIT,$0 |
461 MOVL $256, AX | 473 MOVL $256, AX |
462 » MOVL» 4(SP), BX | 474 » MOVL» epfd+0(FP), BX |
463 » MOVL» 8(SP), CX | 475 » MOVL» ev+4(FP), CX |
464 » MOVL» 12(SP), DX | 476 » MOVL» nev+8(FP), DX |
465 » MOVL» 16(SP), SI | 477 » MOVL» timeout+12(FP), SI |
466 CALL *runtime·_vdso(SB) | 478 CALL *runtime·_vdso(SB) |
| 479 MOVL AX, ret+16(FP) |
467 RET | 480 RET |
468 | 481 |
469 // void runtime·closeonexec(int32 fd); | 482 // void runtime·closeonexec(int32 fd); |
470 TEXT runtime·closeonexec(SB),NOSPLIT,$0 | 483 TEXT runtime·closeonexec(SB),NOSPLIT,$0 |
471 MOVL $55, AX // fcntl | 484 MOVL $55, AX // fcntl |
472 » MOVL» 4(SP), BX // fd | 485 » MOVL» fd+0(FP), BX // fd |
473 MOVL $2, CX // F_SETFD | 486 MOVL $2, CX // F_SETFD |
474 MOVL $1, DX // FD_CLOEXEC | 487 MOVL $1, DX // FD_CLOEXEC |
475 CALL *runtime·_vdso(SB) | 488 CALL *runtime·_vdso(SB) |
476 RET | 489 RET |
OLD | NEW |