about summary refs log tree commit diff
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"
+);