#include <sys/syscall.h>
#include <machine/asm.h>
#define _LOCORE
#include <machine/frame.h>
#include <machine/vmparam.h>
#undef _LOCORE
.import $global$, data
ENTRY(_dl_start,32)
copy r3, r1
copy sp, r3
stwm r1, HPPA_FRAME_SIZE+16*4(sp)
stw arg0, HPPA_FRAME_ARG(0)(r3)
bl 1f, r19
depi 0, 31, 2, r19
1: addil L'$global$ - ($PIC_pcrel$0 - 8), r19
ldo R'$global$ - ($PIC_pcrel$0 - 12)(r1), r19
bl 1f, arg2
depi 0, 31, 2, arg2
1: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8), arg2
ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(r1), arg2
stw arg2, HPPA_FRAME_ARG(1)(r3)
ldi -1, dp
ldw 0(arg0), arg0
ldo 4(r3), arg1
bl _dl_boot_bind, rp
ldo -4(arg0), arg0
ldw HPPA_FRAME_ARG(1)(r3), arg1
ldw HPPA_FRAME_ARG(0)(r3), arg3
ldw 0(r19), arg2
sub arg1, arg2, arg2
ldw 0(arg3), arg0
ldw 8(arg3), arg1
bl _dl_boot, rp
ldo 4(r3), arg3
ldw HPPA_FRAME_ARG(0)(r3), arg0
addil LT'_dl_dtors_plabel, r19
ldw RT'_dl_dtors_plabel(r1), arg1
ldw 0(arg1), arg1
ldo HPPA_FRAME_SIZE(r3), sp
copy r0, rp
bv r0(ret0)
ldwm -HPPA_FRAME_SIZE(sp), r3
EXIT(_dl_start)
.section .data
.align 4
_dl_dtors_plabel:
.word P%_dl_dtors
.previous
LEAF_ENTRY(_hppa_dl_set_dp)
bv r0(rp)
copy arg0, r27
EXIT(_hppa_dl_set_dp)
b _dl_bind
ENTRY(_dl_bind_start,32)
copy r3, r1
copy sp, r3
stwm r1, HPPA_FRAME_SIZE(sp)
stw rp, HPPA_FRAME_CRP(r3)
stw arg0, HPPA_FRAME_ARG(0)(r3)
stw arg1, HPPA_FRAME_ARG(1)(r3)
stw arg2, HPPA_FRAME_ARG(2)(r3)
stw arg3, HPPA_FRAME_ARG(3)(r3)
stw t1, 4(r3)
stw ret0, 8(r3)
stw ret1, 12(r3)
ldw 12(r20), arg0
copy r19, arg1
bl _dl_bind, rp
copy r21, r19
copy ret0, r21
copy ret1, r19
ldw HPPA_FRAME_ARG(0)(r3), arg0
ldw HPPA_FRAME_ARG(1)(r3), arg1
ldw HPPA_FRAME_ARG(2)(r3), arg2
ldw HPPA_FRAME_ARG(3)(r3), arg3
ldw 4(r3), t1
ldw 8(r3), ret0
ldw 12(r3), ret1
ldw HPPA_FRAME_CRP(r3), rp
ldo HPPA_FRAME_SIZE(r3), sp
bv r0(r21)
ldwm -HPPA_FRAME_SIZE(sp), r3
EXIT(_dl_bind_start)
.end