Linux/HPPA specific ld.so startup code.
authordrepper <drepper>
Sun, 15 Oct 2000 03:33:33 +0000 (03:33 +0000)
committerdrepper <drepper>
Sun, 15 Oct 2000 03:33:33 +0000 (03:33 +0000)
sysdeps/hppa/elf/start.S [new file with mode: 0644]

diff --git a/sysdeps/hppa/elf/start.S b/sysdeps/hppa/elf/start.S
new file mode 100644 (file)
index 0000000..88bb790
--- /dev/null
@@ -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
+