diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-10-15 03:33:33 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-10-15 03:33:33 +0000 |
commit | 1f07ba01b99a8e2bb817e4e68888156280ac7436 (patch) | |
tree | 9fe545f5ceb79aa884f9255220bc4edfddd00891 | |
parent | aa4ee8e2274b32c446deda7e6c0701a1bae8d4ff (diff) | |
download | glibc-1f07ba01b99a8e2bb817e4e68888156280ac7436.tar glibc-1f07ba01b99a8e2bb817e4e68888156280ac7436.tar.gz glibc-1f07ba01b99a8e2bb817e4e68888156280ac7436.tar.bz2 glibc-1f07ba01b99a8e2bb817e4e68888156280ac7436.zip |
Linux/HPPA specific ld.so startup code.
-rw-r--r-- | sysdeps/hppa/elf/start.S | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/sysdeps/hppa/elf/start.S b/sysdeps/hppa/elf/start.S new file mode 100644 index 0000000000..88bb790be2 --- /dev/null +++ b/sysdeps/hppa/elf/start.S @@ -0,0 +1,58 @@ + + .text + + .align 4 + + .import main, code + .import $global$, data + .import __libc_start_main, code + .import _fini, code + .import _init, code + + + + + .globl _start + .export _start, ENTRY + +_start: + + .proc + .callinfo + + /* load main */ + ldil LP%main, %r26 + ldo RP%main(%r26), %r26 + + /* argc and argv should be in 25 and 24 */ + + /* Expand the stack to store the 5th through 7th args */ + ldo 64(%sp), %sp + + /* void (*rtld_fini) (void) (actually the 6th arg) */ + stw %r23, -56(%sp) + + /* void (*init) (void) */ + ldil LP%_init, %r23 + ldo RP%_init(%r23), %r23 + + /* void (*fini) (void) */ + ldil LP%_fini, %r22 + ldo RP%_fini(%r22), %r22 + stw %r22, -52(%sp) + + /* void *stack_end */ + stw %sp, -60(%sp) + + /* load global */ + ldil L%$global$, %dp + ldo R%$global$(%dp), %dp + + bl __libc_start_main,%r2 + nop + /* die horribly if it returned (it shouldn't) */ + iitlbp %r0,(%r0) + nop + + .procend + |