1 /* Copyright (C) 2005 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library; if not, write to the Free 16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 17 02111-1307 USA. */ 18 19 #ifndef _LINK_H 20 # error "Never include <bits/link.h> directly; use <link.h> instead." 21 #endif 22 23 #include <sgidefs.h> 24 25 #if _MIPS_SIM == _ABIO32 26 27 /* Registers for entry into PLT on MIPS. */ 28 typedef struct La_mips_32_regs 29 { 30 uint32_t lr_reg[4]; /* $a0 through $a3 */ 31 double lr_fpreg[2]; /* $f12 and $f14 */ 32 uint32_t lr_ra; 33 uint32_t lr_sp; 34 } La_mips_32_regs; 35 36 /* Return values for calls from PLT on MIPS. */ 37 typedef struct La_mips_32_retval 38 { 39 uint32_t lrv_v0; 40 uint32_t lrv_v1; 41 double lrv_f0; 42 double lrv_f2; 43 } La_mips_32_retval; 44 45 #else 46 47 typedef struct La_mips_64_regs 48 { 49 uint64_t lr_reg[8]; /* $a0 through $a7 */ 50 double lr_fpreg[8]; /* $f12 throgh $f19 */ 51 uint64_t lr_ra; 52 uint64_t lr_sp; 53 } La_mips_64_regs; 54 55 /* Return values for calls from PLT on MIPS. */ 56 typedef struct La_mips_64_retval 57 { 58 uint64_t lrv_v0; 59 uint64_t lrv_v1; 60 double lrv_f0; 61 double lrv_f2; 62 } La_mips_64_retval; 63 64 #endif 65 66 __BEGIN_DECLS 67 68 #if _MIPS_SIM == _ABIO32 69 70 extern Elf32_Addr la_mips_o32_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx, 71 uintptr_t *__refcook, 72 uintptr_t *__defcook, 73 La_mips_32_regs *__regs, 74 unsigned int *__flags, 75 const char *__symname, 76 long int *__framesizep); 77 extern unsigned int la_mips_o32_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx, 78 uintptr_t *__refcook, 79 uintptr_t *__defcook, 80 const La_mips_32_regs *__inregs, 81 La_mips_32_retval *__outregs, 82 const char *symname); 83 84 #elif _MIPS_SIM == _ABIN32 85 86 extern Elf32_Addr la_mips_n32_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx, 87 uintptr_t *__refcook, 88 uintptr_t *__defcook, 89 La_mips_64_regs *__regs, 90 unsigned int *__flags, 91 const char *__symname, 92 long int *__framesizep); 93 extern unsigned int la_mips_n32_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx, 94 uintptr_t *__refcook, 95 uintptr_t *__defcook, 96 const La_mips_64_regs *__inregs, 97 La_mips_64_retval *__outregs, 98 const char *symname); 99 100 #else 101 102 extern Elf64_Addr la_mips_n64_gnu_pltenter (Elf64_Sym *__sym, unsigned int __ndx, 103 uintptr_t *__refcook, 104 uintptr_t *__defcook, 105 La_mips_64_regs *__regs, 106 unsigned int *__flags, 107 const char *__symname, 108 long int *__framesizep); 109 extern unsigned int la_mips_n64_gnu_pltexit (Elf64_Sym *__sym, unsigned int __ndx, 110 uintptr_t *__refcook, 111 uintptr_t *__defcook, 112 const La_mips_64_regs *__inregs, 113 La_mips_64_retval *__outregs, 114 const char *symname); 115 116 #endif 117 118 __END_DECLS 119