]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/powerpc/powerpc64/bits/link.h
[BZ #710]
[thirdparty/glibc.git] / sysdeps / powerpc / powerpc64 / bits / link.h
CommitLineData
82221992
UD
1/* Copyright (C) 2004, 2005 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, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17 02111-1307 USA. */
18
19#ifndef _LINK_H
20# error "Never include <bits/link.h> directly; use <link.h> instead."
21#endif
22
23
24#if __ELF_NATIVE_CLASS == 32
25
2413fdba
UD
26/* Registers for entry into PLT on PPC32. */
27typedef struct La_ppc32_regs
28{
70cd1f97 29 uint32_t lr_reg[8];
2413fdba
UD
30 double lr_fp[8];
31 uint32_t lr_vreg[12][4];
70cd1f97
UD
32 uint32_t lr_r1;
33 uint32_t lr_lr;
2413fdba
UD
34} La_ppc32_regs;
35
36/* Return values for calls from PLT on PPC32. */
37typedef struct La_ppc32_retval
38{
70cd1f97
UD
39 uint32_t lrv_r3;
40 uint32_t lrv_r4;
2413fdba
UD
41 double lrv_fp[8];
42 uint32_t lrv_v2[4];
43} La_ppc32_retval;
44
45
46__BEGIN_DECLS
47
48extern Elf32_Addr la_ppc32_gnu_pltenter (Elf32_Sym *__sym,
49 unsigned int __ndx,
50 uintptr_t *__refcook,
51 uintptr_t *__defcook,
52 La_ppc32_regs *__regs,
53 unsigned int *__flags,
54 const char *__symname,
55 long int *__framesizep);
56extern unsigned int la_ppc32_gnu_pltexit (Elf32_Sym *__sym,
57 unsigned int __ndx,
58 uintptr_t *__refcook,
59 uintptr_t *__defcook,
60 const La_ppc32_regs *__inregs,
61 La_ppc32_retval *__outregs,
62 const char *symname);
63
64__END_DECLS
82221992
UD
65
66#else
67
2413fdba 68/* Registers for entry into PLT on PPC64. */
82221992
UD
69typedef struct La_ppc64_regs
70{
71 uint64_t lr_reg[8];
72 double lr_fp[13];
4e2d5491 73 uint64_t __padding;
82221992
UD
74 uint32_t lr_vreg[12][4];
75 uint64_t lr_r1;
76 uint64_t lr_lr;
77} La_ppc64_regs;
78
2413fdba 79/* Return values for calls from PLT on PPC64. */
82221992
UD
80typedef struct La_ppc64_retval
81{
82 uint64_t lrv_r3;
83 uint64_t lrv_r4;
84 double lrv_fp[8];
85 uint32_t lrv_v2[4];
86} La_ppc64_retval;
87
88
89__BEGIN_DECLS
90
91extern Elf64_Addr la_ppc64_gnu_pltenter (Elf64_Sym *__sym,
92 unsigned int __ndx,
93 uintptr_t *__refcook,
94 uintptr_t *__defcook,
95 La_ppc64_regs *__regs,
96 unsigned int *__flags,
97 const char *__symname,
98 long int *__framesizep);
99extern unsigned int la_ppc64_gnu_pltexit (Elf64_Sym *__sym,
100 unsigned int __ndx,
101 uintptr_t *__refcook,
102 uintptr_t *__defcook,
103 const La_ppc64_regs *__inregs,
104 La_ppc64_retval *__outregs,
105 const char *symname);
106
107__END_DECLS
108
109#endif