Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1)

Side by Side Diff: src/pkg/runtime/sys_linux_386.s

Issue 160200044: [dev.power64] code review 160200044: build: merge default into dev.power64 (Closed)
Patch Set: diff -r be0c14f62257b42485019e9e1db23cf40d2e249f https://code.google.com/p/go Created 10 years, 4 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/pkg/runtime/sys_freebsd_arm.s ('k') | src/pkg/runtime/sys_linux_amd64.s » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/pkg/runtime/sys_freebsd_arm.s ('k') | src/pkg/runtime/sys_linux_amd64.s » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b