diff options
author | Richard Pennington <rich@pennware.com> | 2012-11-09 23:32:57 +0100 |
---|---|---|
committer | rofl0r <retnyg@gmx.net> | 2012-11-13 18:15:10 +0100 |
commit | 7669d1e334e6b96455eece78da43bf830b93d697 (patch) | |
tree | 6649acfaa61ec6780498b55fa8015ca4f7a6cdae /src/ldso | |
parent | 1e717ea3d2a864e00e507f1a70a892c551955f1b (diff) | |
download | musl-7669d1e334e6b96455eece78da43bf830b93d697.tar.gz musl-7669d1e334e6b96455eece78da43bf830b93d697.tar.bz2 musl-7669d1e334e6b96455eece78da43bf830b93d697.tar.xz musl-7669d1e334e6b96455eece78da43bf830b93d697.zip |
import preliminary ppc work by rdp.
Diffstat (limited to 'src/ldso')
-rw-r--r-- | src/ldso/ppc/dlsym.S | 9 | ||||
-rw-r--r-- | src/ldso/ppc/start.S | 22 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/ldso/ppc/dlsym.S b/src/ldso/ppc/dlsym.S new file mode 100644 index 00000000..e36de10b --- /dev/null +++ b/src/ldso/ppc/dlsym.S @@ -0,0 +1,9 @@ +#include <bits/asm.h> + .text + .global dlsym + .type dlsym,@function +dlsym: + mflr r5 // The return address is arg3. + b __dlsym + .end dlsym + .size dlsym, .-dlsym diff --git a/src/ldso/ppc/start.S b/src/ldso/ppc/start.S new file mode 100644 index 00000000..f3419824 --- /dev/null +++ b/src/ldso/ppc/start.S @@ -0,0 +1,22 @@ +#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 + |