| /* Common target dependent code for GNU/Linux on PPC systems. | |
| Copyright (C) 2018-2021 Free Software Foundation, Inc. | |
| This file is part of GDB. | |
| This program is free software; you can redistribute it and/or modify | |
| it under the terms of the GNU General Public License as published by | |
| the Free Software Foundation; either version 3 of the License, or | |
| (at your option) any later version. | |
| This program is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public License | |
| along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
| #ifndef ARCH_PPC_LINUX_COMMON_H | |
| #define ARCH_PPC_LINUX_COMMON_H | |
| struct target_desc; | |
| /* The core file VMX regset has 34 16-byte fields (32 16-byte vector | |
| registers, plus two fields containing 4-byte registers, VSCR and | |
| VRSAVE), while the ptrace calls return or read 33 16-byte fields | |
| plus a 4-byte field for VRSAVE. For simplicity we use the longer | |
| length for both cases. */ | |
| #define PPC_LINUX_SIZEOF_VRREGSET 544 | |
| #define PPC_LINUX_SIZEOF_VSXREGSET 256 | |
| #define PPC_LINUX_SIZEOF_PPRREGSET 8 | |
| #define PPC_LINUX_SIZEOF_DSCRREGSET 8 | |
| #define PPC_LINUX_SIZEOF_TARREGSET 8 | |
| #define PPC_LINUX_SIZEOF_EBBREGSET (3*8) | |
| #define PPC_LINUX_SIZEOF_PMUREGSET (5*8) | |
| #define PPC_LINUX_SIZEOF_TM_SPRREGSET (3*8) | |
| #define PPC32_LINUX_SIZEOF_CGPRREGSET (48*4) | |
| #define PPC64_LINUX_SIZEOF_CGPRREGSET (48*8) | |
| #define PPC_LINUX_SIZEOF_CFPRREGSET (32*8+8) | |
| #define PPC_LINUX_SIZEOF_CVMXREGSET (34*16) | |
| #define PPC_LINUX_SIZEOF_CVSXREGSET (32*8) | |
| #define PPC_LINUX_SIZEOF_CPPRREGSET 8 | |
| #define PPC_LINUX_SIZEOF_CDSCRREGSET 8 | |
| #define PPC_LINUX_SIZEOF_CTARREGSET 8 | |
| /* Check if the hwcap auxv entry indicates that isa205 is supported. */ | |
| bool ppc_linux_has_isa205 (CORE_ADDR hwcap); | |
| /* Features used to determine the target description. */ | |
| struct ppc_linux_features | |
| { | |
| unsigned int wordsize; | |
| bool altivec; | |
| bool vsx; | |
| bool isa205; | |
| bool ppr_dscr; | |
| bool isa207; | |
| bool htm; | |
| }; | |
| /* Base value for ppc_linux_features variables. */ | |
| const struct ppc_linux_features ppc_linux_no_features = { | |
| 0, | |
| false, | |
| false, | |
| false, | |
| false, | |
| false, | |
| false, | |
| }; | |
| /* Return a target description that matches FEATURES. */ | |
| const struct target_desc * ppc_linux_match_description | |
| (struct ppc_linux_features features); | |
| #endif /* ARCH_PPC_LINUX_COMMON_H */ |