diff options
Diffstat (limited to 'crt')
-rw-r--r-- | crt/microblaze/crt1.s | 16 | ||||
-rw-r--r-- | crt/microblaze/crti.s | 13 | ||||
-rw-r--r-- | crt/microblaze/crtn.s | 9 |
3 files changed, 38 insertions, 0 deletions
diff --git a/crt/microblaze/crt1.s b/crt/microblaze/crt1.s new file mode 100644 index 00000000..33090bba --- /dev/null +++ b/crt/microblaze/crt1.s @@ -0,0 +1,16 @@ +.weak _init +.weak _fini +.global _start +.align 2 +_start: + add r19, r0, r0 # Zero the frame pointer. + ori r5, r0, main # Get main() ... + lw r6, r0, r1 # Get argc... + addi r7, r1, 4 # ... and argv ... + ori r8, r0, _init # and _init() ... + ori r9, r0, _fini # and _fini() ... + add r10, r0, r0 # ldso_fini == NULL + andi r1, r1, -8 # align stack + addik r1, r1, -4*6 # Leave space for the args. + bri __libc_start_main # Let's go! + nop # Never gets here. diff --git a/crt/microblaze/crti.s b/crt/microblaze/crti.s new file mode 100644 index 00000000..ed1c2fa4 --- /dev/null +++ b/crt/microblaze/crti.s @@ -0,0 +1,13 @@ +.section .init +.global _init +.align 2 +_init: + addi r1, r1, -32 + swi r15, r1, 0 + +.section .fini +.global _fini +.align 2 +_fini: + addi r1, r1, -32 + swi r15, r1, 0 diff --git a/crt/microblaze/crtn.s b/crt/microblaze/crtn.s new file mode 100644 index 00000000..1e02c984 --- /dev/null +++ b/crt/microblaze/crtn.s @@ -0,0 +1,9 @@ +.section .init + lwi r15, r1, 0 + rtsd r15, 8 + addi r1, r1, 32 + +.section .fini + lwi r15, r1, 0 + rtsd r15, 8 + addi r1, r1, 32 |