about summary refs log tree commit diff
path: root/arch/powerpc/crt_arch.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/crt_arch.h')
-rw-r--r--arch/powerpc/crt_arch.h31
1 files changed, 19 insertions, 12 deletions
diff --git a/arch/powerpc/crt_arch.h b/arch/powerpc/crt_arch.h
index 8cc53d98..ec3cd29e 100644
--- a/arch/powerpc/crt_arch.h
+++ b/arch/powerpc/crt_arch.h
@@ -1,12 +1,19 @@
-__asm__("\
-.global _start \n\
-.type   _start, %function \n\
-_start: \n\
-	mr 3, 1 \n\
-	clrrwi 1, 1, 4 \n\
-	li 0, 0 \n\
-	stwu 1, -16(1) \n\
-	mtlr 0 \n\
-	stw 0, 0(1) \n\
-	bl __cstart \n\
-");        
+__asm__(
+".global " START " \n"
+".type   " START ", %function \n"
+START ": \n"
+"	bl 1f \n"
+".weak _DYNAMIC \n"
+".hidden _DYNAMIC \n"
+"	.long _DYNAMIC-. \n"
+"1:	mflr 4 \n"
+"	lwz 3, 0(4) \n"
+"	add 4, 3, 4 \n"
+"	mr 3, 1 \n"
+"	clrrwi 1, 1, 4 \n"
+"	li 0, 0 \n"
+"	stwu 1, -16(1) \n"
+"	mtlr 0 \n"
+"	stw 0, 0(1) \n"
+"	bl " START "_c \n"
+);