1 /* Copyright (C) 2005-2021 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 
23 /* Registers for entry into PLT on SH.  */
24 typedef struct La_sh_regs
25 {
26   uint32_t lr_r2;
27   uint32_t lr_r3;
28   uint32_t lr_r4;
29   uint32_t lr_r5;
30   uint32_t lr_r6;
31   uint32_t lr_r7;
32   uint32_t lr_fpscr;
33   float lr_fr4;
34   float lr_fr5;
35   float lr_fr6;
36   float lr_fr7;
37   float lr_fr8;
38   float lr_fr9;
39   float lr_fr10;
40   float lr_fr11;
41 } La_sh_regs;
42 
43 /* Return values for calls from PLT on SH.  */
44 typedef struct La_sh_retval
45 {
46   uint32_t lrv_r0;
47   uint32_t lrv_r1;
48   float lrv_fr0;
49   float lrv_fr1;
50 } La_sh_retval;
51 
52 
53 __BEGIN_DECLS
54 
55 extern Elf32_Addr la_sh_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
56 				      uintptr_t *__refcook,
57 				      uintptr_t *__defcook,
58 				      La_sh_regs *__regs,
59 				      unsigned int *__flags,
60 				      const char *__symname,
61 				      long int *__framesizep);
62 extern unsigned int la_sh_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
63 				       uintptr_t *__refcook,
64 				       uintptr_t *__defcook,
65 				       const La_sh_regs *__inregs,
66 				       La_sh_retval *__outregs,
67 				       const char *__symname);
68 
69 __END_DECLS
70