LEFT | RIGHT |
(no file at all) | |
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 arm, Linux | 6 // System calls and other sys.stuff for arm, Linux |
7 // | 7 // |
8 | 8 |
9 #include "zasm_GOOS_GOARCH.h" | 9 #include "zasm_GOOS_GOARCH.h" |
| 10 #include "../../cmd/ld/textflag.h" |
10 | 11 |
11 // for EABI, as we don't support OABI | 12 // for EABI, as we don't support OABI |
12 #define SYS_BASE 0x0 | 13 #define SYS_BASE 0x0 |
13 | 14 |
14 #define SYS_exit (SYS_BASE + 1) | 15 #define SYS_exit (SYS_BASE + 1) |
15 #define SYS_read (SYS_BASE + 3) | 16 #define SYS_read (SYS_BASE + 3) |
16 #define SYS_write (SYS_BASE + 4) | 17 #define SYS_write (SYS_BASE + 4) |
17 #define SYS_open (SYS_BASE + 5) | 18 #define SYS_open (SYS_BASE + 5) |
18 #define SYS_close (SYS_BASE + 6) | 19 #define SYS_close (SYS_BASE + 6) |
19 #define SYS_gettimeofday (SYS_BASE + 78) | 20 #define SYS_gettimeofday (SYS_BASE + 78) |
(...skipping 17 matching lines...) Expand all Loading... |
37 #define SYS_sched_getaffinity (SYS_BASE + 242) | 38 #define SYS_sched_getaffinity (SYS_BASE + 242) |
38 #define SYS_clock_gettime (SYS_BASE + 263) | 39 #define SYS_clock_gettime (SYS_BASE + 263) |
39 #define SYS_epoll_create (SYS_BASE + 250) | 40 #define SYS_epoll_create (SYS_BASE + 250) |
40 #define SYS_epoll_ctl (SYS_BASE + 251) | 41 #define SYS_epoll_ctl (SYS_BASE + 251) |
41 #define SYS_epoll_wait (SYS_BASE + 252) | 42 #define SYS_epoll_wait (SYS_BASE + 252) |
42 #define SYS_epoll_create1 (SYS_BASE + 357) | 43 #define SYS_epoll_create1 (SYS_BASE + 357) |
43 #define SYS_fcntl (SYS_BASE + 55) | 44 #define SYS_fcntl (SYS_BASE + 55) |
44 | 45 |
45 #define ARM_BASE (SYS_BASE + 0x0f0000) | 46 #define ARM_BASE (SYS_BASE + 0x0f0000) |
46 | 47 |
47 TEXT runtime·open(SB),7,$0 | 48 TEXT runtime·open(SB),NOSPLIT,$0 |
48 MOVW 0(FP), R0 | 49 MOVW 0(FP), R0 |
49 MOVW 4(FP), R1 | 50 MOVW 4(FP), R1 |
50 MOVW 8(FP), R2 | 51 MOVW 8(FP), R2 |
51 MOVW $SYS_open, R7 | 52 MOVW $SYS_open, R7 |
52 SWI $0 | 53 SWI $0 |
53 RET | 54 RET |
54 | 55 |
55 TEXT runtime·close(SB),7,$0 | 56 TEXT runtime·close(SB),NOSPLIT,$0 |
56 MOVW 0(FP), R0 | 57 MOVW 0(FP), R0 |
57 MOVW $SYS_close, R7 | 58 MOVW $SYS_close, R7 |
58 SWI $0 | 59 SWI $0 |
59 RET | 60 RET |
60 | 61 |
61 TEXT runtime·write(SB),7,$0 | 62 TEXT runtime·write(SB),NOSPLIT,$0 |
62 MOVW 0(FP), R0 | 63 MOVW 0(FP), R0 |
63 MOVW 4(FP), R1 | 64 MOVW 4(FP), R1 |
64 MOVW 8(FP), R2 | 65 MOVW 8(FP), R2 |
65 MOVW $SYS_write, R7 | 66 MOVW $SYS_write, R7 |
66 SWI $0 | 67 SWI $0 |
67 RET | 68 RET |
68 | 69 |
69 TEXT runtime·read(SB),7,$0 | 70 TEXT runtime·read(SB),NOSPLIT,$0 |
70 MOVW 0(FP), R0 | 71 MOVW 0(FP), R0 |
71 MOVW 4(FP), R1 | 72 MOVW 4(FP), R1 |
72 MOVW 8(FP), R2 | 73 MOVW 8(FP), R2 |
73 MOVW $SYS_read, R7 | 74 MOVW $SYS_read, R7 |
74 SWI $0 | 75 SWI $0 |
75 RET | 76 RET |
76 | 77 |
77 TEXT runtime·getrlimit(SB),7,$0 | 78 TEXT runtime·getrlimit(SB),NOSPLIT,$0 |
78 MOVW 0(FP), R0 | 79 MOVW 0(FP), R0 |
79 MOVW 4(FP), R1 | 80 MOVW 4(FP), R1 |
80 MOVW $SYS_ugetrlimit, R7 | 81 MOVW $SYS_ugetrlimit, R7 |
81 SWI $0 | 82 SWI $0 |
82 RET | 83 RET |
83 | 84 |
84 TEXT runtime·exit(SB),7,$-4 | 85 TEXT runtime·exit(SB),NOSPLIT,$-4 |
85 MOVW 0(FP), R0 | 86 MOVW 0(FP), R0 |
86 MOVW $SYS_exit_group, R7 | 87 MOVW $SYS_exit_group, R7 |
87 SWI $0 | 88 SWI $0 |
88 MOVW $1234, R0 | 89 MOVW $1234, R0 |
89 MOVW $1002, R1 | 90 MOVW $1002, R1 |
90 MOVW R0, (R1) // fail hard | 91 MOVW R0, (R1) // fail hard |
91 | 92 |
92 TEXT runtime·exit1(SB),7,$-4 | 93 TEXT runtime·exit1(SB),NOSPLIT,$-4 |
93 MOVW 0(FP), R0 | 94 MOVW 0(FP), R0 |
94 MOVW $SYS_exit, R7 | 95 MOVW $SYS_exit, R7 |
95 SWI $0 | 96 SWI $0 |
96 MOVW $1234, R0 | 97 MOVW $1234, R0 |
97 MOVW $1003, R1 | 98 MOVW $1003, R1 |
98 MOVW R0, (R1) // fail hard | 99 MOVW R0, (R1) // fail hard |
99 | 100 |
100 TEXT» runtime·raise(SB),7,$-4 | 101 TEXT» runtime·raise(SB),NOSPLIT,$-4 |
101 MOVW $SYS_gettid, R7 | 102 MOVW $SYS_gettid, R7 |
102 SWI $0 | 103 SWI $0 |
103 // arg 1 tid already in R0 from gettid | 104 // arg 1 tid already in R0 from gettid |
104 MOVW sig+0(FP), R1 // arg 2 - signal | 105 MOVW sig+0(FP), R1 // arg 2 - signal |
105 MOVW $SYS_tkill, R7 | 106 MOVW $SYS_tkill, R7 |
106 SWI $0 | 107 SWI $0 |
107 RET | 108 RET |
108 | 109 |
109 TEXT runtime·mmap(SB),7,$0 | 110 TEXT runtime·mmap(SB),NOSPLIT,$0 |
110 MOVW 0(FP), R0 | 111 MOVW 0(FP), R0 |
111 MOVW 4(FP), R1 | 112 MOVW 4(FP), R1 |
112 MOVW 8(FP), R2 | 113 MOVW 8(FP), R2 |
113 MOVW 12(FP), R3 | 114 MOVW 12(FP), R3 |
114 MOVW 16(FP), R4 | 115 MOVW 16(FP), R4 |
115 MOVW 20(FP), R5 | 116 MOVW 20(FP), R5 |
116 MOVW $SYS_mmap2, R7 | 117 MOVW $SYS_mmap2, R7 |
117 SWI $0 | 118 SWI $0 |
118 MOVW $0xfffff001, R6 | 119 MOVW $0xfffff001, R6 |
119 CMP R6, R0 | 120 CMP R6, R0 |
120 RSB.HI $0, R0 | 121 RSB.HI $0, R0 |
121 RET | 122 RET |
122 | 123 |
123 TEXT runtime·munmap(SB),7,$0 | 124 TEXT runtime·munmap(SB),NOSPLIT,$0 |
124 MOVW 0(FP), R0 | 125 MOVW 0(FP), R0 |
125 MOVW 4(FP), R1 | 126 MOVW 4(FP), R1 |
126 MOVW $SYS_munmap, R7 | 127 MOVW $SYS_munmap, R7 |
127 SWI $0 | 128 SWI $0 |
128 MOVW $0xfffff001, R6 | 129 MOVW $0xfffff001, R6 |
129 CMP R6, R0 | 130 CMP R6, R0 |
130 MOVW.HI $0, R8 // crash on syscall failure | 131 MOVW.HI $0, R8 // crash on syscall failure |
131 MOVW.HI R8, (R8) | 132 MOVW.HI R8, (R8) |
132 RET | 133 RET |
133 | 134 |
134 TEXT runtime·madvise(SB),7,$0 | 135 TEXT runtime·madvise(SB),NOSPLIT,$0 |
135 MOVW 0(FP), R0 | 136 MOVW 0(FP), R0 |
136 MOVW 4(FP), R1 | 137 MOVW 4(FP), R1 |
137 MOVW 8(FP), R2 | 138 MOVW 8(FP), R2 |
138 MOVW $SYS_madvise, R7 | 139 MOVW $SYS_madvise, R7 |
139 SWI $0 | 140 SWI $0 |
140 // ignore failure - maybe pages are locked | 141 // ignore failure - maybe pages are locked |
141 RET | 142 RET |
142 | 143 |
143 TEXT runtime·setitimer(SB),7,$0 | 144 TEXT runtime·setitimer(SB),NOSPLIT,$0 |
144 MOVW 0(FP), R0 | 145 MOVW 0(FP), R0 |
145 MOVW 4(FP), R1 | 146 MOVW 4(FP), R1 |
146 MOVW 8(FP), R2 | 147 MOVW 8(FP), R2 |
147 MOVW $SYS_setitimer, R7 | 148 MOVW $SYS_setitimer, R7 |
148 SWI $0 | 149 SWI $0 |
149 RET | 150 RET |
150 | 151 |
151 TEXT runtime·mincore(SB),7,$0 | 152 TEXT runtime·mincore(SB),NOSPLIT,$0 |
152 MOVW 0(FP), R0 | 153 MOVW 0(FP), R0 |
153 MOVW 4(FP), R1 | 154 MOVW 4(FP), R1 |
154 MOVW 8(FP), R2 | 155 MOVW 8(FP), R2 |
155 MOVW $SYS_mincore, R7 | 156 MOVW $SYS_mincore, R7 |
156 SWI $0 | 157 SWI $0 |
157 RET | 158 RET |
158 | 159 |
159 TEXT time·now(SB), 7, $32 | 160 TEXT time·now(SB), NOSPLIT, $32 |
160 MOVW $0, R0 // CLOCK_REALTIME | 161 MOVW $0, R0 // CLOCK_REALTIME |
161 MOVW $8(R13), R1 // timespec | 162 MOVW $8(R13), R1 // timespec |
162 MOVW $SYS_clock_gettime, R7 | 163 MOVW $SYS_clock_gettime, R7 |
163 SWI $0 | 164 SWI $0 |
164 ········ | 165 ········ |
165 MOVW 8(R13), R0 // sec | 166 MOVW 8(R13), R0 // sec |
166 MOVW 12(R13), R2 // nsec | 167 MOVW 12(R13), R2 // nsec |
167 ········ | 168 ········ |
168 MOVW R0, 0(FP) | 169 MOVW R0, 0(FP) |
169 MOVW $0, R1 | 170 MOVW $0, R1 |
170 MOVW R1, 4(FP) | 171 MOVW R1, 4(FP) |
171 MOVW R2, 8(FP) | 172 MOVW R2, 8(FP) |
172 RET····· | 173 RET····· |
173 | 174 |
174 // int64 nanotime(void) so really | 175 // int64 nanotime(void) so really |
175 // void nanotime(int64 *nsec) | 176 // void nanotime(int64 *nsec) |
176 TEXT runtime·nanotime(SB),7,$32 | 177 TEXT runtime·nanotime(SB),NOSPLIT,$32 |
177 MOVW $0, R0 // CLOCK_REALTIME | 178 MOVW $0, R0 // CLOCK_REALTIME |
178 MOVW $8(R13), R1 // timespec | 179 MOVW $8(R13), R1 // timespec |
179 MOVW $SYS_clock_gettime, R7 | 180 MOVW $SYS_clock_gettime, R7 |
180 SWI $0 | 181 SWI $0 |
181 ········ | 182 ········ |
182 MOVW 8(R13), R0 // sec | 183 MOVW 8(R13), R0 // sec |
183 MOVW 12(R13), R2 // nsec | 184 MOVW 12(R13), R2 // nsec |
184 ········ | 185 ········ |
185 MOVW $1000000000, R3 | 186 MOVW $1000000000, R3 |
186 MULLU R0, R3, (R1, R0) | 187 MULLU R0, R3, (R1, R0) |
187 MOVW $0, R4 | 188 MOVW $0, R4 |
188 ADD.S R2, R0 | 189 ADD.S R2, R0 |
189 ADC R4, R1 | 190 ADC R4, R1 |
190 | 191 |
191 MOVW 0(FP), R3 | 192 MOVW 0(FP), R3 |
192 MOVW R0, 0(R3) | 193 MOVW R0, 0(R3) |
193 MOVW R1, 4(R3) | 194 MOVW R1, 4(R3) |
194 RET | 195 RET |
195 | 196 |
196 // int32 futex(int32 *uaddr, int32 op, int32 val, | 197 // int32 futex(int32 *uaddr, int32 op, int32 val, |
197 // struct timespec *timeout, int32 *uaddr2, int32 val2); | 198 // struct timespec *timeout, int32 *uaddr2, int32 val2); |
198 TEXT runtime·futex(SB),7,$0 | 199 TEXT runtime·futex(SB),NOSPLIT,$0 |
199 MOVW 4(SP), R0 | 200 MOVW 4(SP), R0 |
200 MOVW 8(SP), R1 | 201 MOVW 8(SP), R1 |
201 MOVW 12(SP), R2 | 202 MOVW 12(SP), R2 |
202 MOVW 16(SP), R3 | 203 MOVW 16(SP), R3 |
203 MOVW 20(SP), R4 | 204 MOVW 20(SP), R4 |
204 MOVW 24(SP), R5 | 205 MOVW 24(SP), R5 |
205 MOVW $SYS_futex, R7 | 206 MOVW $SYS_futex, R7 |
206 SWI $0 | 207 SWI $0 |
207 RET | 208 RET |
208 | 209 |
209 | 210 |
210 // int32 clone(int32 flags, void *stack, M *mp, G *gp, void (*fn)(void)); | 211 // int32 clone(int32 flags, void *stack, M *mp, G *gp, void (*fn)(void)); |
211 TEXT runtime·clone(SB),7,$0 | 212 TEXT runtime·clone(SB),NOSPLIT,$0 |
212 MOVW flags+0(FP), R0 | 213 MOVW flags+0(FP), R0 |
213 MOVW stack+4(FP), R1 | 214 MOVW stack+4(FP), R1 |
214 MOVW $0, R2 // parent tid ptr | 215 MOVW $0, R2 // parent tid ptr |
215 MOVW $0, R3 // tls_val | 216 MOVW $0, R3 // tls_val |
216 MOVW $0, R4 // child tid ptr | 217 MOVW $0, R4 // child tid ptr |
217 MOVW $0, R5 | 218 MOVW $0, R5 |
218 | 219 |
219 // Copy mp, gp, fn off parent stack for use by child. | 220 // Copy mp, gp, fn off parent stack for use by child. |
220 // TODO(kaib): figure out which registers are clobbered by clone and avo
id stack copying | 221 // TODO(kaib): figure out which registers are clobbered by clone and avo
id stack copying |
221 MOVW $-16(R1), R1 | 222 MOVW $-16(R1), R1 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 | 265 |
265 MOVW $0, R0 | 266 MOVW $0, R0 |
266 MOVW R0, 4(R13) | 267 MOVW R0, 4(R13) |
267 BL runtime·exit1(SB) | 268 BL runtime·exit1(SB) |
268 | 269 |
269 // It shouldn't return | 270 // It shouldn't return |
270 MOVW $1234, R0 | 271 MOVW $1234, R0 |
271 MOVW $1005, R1 | 272 MOVW $1005, R1 |
272 MOVW R0, (R1) | 273 MOVW R0, (R1) |
273 | 274 |
274 TEXT runtime·sigaltstack(SB),7,$0 | 275 TEXT runtime·sigaltstack(SB),NOSPLIT,$0 |
275 MOVW 0(FP), R0 | 276 MOVW 0(FP), R0 |
276 MOVW 4(FP), R1 | 277 MOVW 4(FP), R1 |
277 MOVW $SYS_sigaltstack, R7 | 278 MOVW $SYS_sigaltstack, R7 |
278 SWI $0 | 279 SWI $0 |
279 MOVW $0xfffff001, R6 | 280 MOVW $0xfffff001, R6 |
280 CMP R6, R0 | 281 CMP R6, R0 |
281 MOVW.HI $0, R8 // crash on syscall failure | 282 MOVW.HI $0, R8 // crash on syscall failure |
282 MOVW.HI R8, (R8) | 283 MOVW.HI R8, (R8) |
283 RET | 284 RET |
284 | 285 |
285 TEXT runtime·sigtramp(SB),7,$24 | 286 TEXT runtime·sigtramp(SB),NOSPLIT,$24 |
286 // this might be called in external code context, | 287 // this might be called in external code context, |
287 // where g and m are not set. | 288 // where g and m are not set. |
288 // first save R0, because _cgo_load_gm will clobber it | 289 // first save R0, because _cgo_load_gm will clobber it |
289 MOVW R0, 4(R13) | 290 MOVW R0, 4(R13) |
290 MOVW _cgo_load_gm(SB), R0 | 291 MOVW _cgo_load_gm(SB), R0 |
291 CMP $0, R0 | 292 CMP $0, R0 |
292 BL.NE (R0) | 293 BL.NE (R0) |
293 | 294 |
294 CMP $0, m | 295 CMP $0, m |
295 BNE 4(PC) | 296 BNE 4(PC) |
(...skipping 15 matching lines...) Expand all Loading... |
311 MOVW R2, 12(R13) | 312 MOVW R2, 12(R13) |
312 MOVW R3, 16(R13) | 313 MOVW R3, 16(R13) |
313 | 314 |
314 BL runtime·sighandler(SB) | 315 BL runtime·sighandler(SB) |
315 | 316 |
316 // restore g | 317 // restore g |
317 MOVW 20(R13), g | 318 MOVW 20(R13), g |
318 | 319 |
319 RET | 320 RET |
320 | 321 |
321 TEXT runtime·rtsigprocmask(SB),7,$0 | 322 TEXT runtime·rtsigprocmask(SB),NOSPLIT,$0 |
322 MOVW 0(FP), R0 | 323 MOVW 0(FP), R0 |
323 MOVW 4(FP), R1 | 324 MOVW 4(FP), R1 |
324 MOVW 8(FP), R2 | 325 MOVW 8(FP), R2 |
325 MOVW 12(FP), R3 | 326 MOVW 12(FP), R3 |
326 MOVW $SYS_rt_sigprocmask, R7 | 327 MOVW $SYS_rt_sigprocmask, R7 |
327 SWI $0 | 328 SWI $0 |
328 RET | 329 RET |
329 | 330 |
330 TEXT runtime·rt_sigaction(SB),7,$0 | 331 TEXT runtime·rt_sigaction(SB),NOSPLIT,$0 |
331 MOVW 0(FP), R0 | 332 MOVW 0(FP), R0 |
332 MOVW 4(FP), R1 | 333 MOVW 4(FP), R1 |
333 MOVW 8(FP), R2 | 334 MOVW 8(FP), R2 |
334 MOVW 12(FP), R3 | 335 MOVW 12(FP), R3 |
335 MOVW $SYS_rt_sigaction, R7 | 336 MOVW $SYS_rt_sigaction, R7 |
336 SWI $0 | 337 SWI $0 |
337 RET | 338 RET |
338 | 339 |
339 TEXT runtime·sigreturn(SB),7,$0 | 340 TEXT runtime·sigreturn(SB),NOSPLIT,$0 |
340 MOVW $SYS_rt_sigreturn, R7 | 341 MOVW $SYS_rt_sigreturn, R7 |
341 SWI $0 | 342 SWI $0 |
342 RET | 343 RET |
343 | 344 |
344 TEXT runtime·usleep(SB),7,$12 | 345 TEXT runtime·usleep(SB),NOSPLIT,$12 |
345 MOVW usec+0(FP), R0 | 346 MOVW usec+0(FP), R0 |
346 MOVW R0, R1 | 347 MOVW R0, R1 |
347 MOVW $1000000, R2 | 348 MOVW $1000000, R2 |
348 DIV R2, R0 | 349 DIV R2, R0 |
349 MOD R2, R1 | 350 MOD R2, R1 |
350 MOVW R0, 4(SP) | 351 MOVW R0, 4(SP) |
351 MOVW R1, 8(SP) | 352 MOVW R1, 8(SP) |
352 MOVW $0, R0 | 353 MOVW $0, R0 |
353 MOVW $0, R1 | 354 MOVW $0, R1 |
354 MOVW $0, R2 | 355 MOVW $0, R2 |
355 MOVW $0, R3 | 356 MOVW $0, R3 |
356 MOVW $4(SP), R4 | 357 MOVW $4(SP), R4 |
357 MOVW $SYS_select, R7 | 358 MOVW $SYS_select, R7 |
358 SWI $0 | 359 SWI $0 |
359 RET | 360 RET |
360 | 361 |
361 // Use kernel version instead of native armcas in asm_arm.s. | 362 // Use kernel version instead of native armcas in asm_arm.s. |
362 // See ../sync/atomic/asm_linux_arm.s for details. | 363 // See ../sync/atomic/asm_linux_arm.s for details. |
363 TEXT cas<>(SB),7,$0 | 364 TEXT cas<>(SB),NOSPLIT,$0 |
364 MOVW $0xffff0fc0, PC | 365 MOVW $0xffff0fc0, PC |
365 | 366 |
366 TEXT runtime·cas(SB),7,$0 | 367 TEXT runtime·cas(SB),NOSPLIT,$0 |
367 MOVW valptr+0(FP), R2 | 368 MOVW valptr+0(FP), R2 |
368 MOVW old+4(FP), R0 | 369 MOVW old+4(FP), R0 |
369 casagain: | 370 casagain: |
370 MOVW new+8(FP), R1 | 371 MOVW new+8(FP), R1 |
371 BL cas<>(SB) | 372 BL cas<>(SB) |
372 BCC cascheck | 373 BCC cascheck |
373 MOVW $1, R0 | 374 MOVW $1, R0 |
374 RET | 375 RET |
375 cascheck: | 376 cascheck: |
376 // Kernel lies; double-check. | 377 // Kernel lies; double-check. |
377 MOVW valptr+0(FP), R2 | 378 MOVW valptr+0(FP), R2 |
378 MOVW old+4(FP), R0 | 379 MOVW old+4(FP), R0 |
379 MOVW 0(R2), R3 | 380 MOVW 0(R2), R3 |
380 CMP R0, R3 | 381 CMP R0, R3 |
381 BEQ casagain | 382 BEQ casagain |
382 MOVW $0, R0 | 383 MOVW $0, R0 |
383 RET | 384 RET |
384 | 385 |
385 TEXT runtime·casp(SB),7,$0 | 386 TEXT runtime·casp(SB),NOSPLIT,$0 |
386 B runtime·cas(SB) | 387 B runtime·cas(SB) |
387 | 388 |
388 TEXT runtime·osyield(SB),7,$0 | 389 TEXT runtime·osyield(SB),NOSPLIT,$0 |
389 MOVW $SYS_sched_yield, R7 | 390 MOVW $SYS_sched_yield, R7 |
390 SWI $0 | 391 SWI $0 |
391 RET | 392 RET |
392 | 393 |
393 TEXT runtime·sched_getaffinity(SB),7,$0 | 394 TEXT runtime·sched_getaffinity(SB),NOSPLIT,$0 |
394 MOVW 0(FP), R0 | 395 MOVW 0(FP), R0 |
395 MOVW 4(FP), R1 | 396 MOVW 4(FP), R1 |
396 MOVW 8(FP), R2 | 397 MOVW 8(FP), R2 |
397 MOVW $SYS_sched_getaffinity, R7 | 398 MOVW $SYS_sched_getaffinity, R7 |
398 SWI $0 | 399 SWI $0 |
399 RET | 400 RET |
400 | 401 |
401 // int32 runtime·epollcreate(int32 size) | 402 // int32 runtime·epollcreate(int32 size) |
402 TEXT runtime·epollcreate(SB),7,$0 | 403 TEXT runtime·epollcreate(SB),NOSPLIT,$0 |
403 MOVW 0(FP), R0 | 404 MOVW 0(FP), R0 |
404 MOVW $SYS_epoll_create, R7 | 405 MOVW $SYS_epoll_create, R7 |
405 SWI $0 | 406 SWI $0 |
406 RET | 407 RET |
407 | 408 |
408 // int32 runtime·epollcreate1(int32 flags) | 409 // int32 runtime·epollcreate1(int32 flags) |
409 TEXT runtime·epollcreate1(SB),7,$0 | 410 TEXT runtime·epollcreate1(SB),NOSPLIT,$0 |
410 MOVW 0(FP), R0 | 411 MOVW 0(FP), R0 |
411 MOVW $SYS_epoll_create1, R7 | 412 MOVW $SYS_epoll_create1, R7 |
412 SWI $0 | 413 SWI $0 |
413 RET | 414 RET |
414 | 415 |
415 // int32 runtime·epollctl(int32 epfd, int32 op, int32 fd, EpollEvent *ev) | 416 // int32 runtime·epollctl(int32 epfd, int32 op, int32 fd, EpollEvent *ev) |
416 TEXT runtime·epollctl(SB),7,$0 | 417 TEXT runtime·epollctl(SB),NOSPLIT,$0 |
417 MOVW 0(FP), R0 | 418 MOVW 0(FP), R0 |
418 MOVW 4(FP), R1 | 419 MOVW 4(FP), R1 |
419 MOVW 8(FP), R2 | 420 MOVW 8(FP), R2 |
420 MOVW 12(FP), R3 | 421 MOVW 12(FP), R3 |
421 MOVW $SYS_epoll_ctl, R7 | 422 MOVW $SYS_epoll_ctl, R7 |
422 SWI $0 | 423 SWI $0 |
423 RET | 424 RET |
424 | 425 |
425 // int32 runtime·epollwait(int32 epfd, EpollEvent *ev, int32 nev, int32 timeout) | 426 // int32 runtime·epollwait(int32 epfd, EpollEvent *ev, int32 nev, int32 timeout) |
426 TEXT runtime·epollwait(SB),7,$0 | 427 TEXT runtime·epollwait(SB),NOSPLIT,$0 |
427 MOVW 0(FP), R0 | 428 MOVW 0(FP), R0 |
428 MOVW 4(FP), R1 | 429 MOVW 4(FP), R1 |
429 MOVW 8(FP), R2 | 430 MOVW 8(FP), R2 |
430 MOVW 12(FP), R3 | 431 MOVW 12(FP), R3 |
431 MOVW $SYS_epoll_wait, R7 | 432 MOVW $SYS_epoll_wait, R7 |
432 SWI $0 | 433 SWI $0 |
433 RET | 434 RET |
434 | 435 |
435 // void runtime·closeonexec(int32 fd) | 436 // void runtime·closeonexec(int32 fd) |
436 TEXT runtime·closeonexec(SB),7,$0 | 437 TEXT runtime·closeonexec(SB),NOSPLIT,$0 |
437 MOVW 0(FP), R0 // fd | 438 MOVW 0(FP), R0 // fd |
438 MOVW $2, R1 // F_SETFD | 439 MOVW $2, R1 // F_SETFD |
439 MOVW $1, R2 // FD_CLOEXEC | 440 MOVW $1, R2 // FD_CLOEXEC |
440 MOVW $SYS_fcntl, R7 | 441 MOVW $SYS_fcntl, R7 |
441 SWI $0 | 442 SWI $0 |
442 RET | 443 RET |
LEFT | RIGHT |