summaryrefslogtreecommitdiff
path: root/ldso/ldso/mips/resolve.S
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-05-02 13:36:53 +0000
committerEric Andersen <andersen@codepoet.org>2002-05-02 13:36:53 +0000
commit4a5a81ac165c040935a8807a580db49d381dc443 (patch)
tree7fcd5458f95399731b537e1cfd22538ee2d03c19 /ldso/ldso/mips/resolve.S
parent776eae615326f6439734b05fa39c335bf2dc681b (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.S23
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