1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
.text
.align 2
.set noreorder
.global __start
__start:
.global _start
_start:
clr $fp /* clear frame pointer */
br $gp,.Lstart /* set global pointer */
.Lstart:
ldgp $gp, 0($gp)
/* prepare to call main */
ldl $16, 0($sp) /* argc / a0 */
lda $17, 8($sp) /* argv / a1 */
addq $16, 1, $18 /* argp / a2 */
s8addq $18, $17, $18 /* (8*(argc+1))+argv -> argp */
stq $18, environ
#ifdef WANT_DYNAMIC
/* in v0 ($0) is the ld.so _fini pointer */
mov $0, $19 /* mov v0(dynload) to a3 */
jsr $26, dyn_start
#else
jsr $26, main
#endif
mov $0, $16
jsr $26, exit /* YES, CALL! for threads and atexit ! (+4 byte) */
|