summaryrefslogtreecommitdiff
path: root/libexec/ld.so/sparc64
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2001-09-24 16:25:01 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2001-09-24 16:25:01 +0000
commit18dfd9f2c855beb26aacc24ff593ffc3dfbfb032 (patch)
tree2461792dea50edda29326f7913a3784279ab071e /libexec/ld.so/sparc64
parentfd23968c29a87b0eec8e96d56d242f9bda88732f (diff)
dl_data is at the start of the stack, not after env. load loff.
Now _dl_boot starts correctly.
Diffstat (limited to 'libexec/ld.so/sparc64')
-rw-r--r--libexec/ld.so/sparc64/ldasm.S14
1 files changed, 6 insertions, 8 deletions
diff --git a/libexec/ld.so/sparc64/ldasm.S b/libexec/ld.so/sparc64/ldasm.S
index f86f4b2a312..ac4b903ceb5 100644
--- a/libexec/ld.so/sparc64/ldasm.S
+++ b/libexec/ld.so/sparc64/ldasm.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: ldasm.S,v 1.2 2001/09/23 00:14:56 drahn Exp $ */
+/* $OpenBSD: ldasm.S,v 1.3 2001/09/24 16:25:00 art Exp $ */
/* $NetBSD: rtld_start.S,v 1.5 2001/08/14 22:17:48 eeh Exp $ */
/*
@@ -109,14 +109,12 @@ _dl_start:
addx %l0, 16, %o1 ! envp = %l0 + 16 +
addx %o1, %l3, %o1 ! + argc
- ! XXX loff ???
+ subx %l0, ARGC, %o4 ! dl_data = sp
- mov %o1, %o4 ! %o3 = my_envp
-1:
- ldx [%o4 + 0], %l2 ! while ((*my_envp)
- subxcc %l2, %g0, %g0 ! != NULL)
- bnz 1b ! my_envp++;
- addx %o4, 8, %o4 ! %o4 == dynp
+ mov 0, %o3 ! dynp = 0
+
+ addx %o4, (7*8), %l2
+ ldx [%l2], %o2 ! loff = dl_data[AUX_base];
call _dl_boot ! _dl_boot(argv,envp,loff,dynp,dl_data)
nop