summaryrefslogtreecommitdiff
path: root/arch/or1k/crt_arch.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/or1k/crt_arch.h')
-rw-r--r--arch/or1k/crt_arch.h28
1 files changed, 17 insertions, 11 deletions
diff --git a/arch/or1k/crt_arch.h b/arch/or1k/crt_arch.h
index 0f381d2d..84415561 100644
--- a/arch/or1k/crt_arch.h
+++ b/arch/or1k/crt_arch.h
@@ -1,11 +1,17 @@
-__asm__("\
-.global _start \n\
-.align 4 \n\
-_start: \n\
- l.ori r3, r1, 0 \n\
- l.addi r2, r0, -8 \n\
- l.and r1, r1, r2 \n\
- l.addi r1, r1, -8 \n\
- l.jal __cstart \n\
- l.ori r2, r0, 0 \n\
-");
+__asm__(
+".global " START " \n"
+".align 4 \n"
+START ": \n"
+" l.jal 1f \n"
+" l.ori r3, r1, 0 \n"
+".weak _DYNAMIC \n"
+".hidden _DYNAMIC \n"
+" .word _DYNAMIC-. \n"
+"1: l.lwz r4, 0(r9) \n"
+" l.add r4, r4, r9 \n"
+" l.addi r2, r0, -8 \n"
+" l.and r1, r1, r2 \n"
+" l.addi r1, r1, -16 \n"
+" l.jal " START "_c \n"
+" l.ori r2, r0, 0 \n"
+);