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

Delta Between Two Patch Sets: src/pkg/runtime/sys_netbsd_386.s

Issue 12613044: code review 12613044: runtime: convert .s textflags from numbers to symbolic ... (Closed)
Left Patch Set: Created 11 years, 7 months ago
Right Patch Set: diff -r 06da2934c103 https://khr%40golang.org@code.google.com/p/go/ Created 11 years, 7 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:
Right: Side by side diff | Download
« no previous file with change/comment | « src/pkg/runtime/sys_linux_arm.s ('k') | src/pkg/runtime/sys_netbsd_amd64.s » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
(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 // System calls and other sys.stuff for 386, NetBSD 5 // System calls and other sys.stuff for 386, NetBSD
6 // /usr/src/sys/kern/syscalls.master for syscall numbers. 6 // /usr/src/sys/kern/syscalls.master for syscall numbers.
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 // Exit the entire program (like C exit) 12 // Exit the entire program (like C exit)
12 TEXT runtime·exit(SB),7,$-4 13 TEXT runtime·exit(SB),NOSPLIT,$-4
13 MOVL $1, AX 14 MOVL $1, AX
14 INT $0x80 15 INT $0x80
15 MOVL $0xf1, 0xf1 // crash 16 MOVL $0xf1, 0xf1 // crash
16 RET 17 RET
17 18
18 TEXT runtime·exit1(SB),7,$-4 19 TEXT runtime·exit1(SB),NOSPLIT,$-4
19 MOVL $310, AX // sys__lwp_exit 20 MOVL $310, AX // sys__lwp_exit
20 INT $0x80 21 INT $0x80
21 JAE 2(PC) 22 JAE 2(PC)
22 MOVL $0xf1, 0xf1 // crash 23 MOVL $0xf1, 0xf1 // crash
23 RET 24 RET
24 25
25 TEXT runtime·open(SB),7,$-4 26 TEXT runtime·open(SB),NOSPLIT,$-4
26 MOVL $5, AX 27 MOVL $5, AX
27 INT $0x80 28 INT $0x80
28 RET 29 RET
29 30
30 TEXT runtime·close(SB),7,$-4 31 TEXT runtime·close(SB),NOSPLIT,$-4
31 MOVL $6, AX 32 MOVL $6, AX
32 INT $0x80 33 INT $0x80
33 RET 34 RET
34 35
35 TEXT runtime·read(SB),7,$-4 36 TEXT runtime·read(SB),NOSPLIT,$-4
36 MOVL $3, AX 37 MOVL $3, AX
37 INT $0x80 38 INT $0x80
38 RET 39 RET
39 40
40 TEXT runtime·write(SB),7,$-4 41 TEXT runtime·write(SB),NOSPLIT,$-4
41 MOVL $4, AX // sys_write 42 MOVL $4, AX // sys_write
42 INT $0x80 43 INT $0x80
43 RET 44 RET
44 45
45 TEXT runtime·usleep(SB),7,$24 46 TEXT runtime·usleep(SB),NOSPLIT,$24
46 MOVL $0, DX 47 MOVL $0, DX
47 MOVL usec+0(FP), AX 48 MOVL usec+0(FP), AX
48 MOVL $1000000, CX 49 MOVL $1000000, CX
49 DIVL CX 50 DIVL CX
50 MOVL AX, 12(SP) // tv_sec - l32 51 MOVL AX, 12(SP) // tv_sec - l32
51 MOVL $0, 16(SP) // tv_sec - h32 52 MOVL $0, 16(SP) // tv_sec - h32
52 MOVL $1000, AX 53 MOVL $1000, AX
53 MULL DX 54 MULL DX
54 MOVL AX, 20(SP) // tv_nsec 55 MOVL AX, 20(SP) // tv_nsec
55 56
56 MOVL $0, 0(SP) 57 MOVL $0, 0(SP)
57 LEAL 12(SP), AX 58 LEAL 12(SP), AX
58 MOVL AX, 4(SP) // arg 1 - rqtp 59 MOVL AX, 4(SP) // arg 1 - rqtp
59 MOVL $0, 8(SP) // arg 2 - rmtp 60 MOVL $0, 8(SP) // arg 2 - rmtp
60 MOVL $430, AX // sys_nanosleep 61 MOVL $430, AX // sys_nanosleep
61 INT $0x80 62 INT $0x80
62 RET 63 RET
63 64
64 TEXT runtime·raise(SB),7,$12 65 TEXT runtime·raise(SB),NOSPLIT,$12
65 MOVL $311, AX // sys__lwp_self 66 MOVL $311, AX // sys__lwp_self
66 INT $0x80 67 INT $0x80
67 MOVL $0, 0(SP) 68 MOVL $0, 0(SP)
68 MOVL AX, 4(SP) // arg 1 - target 69 MOVL AX, 4(SP) // arg 1 - target
69 MOVL sig+0(FP), AX 70 MOVL sig+0(FP), AX
70 MOVL AX, 8(SP) // arg 2 - signo 71 MOVL AX, 8(SP) // arg 2 - signo
71 MOVL $318, AX // sys__lwp_kill 72 MOVL $318, AX // sys__lwp_kill
72 INT $0x80 73 INT $0x80
73 RET 74 RET
74 75
75 TEXT runtime·mmap(SB),7,$36 76 TEXT runtime·mmap(SB),NOSPLIT,$36
76 LEAL arg0+0(FP), SI 77 LEAL arg0+0(FP), SI
77 LEAL 4(SP), DI 78 LEAL 4(SP), DI
78 CLD 79 CLD
79 MOVSL // arg 1 - addr 80 MOVSL // arg 1 - addr
80 MOVSL // arg 2 - len 81 MOVSL // arg 2 - len
81 MOVSL // arg 3 - prot 82 MOVSL // arg 3 - prot
82 MOVSL // arg 4 - flags 83 MOVSL // arg 4 - flags
83 MOVSL // arg 5 - fd 84 MOVSL // arg 5 - fd
84 MOVL $0, AX 85 MOVL $0, AX
85 STOSL // arg 6 - pad 86 STOSL // arg 6 - pad
86 MOVSL // arg 7 - offset 87 MOVSL // arg 7 - offset
87 MOVL $0, AX // top 32 bits of file offset 88 MOVL $0, AX // top 32 bits of file offset
88 STOSL 89 STOSL
89 MOVL $197, AX // sys_mmap 90 MOVL $197, AX // sys_mmap
90 INT $0x80 91 INT $0x80
91 RET 92 RET
92 93
93 TEXT runtime·munmap(SB),7,$-4 94 TEXT runtime·munmap(SB),NOSPLIT,$-4
94 MOVL $73, AX // sys_munmap 95 MOVL $73, AX // sys_munmap
95 INT $0x80 96 INT $0x80
96 JAE 2(PC) 97 JAE 2(PC)
97 MOVL $0xf1, 0xf1 // crash 98 MOVL $0xf1, 0xf1 // crash
98 RET 99 RET
99 100
100 TEXT runtime·madvise(SB),7,$-4 101 TEXT runtime·madvise(SB),NOSPLIT,$-4
101 MOVL $75, AX // sys_madvise 102 MOVL $75, AX // sys_madvise
102 INT $0x80 103 INT $0x80
103 // ignore failure - maybe pages are locked 104 // ignore failure - maybe pages are locked
104 RET 105 RET
105 106
106 TEXT runtime·setitimer(SB),7,$-4 107 TEXT runtime·setitimer(SB),NOSPLIT,$-4
107 MOVL $425, AX // sys_setitimer 108 MOVL $425, AX // sys_setitimer
108 INT $0x80 109 INT $0x80
109 RET 110 RET
110 111
111 // func now() (sec int64, nsec int32) 112 // func now() (sec int64, nsec int32)
112 TEXT time·now(SB), 7, $32 113 TEXT time·now(SB), NOSPLIT, $32
113 LEAL 12(SP), BX 114 LEAL 12(SP), BX
114 MOVL $0, 4(SP) // arg 1 - clock_id 115 MOVL $0, 4(SP) // arg 1 - clock_id
115 MOVL BX, 8(SP) // arg 2 - tp 116 MOVL BX, 8(SP) // arg 2 - tp
116 MOVL $427, AX // sys_clock_gettime 117 MOVL $427, AX // sys_clock_gettime
117 INT $0x80 118 INT $0x80
118 119
119 MOVL 12(SP), AX // sec - l32 120 MOVL 12(SP), AX // sec - l32
120 MOVL AX, sec+0(FP) 121 MOVL AX, sec+0(FP)
121 MOVL 16(SP), AX // sec - h32 122 MOVL 16(SP), AX // sec - h32
122 MOVL AX, sec+4(FP) 123 MOVL AX, sec+4(FP)
123 124
124 MOVL 20(SP), BX // nsec 125 MOVL 20(SP), BX // nsec
125 MOVL BX, nsec+8(FP) 126 MOVL BX, nsec+8(FP)
126 RET 127 RET
127 128
128 // int64 nanotime(void) so really 129 // int64 nanotime(void) so really
129 // void nanotime(int64 *nsec) 130 // void nanotime(int64 *nsec)
130 TEXT runtime·nanotime(SB),7,$32 131 TEXT runtime·nanotime(SB),NOSPLIT,$32
131 LEAL 12(SP), BX 132 LEAL 12(SP), BX
132 MOVL $0, 4(SP) // arg 1 - clock_id 133 MOVL $0, 4(SP) // arg 1 - clock_id
133 MOVL BX, 8(SP) // arg 2 - tp 134 MOVL BX, 8(SP) // arg 2 - tp
134 MOVL $427, AX // sys_clock_gettime 135 MOVL $427, AX // sys_clock_gettime
135 INT $0x80 136 INT $0x80
136 137
137 MOVL 16(SP), CX // sec - h32 138 MOVL 16(SP), CX // sec - h32
138 IMULL $1000000000, CX 139 IMULL $1000000000, CX
139 140
140 MOVL 12(SP), AX // sec - l32 141 MOVL 12(SP), AX // sec - l32
141 MOVL $1000000000, BX 142 MOVL $1000000000, BX
142 MULL BX // result in dx:ax 143 MULL BX // result in dx:ax
143 144
144 MOVL 20(SP), BX // nsec 145 MOVL 20(SP), BX // nsec
145 ADDL BX, AX 146 ADDL BX, AX
146 ADCL CX, DX // add high bits with carry 147 ADCL CX, DX // add high bits with carry
147 148
148 MOVL ret+0(FP), DI 149 MOVL ret+0(FP), DI
149 MOVL AX, 0(DI) 150 MOVL AX, 0(DI)
150 MOVL DX, 4(DI) 151 MOVL DX, 4(DI)
151 RET 152 RET
152 153
153 TEXT runtime·getcontext(SB),7,$-4 154 TEXT runtime·getcontext(SB),NOSPLIT,$-4
154 MOVL $307, AX // sys_getcontext 155 MOVL $307, AX // sys_getcontext
155 INT $0x80 156 INT $0x80
156 JAE 2(PC) 157 JAE 2(PC)
157 MOVL $0xf1, 0xf1 // crash 158 MOVL $0xf1, 0xf1 // crash
158 RET 159 RET
159 160
160 TEXT runtime·sigprocmask(SB),7,$-4 161 TEXT runtime·sigprocmask(SB),NOSPLIT,$-4
161 MOVL $293, AX // sys_sigprocmask 162 MOVL $293, AX // sys_sigprocmask
162 INT $0x80 163 INT $0x80
163 JAE 2(PC) 164 JAE 2(PC)
164 MOVL $0xf1, 0xf1 // crash 165 MOVL $0xf1, 0xf1 // crash
165 RET 166 RET
166 167
167 TEXT runtime·sigreturn_tramp(SB),7,$0 168 TEXT runtime·sigreturn_tramp(SB),NOSPLIT,$0
168 LEAL 140(SP), AX // Load address of ucontext 169 LEAL 140(SP), AX // Load address of ucontext
169 MOVL AX, 4(SP) 170 MOVL AX, 4(SP)
170 MOVL $308, AX // sys_setcontext 171 MOVL $308, AX // sys_setcontext
171 INT $0x80 172 INT $0x80
172 MOVL $-1, 4(SP) // Something failed... 173 MOVL $-1, 4(SP) // Something failed...
173 MOVL $1, AX // sys_exit 174 MOVL $1, AX // sys_exit
174 INT $0x80 175 INT $0x80
175 176
176 TEXT runtime·sigaction(SB),7,$24 177 TEXT runtime·sigaction(SB),NOSPLIT,$24
177 LEAL arg0+0(FP), SI 178 LEAL arg0+0(FP), SI
178 LEAL 4(SP), DI 179 LEAL 4(SP), DI
179 CLD 180 CLD
180 MOVSL // arg 1 - sig 181 MOVSL // arg 1 - sig
181 MOVSL // arg 2 - act 182 MOVSL // arg 2 - act
182 MOVSL // arg 3 - oact 183 MOVSL // arg 3 - oact
183 LEAL runtime·sigreturn_tramp(SB), AX 184 LEAL runtime·sigreturn_tramp(SB), AX
184 STOSL // arg 4 - tramp 185 STOSL // arg 4 - tramp
185 MOVL $2, AX 186 MOVL $2, AX
186 STOSL // arg 5 - vers 187 STOSL // arg 5 - vers
187 MOVL $340, AX // sys___sigaction_sigtramp 188 MOVL $340, AX // sys___sigaction_sigtramp
188 INT $0x80 189 INT $0x80
189 JAE 2(PC) 190 JAE 2(PC)
190 MOVL $0xf1, 0xf1 // crash 191 MOVL $0xf1, 0xf1 // crash
191 RET 192 RET
192 193
193 TEXT runtime·sigtramp(SB),7,$44 194 TEXT runtime·sigtramp(SB),NOSPLIT,$44
194 get_tls(CX) 195 get_tls(CX)
195 196
196 // check that m exists 197 // check that m exists
197 MOVL m(CX), BX 198 MOVL m(CX), BX
198 CMPL BX, $0 199 CMPL BX, $0
199 JNE 6(PC) 200 JNE 6(PC)
200 MOVL signo+0(FP), BX 201 MOVL signo+0(FP), BX
201 MOVL BX, 0(SP) 202 MOVL BX, 0(SP)
202 MOVL $runtime·badsignal(SB), AX 203 MOVL $runtime·badsignal(SB), AX
203 CALL AX 204 CALL AX
(...skipping 18 matching lines...) Expand all
222 223
223 CALL runtime·sighandler(SB) 224 CALL runtime·sighandler(SB)
224 225
225 // restore g 226 // restore g
226 get_tls(CX) 227 get_tls(CX)
227 MOVL 20(SP), BX 228 MOVL 20(SP), BX
228 MOVL BX, g(CX) 229 MOVL BX, g(CX)
229 RET 230 RET
230 231
231 // int32 lwp_create(void *context, uintptr flags, void *lwpid); 232 // int32 lwp_create(void *context, uintptr flags, void *lwpid);
232 TEXT runtime·lwp_create(SB),7,$16 233 TEXT runtime·lwp_create(SB),NOSPLIT,$16
233 MOVL $0, 0(SP) 234 MOVL $0, 0(SP)
234 MOVL context+0(FP), AX 235 MOVL context+0(FP), AX
235 MOVL AX, 4(SP) // arg 1 - context 236 MOVL AX, 4(SP) // arg 1 - context
236 MOVL flags+4(FP), AX 237 MOVL flags+4(FP), AX
237 MOVL AX, 8(SP) // arg 2 - flags 238 MOVL AX, 8(SP) // arg 2 - flags
238 MOVL lwpid+8(FP), AX 239 MOVL lwpid+8(FP), AX
239 MOVL AX, 12(SP) // arg 3 - lwpid 240 MOVL AX, 12(SP) // arg 3 - lwpid
240 MOVL $309, AX // sys__lwp_create 241 MOVL $309, AX // sys__lwp_create
241 INT $0x80 242 INT $0x80
242 JCC 2(PC) 243 JCC 2(PC)
243 NEGL AX 244 NEGL AX
244 RET 245 RET
245 246
246 TEXT runtime·lwp_tramp(SB),7,$0 247 TEXT runtime·lwp_tramp(SB),NOSPLIT,$0
247 248
248 // Set FS to point at m->tls 249 // Set FS to point at m->tls
249 LEAL m_tls(BX), BP 250 LEAL m_tls(BX), BP
250 PUSHAL // save registers 251 PUSHAL // save registers
251 PUSHL BP 252 PUSHL BP
252 CALL runtime·settls(SB) 253 CALL runtime·settls(SB)
253 POPL AX 254 POPL AX
254 POPAL 255 POPAL
255 256
256 // Now segment is established. Initialize m, g. 257 // Now segment is established. Initialize m, g.
(...skipping 10 matching lines...) Expand all
267 CALL runtime·emptyfunc(SB) 268 CALL runtime·emptyfunc(SB)
268 POPAL 269 POPAL
269 270
270 // Call fn 271 // Call fn
271 CALL SI 272 CALL SI
272 273
273 CALL runtime·exit1(SB) 274 CALL runtime·exit1(SB)
274 MOVL $0x1234, 0x1005 275 MOVL $0x1234, 0x1005
275 RET 276 RET
276 277
277 TEXT runtime·sigaltstack(SB),7,$-8 278 TEXT runtime·sigaltstack(SB),NOSPLIT,$-8
278 MOVL $281, AX // sys___sigaltstack14 279 MOVL $281, AX // sys___sigaltstack14
279 MOVL new+4(SP), BX 280 MOVL new+4(SP), BX
280 MOVL old+8(SP), CX 281 MOVL old+8(SP), CX
281 INT $0x80 282 INT $0x80
282 CMPL AX, $0xfffff001 283 CMPL AX, $0xfffff001
283 JLS 2(PC) 284 JLS 2(PC)
284 INT $3 285 INT $3
285 RET 286 RET
286 287
287 TEXT runtime·setldt(SB),7,$8 288 TEXT runtime·setldt(SB),NOSPLIT,$8
288 // Under NetBSD we set the GS base instead of messing with the LDT. 289 // Under NetBSD we set the GS base instead of messing with the LDT.
289 MOVL 16(SP), AX // tls0 290 MOVL 16(SP), AX // tls0
290 MOVL AX, 0(SP) 291 MOVL AX, 0(SP)
291 CALL runtime·settls(SB) 292 CALL runtime·settls(SB)
292 RET 293 RET
293 294
294 TEXT runtime·settls(SB),7,$16 295 TEXT runtime·settls(SB),NOSPLIT,$16
295 // adjust for ELF: wants to use -8(GS) and -4(GS) for g and m 296 // adjust for ELF: wants to use -8(GS) and -4(GS) for g and m
296 MOVL base+0(FP), CX 297 MOVL base+0(FP), CX
297 ADDL $8, CX 298 ADDL $8, CX
298 MOVL $0, 0(SP) // syscall gap 299 MOVL $0, 0(SP) // syscall gap
299 MOVL CX, 4(SP) // arg 1 - ptr 300 MOVL CX, 4(SP) // arg 1 - ptr
300 MOVL $317, AX // sys__lwp_setprivate 301 MOVL $317, AX // sys__lwp_setprivate
301 INT $0x80 302 INT $0x80
302 JCC 2(PC) 303 JCC 2(PC)
303 MOVL $0xf1, 0xf1 // crash 304 MOVL $0xf1, 0xf1 // crash
304 RET 305 RET
305 306
306 TEXT runtime·osyield(SB),7,$-4 307 TEXT runtime·osyield(SB),NOSPLIT,$-4
307 MOVL $350, AX // sys_sched_yield 308 MOVL $350, AX // sys_sched_yield
308 INT $0x80 309 INT $0x80
309 RET 310 RET
310 311
311 TEXT runtime·lwp_park(SB),7,$-4 312 TEXT runtime·lwp_park(SB),NOSPLIT,$-4
312 MOVL $434, AX // sys__lwp_park 313 MOVL $434, AX // sys__lwp_park
313 INT $0x80 314 INT $0x80
314 RET 315 RET
315 316
316 TEXT runtime·lwp_unpark(SB),7,$-4 317 TEXT runtime·lwp_unpark(SB),NOSPLIT,$-4
317 MOVL $321, AX // sys__lwp_unpark 318 MOVL $321, AX // sys__lwp_unpark
318 INT $0x80 319 INT $0x80
319 RET 320 RET
320 321
321 TEXT runtime·lwp_self(SB),7,$-4 322 TEXT runtime·lwp_self(SB),NOSPLIT,$-4
322 MOVL $311, AX // sys__lwp_self 323 MOVL $311, AX // sys__lwp_self
323 INT $0x80 324 INT $0x80
324 RET 325 RET
325 326
326 TEXT runtime·sysctl(SB),7,$28 327 TEXT runtime·sysctl(SB),NOSPLIT,$28
327 LEAL arg0+0(FP), SI 328 LEAL arg0+0(FP), SI
328 LEAL 4(SP), DI 329 LEAL 4(SP), DI
329 CLD 330 CLD
330 MOVSL // arg 1 - name 331 MOVSL // arg 1 - name
331 MOVSL // arg 2 - namelen 332 MOVSL // arg 2 - namelen
332 MOVSL // arg 3 - oldp 333 MOVSL // arg 3 - oldp
333 MOVSL // arg 4 - oldlenp 334 MOVSL // arg 4 - oldlenp
334 MOVSL // arg 5 - newp 335 MOVSL // arg 5 - newp
335 MOVSL // arg 6 - newlen 336 MOVSL // arg 6 - newlen
336 MOVL $202, AX // sys___sysctl 337 MOVL $202, AX // sys___sysctl
337 INT $0x80 338 INT $0x80
338 JCC 3(PC) 339 JCC 3(PC)
339 NEGL AX 340 NEGL AX
340 RET 341 RET
341 MOVL $0, AX 342 MOVL $0, AX
342 RET 343 RET
343 344
344 GLOBL runtime·tlsoffset(SB),$4 345 GLOBL runtime·tlsoffset(SB),$4
LEFTRIGHT

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