xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/arm-fbsd-tdep.h (revision 6881a4007f077b54e5f51159c52b9b25f57deb0d)
1 /* FreeBSD/arm target support, prototypes.
2 
3    Copyright (C) 2017-2023 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 ARM_FBSD_TDEP_H
21 #define ARM_FBSD_TDEP_H
22 
23 #include "regset.h"
24 
25 /* The general-purpose regset consists of 13 R registers, plus SP, LR,
26    PC, and CPSR registers.  */
27 #define ARM_FBSD_SIZEOF_GREGSET  (17 * 4)
28 
29 /* The TLS regset consists of a single register.  */
30 #define	ARM_FBSD_SIZEOF_TLSREGSET	(4)
31 
32 /* The VFP regset consists of 32 D registers plus FPSCR, and the whole
33    structure is padded to 64-bit alignment.  */
34 #define	ARM_FBSD_SIZEOF_VFPREGSET	(33 * 8)
35 
36 extern const struct regset arm_fbsd_gregset;
37 extern const struct regset arm_fbsd_vfpregset;
38 extern const struct regset arm_fbsd_tls_regset;
39 
40 /* Flags passed in AT_HWCAP. */
41 #define	HWCAP_VFP		0x00000040
42 #define	HWCAP_NEON		0x00001000
43 #define	HWCAP_VFPv3		0x00002000
44 #define	HWCAP_VFPD32		0x00080000
45 
46 /* Lookup a target description based on the AT_HWCAP value in the auxv data
47    AUXV.  */
48 
49 extern const struct target_desc *
50   arm_fbsd_read_description_auxv (const gdb::optional<gdb::byte_vector> &auxv,
51 				  target_ops *target, gdbarch *gdbarch,
52 				  bool tls);
53 
54 /* Same as the above, but read the auxv data from the current inferior.  */
55 
56 extern const struct target_desc *
57   arm_fbsd_read_description_auxv (bool tls);
58 
59 #endif /* ARM_FBSD_TDEP_H */
60