diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-11-14 14:01:39 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-11-14 14:01:39 -0500 |
commit | c6d441e3a246370d9c459396ec22b096db93850e (patch) | |
tree | fa3d4a4ca03531ceab9e60abb50e37780fce60ed /src/ldso | |
parent | c4a35f8c2a4b1a7e62a4b9e5b2748fb4fbcace79 (diff) | |
parent | 1c8eb8bad791fe9d01d0d4ab77882db634fa933d (diff) | |
download | musl-c6d441e3a246370d9c459396ec22b096db93850e.tar.gz |
Merge remote-tracking branch 'ppc-port/ppc-squashed'
Diffstat (limited to 'src/ldso')
-rw-r--r-- | src/ldso/powerpc/dlsym.s | 8 | ||||
-rw-r--r-- | src/ldso/powerpc/start.s | 23 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/ldso/powerpc/dlsym.s b/src/ldso/powerpc/dlsym.s new file mode 100644 index 00000000..20796176 --- /dev/null +++ b/src/ldso/powerpc/dlsym.s @@ -0,0 +1,8 @@ + .text + .global dlsym + .type dlsym,@function +dlsym: + 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 + |