]>
Commit | Line | Data |
---|---|---|
1 | /* Copyright (C) 2005-2024 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 | <https://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 through $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 |