17f2ac410Schristos /* FreeBSD/arm target support, prototypes. 27f2ac410Schristos 3*6881a400Schristos Copyright (C) 2017-2023 Free Software Foundation, Inc. 47f2ac410Schristos 57f2ac410Schristos This file is part of GDB. 67f2ac410Schristos 77f2ac410Schristos This program is free software; you can redistribute it and/or modify 87f2ac410Schristos it under the terms of the GNU General Public License as published by 97f2ac410Schristos the Free Software Foundation; either version 3 of the License, or 107f2ac410Schristos (at your option) any later version. 117f2ac410Schristos 127f2ac410Schristos This program is distributed in the hope that it will be useful, 137f2ac410Schristos but WITHOUT ANY WARRANTY; without even the implied warranty of 147f2ac410Schristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 157f2ac410Schristos GNU General Public License for more details. 167f2ac410Schristos 177f2ac410Schristos You should have received a copy of the GNU General Public License 187f2ac410Schristos along with this program. If not, see <http://www.gnu.org/licenses/>. */ 197f2ac410Schristos 207f2ac410Schristos #ifndef ARM_FBSD_TDEP_H 217f2ac410Schristos #define ARM_FBSD_TDEP_H 227f2ac410Schristos 237f2ac410Schristos #include "regset.h" 247f2ac410Schristos 257f2ac410Schristos /* The general-purpose regset consists of 13 R registers, plus SP, LR, 267f2ac410Schristos PC, and CPSR registers. */ 277f2ac410Schristos #define ARM_FBSD_SIZEOF_GREGSET (17 * 4) 287f2ac410Schristos 29*6881a400Schristos /* The TLS regset consists of a single register. */ 30*6881a400Schristos #define ARM_FBSD_SIZEOF_TLSREGSET (4) 31*6881a400Schristos 327f2ac410Schristos /* The VFP regset consists of 32 D registers plus FPSCR, and the whole 337f2ac410Schristos structure is padded to 64-bit alignment. */ 347f2ac410Schristos #define ARM_FBSD_SIZEOF_VFPREGSET (33 * 8) 357f2ac410Schristos 367f2ac410Schristos extern const struct regset arm_fbsd_gregset; 377f2ac410Schristos extern const struct regset arm_fbsd_vfpregset; 38*6881a400Schristos extern const struct regset arm_fbsd_tls_regset; 397f2ac410Schristos 407f2ac410Schristos /* Flags passed in AT_HWCAP. */ 417f2ac410Schristos #define HWCAP_VFP 0x00000040 427f2ac410Schristos #define HWCAP_NEON 0x00001000 437f2ac410Schristos #define HWCAP_VFPv3 0x00002000 447f2ac410Schristos #define HWCAP_VFPD32 0x00080000 457f2ac410Schristos 46*6881a400Schristos /* Lookup a target description based on the AT_HWCAP value in the auxv data 47*6881a400Schristos AUXV. */ 48*6881a400Schristos 497f2ac410Schristos extern const struct target_desc * 50*6881a400Schristos arm_fbsd_read_description_auxv (const gdb::optional<gdb::byte_vector> &auxv, 51*6881a400Schristos target_ops *target, gdbarch *gdbarch, 52*6881a400Schristos bool tls); 53*6881a400Schristos 54*6881a400Schristos /* Same as the above, but read the auxv data from the current inferior. */ 55*6881a400Schristos 56*6881a400Schristos extern const struct target_desc * 57*6881a400Schristos arm_fbsd_read_description_auxv (bool tls); 587f2ac410Schristos 597f2ac410Schristos #endif /* ARM_FBSD_TDEP_H */ 60