summary refs log tree commit diff
path: root/ports/sysdeps/hppa/dl-trampoline.S
diff options
context:
space:
mode:
Diffstat (limited to 'ports/sysdeps/hppa/dl-trampoline.S')
-rw-r--r--ports/sysdeps/hppa/dl-trampoline.S288
1 files changed, 0 insertions, 288 deletions
diff --git a/ports/sysdeps/hppa/dl-trampoline.S b/ports/sysdeps/hppa/dl-trampoline.S
deleted file mode 100644
index 1a3b97b315..0000000000
--- a/ports/sysdeps/hppa/dl-trampoline.S
+++ /dev/null
@@ -1,288 +0,0 @@
-/* PLT trampolines. hppa version.
-   Copyright (C) 2005-2014 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* This code gets called via the .plt stub, and is used in
-   dl-runtime.c to call the `_dl_fixup' function and then redirect
-   to the address it returns. `_dl_fixup' takes two arguments, however
-   `_dl_profile_fixup' takes a number of parameters for use with
-   library auditing (LA).
-
-   WARNING: This template is also used by gcc's __cffc, and expects
-   that the "bl" for _dl_runtime_resolve exist at a particular offset.
-   Do not change this template without changing gcc, while the prefix
-   "bl" should fix everything so gcc finds the right spot, it will
-   slow down __cffc when it attempts to call fixup to resolve function
-   descriptor references. Please refer to gcc/gcc/config/pa/fptr.c
-
-   Enter with r19 = reloc offset, r20 = got-8, r21 = fixup ltp.  */
-
-	/* RELOCATION MARKER: bl to provide gcc's __cffc with fixup loc. */
-	.text
-	/* THIS CODE DOES NOT EXECUTE */
-	bl	_dl_fixup, %r2
-        .text
-        .global _dl_runtime_resolve
-        .type _dl_runtime_resolve,@function
-	cfi_startproc
-        .align 4
-_dl_runtime_resolve:
-        .PROC
-        .CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=3
-        .ENTRY
-        /* SAVE_RP says we do */
-        stw	%rp, -20(%sp)
-
-	/* Save static link register */
-	stw	%r29,-16(%sp)
- 	/* Save argument registers */
-	stw	%r26,-36(%sp)
-	stw	%r25,-40(%sp)
-	stw	%r24,-44(%sp)
-	stw	%r23,-48(%sp)
-
-	/* Build a call frame, and save structure pointer. */
-	copy	%sp, %r1	/* Copy previous sp */
-	/* Save function result address (on entry) */
-	stwm	%r28,128(%sp)
-	/* Fillin some frame info to follow ABI */
-	stw	%r1,-4(%sp)	/* Previous sp */
-	stw	%r21,-32(%sp)	/* PIC register value */
-
-	/* Save input floating point registers. This must be done
-	   in the new frame since the previous frame doesn't have
-	   enough space */
-	ldo	-56(%sp),%r1
-	fstd,ma	%fr4,-8(%r1)
-	fstd,ma	%fr5,-8(%r1)
-	fstd,ma	%fr6,-8(%r1)
-	fstd,ma	%fr7,-8(%r1)
-
- 	/* Set up args to fixup func, needs only two arguments  */
-	ldw	8+4(%r20),%r26		/* (1) got[1] == struct link_map */
-	copy	%r19,%r25		/* (2) reloc offset  */
-
- 	/* Call the real address resolver. */
-	bl	_dl_fixup,%rp
-	copy	%r21,%r19		/* set fixup func ltp */
-
-	/* Load up the returned func descriptor */
-	copy	%r28, %r22
-	copy	%r29, %r19
-
-	/* Reload arguments fp args */
-	ldo	-56(%sp),%r1
-	fldd,ma	-8(%r1),%fr4
-	fldd,ma	-8(%r1),%fr5
-	fldd,ma	-8(%r1),%fr6
-	fldd,ma	-8(%r1),%fr7
-
-	/* Adjust sp, and restore function result address*/
-	ldwm	-128(%sp),%r28
-
-	/* Reload static link register */
-	ldw	-16(%sp),%r29
-	/* Reload general args */
-	ldw	-36(%sp),%r26
-	ldw	-40(%sp),%r25
-	ldw	-44(%sp),%r24
-	ldw	-48(%sp),%r23
-
-	/* Jump to new function, but return to previous function */
-	bv	%r0(%r22)
-	ldw	-20(%sp),%rp
-        .EXIT
-        .PROCEND
-	cfi_endproc
-	.size   _dl_runtime_resolve, . - _dl_runtime_resolve
-
-        .text
-        .global _dl_runtime_profile
-        .type _dl_runtime_profile,@function
-	cfi_startproc
-        .align 4
-_dl_runtime_profile:
-        .PROC
-        .CALLINFO FRAME=192,CALLS,SAVE_RP,ENTRY_GR=3
-        .ENTRY
-
-        /* SAVE_RP says we do */
-        stw	%rp, -20(%sp)
-	/* Save static link register */
-	stw	%r29,-16(%sp)
-
-	/* Build a call frame, and save structure pointer. */
-	copy	%sp, %r1	/* Copy previous sp */
-	/* Save function result address (on entry) */
-	stwm	%r28,192(%sp)
-	/* Fillin some frame info to follow ABI */
-	stw	%r1,-4(%sp)	/* Previous sp */
-	stw	%r21,-32(%sp)	/* PIC register value */
-
-	/* Create La_hppa_retval */
-	/* -140, lrv_r28
-           -136, lrv_r29
-           -132, 4 byte pad
-           -128, lr_fr4 (8 bytes) */
-
-	/* Create save space for _dl_profile_fixup arguments
-	   -120, Saved reloc offset
-	   -116, Saved struct link_map
-	   -112, *framesizep */
-
-	/* Create La_hppa_regs */
-	/* 32-bit registers */
-	stw	%r26,-108(%sp)
-	stw	%r25,-104(%sp)
-	stw	%r24,-100(%sp)
-	stw	%r23,-96(%sp)
-	/* -92, 4 byte pad */
-	/* 64-bit floating point registers */
-	ldo	-88(%sp),%r1
-	fstd,ma	%fr4,8(%r1)
-	fstd,ma	%fr5,8(%r1)
-	fstd,ma	%fr6,8(%r1)
-	fstd,ma	%fr7,8(%r1)
-	/* 32-bit stack pointer and return register */
-	stw	%sp,-56(%sp)
-	stw	%r2,-52(%sp)
-
-
- 	/* Set up args to fixup func, needs five arguments  */
-	ldw	8+4(%r20),%r26		/* (1) got[1] == struct link_map */
-	stw	%r26,-116(%sp)		/* Save struct link_map */
-	copy	%r19,%r25		/* (2) reloc offset  */
-	stw	%r25,-120(%sp)		/* Save reloc offset */
-	copy    %rp,%r24		/* (3) profile_fixup needs rp */
-	ldo	-56(%sp),%r23		/* (4) La_hppa_regs */
-	ldo	-112(%sp), %r1
-	stw	%r1, -52(%sp)		/* (5) long int *framesizep */
-
- 	/* Call the real address resolver. */
-	bl	_dl_profile_fixup,%rp
-	copy	%r21,%r19		/* set fixup func ltp */
-
-	/* Load up the returned function descriptor */
-	copy	%r28, %r22
-	copy	%r29, %r19
-
-	/* Restore gr/fr/sp/rp */
-	ldw	-108(%sp),%r26
-	ldw	-104(%sp),%r25
-	ldw	-100(%sp),%r24
-	ldw	-96(%sp),%r23
-	/* -92, 4 byte pad, skip */
-	ldo	-88(%sp),%r1
-	fldd,ma	8(%r1),%fr4
-	fldd,ma	8(%r1),%fr5
-	fldd,ma	8(%r1),%fr6
-	fldd,ma	8(%r1),%fr7
-	ldw	-52(%sp),%rp
-
-	/* Reload static link register -(192+16) without adjusting stack */
-	ldw	-208(%sp),%r29
-
-	/* *framesizep is >= 0 if we have to run pltexit */
-	ldw	-112(%sp),%r28
-	cmpb,>>=,N %r0,%r28,L(cpe)
-
-	/* Adjust sp, and restore function result address*/
-	ldwm	-192(%sp),%r28
-	/* Jump to new function, but return to previous function */
-	bv	%r0(%r22)
-	ldw	-20(%sp),%rp
-	/* NO RETURN */
-
-L(nf):
-	/* Call the returned function descriptor */
-	bv	%r0(%r22)
-	nop
-	b,n	L(cont)
-
-L(cpe):
-	/* We are going to call the resolved function, but we have a
-	   stack frame in the middle. We use the value of framesize to
-	   guess how much extra frame we need, and how much frame to
-	   copy forward. */
-
-	/* Round to nearest multiple of 64 */
-	addi	63, %r28, %r28
-	depi	0, 27, 6, %r28
-
-	/* Calcualte start of stack copy */
-	ldo	-192(%sp),%r2
-
-	/* Increate the stack by *framesizep */
-	copy	%sp, %r1
-	add	%sp, %r28, %sp
-	/* Save stack pointer */
-	stw	%r1, -4(%sp)
-
-	/* Single byte copy of prevous stack onto newly allocated stack */
-1:	ldb	%r28(%r2), %r1
-	add	%r28, %sp, %r26
-	stb	%r1, 0(%r26)
-	addi,<	-1,%r28,%r28
-	b,n	1b
-
-	/* Retore r28 and r27 and r2 already points at -192(%sp) */
-	ldw	0(%r2),%r28
-	ldw	84(%r2),%r26
-
-	/* Calculate address of L(cont) */
-	b,l	L(nf),%r2
-	depwi 0,31,2,%r2
-L(cont):
-	/* Undo fake stack */
-	ldw	-4(%sp),%r1
-	copy	%r1, %sp
-
-	/* Arguments to _dl_call_pltexit */
-	ldw	-116(%sp), %r26		/* (1) got[1] == struct link_map */
-	ldw 	-120(%sp), %r25		/* (2) reloc offsets */
-	ldo	-56(%sp), %r24		/* (3) *La_hppa_regs */
-	ldo	-124(%sp), %r23		/* (4) *La_hppa_retval */
-
-	/* Fill *La_hppa_retval */
-	stw	%r28,-140(%sp)
-	stw	%r29,-136(%sp)
-	ldo	-128(%sp), %r1
-	fstd	%fr4,0(%r1)
-
-	/* Call _dl_call_pltexit */
-	bl	_dl_call_pltexit,%rp
-	nop
-
-	/* Restore *La_hppa_retval */
-	ldw	-140(%sp), %r28
-	ldw	-136(%sp), %r29
-	ldo	-128(%sp), %r1
-	fldd	0(%r1), %fr4
-
-	/* Unwind the stack */
-	ldo	192(%sp),%sp
-	/* Retore callers rp */
-        ldw -20(%sp),%rp
-	/* Return */
-	bv,n	0(%r2)
-        .EXIT
-        .PROCEND
-	cfi_endproc
-	.size   _dl_runtime_profile, . - _dl_runtime_profile
-