summaryrefslogtreecommitdiff
path: root/gnu/egcs/gcc/config/pa/ee_fp.asm
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2002-03-16 00:37:09 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2002-03-16 00:37:09 +0000
commitba2481205d2fee3b7a0478b14f741130eddb6122 (patch)
treeaa67dc888c84f6f30a3d9b3abb86190eb77aad35 /gnu/egcs/gcc/config/pa/ee_fp.asm
parent8f9e886c9b78bd6b6fc6afb9ab8bc7ce3daea000 (diff)
semi-current config from gcc, seems to work better for us too; espie@ ok
Diffstat (limited to 'gnu/egcs/gcc/config/pa/ee_fp.asm')
-rw-r--r--gnu/egcs/gcc/config/pa/ee_fp.asm274
1 files changed, 0 insertions, 274 deletions
diff --git a/gnu/egcs/gcc/config/pa/ee_fp.asm b/gnu/egcs/gcc/config/pa/ee_fp.asm
deleted file mode 100644
index ad08acb686b..00000000000
--- a/gnu/egcs/gcc/config/pa/ee_fp.asm
+++ /dev/null
@@ -1,274 +0,0 @@
-; Subroutines for out of line prologues and epilogues on for the HPPA
-; Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-; This file is part of GNU CC.
-
-; GNU CC is free software; you can redistribute it and/or modify
-; it under the terms of the GNU General Public License as published by
-; the Free Software Foundation; either version 2, or (at your option)
-; any later version.
-
-; GNU CC 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 General Public License for more details.
-
-; You should have received a copy of the GNU General Public License
-; along with GNU CC; see the file COPYING. If not, write to
-; the Free Software Foundation, 59 Temple Place - Suite 330,
-; Boston, MA 02111-1307, USA.
-
- .SPACE $PRIVATE$
- .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
- .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
- .SPACE $TEXT$
- .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
- .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
- .SUBSPA $MILLICODE$,QUAD=0,ALIGN=8,ACCESS=44,SORT=8
-
-
-; This is an out-of-line prologue.
-;
-; It performs the following operations:
-;
-; * Saves the return pointer at sp - 20
-;
-; * Creates a new stack frame (sp'), size of the frame is passed in %r21
-;
-; * The old stack pointer is saved at sp (frame pointer version only).
-;
-; * Saves grs (passed in low 16 bits of %r22 into the stack frame
-; at sp' + local_fsize (passed in %r19).
-;
-; * Saves frs (passed in high 16 bits of %r22) into the stack
-; frame at sp' + local_fsize (passed in %r19).
-;
-; * Sets up a frame pointer (in %r3) (frame pointer version only).
-;
-; * Returns to the instruction _immediately_ after the call to
-; this function.
-
- .SPACE $TEXT$
- .SUBSPA $MILLICODE$
- .EXPORT __outline_prologue_fp,MILLICODE
- .align 32
-__outline_prologue_fp
- .PROC
- .CALLINFO FRAME=0,NO_CALLS
- .ENTRY
- copy %r30,%r20
-
- ; Subtract 4 from our return pointer so that we return to
- ; the right location.
- ldo -4(%r31),%r31
-
- ; Save off %r2
- stw %r2,-20(%r30)
-
- ; Make our new frame.
- add %r21,%r30,%r30
-
- ; Save our old stack pointer.
- stw %r20,0(%r20)
-
- ; Add in local_fsize to our frame pointer so we do register
- ; saves into the right place
- add %r20,%r19,%r20
-
- ; %r22 tells us what registers we need to save. The upper half
- ; is for fp registers, the lower half for integer registers.
- ; We put the lower half in %r1 and the upper half into %r22
- ; for later use.
- extru %r22,31,16,%r1
- extrs %r22,15,16,%r22
-
- ; %r1 now olds a value 0-18 which corresponds to the number
- ; of grs we need to save. We need to reverse that value so
- ; we can just into the table and straight-line execute to the
- ; end of the gr saves.
- comb,= %r0,%r1,L$0002
- subi 18,%r1,%r1
- blr,n %r1,%r0
- b,n L$0002
- stws,ma %r18,4(%r20)
- nop
- stws,ma %r17,4(%r20)
- nop
- stws,ma %r16,4(%r20)
- nop
- stws,ma %r15,4(%r20)
- nop
- stws,ma %r14,4(%r20)
- nop
- stws,ma %r13,4(%r20)
- nop
- stws,ma %r12,4(%r20)
- nop
- stws,ma %r11,4(%r20)
- nop
- stws,ma %r10,4(%r20)
- nop
- stws,ma %r9,4(%r20)
- nop
- stws,ma %r8,4(%r20)
- nop
- stws,ma %r7,4(%r20)
- nop
- stws,ma %r6,4(%r20)
- nop
- stws,ma %r5,4(%r20)
- nop
- stws,ma %r4,4(%r20)
- nop
- stws,ma %r3,4(%r20)
- nop
-L$0002
- ; All gr saves are done. Align the temporary frame pointer and
- ; do the fr saves.
- ldo 7(%r20),%r20
- depi 0,31,3,%r20
-
- comb,= %r0,%r22,L$0003
- subi 21,%r22,%r22
- blr,n %r22,%r0
- b,n L$0003
- fstws,ma %fr21,8(%r20)
- nop
- fstws,ma %fr20,8(%r20)
- nop
- fstws,ma %fr19,8(%r20)
- nop
- fstws,ma %fr18,8(%r20)
- nop
- fstws,ma %fr17,8(%r20)
- nop
- fstws,ma %fr16,8(%r20)
- nop
- fstws,ma %fr15,8(%r20)
- nop
- fstws,ma %fr14,8(%r20)
- nop
- fstws,ma %fr13,8(%r20)
- nop
- fstws,ma %fr12,8(%r20)
- nop
-L$0003
- ; Return, setting up a frame pointer in the delay slot
- bv %r0(%r31)
- sub %r30,%r21,%r3
- .EXIT
- .PROCEND
-
-
-; This is an out-of-line epilogue. It's operation is basically the reverse
-; of the out-of-line prologue.
-
- .EXPORT __outline_epilogue_fp,MILLICODE
- .align 32
-__outline_epilogue_fp
- .PROC
- .CALLINFO FRAME=0,NO_CALLS
- .ENTRY
- ; Make a copy of our frame pointer into %r20
- copy %r3,%r20
-
- ; Subtract 4 from our return pointer so that we return to
- ; the right location.
- ldo -4(%r31),%r31
-
- ; Reload %r2
- ; First save off %r2
- ldw -20(%r20),%r2
-
- ; Load our old stack pointer, save it in %r21.
- ldw 0(%r20),%r21
-
- ; Add in local_fsize (%r19) to the frame pointer to find
- ; the saved registers.
- add %r20,%r19,%r20
-
- ; %r22 tells us what registers we need to restore. The upper half
- ; is for fp registers, the lower half for integer registers.
- ; We put the lower half in %r1 and the upper half into %r22
- ; for later use.
- extru %r22,31,16,%r1
- extrs %r22,15,16,%r22
-
- ; %r1 now olds a value 0-18 which corresponds to the number
- ; of grs we need to restore. We need to reverse that value so
- ; we can just into the table and straight-line execute to the
- ; end of the gr restore.
- comb,= %r0,%r1,L$0006
- subi 18,%r1,%r1
- blr,n %r1,%r0
- b,n L$0006
- ldws,ma 4(%r20),%r18
- nop
- ldws,ma 4(%r20),%r17
- nop
- ldws,ma 4(%r20),%r16
- nop
- ldws,ma 4(%r20),%r15
- nop
- ldws,ma 4(%r20),%r14
- nop
- ldws,ma 4(%r20),%r13
- nop
- ldws,ma 4(%r20),%r12
- nop
- ldws,ma 4(%r20),%r11
- nop
- ldws,ma 4(%r20),%r10
- nop
- ldws,ma 4(%r20),%r9
- nop
- ldws,ma 4(%r20),%r8
- nop
- ldws,ma 4(%r20),%r7
- nop
- ldws,ma 4(%r20),%r6
- nop
- ldws,ma 4(%r20),%r5
- nop
- ldws,ma 4(%r20),%r4
- nop
- ldws,ma 4(%r20),%r3
- nop
-L$0006
- ; All gr restore are done. Align the temporary frame pointer and
- ; do the fr restore.
- ldo 7(%r20),%r20
- depi 0,31,3,%r20
-
- comb,= %r0,%r22,L$0007
- subi 21,%r22,%r22
- blr,n %r22,%r0
- b,n L$0007
- fldws,ma 8(%r20),%fr21
- nop
- fldws,ma 8(%r20),%fr20
- nop
- fldws,ma 8(%r20),%fr19
- nop
- fldws,ma 8(%r20),%fr18
- nop
- fldws,ma 8(%r20),%fr17
- nop
- fldws,ma 8(%r20),%fr16
- nop
- fldws,ma 8(%r20),%fr15
- nop
- fldws,ma 8(%r20),%fr14
- nop
- fldws,ma 8(%r20),%fr13
- nop
- fldws,ma 8(%r20),%fr12
- nop
-L$0007
- ; Return and deallocate our frame.
- bv %r0(%r31)
- copy %r21,%r30
- .EXIT
- .PROCEND
-
-