summaryrefslogtreecommitdiff
path: root/crt
diff options
context:
space:
mode:
authorrofl0r <retnyg@gmx.net>2012-11-09 23:36:55 +0100
committerrofl0r <retnyg@gmx.net>2012-11-13 19:12:25 +0100
commit1c8eb8bad791fe9d01d0d4ab77882db634fa933d (patch)
treed3faf83663c1383f7ea16a0e6c68b3e2f4cc968a /crt
parent7669d1e334e6b96455eece78da43bf830b93d697 (diff)
downloadmusl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.gz
musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.bz2
musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.xz
musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.zip
PPC port cleaned up, static linking works well now.
Diffstat (limited to 'crt')
-rw-r--r--crt/powerpc/crt1.s26
-rw-r--r--crt/ppc/crt1.S27
2 files changed, 26 insertions, 27 deletions
diff --git a/crt/powerpc/crt1.s b/crt/powerpc/crt1.s
new file mode 100644
index 00000000..7025430c
--- /dev/null
+++ b/crt/powerpc/crt1.s
@@ -0,0 +1,26 @@
+ .weak _init
+ .weak _fini
+ .global _start
+ .type _start, %function
+_start:
+ mr 9, 1 # Save the original stack pointer.
+ clrrwi 1, 1, 4 # Align the stack to 16 bytes.
+ lis 13, _SDA_BASE_@ha # r13 points to the small data area.
+ addi 13, 13, _SDA_BASE_@l
+ li 0, 0 # Zero the frame pointer.
+ stwu 1, -16(1) # The initial stack frame.
+ mtlr 0 # Clear the link register.
+ stw 0, 0(1) # And save it.
+ lis 3, main@ha # Get main() ...
+ addi 3, 3, main@l
+ lwz 4, 0(9) # and argc...
+ addi 5, 9, 4 # and argv ...
+ lis 6, _init@ha # and _init() ...
+ addi 6, 6, _init@l
+ lis 7, _fini@ha # and _fini() ...
+ addi 7, 7, _fini@l
+ li 8, 0 # ldso_fini == NULL
+ bl __libc_start_main # Let's go!
+ b . # Never gets here.
+ .end _start
+ .size _start, .-_start
diff --git a/crt/ppc/crt1.S b/crt/ppc/crt1.S
deleted file mode 100644
index abf64077..00000000
--- a/crt/ppc/crt1.S
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <bits/asm.h>
- .weak _init
- .weak _fini
- .global _start
- .type _start, %function
-_start:
- mr r9, r1 // Save the original stack pointer.
- clrrwi r1, r1, 4 // Align the stack to 16 bytes.
- lis r13, _SDA_BASE_@ha // r13 points to the small data area.
- addi r13, r13, _SDA_BASE_@l //
- li r0, 0 // Zero the frame pointer.
- stwu r1, -16(r1) // The initial stack frame.
- mtlr r0 // Clear the link register.
- stw r0, 0(r1) // And save it.
- lis r3, main@ha // Get main() ...
- addi r3, r3, main@l
- lwz r4, 0(r9) // and argc...
- addi r5, r9, 4 // and argv ...
- lis r6, _init@ha // and _init() ...
- addi r6, r6, _init@l
- lis r7, _fini@ha // and _fini() ...
- addi r7, r7, _fini@l
- li r8, 0 // ldso_fini == NULL
- bl __libc_start_main // Let's go!
- b . // Never gets here.
- .end _start
- .size _start, .-_start