diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-05-02 13:36:53 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-05-02 13:36:53 +0000 |
commit | 4a5a81ac165c040935a8807a580db49d381dc443 (patch) | |
tree | 7fcd5458f95399731b537e1cfd22538ee2d03c19 /ldso/ldso/mips/resolve.S | |
parent | 776eae615326f6439734b05fa39c335bf2dc681b (diff) |
Patch from Steven J. Hill <sjhill@realitydiluted.com>:
I am very pleased to announce that the MIPS dynamic linker/loader
for uClibc is now working. It works on big and little endian
platforms.
A few minor changes were needed to avoid breaking ldd, and since this
makes some non-trivial changes, I have tested on x86, arm, and powerpc
to be sure thoese arches didn't get broken. Excellent work Steven!
Diffstat (limited to 'ldso/ldso/mips/resolve.S')
-rw-r--r-- | ldso/ldso/mips/resolve.S | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/ldso/ldso/mips/resolve.S b/ldso/ldso/mips/resolve.S index b160b1cfb..b6dda82d7 100644 --- a/ldso/ldso/mips/resolve.S +++ b/ldso/ldso/mips/resolve.S @@ -1,4 +1,4 @@ -/* + /* * Linux dynamic resolving code for MIPS. Fixes up the GOT entry as * indicated in register t8 and jumps to the resolved address. Shamelessly * ripped from 'sysdeps/mips/dl-machine.h' in glibc-2.2.5. @@ -23,26 +23,19 @@ _dl_linux_resolve: addu $25, 8 # t9 ($25) now points at .cpload instruction .cpload $25 # Compute GP .set reorder - move $2, $31 # Save slot call pc - subu $29, 40 # Save arguments and sp value in stack - .cprestore 32 - sw $15, 36($29) + subu $29, 32 + .cprestore 28 sw $4, 16($29) sw $5, 20($29) - sw $6, 24($29) - sw $7, 28($29) + sw $15, 24($29) move $4, $24 - move $5, $15 - move $6, $3 - move $7, $2 + move $5, $3 jal _dl_linux_resolver - lw $31, 36($29) + lw $31, 24($29) lw $4, 16($29) lw $5, 20($29) - lw $6, 24($29) - lw $7, 28($29) - addu $29, 40 + addu $29, 32 move $25, $2 - jr $25 + jr $25 .size _dl_linux_resolve,.-_dl_linux_resolve .end _dl_linux_resolve |