|
|
1.1 ! root 1: ; Subroutines for calling unbound dynamic functions from within GDB for HPPA. ! 2: ; Copyright (C) 1994, 1995 Free Software Foundation, Inc. ! 3: ! 4: ; This file is part of GNU CC. ! 5: ! 6: ; GNU CC is free software; you can redistribute it and/or modify ! 7: ; it under the terms of the GNU General Public License as published by ! 8: ; the Free Software Foundation; either version 2, or (at your option) ! 9: ; any later version. ! 10: ! 11: ; GNU CC is distributed in the hope that it will be useful, ! 12: ; but WITHOUT ANY WARRANTY; without even the implied warranty of ! 13: ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 14: ; GNU General Public License for more details. ! 15: ! 16: ; You should have received a copy of the GNU General Public License ! 17: ; along with GNU CC; see the file COPYING. If not, write to ! 18: ; the Free Software Foundation, 59 Temple Place - Suite 330, ! 19: ; Boston, MA 02111-1307, USA. ! 20: ! 21: .SPACE $PRIVATE$ ! 22: .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31 ! 23: .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82 ! 24: .SPACE $TEXT$ ! 25: .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44 ! 26: .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY ! 27: .IMPORT $$dyncall,MILLICODE ! 28: ; gcc_compiled.: ! 29: .SPACE $TEXT$ ! 30: .SUBSPA $CODE$ ! 31: ! 32: ; Simply call with the address of the desired import stub in %r22 and ! 33: ; arguments in the normal place (%r26-%r23 and stack slots). ! 34: ; ! 35: .align 4 ! 36: .EXPORT __gcc_plt_call,ENTRY,PRIV_LEV=3,RTNVAL=GR ! 37: __gcc_plt_call ! 38: .PROC ! 39: .CALLINFO ! 40: .ENTRY ! 41: ; Our return address comes in %r31, not %r2! ! 42: stw %r31,-8(0,%r30) ! 43: ! 44: ; An inline version of dyncall so we don't have to worry ! 45: ; about long calls to millicode, PIC and other complexities. ! 46: bb,>=,n %r22,30,L$foo ! 47: depi 0,31,2,%r22 ! 48: ldw 4(%r22),%r19 ! 49: ldw 0(%r22),%r22 ! 50: L$foo ! 51: ldsid (%r22),%r1 ! 52: mtsp %r1,%sr0 ! 53: ble 0(%sr0,%r22) ! 54: copy %r31,%r2 ! 55: ldw -8(0,%r30),%r2 ! 56: ! 57: ; We're going to be returning to a stack address, so we ! 58: ; need to do an intra-space return. ! 59: ldsid (%rp),%r1 ! 60: mtsp %r1,%sr0 ! 61: be,n 0(%sr0,%rp) ! 62: .EXIT ! 63: .PROCEND
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.