50e9e064d0f819d56b2ec6bf4af42df2bc32c5bc
[binutils-gdb.git] / gdb / arch / ppc-linux-common.h
1 /* Common target dependent code for GNU/Linux on PPC systems.
2
3 Copyright (C) 2018 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 #ifndef ARCH_PPC_LINUX_COMMON_H
21 #define ARCH_PPC_LINUX_COMMON_H
22
23 struct target_desc;
24
25 /* The core file VMX regset has 34 16-byte fields (32 16-byte vector
26 registers, plus two fields containing 4-byte registers, VSCR and
27 VRSAVE), while the ptrace calls return or read 33 16-byte fields
28 plus a 4-byte field for VRSAVE. For simplicity we use the longer
29 length for both cases. */
30 #define PPC_LINUX_SIZEOF_VRREGSET 544
31
32 #define PPC_LINUX_SIZEOF_VSXREGSET 256
33 #define PPC_LINUX_SIZEOF_PPRREGSET 8
34 #define PPC_LINUX_SIZEOF_DSCRREGSET 8
35 #define PPC_LINUX_SIZEOF_TARREGSET 8
36 #define PPC_LINUX_SIZEOF_EBBREGSET (3*8)
37 #define PPC_LINUX_SIZEOF_PMUREGSET (5*8)
38
39 /* Check if the hwcap auxv entry indicates that isa205 is supported. */
40 bool ppc_linux_has_isa205 (CORE_ADDR hwcap);
41
42 /* Features used to determine the target description. */
43 struct ppc_linux_features
44 {
45 unsigned int wordsize;
46 bool altivec;
47 bool vsx;
48 bool isa205;
49 bool ppr_dscr;
50 bool isa207;
51 bool cell;
52 };
53
54 /* Base value for ppc_linux_features variables. */
55 const struct ppc_linux_features ppc_linux_no_features = {
56 0,
57 false,
58 false,
59 false,
60 false,
61 false,
62 false,
63 };
64
65 /* Return a target description that matches FEATURES. */
66 const struct target_desc * ppc_linux_match_description
67 (struct ppc_linux_features features);
68
69 #endif /* ARCH_PPC_LINUX_COMMON_H */