about summary refs log tree commit diff
path: root/src/ldso
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 /src/ldso
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 'src/ldso')
-rw-r--r--src/ldso/powerpc/dlsym.s (renamed from src/ldso/ppc/dlsym.S)3
-rw-r--r--src/ldso/powerpc/start.s23
-rw-r--r--src/ldso/ppc/start.S22
3 files changed, 24 insertions, 24 deletions
diff --git a/src/ldso/ppc/dlsym.S b/src/ldso/powerpc/dlsym.s
index e36de10b..20796176 100644
--- a/src/ldso/ppc/dlsym.S
+++ b/src/ldso/powerpc/dlsym.s
@@ -1,9 +1,8 @@
-#include <bits/asm.h>
         .text
         .global dlsym
         .type   dlsym,@function
 dlsym:
-        mflr    r5                      // The return address is arg3.
+        mflr    5                      # The return address is arg3.
         b       __dlsym
         .end    dlsym
         .size   dlsym, .-dlsym
diff --git a/src/ldso/powerpc/start.s b/src/ldso/powerpc/start.s
new file mode 100644
index 00000000..d2060e3d
--- /dev/null
+++ b/src/ldso/powerpc/start.s
@@ -0,0 +1,23 @@
+# FIXME : does not work, the small data array needs to be relocated.
+# see elfspec_ppc.pdf, page 76-84
+        .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.
+        lwz     3, 0(9)               # and argc...
+        addi    4, 9, 4               # and argv ...
+        mtlr    0                      # Clear the link register.
+        # Go to the musl dynamic linker entry point.
+        bl      __dynlink
+        cmpi    4, 0, 3, 1            # Check for a 1.
+        bne     4, .                   # Stay here
+        mtlr    3                      # Set the link address...
+        li      3, 0
+        blr                             # and go.
+        .end    _start
+        .size   _start, .-_start
+
diff --git a/src/ldso/ppc/start.S b/src/ldso/ppc/start.S
deleted file mode 100644
index f3419824..00000000
--- a/src/ldso/ppc/start.S
+++ /dev/null
@@ -1,22 +0,0 @@
-#include <bits/asm.h>
-        .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.
-        lwz     r3, 0(r9)               // and argc...
-        addi    r4, r9, 4               // and argv ...
-        mtlr    r0                      // Clear the link register.
-        // Go to the musl dynamic linker entry point.
-        bl      __dynlink
-        cmpi    r4, 0, r3, 1            // Check for a 1.
-        bne     r4, .                   // Stay here
-        mtlr    r3                      // Set the link address...
-        li      r3, 0
-        blr                             // and go.
-        .end    _start
-        .size   _start, .-_start
-