1/* Machine-specific declarations for dynamic linker interface.  RISC-V version.
 2   Copyright (C) 2005-2025 Free Software Foundation, Inc.
 3   This file is part of the GNU C Library.
 4
 5   The GNU C Library is free software; you can redistribute it and/or
 6   modify it under the terms of the GNU Lesser General Public
 7   License as published by the Free Software Foundation; either
 8   version 2.1 of the License, or (at your option) any later version.
 9
10   The GNU C Library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with the GNU C Library.  If not, see
17   <https://www.gnu.org/licenses/>.  */
18
19#ifndef	_LINK_H
20# error "Never include <bits/link.h> directly; use <link.h> instead."
21#endif
22
23typedef struct La_riscv_regs
24{
25  unsigned long int lr_reg[8]; /* a0 - a7 */
26  double lr_fpreg[8]; /* fa0 - fa7 */
27  unsigned long int lr_ra;
28  unsigned long int lr_sp;
29} La_riscv_regs;
30
31/* Return values for calls from PLT on RISC-V.  */
32typedef struct La_riscv_retval
33{
34  unsigned long int lrv_a0;
35  unsigned long int lrv_a1;
36  double lrv_fa0;
37  double lrv_fa1;
38} La_riscv_retval;
39
40__BEGIN_DECLS
41
42extern ElfW(Addr) la_riscv_gnu_pltenter (ElfW(Sym) *__sym, unsigned int __ndx,
43					 uintptr_t *__refcook,
44					 uintptr_t *__defcook,
45					 La_riscv_regs *__regs,
46					 unsigned int *__flags,
47					 const char *__symname,
48					 long int *__framesizep);
49extern unsigned int la_riscv_gnu_pltexit (ElfW(Sym) *__sym, unsigned int __ndx,
50					  uintptr_t *__refcook,
51					  uintptr_t *__defcook,
52					  const La_riscv_regs *__inregs,
53					  La_riscv_retval *__outregs,
54					  const char *__symname);
55
56__END_DECLS