| /* Common target dependent code for GNU/Linux on PPC systems. | 
 |  | 
 |    Copyright (C) 2018-2023 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 */ |