Update copyright notices with scripts/update-copyrights
[glibc.git] / sysdeps / s390 / bits / link.h
bloba5ab5468e35e00cd10bd0a19a8ecc44b94409f61
1 /* Copyright (C) 2005-2014 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
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.
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.
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/>. */
18 #ifndef _LINK_H
19 # error "Never include <bits/link.h> directly; use <link.h> instead."
20 #endif
23 #if __ELF_NATIVE_CLASS == 32
25 /* Registers for entry into PLT on s390-32. */
26 typedef struct La_s390_32_regs
28 uint32_t lr_r2;
29 uint32_t lr_r3;
30 uint32_t lr_r4;
31 uint32_t lr_r5;
32 uint32_t lr_r6;
33 double lr_fp0;
34 double lr_fp2;
35 } La_s390_32_regs;
37 /* Return values for calls from PLT on s390-32. */
38 typedef struct La_s390_32_retval
40 uint32_t lrv_r2;
41 uint32_t lrv_r3;
42 double lrv_fp0;
43 } La_s390_32_retval;
46 __BEGIN_DECLS
48 extern Elf32_Addr la_s390_32_gnu_pltenter (Elf32_Sym *__sym,
49 unsigned int __ndx,
50 uintptr_t *__refcook,
51 uintptr_t *__defcook,
52 La_s390_32_regs *__regs,
53 unsigned int *__flags,
54 const char *__symname,
55 long int *__framesizep);
56 extern unsigned int la_s390_32_gnu_pltexit (Elf32_Sym *__sym,
57 unsigned int __ndx,
58 uintptr_t *__refcook,
59 uintptr_t *__defcook,
60 const La_s390_32_regs *__inregs,
61 La_s390_32_retval *__outregs,
62 const char *symname);
64 __END_DECLS
66 #else
68 /* Registers for entry into PLT on s390-64. */
69 typedef struct La_s390_64_regs
71 uint64_t lr_r2;
72 uint64_t lr_r3;
73 uint64_t lr_r4;
74 uint64_t lr_r5;
75 uint64_t lr_r6;
76 double lr_fp0;
77 double lr_fp2;
78 double lr_fp4;
79 double lr_fp6;
80 } La_s390_64_regs;
82 /* Return values for calls from PLT on s390-64. */
83 typedef struct La_s390_64_retval
85 uint64_t lrv_r2;
86 double lrv_fp0;
87 } La_s390_64_retval;
90 __BEGIN_DECLS
92 extern Elf64_Addr la_s390_64_gnu_pltenter (Elf64_Sym *__sym,
93 unsigned int __ndx,
94 uintptr_t *__refcook,
95 uintptr_t *__defcook,
96 La_s390_64_regs *__regs,
97 unsigned int *__flags,
98 const char *__symname,
99 long int *__framesizep);
100 extern unsigned int la_s390_64_gnu_pltexit (Elf64_Sym *__sym,
101 unsigned int __ndx,
102 uintptr_t *__refcook,
103 uintptr_t *__defcook,
104 const La_s390_64_regs *__inregs,
105 La_s390_64_retval *__outregs,
106 const char *__symname);
108 __END_DECLS
110 #endif