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