source: trunk/libs/newlib/src/libgloss/sparc/crt0-701.S @ 661

Last change on this file since 661 was 444, checked in by satin@…, 7 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 1.3 KB
Line 
1/* crt0.S for the sparclet 701.
2
3   At the moment, all the necessary syscalls are here.
4   Convention has them in a separate file but libgloss is still in
5   too much flux.  */
6
7        .text
8
9        .global start
10start:
11
12! zero bss
13
14        sethi %hi(_end), %o1
15        or %o1, %lo(_end), %o1
16        sethi %hi(_edata), %o0
17        or %o0, %lo (_edata), %o0
18        sub %o1, %o0, %o1
19Lzero_bss:
20        subcc %o1, 4, %o1
21        clr [%o0]
22        bne Lzero_bss
23        add %o0, 4, %o0
24
25! set up argc, argv, envp (?)
26
27        ld [%sp+64], %o0
28        sll %o0, 2, %o2
29        add %o2, 4, %o2
30        add %sp, 68, %o1
31        add %o1, %o2, %o2
32        sethi %hi(_environ), %o3
33        st %o2, [%o3+%lo(_environ)]
34
35! call main, exit
36
37        call _main
38        sub %sp, 32, %sp
39        call _exit
40        nop
41
42! void _exit (int rc)
43
44        .global __exit
45__exit:
46        mov 1, %g1
47        ta 0
48! If that does not work, just loop forever.
49Lloop_forever:
50        b Lloop_forever
51        nop
52
53! int _open (char *, int)
54
55        .global _open
56_open:
57        mov 5, %g1
58        ta 0
59        bcc Lnoerr
60        nop
61        b Lcerror
62        nop
63
64! int _close (int)
65
66        .global _close
67_close:
68        mov 6, %g1
69        ta 0
70        bcc Lnoerr
71        nop
72        b Lcerror
73        nop
74
75! int read (int, char *, int)
76
77        .global _read
78_read:
79        mov 3, %g1
80        ta 0
81        bcc Lnoerr
82        nop
83        b Lcerror
84        nop
85
86! int write (int, char *, int)
87
88        .global _write
89_write:
90        mov 4, %g1
91        ta 0
92        bcc Lnoerr
93        nop
94        b Lcerror
95        nop
96
97Lnoerr:
98        retl
99        nop
100
101Lcerror:
102        sethi %hi(__impure_ptr), %g1
103        st %o0, [%g1+%lo(__impure_ptr)]
104        retl
105        mov -1, %o0
Note: See TracBrowser for help on using the repository browser.