source: trunk/libs/newlib/src/libgloss/mt/crt0.S @ 621

Last change on this file since 621 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# Startup Code for the Morpho mt
2
3# Create a label for the start of the eh_frame section.
4        .section .eh_frame
5__eh_frame_begin:
6
7        .section .text
8        .global _start
9_start:
10       
11        ;; Initialise the stack pointer
12        ldui    sp, #%hi16(__stack)
13        addui   sp, sp, #%lo16(__stack)
14        or      fp, sp, sp
15
16        ;; Zero the data space
17        ldui    r9, #%hi16(_edata)
18        addui   r9, r9, #%lo16(_edata)
19        ldui    r10, #%hi16(_end)
20        addui   r10, r10, #%lo16(_end)
21        addi    r5,  r0, #0
22
23.L0:   
24        stw     r5, r9, #0
25        addi    r9, r9, #4
26        or      r0, r0, r0      ; nop
27        brle    r9, r10, .L0
28        or      r0, r0, r0      ; nop
29
30        ;; Call global and static constructors
31        ldui    r10, #%hi16(_init)
32        addui   r10, r10, #%lo16(_init)
33        or      r0, r0, r0      ; nop
34        jal     r14, r10
35        or      r0, r0, r0      ; nop
36        ;;  Setup destructors to be called from exit.
37        ;;  (Just in case main never returns....)
38        ldui    r10, #%hi16(atexit)
39        addui   r10, r10, #%lo16(atexit)
40        ldui    r1, #%hi16(_fini)
41        addui   r1, r1, #%lo16(_fini)
42        or      r0, r0, r0      ; nop
43        jal     r14, r10
44        or      r0, r0, r0      ; nop
45
46        ;;  Initialise argc, argv and envp to empty
47        addi    r1, r0, #0
48        addi    r2, r0, #0
49        addi    r3, r0, #0
50
51        ;; Call main
52        ldui    r10, #%hi16(main)
53        addui   r10, r10, #%lo16(main)
54        or      r0, r0, r0      ; nop
55        jal     r14, r10
56        or      r0, r0, r0      ; nop
57
58        ;; Jump to exit
59        ldui    r10, #%hi16(exit)
60        addui   r10, r10, #%lo16(exit)
61        or      r0, r0, r0      ; nop
62        jal     r14, r10
63        or      r0, r0, r0      ; nop
Note: See TracBrowser for help on using the repository browser.