Update copyright notices with scripts/update-copyrights
[jlayton/glibc.git] / ports / sysdeps / mips / bits / link.h
1 /* Copyright (C) 2005-2014 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, see
16    <http://www.gnu.org/licenses/>.  */
17
18 #ifndef _LINK_H
19 # error "Never include <bits/link.h> directly; use <link.h> instead."
20 #endif
21
22 #include <sgidefs.h>
23
24 #if _MIPS_SIM == _ABIO32
25
26 /* Registers for entry into PLT on MIPS.  */
27 typedef struct La_mips_32_regs
28 {
29   uint32_t lr_reg[4]; /* $a0 through $a3 */
30   double lr_fpreg[2]; /* $f12 and $f14 */
31   uint32_t lr_ra;
32   uint32_t lr_sp;
33 } La_mips_32_regs;
34
35 /* Return values for calls from PLT on MIPS.  */
36 typedef struct La_mips_32_retval
37 {
38   uint32_t lrv_v0;
39   uint32_t lrv_v1;
40   double lrv_f0;
41   double lrv_f2;
42 } La_mips_32_retval;
43
44 #else
45
46 typedef struct La_mips_64_regs
47 {
48   uint64_t lr_reg[8]; /* $a0 through $a7 */
49   double lr_fpreg[8]; /* $f12 throgh $f19 */
50   uint64_t lr_ra;
51   uint64_t lr_sp;
52 } La_mips_64_regs;
53
54 /* Return values for calls from PLT on MIPS.  */
55 typedef struct La_mips_64_retval
56 {
57   uint64_t lrv_v0;
58   uint64_t lrv_v1;
59   double lrv_f0;
60   double lrv_f2;
61 } La_mips_64_retval;
62
63 #endif
64
65 __BEGIN_DECLS
66
67 #if _MIPS_SIM == _ABIO32
68
69 extern Elf32_Addr la_mips_o32_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
70                                             uintptr_t *__refcook,
71                                             uintptr_t *__defcook,
72                                             La_mips_32_regs *__regs,
73                                             unsigned int *__flags,
74                                             const char *__symname,
75                                             long int *__framesizep);
76 extern unsigned int la_mips_o32_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
77                                              uintptr_t *__refcook,
78                                              uintptr_t *__defcook,
79                                              const La_mips_32_regs *__inregs,
80                                              La_mips_32_retval *__outregs,
81                                              const char *__symname);
82
83 #elif _MIPS_SIM == _ABIN32
84
85 extern Elf32_Addr la_mips_n32_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
86                                             uintptr_t *__refcook,
87                                             uintptr_t *__defcook,
88                                             La_mips_64_regs *__regs,
89                                             unsigned int *__flags,
90                                             const char *__symname,
91                                             long int *__framesizep);
92 extern unsigned int la_mips_n32_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
93                                              uintptr_t *__refcook,
94                                              uintptr_t *__defcook,
95                                              const La_mips_64_regs *__inregs,
96                                              La_mips_64_retval *__outregs,
97                                              const char *__symname);
98
99 #else
100
101 extern Elf64_Addr la_mips_n64_gnu_pltenter (Elf64_Sym *__sym, unsigned int __ndx,
102                                             uintptr_t *__refcook,
103                                             uintptr_t *__defcook,
104                                             La_mips_64_regs *__regs,
105                                             unsigned int *__flags,
106                                             const char *__symname,
107                                             long int *__framesizep);
108 extern unsigned int la_mips_n64_gnu_pltexit (Elf64_Sym *__sym, unsigned int __ndx,
109                                              uintptr_t *__refcook,
110                                              uintptr_t *__defcook,
111                                              const La_mips_64_regs *__inregs,
112                                              La_mips_64_retval *__outregs,
113                                              const char *__symname);
114
115 #endif
116
117 __END_DECLS