a0cdf6e4db3859db18b7e6dd963feae0b1390638
[riscv-tests.git] / mt / common / syscalls.S
1 .file 1 "syscalls.c"
2 .section .mdebug.abi64
3 .previous
4 .section .rodata.str1.8,"aMS",@progbits,1
5 .align 3
6 $LC0:
7 .ascii "0123456789abcdef\000"
8 .text
9 .align 2
10 .ent printnum
11 .type printnum, @function
12 printnum:
13 .frame x30,64,x1 # vars= 0, regs= 7/0, args= 0
14 .mask 0x03f00002,-8
15 .fmask 0x00000000,0
16 add x30,x30,-64
17 sd x22,32(x30)
18 sll x22,x7,32
19 srl x22,x22,32
20 sd x24,48(x30)
21 sd x23,40(x30)
22 sd x21,24(x30)
23 sd x20,16(x30)
24 sd x25,56(x30)
25 sd x1,8(x30)
26 move x23,x6
27 move x20,x4
28 move x21,x5
29 move x24,x9
30 bleu x22,x6,$L2
31 addw x8,x8,-1
32 move x25,x8
33 ble x8,x0,$L4
34 $L6:
35 addw x25,x25,-1
36 move x4,x24
37 move x5,x21
38 jalr x20
39 bne x25,x0,$L6
40 $L4:
41 lui x2,%hi($LC0)
42 add x2,x2,%lo($LC0)
43 remu x22,x23,x22
44 add x22,x22,x2
45 lb x4,0(x22)
46 move x5,x21
47 move x19,x20
48 ld x25,56(x30)
49 ld x24,48(x30)
50 ld x23,40(x30)
51 ld x22,32(x30)
52 ld x21,24(x30)
53 ld x20,16(x30)
54 ld x1,8(x30)
55 add x30,x30,64
56 jr x19
57 $L2:
58 addw x8,x8,-1
59 divu x6,x6,x22
60 jal printnum
61 j $L4
62 .end printnum
63 .size printnum, .-printnum
64 .align 2
65 .ent getuint
66 .type getuint, @function
67 getuint:
68 .frame x30,0,x1 # vars= 0, regs= 0/0, args= 0
69 .mask 0x00000000,0
70 .fmask 0x00000000,0
71 slt x2,x5,2
72 bne x2,x0,$L10
73 $L13:
74 ld x2,0(x4)
75 add x3,x2,8
76 sd x3,0(x4)
77 ld x2,0(x2)
78 ret
79 $L10:
80 bne x5,x0,$L13
81 ld x3,0(x4)
82 lwu x2,0(x3)
83 add x3,x3,8
84 sd x3,0(x4)
85 ret
86 .end getuint
87 .size getuint, .-getuint
88 .align 2
89 .globl putchar
90 .ent putchar
91 .type putchar, @function
92 putchar:
93 .frame x30,64,x1 # vars= 64, regs= 0/0, args= 0
94 .mask 0x00000000,0
95 .fmask 0x00000000,0
96 li x2,-1 # 0xffffffffffffffff
97 add x30,x30,-64
98 lui x3,%hi(buflen.1596)
99 beq x4,x2,$L21
100 lw x5,%lo(buflen.1596)(x3)
101 lui x2,%hi(buf.1595)
102 add x2,x2,%lo(buf.1595)
103 add x6,x2,x5
104 sb x4,0(x6)
105 addw x5,x5,1
106 li x4,64 # 0x40
107 sw x5,%lo(buflen.1596)(x3)
108 beq x5,x4,$L15
109 move x2,x0
110 add x30,x30,64
111 j x1
112 $L21:
113 lui x2,%hi(buf.1595)
114 add x2,x2,%lo(buf.1595)
115 $L15:
116 lw x4,%lo(buflen.1596)(x3)
117 li x5,4 # 0x4
118 sd x0,0(x30)
119 sd x0,8(x30)
120 sd x0,16(x30)
121 sd x0,24(x30)
122 sd x0,32(x30)
123 sd x0,40(x30)
124 sd x0,48(x30)
125 sd x0,56(x30)
126 sd x5,0(x30)
127 li x5,1 # 0x1
128 sd x5,8(x30)
129 sd x2,16(x30)
130 sd x4,24(x30)
131 fence
132 #APP
133 # 45 "syscalls.c" 1
134 mtpcr x2,x30,cr30
135 # 0 "" 2
136 #NO_APP
137 $L17:
138 #APP
139 # 46 "syscalls.c" 1
140 mfpcr x2,cr31
141 # 0 "" 2
142 #NO_APP
143 beq x2,x0,$L17
144 move x2,x0
145 sw x0,%lo(buflen.1596)(x3)
146 add x30,x30,64
147 j x1
148 .end putchar
149 .size putchar, .-putchar
150 .align 2
151 .globl exit
152 .ent exit
153 .type exit, @function
154 exit:
155 .frame x30,64,x1 # vars= 64, regs= 0/0, args= 0
156 .mask 0x00000000,0
157 .fmask 0x00000000,0
158 add x30,x30,-64
159 li x2,1 # 0x1
160 sd x0,0(x30)
161 sd x0,8(x30)
162 sd x0,16(x30)
163 sd x0,24(x30)
164 sd x0,32(x30)
165 sd x0,40(x30)
166 sd x0,48(x30)
167 sd x0,56(x30)
168 sd x2,0(x30)
169 sd x4,8(x30)
170 fence
171 #APP
172 # 12 "syscalls.c" 1
173 mtpcr x2,x30,cr30
174 # 0 "" 2
175 #NO_APP
176 $L23:
177 j $L23
178 .end exit
179 .size exit, .-exit
180 .align 2
181 .globl printstr
182 .ent printstr
183 .type printstr, @function
184 printstr:
185 .frame x30,80,x1 # vars= 64, regs= 1/0, args= 0
186 .mask 0x00000002,-8
187 .fmask 0x00000000,0
188 add x30,x30,-80
189 li x3,4 # 0x4
190 sd x0,0(x30)
191 sd x0,8(x30)
192 sd x0,16(x30)
193 sd x0,24(x30)
194 sd x0,32(x30)
195 sd x0,40(x30)
196 sd x0,48(x30)
197 sd x0,56(x30)
198 sd x3,0(x30)
199 li x3,1 # 0x1
200 sd x3,8(x30)
201 sd x1,72(x30)
202 sd x4,16(x30)
203 jal strlen
204 sd x2,24(x30)
205 fence
206 #APP
207 # 24 "syscalls.c" 1
208 mtpcr x2,x30,cr30
209 # 0 "" 2
210 #NO_APP
211 $L25:
212 #APP
213 # 25 "syscalls.c" 1
214 mfpcr x2,cr31
215 # 0 "" 2
216 #NO_APP
217 beq x2,x0,$L25
218 ld x1,72(x30)
219 add x30,x30,80
220 j x1
221 .end printstr
222 .size printstr, .-printstr
223 .align 2
224 .globl printhex
225 .ent printhex
226 .type printhex, @function
227 printhex:
228 .frame x30,48,x1 # vars= 32, regs= 1/0, args= 0
229 .mask 0x00000002,-8
230 .fmask 0x00000000,0
231 add x30,x30,-48
232 sd x1,40(x30)
233 add x2,x30,15
234 add x7,x30,-1
235 $L29:
236 and x3,x4,15
237 sltu x6,x3,10
238 li x5,87 # 0x57
239 beq x6,x0,$L28
240 li x5,48 # 0x30
241 $L28:
242 add x3,x5,x3
243 sb x3,0(x2)
244 add x2,x2,-1
245 srl x4,x4,4
246 bne x2,x7,$L29
247 move x4,x30
248 sb x0,16(x30)
249 jal printstr
250 ld x1,40(x30)
251 add x30,x30,48
252 j x1
253 .end printhex
254 .size printhex, .-printhex
255 .section .rodata.str1.8
256 .align 3
257 $LC1:
258 .ascii "(null)\000"
259 .text
260 .align 2
261 .globl vprintfmt
262 .ent vprintfmt
263 .type vprintfmt, @function
264 vprintfmt:
265 .frame x30,112,x1 # vars= 32, regs= 10/0, args= 0
266 .mask 0x2ff00002,-8
267 .fmask 0x00000000,0
268 add x30,x30,-112
269 sd x25,80(x30)
270 lui x25,%hi($L53)
271 sd x26,88(x30)
272 sd x24,72(x30)
273 sd x23,64(x30)
274 sd x22,56(x30)
275 sd x21,48(x30)
276 sd x20,40(x30)
277 sd x29,104(x30)
278 sd x27,96(x30)
279 sd x1,32(x30)
280 move x21,x4
281 move x20,x5
282 move x23,x6
283 sd x7,0(x30)
284 li x22,37 # 0x25
285 add x25,x25,%lo($L53)
286 li x24,-1 # 0xffffffffffffffff
287 lui x26,%hi($LC1)
288 j $L84
289 $L35:
290 beq x2,x0,$L32
291 move x5,x20
292 add x23,x23,1
293 jalr x21
294 $L84:
295 lbu x4,0(x23)
296 move x2,x4
297 bne x4,x22,$L35
298 ld x2,0(x30)
299 add x6,x23,1
300 move x7,x6
301 li x27,32 # 0x20
302 sd x0,8(x30)
303 li x3,-1 # 0xffffffffffffffff
304 li x29,-1 # 0xffffffffffffffff
305 move x5,x0
306 $L85:
307 lbu x4,0(x7)
308 add x23,x7,1
309 addw x8,x4,-35
310 and x9,x8,0xff
311 sltu x9,x9,86
312 bne x9,x0,$L90
313 $L38:
314 li x4,37 # 0x25
315 move x5,x20
316 sd x2,0(x30)
317 move x23,x6
318 jalr x21
319 j $L84
320 $L32:
321 ld x1,32(x30)
322 ld x29,104(x30)
323 ld x27,96(x30)
324 ld x26,88(x30)
325 ld x25,80(x30)
326 ld x24,72(x30)
327 ld x23,64(x30)
328 ld x22,56(x30)
329 ld x21,48(x30)
330 ld x20,40(x30)
331 add x30,x30,112
332 j x1
333 $L90:
334 and x8,x8,0xff
335 sll x8,x8,3
336 add x8,x25,x8
337 ld x8,0(x8)
338 j x8
339 .section .rodata
340 .align 3
341 .align 2
342 $L53:
343 .dword $L39
344 .dword $L38
345 .dword $L40
346 .dword $L38
347 .dword $L38
348 .dword $L38
349 .dword $L38
350 .dword $L41
351 .dword $L38
352 .dword $L38
353 .dword $L42
354 .dword $L43
355 .dword $L38
356 .dword $L74
357 .dword $L44
358 .dword $L44
359 .dword $L44
360 .dword $L44
361 .dword $L44
362 .dword $L44
363 .dword $L44
364 .dword $L44
365 .dword $L44
366 .dword $L38
367 .dword $L38
368 .dword $L38
369 .dword $L38
370 .dword $L38
371 .dword $L38
372 .dword $L38
373 .dword $L38
374 .dword $L38
375 .dword $L38
376 .dword $L38
377 .dword $L38
378 .dword $L38
379 .dword $L38
380 .dword $L38
381 .dword $L38
382 .dword $L38
383 .dword $L38
384 .dword $L38
385 .dword $L38
386 .dword $L38
387 .dword $L38
388 .dword $L38
389 .dword $L38
390 .dword $L38
391 .dword $L38
392 .dword $L38
393 .dword $L38
394 .dword $L38
395 .dword $L38
396 .dword $L38
397 .dword $L38
398 .dword $L38
399 .dword $L38
400 .dword $L38
401 .dword $L38
402 .dword $L38
403 .dword $L38
404 .dword $L38
405 .dword $L38
406 .dword $L38
407 .dword $L45
408 .dword $L46
409 .dword $L38
410 .dword $L38
411 .dword $L38
412 .dword $L38
413 .dword $L38
414 .dword $L38
415 .dword $L38
416 .dword $L47
417 .dword $L38
418 .dword $L38
419 .dword $L48
420 .dword $L49
421 .dword $L38
422 .dword $L38
423 .dword $L50
424 .dword $L38
425 .dword $L51
426 .dword $L38
427 .dword $L38
428 .dword $L52
429 .text
430 $L52:
431 move x4,x30
432 sd x2,0(x30)
433 jal getuint
434 move x6,x2
435 li x7,16 # 0x10
436 $L73:
437 move x4,x21
438 move x5,x20
439 move x8,x29
440 move x9,x27
441 jal printnum
442 j $L84
443 $L39:
444 li x4,1 # 0x1
445 move x7,x23
446 sd x4,8(x30)
447 j $L85
448 $L40:
449 move x5,x20
450 sd x2,0(x30)
451 jalr x21
452 j $L84
453 $L41:
454 lw x3,0(x2)
455 move x7,x23
456 add x2,x2,8
457 $L54:
458 bge x29,x0,$L85
459 move x29,x3
460 li x3,-1 # 0xffffffffffffffff
461 j $L85
462 $L42:
463 move x7,x23
464 li x27,45 # 0x2d
465 j $L85
466 $L43:
467 blt x29,x0,$L91
468 move x7,x23
469 j $L85
470 $L74:
471 move x7,x23
472 li x27,48 # 0x30
473 j $L85
474 $L44:
475 lb x8,1(x7)
476 addw x3,x4,-48
477 move x7,x23
478 addw x4,x8,-48
479 sltu x4,x4,10
480 beq x4,x0,$L54
481 $L55:
482 add x7,x7,1
483 lb x4,0(x7)
484 sllw x9,x3,1
485 sllw x3,x3,3
486 addw x3,x9,x3
487 addw x9,x4,-48
488 addw x3,x3,x8
489 sltu x9,x9,10
490 addw x3,x3,-48
491 move x8,x4
492 bne x9,x0,$L55
493 j $L54
494 $L45:
495 lw x4,0(x2)
496 add x2,x2,8
497 move x5,x20
498 sd x2,0(x30)
499 jalr x21
500 j $L84
501 $L46:
502 slt x3,x5,2
503 bne x3,x0,$L69
504 $L88:
505 add x3,x2,8
506 sd x3,0(x30)
507 ld x6,0(x2)
508 blt x6,x0,$L72
509 $L89:
510 li x7,10 # 0xa
511 j $L73
512 $L47:
513 addw x5,x5,1
514 move x7,x23
515 j $L85
516 $L48:
517 move x4,x30
518 sd x2,0(x30)
519 jal getuint
520 move x6,x2
521 li x7,8 # 0x8
522 j $L73
523 $L49:
524 sd x2,0(x30)
525 li x4,48 # 0x30
526 move x5,x20
527 jalr x21
528 li x4,120 # 0x78
529 move x5,x20
530 jalr x21
531 ld x2,0(x30)
532 li x7,16 # 0x10
533 add x3,x2,8
534 sd x3,0(x30)
535 ld x6,0(x2)
536 j $L73
537 $L50:
538 add x4,x2,8
539 sd x4,0(x30)
540 ld x2,0(x2)
541 sd x2,16(x30)
542 beq x2,x0,$L92
543 $L58:
544 ble x29,x0,$L59
545 li x2,45 # 0x2d
546 beq x27,x2,$L59
547 ld x4,16(x30)
548 move x5,x3
549 sd x3,24(x30)
550 jal strnlen
551 sllw x2,x2,0
552 subw x2,x29,x2
553 move x29,x2
554 ld x3,24(x30)
555 ble x2,x0,$L59
556 move x29,x2
557 $L60:
558 sd x3,24(x30)
559 move x4,x27
560 move x5,x20
561 addw x29,x29,-1
562 jalr x21
563 ld x3,24(x30)
564 bne x29,x0,$L60
565 $L59:
566 ld x2,16(x30)
567 lb x4,0(x2)
568 add x27,x2,1
569 beq x4,x0,$L62
570 $L80:
571 blt x3,x0,$L67
572 addw x2,x3,-1
573 move x3,x2
574 beq x2,x24,$L62
575 $L67:
576 ld x2,8(x30)
577 beq x2,x0,$L63
578 addw x2,x4,-32
579 sltu x2,x2,95
580 beq x2,x0,$L93
581 $L63:
582 sd x3,24(x30)
583 move x5,x20
584 jalr x21
585 ld x3,24(x30)
586 $L64:
587 lb x4,0(x27)
588 addw x29,x29,-1
589 add x27,x27,1
590 bne x4,x0,$L80
591 $L62:
592 ble x29,x0,$L84
593 $L79:
594 addw x29,x29,-1
595 li x4,32 # 0x20
596 move x5,x20
597 jalr x21
598 bne x29,x0,$L79
599 j $L84
600 $L51:
601 move x4,x30
602 sd x2,0(x30)
603 jal getuint
604 move x6,x2
605 li x7,10 # 0xa
606 j $L73
607 $L93:
608 sd x3,24(x30)
609 li x4,63 # 0x3f
610 move x5,x20
611 jalr x21
612 ld x3,24(x30)
613 j $L64
614 $L91:
615 move x7,x23
616 move x29,x0
617 j $L85
618 $L92:
619 add x2,x26,%lo($LC1)
620 sd x2,16(x30)
621 j $L58
622 $L72:
623 sd x6,24(x30)
624 li x4,45 # 0x2d
625 move x5,x20
626 jalr x21
627 ld x6,24(x30)
628 li x7,10 # 0xa
629 sub x6,zero,x6
630 j $L73
631 $L69:
632 bne x5,x0,$L88
633 lw x6,0(x2)
634 add x2,x2,8
635 sd x2,0(x30)
636 bge x6,x0,$L89
637 j $L72
638 .end vprintfmt
639 .size vprintfmt, .-vprintfmt
640 .align 2
641 .globl printf
642 .ent printf
643 .type printf, @function
644 printf:
645 .frame x30,96,x1 # vars= 16, regs= 1/0, args= 0
646 .mask 0x00000002,-72
647 .fmask 0x00000000,0
648 add x30,x30,-96
649 add x2,x30,40
650 move x3,x4
651 lui x4,%hi(putchar)
652 sd x5,40(x30)
653 sd x6,48(x30)
654 sd x7,56(x30)
655 add x4,x4,%lo(putchar)
656 move x5,x0
657 move x6,x3
658 move x7,x2
659 sd x1,24(x30)
660 sd x8,64(x30)
661 sd x9,72(x30)
662 sd x10,80(x30)
663 sd x11,88(x30)
664 sd x2,0(x30)
665 jal vprintfmt
666 li x4,-1 # 0xffffffffffffffff
667 jal putchar
668 ld x1,24(x30)
669 move x2,x0
670 add x30,x30,96
671 j x1
672 .end printf
673 .size printf, .-printf
674 .local buflen.1596
675 .comm buflen.1596,4,4
676 .local buf.1595
677 .comm buf.1595,64,8
678 .ident "GCC: (GNU) 4.6.1"