diff options
author | rofl0r <retnyg@gmx.net> | 2012-11-09 23:36:55 +0100 |
---|---|---|
committer | rofl0r <retnyg@gmx.net> | 2012-11-13 19:12:25 +0100 |
commit | 1c8eb8bad791fe9d01d0d4ab77882db634fa933d (patch) | |
tree | d3faf83663c1383f7ea16a0e6c68b3e2f4cc968a /src/ldso | |
parent | 7669d1e334e6b96455eece78da43bf830b93d697 (diff) | |
download | musl-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 '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.s | 23 | ||||
-rw-r--r-- | src/ldso/ppc/start.S | 22 |
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 - |