summaryrefslogtreecommitdiff
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"
+);