about summary refs log tree commit diff
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.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