GNU Binutils with patches for OS216
Revisión | 2e0208b40d7c8c533368c3c14e14b8705e275959 (tree) |
---|---|
Tiempo | 2017-06-20 19:34:15 |
Autor | Yao Qi <yao.qi@lina...> |
Commiter | Yao Qi |
Lazily and dynamically create amd64-linux target descriptions
This patch starts to use the generate c feature files to dynamically
create amd64-linux target descriptions.
gdb:
2017-06-08 Yao Qi <yao.qi@linaro.org>
* amd64-linux-tdep.c: Don't include amd64-XXX-linux and
x32-XXX-linux.c. Include 64bit-XX.c and x32-XX.c.
(amd64_linux_read_description): Create target descriptions.
(_initialize_amd64_linux_tdep): Don't call initialize_tdesc_XXX
functions. Add unit tests.
* features/Makefile (FEATURE_XMLFILES): Append 64bit-XXX.xml and
x32-core.xml. Echo the right architecture for amd64 and x32.
* features/i386/64bit-avx.c: Generated.
* features/XXXX
* target-descriptions.c (maint_print_c_tdesc_cmd): Print feature
c files for amd64-linux and x32-linux.
@@ -40,16 +40,16 @@ | ||
40 | 40 | #include "xml-syscall.h" |
41 | 41 | #include "glibc-tdep.h" |
42 | 42 | |
43 | -#include "features/i386/amd64-linux.c" | |
44 | -#include "features/i386/amd64-avx-linux.c" | |
45 | -#include "features/i386/amd64-mpx-linux.c" | |
46 | -#include "features/i386/amd64-avx-mpx-linux.c" | |
47 | -#include "features/i386/amd64-avx-avx512-linux.c" | |
48 | -#include "features/i386/amd64-avx-mpx-avx512-pku-linux.c" | |
43 | +#include "features/i386/64bit-avx.c" | |
44 | +#include "features/i386/64bit-avx512.c" | |
45 | +#include "features/i386/64bit-core.c" | |
46 | +#include "features/i386/64bit-linux.c" | |
47 | +#include "features/i386/64bit-mpx.c" | |
48 | +#include "features/i386/64bit-pkeys.c" | |
49 | +#include "features/i386/64bit-segments.c" | |
50 | +#include "features/i386/64bit-sse.c" | |
49 | 51 | |
50 | -#include "features/i386/x32-linux.c" | |
51 | -#include "features/i386/x32-avx-linux.c" | |
52 | -#include "features/i386/x32-avx-avx512-linux.c" | |
52 | +#include "features/i386/x32-core.c" | |
53 | 53 | |
54 | 54 | /* The syscall's XML filename for i386. */ |
55 | 55 | #define XML_SYSCALL_FILENAME_AMD64 "syscalls/amd64-linux.xml" |
@@ -1578,40 +1578,72 @@ amd64_linux_record_signal (struct gdbarch *gdbarch, | ||
1578 | 1578 | const target_desc * |
1579 | 1579 | amd64_linux_read_description (uint64_t xcr0_features_bit, bool is_x32) |
1580 | 1580 | { |
1581 | - switch (xcr0_features_bit) | |
1581 | + static target_desc *amd64_linux_tdescs \ | |
1582 | + [2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/] = {}; | |
1583 | + static target_desc *x32_linux_tdescs[2/*AVX*/][2/*AVX512*/] = {}; | |
1584 | + | |
1585 | + target_desc **tdesc; | |
1586 | + | |
1587 | + if (is_x32) | |
1582 | 1588 | { |
1583 | - case X86_XSTATE_AVX_MPX_AVX512_PKU_MASK: | |
1584 | - if (is_x32) | |
1585 | - /* No MPX, PKU on x32, fall back to AVX-AVX512. */ | |
1586 | - return tdesc_x32_avx_avx512_linux; | |
1587 | - else | |
1588 | - return tdesc_amd64_avx_mpx_avx512_pku_linux; | |
1589 | - case X86_XSTATE_AVX_AVX512_MASK: | |
1590 | - if (is_x32) | |
1591 | - return tdesc_x32_avx_avx512_linux; | |
1592 | - else | |
1593 | - return tdesc_amd64_avx_avx512_linux; | |
1594 | - case X86_XSTATE_MPX_MASK: | |
1595 | - if (is_x32) | |
1596 | - return tdesc_x32_avx_linux; /* No MPX on x32 using AVX. */ | |
1597 | - else | |
1598 | - return tdesc_amd64_mpx_linux; | |
1599 | - case X86_XSTATE_AVX_MPX_MASK: | |
1600 | - if (is_x32) | |
1601 | - return tdesc_x32_avx_linux; /* No MPX on x32 using AVX. */ | |
1602 | - else | |
1603 | - return tdesc_amd64_avx_mpx_linux; | |
1604 | - case X86_XSTATE_AVX_MASK: | |
1605 | - if (is_x32) | |
1606 | - return tdesc_x32_avx_linux; | |
1607 | - else | |
1608 | - return tdesc_amd64_avx_linux; | |
1609 | - default: | |
1610 | - if (is_x32) | |
1611 | - return tdesc_x32_linux; | |
1612 | - else | |
1613 | - return tdesc_amd64_linux; | |
1589 | + tdesc = &x32_linux_tdescs[(xcr0_features_bit & X86_XSTATE_AVX) ? 1 : 0 ] | |
1590 | + [(xcr0_features_bit & X86_XSTATE_AVX512) ? 1 : 0]; | |
1591 | + | |
1592 | + if (*tdesc == NULL) | |
1593 | + { | |
1594 | + *tdesc = allocate_target_description (); | |
1595 | + set_tdesc_architecture (*tdesc, bfd_scan_arch ("i386:x64-32")); | |
1596 | + set_tdesc_osabi (*tdesc, osabi_from_tdesc_string ("GNU/Linux")); | |
1597 | + | |
1598 | + long regnum = 0; | |
1599 | + | |
1600 | + regnum = create_feature_i386_x32_core (*tdesc, regnum); | |
1601 | + regnum = create_feature_i386_64bit_sse (*tdesc, regnum); | |
1602 | + regnum = create_feature_i386_64bit_linux (*tdesc, regnum); | |
1603 | + regnum = create_feature_i386_64bit_segments (*tdesc, regnum); | |
1604 | + | |
1605 | + if (xcr0_features_bit & X86_XSTATE_AVX) | |
1606 | + regnum = create_feature_i386_64bit_avx (*tdesc, regnum); | |
1607 | + | |
1608 | + if (xcr0_features_bit & X86_XSTATE_AVX512) | |
1609 | + regnum = create_feature_i386_64bit_avx512 (*tdesc, regnum); | |
1610 | + } | |
1614 | 1611 | } |
1612 | + else | |
1613 | + { | |
1614 | + tdesc = &amd64_linux_tdescs[(xcr0_features_bit & X86_XSTATE_AVX) ? 1 : 0] | |
1615 | + [(xcr0_features_bit & X86_XSTATE_MPX) ? 1 : 0] | |
1616 | + [(xcr0_features_bit & X86_XSTATE_AVX512) ? 1 : 0] | |
1617 | + [(xcr0_features_bit & X86_XSTATE_PKRU) ? 1 : 0]; | |
1618 | + | |
1619 | + if (*tdesc == NULL) | |
1620 | + { | |
1621 | + *tdesc = allocate_target_description (); | |
1622 | + set_tdesc_architecture (*tdesc, bfd_scan_arch ("i386:x86-64")); | |
1623 | + set_tdesc_osabi (*tdesc, osabi_from_tdesc_string ("GNU/Linux")); | |
1624 | + | |
1625 | + long regnum = 0; | |
1626 | + | |
1627 | + regnum = create_feature_i386_64bit_core (*tdesc, regnum); | |
1628 | + regnum = create_feature_i386_64bit_sse (*tdesc, regnum); | |
1629 | + regnum = create_feature_i386_64bit_linux (*tdesc, regnum); | |
1630 | + regnum = create_feature_i386_64bit_segments (*tdesc, regnum); | |
1631 | + | |
1632 | + if (xcr0_features_bit & X86_XSTATE_AVX) | |
1633 | + regnum = create_feature_i386_64bit_avx (*tdesc, regnum); | |
1634 | + | |
1635 | + if (xcr0_features_bit & X86_XSTATE_MPX) | |
1636 | + regnum = create_feature_i386_64bit_mpx (*tdesc, regnum); | |
1637 | + | |
1638 | + if (xcr0_features_bit & X86_XSTATE_AVX512) | |
1639 | + regnum = create_feature_i386_64bit_avx512 (*tdesc, regnum); | |
1640 | + | |
1641 | + if (xcr0_features_bit & X86_XSTATE_PKRU) | |
1642 | + regnum = create_feature_i386_64bit_pkeys (*tdesc, regnum); | |
1643 | + } | |
1644 | + } | |
1645 | + | |
1646 | + return *tdesc; | |
1615 | 1647 | } |
1616 | 1648 | |
1617 | 1649 | /* Get Linux/x86 target description from core dump. */ |
@@ -2303,15 +2335,27 @@ _initialize_amd64_linux_tdep (void) | ||
2303 | 2335 | gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x64_32, |
2304 | 2336 | GDB_OSABI_LINUX, amd64_x32_linux_init_abi); |
2305 | 2337 | |
2306 | - /* Initialize the Linux target description. */ | |
2307 | - initialize_tdesc_amd64_linux (); | |
2308 | - initialize_tdesc_amd64_avx_linux (); | |
2309 | - initialize_tdesc_amd64_mpx_linux (); | |
2310 | - initialize_tdesc_amd64_avx_mpx_linux (); | |
2311 | - initialize_tdesc_amd64_avx_avx512_linux (); | |
2312 | - initialize_tdesc_amd64_avx_mpx_avx512_pku_linux (); | |
2313 | - | |
2314 | - initialize_tdesc_x32_linux (); | |
2315 | - initialize_tdesc_x32_avx_linux (); | |
2316 | - initialize_tdesc_x32_avx_avx512_linux (); | |
2338 | +#if GDB_SELF_TEST | |
2339 | + std::pair<const char *, uint64_t> xml_masks[] = { | |
2340 | + { "i386/amd64-linux.xml", X86_XSTATE_SSE_MASK }, | |
2341 | + { "i386/amd64-avx-linux.xml", X86_XSTATE_AVX_MASK }, | |
2342 | + { "i386/amd64-mpx-linux.xml", X86_XSTATE_MPX_MASK }, | |
2343 | + { "i386/amd64-avx-mpx-linux.xml", X86_XSTATE_AVX_MPX_MASK }, | |
2344 | + { "i386/amd64-avx-avx512-linux.xml", X86_XSTATE_AVX_AVX512_MASK }, | |
2345 | + { "i386/amd64-avx-mpx-avx512-pku-linux.xml", | |
2346 | + X86_XSTATE_AVX_MPX_AVX512_PKU_MASK }, | |
2347 | + { "i386/x32-linux.xml", X86_XSTATE_SSE_MASK }, | |
2348 | + { "i386/x32-avx-linux.xml", X86_XSTATE_AVX_MASK }, | |
2349 | + { "i386/x32-avx-avx512-linux.xml", X86_XSTATE_AVX_AVX512_MASK }, | |
2350 | + }; | |
2351 | + | |
2352 | + for (auto &a : xml_masks) | |
2353 | + { | |
2354 | + auto tdesc = | |
2355 | + amd64_linux_read_description (a.second, | |
2356 | + strncmp (a.first, "i386/x32", 8) == 0); | |
2357 | + | |
2358 | + selftests::record_xml_tdesc (a.first, tdesc); | |
2359 | + } | |
2360 | +#endif /* GDB_SELF_TEST */ | |
2317 | 2361 | } |
@@ -251,7 +251,16 @@ FEATURE_XMLFILES = i386/32bit-core.xml \ | ||
251 | 251 | i386/32bit-avx.xml \ |
252 | 252 | i386/32bit-mpx.xml \ |
253 | 253 | i386/32bit-avx512.xml \ |
254 | - i386/32bit-pkeys.xml | |
254 | + i386/32bit-pkeys.xml \ | |
255 | + i386/64bit-avx512.xml \ | |
256 | + i386/64bit-core.xml \ | |
257 | + i386/64bit-mpx.xml \ | |
258 | + i386/64bit-segments.xml \ | |
259 | + i386/64bit-avx.xml \ | |
260 | + i386/64bit-linux.xml \ | |
261 | + i386/64bit-pkeys.xml \ | |
262 | + i386/64bit-sse.xml \ | |
263 | + i386/x32-core.xml | |
255 | 264 | |
256 | 265 | FEATURE_CFILES = $(patsubst %.xml,%.c,$(FEATURE_XMLFILES)) |
257 | 266 |
@@ -273,7 +282,10 @@ $(FEATURE_CFILES): %.c: %.xml.tmp | ||
273 | 282 | echo "<!DOCTYPE target SYSTEM \"gdb-target.dtd\">" >> $@ |
274 | 283 | echo "<target>" >> $@ |
275 | 284 | echo " <architecture>" >> $@ |
276 | - if test $(findstring i386/32bit-,$@); then echo "i386" >> $@ ; fi; | |
285 | + if test $(findstring i386/32bit-,$@); then echo "i386" >> $@ ; \ | |
286 | + elif test $(findstring i386/64bit-,$@); then echo "i386:x86-64" >> $@; \ | |
287 | + elif test $(findstring i386/x32-,$@); then echo "i386:x64-32" >> $@; \ | |
288 | + fi; | |
277 | 289 | echo " </architecture>" >> $@ |
278 | 290 | echo " <xi:include href=\"$(notdir $<)\"/>" >> $@ |
279 | 291 | echo "</target>" >> $@ |
@@ -0,0 +1,35 @@ | ||
1 | +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: | |
2 | + Original: 64bit-avx.xml.tmp */ | |
3 | + | |
4 | +#ifdef GDBSERVER | |
5 | +#include "tdesc.h" | |
6 | +#else | |
7 | +#include "defs.h" | |
8 | +#include "osabi.h" | |
9 | +#include "target-descriptions.h" | |
10 | +#endif | |
11 | + | |
12 | +static int | |
13 | +create_feature_i386_64bit_avx (struct target_desc *result, long regnum) | |
14 | +{ | |
15 | + struct tdesc_feature *feature; | |
16 | + | |
17 | + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx", "64bit-avx.xml"); | |
18 | + tdesc_create_reg (feature, "ymm0h", regnum++, 1, NULL, 128, "uint128"); | |
19 | + tdesc_create_reg (feature, "ymm1h", regnum++, 1, NULL, 128, "uint128"); | |
20 | + tdesc_create_reg (feature, "ymm2h", regnum++, 1, NULL, 128, "uint128"); | |
21 | + tdesc_create_reg (feature, "ymm3h", regnum++, 1, NULL, 128, "uint128"); | |
22 | + tdesc_create_reg (feature, "ymm4h", regnum++, 1, NULL, 128, "uint128"); | |
23 | + tdesc_create_reg (feature, "ymm5h", regnum++, 1, NULL, 128, "uint128"); | |
24 | + tdesc_create_reg (feature, "ymm6h", regnum++, 1, NULL, 128, "uint128"); | |
25 | + tdesc_create_reg (feature, "ymm7h", regnum++, 1, NULL, 128, "uint128"); | |
26 | + tdesc_create_reg (feature, "ymm8h", regnum++, 1, NULL, 128, "uint128"); | |
27 | + tdesc_create_reg (feature, "ymm9h", regnum++, 1, NULL, 128, "uint128"); | |
28 | + tdesc_create_reg (feature, "ymm10h", regnum++, 1, NULL, 128, "uint128"); | |
29 | + tdesc_create_reg (feature, "ymm11h", regnum++, 1, NULL, 128, "uint128"); | |
30 | + tdesc_create_reg (feature, "ymm12h", regnum++, 1, NULL, 128, "uint128"); | |
31 | + tdesc_create_reg (feature, "ymm13h", regnum++, 1, NULL, 128, "uint128"); | |
32 | + tdesc_create_reg (feature, "ymm14h", regnum++, 1, NULL, 128, "uint128"); | |
33 | + tdesc_create_reg (feature, "ymm15h", regnum++, 1, NULL, 128, "uint128"); | |
34 | + return regnum; | |
35 | +} |
@@ -0,0 +1,130 @@ | ||
1 | +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: | |
2 | + Original: 64bit-avx512.xml.tmp */ | |
3 | + | |
4 | +#ifdef GDBSERVER | |
5 | +#include "tdesc.h" | |
6 | +#else | |
7 | +#include "defs.h" | |
8 | +#include "osabi.h" | |
9 | +#include "target-descriptions.h" | |
10 | +#endif | |
11 | + | |
12 | +static int | |
13 | +create_feature_i386_64bit_avx512 (struct target_desc *result, long regnum) | |
14 | +{ | |
15 | + struct tdesc_feature *feature; | |
16 | + | |
17 | + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512", "64bit-avx512.xml"); | |
18 | + struct tdesc_type *field_type; | |
19 | + field_type = tdesc_named_type (feature, "ieee_single"); | |
20 | + tdesc_create_vector (feature, "v4f", field_type, 4); | |
21 | + | |
22 | + field_type = tdesc_named_type (feature, "ieee_double"); | |
23 | + tdesc_create_vector (feature, "v2d", field_type, 2); | |
24 | + | |
25 | + field_type = tdesc_named_type (feature, "int8"); | |
26 | + tdesc_create_vector (feature, "v16i8", field_type, 16); | |
27 | + | |
28 | + field_type = tdesc_named_type (feature, "int16"); | |
29 | + tdesc_create_vector (feature, "v8i16", field_type, 8); | |
30 | + | |
31 | + field_type = tdesc_named_type (feature, "int32"); | |
32 | + tdesc_create_vector (feature, "v4i32", field_type, 4); | |
33 | + | |
34 | + field_type = tdesc_named_type (feature, "int64"); | |
35 | + tdesc_create_vector (feature, "v2i64", field_type, 2); | |
36 | + | |
37 | + struct tdesc_type *type; | |
38 | + type = tdesc_create_union (feature, "vec128"); | |
39 | + field_type = tdesc_named_type (feature, "v4f"); | |
40 | + tdesc_add_field (type, "v4_float", field_type); | |
41 | + field_type = tdesc_named_type (feature, "v2d"); | |
42 | + tdesc_add_field (type, "v2_double", field_type); | |
43 | + field_type = tdesc_named_type (feature, "v16i8"); | |
44 | + tdesc_add_field (type, "v16_int8", field_type); | |
45 | + field_type = tdesc_named_type (feature, "v8i16"); | |
46 | + tdesc_add_field (type, "v8_int16", field_type); | |
47 | + field_type = tdesc_named_type (feature, "v4i32"); | |
48 | + tdesc_add_field (type, "v4_int32", field_type); | |
49 | + field_type = tdesc_named_type (feature, "v2i64"); | |
50 | + tdesc_add_field (type, "v2_int64", field_type); | |
51 | + field_type = tdesc_named_type (feature, "uint128"); | |
52 | + tdesc_add_field (type, "uint128", field_type); | |
53 | + | |
54 | + field_type = tdesc_named_type (feature, "uint128"); | |
55 | + tdesc_create_vector (feature, "v2ui128", field_type, 2); | |
56 | + | |
57 | + tdesc_create_reg (feature, "xmm16", regnum++, 1, NULL, 128, "vec128"); | |
58 | + tdesc_create_reg (feature, "xmm17", regnum++, 1, NULL, 128, "vec128"); | |
59 | + tdesc_create_reg (feature, "xmm18", regnum++, 1, NULL, 128, "vec128"); | |
60 | + tdesc_create_reg (feature, "xmm19", regnum++, 1, NULL, 128, "vec128"); | |
61 | + tdesc_create_reg (feature, "xmm20", regnum++, 1, NULL, 128, "vec128"); | |
62 | + tdesc_create_reg (feature, "xmm21", regnum++, 1, NULL, 128, "vec128"); | |
63 | + tdesc_create_reg (feature, "xmm22", regnum++, 1, NULL, 128, "vec128"); | |
64 | + tdesc_create_reg (feature, "xmm23", regnum++, 1, NULL, 128, "vec128"); | |
65 | + tdesc_create_reg (feature, "xmm24", regnum++, 1, NULL, 128, "vec128"); | |
66 | + tdesc_create_reg (feature, "xmm25", regnum++, 1, NULL, 128, "vec128"); | |
67 | + tdesc_create_reg (feature, "xmm26", regnum++, 1, NULL, 128, "vec128"); | |
68 | + tdesc_create_reg (feature, "xmm27", regnum++, 1, NULL, 128, "vec128"); | |
69 | + tdesc_create_reg (feature, "xmm28", regnum++, 1, NULL, 128, "vec128"); | |
70 | + tdesc_create_reg (feature, "xmm29", regnum++, 1, NULL, 128, "vec128"); | |
71 | + tdesc_create_reg (feature, "xmm30", regnum++, 1, NULL, 128, "vec128"); | |
72 | + tdesc_create_reg (feature, "xmm31", regnum++, 1, NULL, 128, "vec128"); | |
73 | + tdesc_create_reg (feature, "ymm16h", regnum++, 1, NULL, 128, "uint128"); | |
74 | + tdesc_create_reg (feature, "ymm17h", regnum++, 1, NULL, 128, "uint128"); | |
75 | + tdesc_create_reg (feature, "ymm18h", regnum++, 1, NULL, 128, "uint128"); | |
76 | + tdesc_create_reg (feature, "ymm19h", regnum++, 1, NULL, 128, "uint128"); | |
77 | + tdesc_create_reg (feature, "ymm20h", regnum++, 1, NULL, 128, "uint128"); | |
78 | + tdesc_create_reg (feature, "ymm21h", regnum++, 1, NULL, 128, "uint128"); | |
79 | + tdesc_create_reg (feature, "ymm22h", regnum++, 1, NULL, 128, "uint128"); | |
80 | + tdesc_create_reg (feature, "ymm23h", regnum++, 1, NULL, 128, "uint128"); | |
81 | + tdesc_create_reg (feature, "ymm24h", regnum++, 1, NULL, 128, "uint128"); | |
82 | + tdesc_create_reg (feature, "ymm25h", regnum++, 1, NULL, 128, "uint128"); | |
83 | + tdesc_create_reg (feature, "ymm26h", regnum++, 1, NULL, 128, "uint128"); | |
84 | + tdesc_create_reg (feature, "ymm27h", regnum++, 1, NULL, 128, "uint128"); | |
85 | + tdesc_create_reg (feature, "ymm28h", regnum++, 1, NULL, 128, "uint128"); | |
86 | + tdesc_create_reg (feature, "ymm29h", regnum++, 1, NULL, 128, "uint128"); | |
87 | + tdesc_create_reg (feature, "ymm30h", regnum++, 1, NULL, 128, "uint128"); | |
88 | + tdesc_create_reg (feature, "ymm31h", regnum++, 1, NULL, 128, "uint128"); | |
89 | + tdesc_create_reg (feature, "k0", regnum++, 1, NULL, 64, "uint64"); | |
90 | + tdesc_create_reg (feature, "k1", regnum++, 1, NULL, 64, "uint64"); | |
91 | + tdesc_create_reg (feature, "k2", regnum++, 1, NULL, 64, "uint64"); | |
92 | + tdesc_create_reg (feature, "k3", regnum++, 1, NULL, 64, "uint64"); | |
93 | + tdesc_create_reg (feature, "k4", regnum++, 1, NULL, 64, "uint64"); | |
94 | + tdesc_create_reg (feature, "k5", regnum++, 1, NULL, 64, "uint64"); | |
95 | + tdesc_create_reg (feature, "k6", regnum++, 1, NULL, 64, "uint64"); | |
96 | + tdesc_create_reg (feature, "k7", regnum++, 1, NULL, 64, "uint64"); | |
97 | + tdesc_create_reg (feature, "zmm0h", regnum++, 1, NULL, 256, "v2ui128"); | |
98 | + tdesc_create_reg (feature, "zmm1h", regnum++, 1, NULL, 256, "v2ui128"); | |
99 | + tdesc_create_reg (feature, "zmm2h", regnum++, 1, NULL, 256, "v2ui128"); | |
100 | + tdesc_create_reg (feature, "zmm3h", regnum++, 1, NULL, 256, "v2ui128"); | |
101 | + tdesc_create_reg (feature, "zmm4h", regnum++, 1, NULL, 256, "v2ui128"); | |
102 | + tdesc_create_reg (feature, "zmm5h", regnum++, 1, NULL, 256, "v2ui128"); | |
103 | + tdesc_create_reg (feature, "zmm6h", regnum++, 1, NULL, 256, "v2ui128"); | |
104 | + tdesc_create_reg (feature, "zmm7h", regnum++, 1, NULL, 256, "v2ui128"); | |
105 | + tdesc_create_reg (feature, "zmm8h", regnum++, 1, NULL, 256, "v2ui128"); | |
106 | + tdesc_create_reg (feature, "zmm9h", regnum++, 1, NULL, 256, "v2ui128"); | |
107 | + tdesc_create_reg (feature, "zmm10h", regnum++, 1, NULL, 256, "v2ui128"); | |
108 | + tdesc_create_reg (feature, "zmm11h", regnum++, 1, NULL, 256, "v2ui128"); | |
109 | + tdesc_create_reg (feature, "zmm12h", regnum++, 1, NULL, 256, "v2ui128"); | |
110 | + tdesc_create_reg (feature, "zmm13h", regnum++, 1, NULL, 256, "v2ui128"); | |
111 | + tdesc_create_reg (feature, "zmm14h", regnum++, 1, NULL, 256, "v2ui128"); | |
112 | + tdesc_create_reg (feature, "zmm15h", regnum++, 1, NULL, 256, "v2ui128"); | |
113 | + tdesc_create_reg (feature, "zmm16h", regnum++, 1, NULL, 256, "v2ui128"); | |
114 | + tdesc_create_reg (feature, "zmm17h", regnum++, 1, NULL, 256, "v2ui128"); | |
115 | + tdesc_create_reg (feature, "zmm18h", regnum++, 1, NULL, 256, "v2ui128"); | |
116 | + tdesc_create_reg (feature, "zmm19h", regnum++, 1, NULL, 256, "v2ui128"); | |
117 | + tdesc_create_reg (feature, "zmm20h", regnum++, 1, NULL, 256, "v2ui128"); | |
118 | + tdesc_create_reg (feature, "zmm21h", regnum++, 1, NULL, 256, "v2ui128"); | |
119 | + tdesc_create_reg (feature, "zmm22h", regnum++, 1, NULL, 256, "v2ui128"); | |
120 | + tdesc_create_reg (feature, "zmm23h", regnum++, 1, NULL, 256, "v2ui128"); | |
121 | + tdesc_create_reg (feature, "zmm24h", regnum++, 1, NULL, 256, "v2ui128"); | |
122 | + tdesc_create_reg (feature, "zmm25h", regnum++, 1, NULL, 256, "v2ui128"); | |
123 | + tdesc_create_reg (feature, "zmm26h", regnum++, 1, NULL, 256, "v2ui128"); | |
124 | + tdesc_create_reg (feature, "zmm27h", regnum++, 1, NULL, 256, "v2ui128"); | |
125 | + tdesc_create_reg (feature, "zmm28h", regnum++, 1, NULL, 256, "v2ui128"); | |
126 | + tdesc_create_reg (feature, "zmm29h", regnum++, 1, NULL, 256, "v2ui128"); | |
127 | + tdesc_create_reg (feature, "zmm30h", regnum++, 1, NULL, 256, "v2ui128"); | |
128 | + tdesc_create_reg (feature, "zmm31h", regnum++, 1, NULL, 256, "v2ui128"); | |
129 | + return regnum; | |
130 | +} |
@@ -0,0 +1,80 @@ | ||
1 | +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: | |
2 | + Original: 64bit-core.xml.tmp */ | |
3 | + | |
4 | +#ifdef GDBSERVER | |
5 | +#include "tdesc.h" | |
6 | +#else | |
7 | +#include "defs.h" | |
8 | +#include "osabi.h" | |
9 | +#include "target-descriptions.h" | |
10 | +#endif | |
11 | + | |
12 | +static int | |
13 | +create_feature_i386_64bit_core (struct target_desc *result, long regnum) | |
14 | +{ | |
15 | + struct tdesc_feature *feature; | |
16 | + | |
17 | + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core", "64bit-core.xml"); | |
18 | + struct tdesc_type *field_type; | |
19 | + struct tdesc_type *type; | |
20 | + type = tdesc_create_flags (feature, "i386_eflags", 4); | |
21 | + tdesc_add_flag (type, 0, "CF"); | |
22 | + tdesc_add_flag (type, 1, ""); | |
23 | + tdesc_add_flag (type, 2, "PF"); | |
24 | + tdesc_add_flag (type, 4, "AF"); | |
25 | + tdesc_add_flag (type, 6, "ZF"); | |
26 | + tdesc_add_flag (type, 7, "SF"); | |
27 | + tdesc_add_flag (type, 8, "TF"); | |
28 | + tdesc_add_flag (type, 9, "IF"); | |
29 | + tdesc_add_flag (type, 10, "DF"); | |
30 | + tdesc_add_flag (type, 11, "OF"); | |
31 | + tdesc_add_flag (type, 14, "NT"); | |
32 | + tdesc_add_flag (type, 16, "RF"); | |
33 | + tdesc_add_flag (type, 17, "VM"); | |
34 | + tdesc_add_flag (type, 18, "AC"); | |
35 | + tdesc_add_flag (type, 19, "VIF"); | |
36 | + tdesc_add_flag (type, 20, "VIP"); | |
37 | + tdesc_add_flag (type, 21, "ID"); | |
38 | + | |
39 | + tdesc_create_reg (feature, "rax", regnum++, 1, NULL, 64, "int64"); | |
40 | + tdesc_create_reg (feature, "rbx", regnum++, 1, NULL, 64, "int64"); | |
41 | + tdesc_create_reg (feature, "rcx", regnum++, 1, NULL, 64, "int64"); | |
42 | + tdesc_create_reg (feature, "rdx", regnum++, 1, NULL, 64, "int64"); | |
43 | + tdesc_create_reg (feature, "rsi", regnum++, 1, NULL, 64, "int64"); | |
44 | + tdesc_create_reg (feature, "rdi", regnum++, 1, NULL, 64, "int64"); | |
45 | + tdesc_create_reg (feature, "rbp", regnum++, 1, NULL, 64, "data_ptr"); | |
46 | + tdesc_create_reg (feature, "rsp", regnum++, 1, NULL, 64, "data_ptr"); | |
47 | + tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 64, "int64"); | |
48 | + tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 64, "int64"); | |
49 | + tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 64, "int64"); | |
50 | + tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 64, "int64"); | |
51 | + tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 64, "int64"); | |
52 | + tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 64, "int64"); | |
53 | + tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 64, "int64"); | |
54 | + tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 64, "int64"); | |
55 | + tdesc_create_reg (feature, "rip", regnum++, 1, NULL, 64, "code_ptr"); | |
56 | + tdesc_create_reg (feature, "eflags", regnum++, 1, NULL, 32, "i386_eflags"); | |
57 | + tdesc_create_reg (feature, "cs", regnum++, 1, NULL, 32, "int32"); | |
58 | + tdesc_create_reg (feature, "ss", regnum++, 1, NULL, 32, "int32"); | |
59 | + tdesc_create_reg (feature, "ds", regnum++, 1, NULL, 32, "int32"); | |
60 | + tdesc_create_reg (feature, "es", regnum++, 1, NULL, 32, "int32"); | |
61 | + tdesc_create_reg (feature, "fs", regnum++, 1, NULL, 32, "int32"); | |
62 | + tdesc_create_reg (feature, "gs", regnum++, 1, NULL, 32, "int32"); | |
63 | + tdesc_create_reg (feature, "st0", regnum++, 1, NULL, 80, "i387_ext"); | |
64 | + tdesc_create_reg (feature, "st1", regnum++, 1, NULL, 80, "i387_ext"); | |
65 | + tdesc_create_reg (feature, "st2", regnum++, 1, NULL, 80, "i387_ext"); | |
66 | + tdesc_create_reg (feature, "st3", regnum++, 1, NULL, 80, "i387_ext"); | |
67 | + tdesc_create_reg (feature, "st4", regnum++, 1, NULL, 80, "i387_ext"); | |
68 | + tdesc_create_reg (feature, "st5", regnum++, 1, NULL, 80, "i387_ext"); | |
69 | + tdesc_create_reg (feature, "st6", regnum++, 1, NULL, 80, "i387_ext"); | |
70 | + tdesc_create_reg (feature, "st7", regnum++, 1, NULL, 80, "i387_ext"); | |
71 | + tdesc_create_reg (feature, "fctrl", regnum++, 1, "float", 32, "int"); | |
72 | + tdesc_create_reg (feature, "fstat", regnum++, 1, "float", 32, "int"); | |
73 | + tdesc_create_reg (feature, "ftag", regnum++, 1, "float", 32, "int"); | |
74 | + tdesc_create_reg (feature, "fiseg", regnum++, 1, "float", 32, "int"); | |
75 | + tdesc_create_reg (feature, "fioff", regnum++, 1, "float", 32, "int"); | |
76 | + tdesc_create_reg (feature, "foseg", regnum++, 1, "float", 32, "int"); | |
77 | + tdesc_create_reg (feature, "fooff", regnum++, 1, "float", 32, "int"); | |
78 | + tdesc_create_reg (feature, "fop", regnum++, 1, "float", 32, "int"); | |
79 | + return regnum; | |
80 | +} |
@@ -0,0 +1,21 @@ | ||
1 | +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: | |
2 | + Original: 64bit-linux.xml.tmp */ | |
3 | + | |
4 | +#ifdef GDBSERVER | |
5 | +#include "tdesc.h" | |
6 | +#else | |
7 | +#include "defs.h" | |
8 | +#include "osabi.h" | |
9 | +#include "target-descriptions.h" | |
10 | +#endif | |
11 | + | |
12 | +static int | |
13 | +create_feature_i386_64bit_linux (struct target_desc *result, long regnum) | |
14 | +{ | |
15 | + struct tdesc_feature *feature; | |
16 | + | |
17 | + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.linux", "64bit-linux.xml"); | |
18 | + regnum = 57; | |
19 | + tdesc_create_reg (feature, "orig_rax", regnum++, 1, NULL, 64, "int"); | |
20 | + return regnum; | |
21 | +} |
@@ -0,0 +1,57 @@ | ||
1 | +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: | |
2 | + Original: 64bit-mpx.xml.tmp */ | |
3 | + | |
4 | +#ifdef GDBSERVER | |
5 | +#include "tdesc.h" | |
6 | +#else | |
7 | +#include "defs.h" | |
8 | +#include "osabi.h" | |
9 | +#include "target-descriptions.h" | |
10 | +#endif | |
11 | + | |
12 | +static int | |
13 | +create_feature_i386_64bit_mpx (struct target_desc *result, long regnum) | |
14 | +{ | |
15 | + struct tdesc_feature *feature; | |
16 | + | |
17 | + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx", "64bit-mpx.xml"); | |
18 | + struct tdesc_type *field_type; | |
19 | + struct tdesc_type *type; | |
20 | + type = tdesc_create_struct (feature, "br128"); | |
21 | + field_type = tdesc_named_type (feature, "uint64"); | |
22 | + tdesc_add_field (type, "lbound", field_type); | |
23 | + field_type = tdesc_named_type (feature, "uint64"); | |
24 | + tdesc_add_field (type, "ubound_raw", field_type); | |
25 | + | |
26 | + type = tdesc_create_struct (feature, "_bndstatus"); | |
27 | + tdesc_set_struct_size (type, 8); | |
28 | + tdesc_add_bitfield (type, "bde", 2, 63); | |
29 | + tdesc_add_bitfield (type, "error", 0, 1); | |
30 | + | |
31 | + type = tdesc_create_union (feature, "status"); | |
32 | + field_type = tdesc_named_type (feature, "data_ptr"); | |
33 | + tdesc_add_field (type, "raw", field_type); | |
34 | + field_type = tdesc_named_type (feature, "_bndstatus"); | |
35 | + tdesc_add_field (type, "status", field_type); | |
36 | + | |
37 | + type = tdesc_create_struct (feature, "_bndcfgu"); | |
38 | + tdesc_set_struct_size (type, 8); | |
39 | + tdesc_add_bitfield (type, "base", 12, 63); | |
40 | + tdesc_add_bitfield (type, "reserved", 2, 11); | |
41 | + tdesc_add_bitfield (type, "preserved", 1, 1); | |
42 | + tdesc_add_bitfield (type, "enabled", 0, 0); | |
43 | + | |
44 | + type = tdesc_create_union (feature, "cfgu"); | |
45 | + field_type = tdesc_named_type (feature, "data_ptr"); | |
46 | + tdesc_add_field (type, "raw", field_type); | |
47 | + field_type = tdesc_named_type (feature, "_bndcfgu"); | |
48 | + tdesc_add_field (type, "config", field_type); | |
49 | + | |
50 | + tdesc_create_reg (feature, "bnd0raw", regnum++, 1, NULL, 128, "br128"); | |
51 | + tdesc_create_reg (feature, "bnd1raw", regnum++, 1, NULL, 128, "br128"); | |
52 | + tdesc_create_reg (feature, "bnd2raw", regnum++, 1, NULL, 128, "br128"); | |
53 | + tdesc_create_reg (feature, "bnd3raw", regnum++, 1, NULL, 128, "br128"); | |
54 | + tdesc_create_reg (feature, "bndcfgu", regnum++, 1, NULL, 64, "cfgu"); | |
55 | + tdesc_create_reg (feature, "bndstatus", regnum++, 1, NULL, 64, "status"); | |
56 | + return regnum; | |
57 | +} |
@@ -0,0 +1,20 @@ | ||
1 | +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: | |
2 | + Original: 64bit-pkeys.xml.tmp */ | |
3 | + | |
4 | +#ifdef GDBSERVER | |
5 | +#include "tdesc.h" | |
6 | +#else | |
7 | +#include "defs.h" | |
8 | +#include "osabi.h" | |
9 | +#include "target-descriptions.h" | |
10 | +#endif | |
11 | + | |
12 | +static int | |
13 | +create_feature_i386_64bit_pkeys (struct target_desc *result, long regnum) | |
14 | +{ | |
15 | + struct tdesc_feature *feature; | |
16 | + | |
17 | + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.pkeys", "64bit-pkeys.xml"); | |
18 | + tdesc_create_reg (feature, "pkru", regnum++, 1, NULL, 32, "uint32"); | |
19 | + return regnum; | |
20 | +} |
@@ -0,0 +1,21 @@ | ||
1 | +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: | |
2 | + Original: 64bit-segments.xml.tmp */ | |
3 | + | |
4 | +#ifdef GDBSERVER | |
5 | +#include "tdesc.h" | |
6 | +#else | |
7 | +#include "defs.h" | |
8 | +#include "osabi.h" | |
9 | +#include "target-descriptions.h" | |
10 | +#endif | |
11 | + | |
12 | +static int | |
13 | +create_feature_i386_64bit_segments (struct target_desc *result, long regnum) | |
14 | +{ | |
15 | + struct tdesc_feature *feature; | |
16 | + | |
17 | + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments", "64bit-segments.xml"); | |
18 | + tdesc_create_reg (feature, "fs_base", regnum++, 1, NULL, 64, "int"); | |
19 | + tdesc_create_reg (feature, "gs_base", regnum++, 1, NULL, 64, "int"); | |
20 | + return regnum; | |
21 | +} |
@@ -0,0 +1,89 @@ | ||
1 | +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: | |
2 | + Original: 64bit-sse.xml.tmp */ | |
3 | + | |
4 | +#ifdef GDBSERVER | |
5 | +#include "tdesc.h" | |
6 | +#else | |
7 | +#include "defs.h" | |
8 | +#include "osabi.h" | |
9 | +#include "target-descriptions.h" | |
10 | +#endif | |
11 | + | |
12 | +static int | |
13 | +create_feature_i386_64bit_sse (struct target_desc *result, long regnum) | |
14 | +{ | |
15 | + struct tdesc_feature *feature; | |
16 | + | |
17 | + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse", "64bit-sse.xml"); | |
18 | + struct tdesc_type *field_type; | |
19 | + field_type = tdesc_named_type (feature, "ieee_single"); | |
20 | + tdesc_create_vector (feature, "v4f", field_type, 4); | |
21 | + | |
22 | + field_type = tdesc_named_type (feature, "ieee_double"); | |
23 | + tdesc_create_vector (feature, "v2d", field_type, 2); | |
24 | + | |
25 | + field_type = tdesc_named_type (feature, "int8"); | |
26 | + tdesc_create_vector (feature, "v16i8", field_type, 16); | |
27 | + | |
28 | + field_type = tdesc_named_type (feature, "int16"); | |
29 | + tdesc_create_vector (feature, "v8i16", field_type, 8); | |
30 | + | |
31 | + field_type = tdesc_named_type (feature, "int32"); | |
32 | + tdesc_create_vector (feature, "v4i32", field_type, 4); | |
33 | + | |
34 | + field_type = tdesc_named_type (feature, "int64"); | |
35 | + tdesc_create_vector (feature, "v2i64", field_type, 2); | |
36 | + | |
37 | + struct tdesc_type *type; | |
38 | + type = tdesc_create_union (feature, "vec128"); | |
39 | + field_type = tdesc_named_type (feature, "v4f"); | |
40 | + tdesc_add_field (type, "v4_float", field_type); | |
41 | + field_type = tdesc_named_type (feature, "v2d"); | |
42 | + tdesc_add_field (type, "v2_double", field_type); | |
43 | + field_type = tdesc_named_type (feature, "v16i8"); | |
44 | + tdesc_add_field (type, "v16_int8", field_type); | |
45 | + field_type = tdesc_named_type (feature, "v8i16"); | |
46 | + tdesc_add_field (type, "v8_int16", field_type); | |
47 | + field_type = tdesc_named_type (feature, "v4i32"); | |
48 | + tdesc_add_field (type, "v4_int32", field_type); | |
49 | + field_type = tdesc_named_type (feature, "v2i64"); | |
50 | + tdesc_add_field (type, "v2_int64", field_type); | |
51 | + field_type = tdesc_named_type (feature, "uint128"); | |
52 | + tdesc_add_field (type, "uint128", field_type); | |
53 | + | |
54 | + type = tdesc_create_flags (feature, "i386_mxcsr", 4); | |
55 | + tdesc_add_flag (type, 0, "IE"); | |
56 | + tdesc_add_flag (type, 1, "DE"); | |
57 | + tdesc_add_flag (type, 2, "ZE"); | |
58 | + tdesc_add_flag (type, 3, "OE"); | |
59 | + tdesc_add_flag (type, 4, "UE"); | |
60 | + tdesc_add_flag (type, 5, "PE"); | |
61 | + tdesc_add_flag (type, 6, "DAZ"); | |
62 | + tdesc_add_flag (type, 7, "IM"); | |
63 | + tdesc_add_flag (type, 8, "DM"); | |
64 | + tdesc_add_flag (type, 9, "ZM"); | |
65 | + tdesc_add_flag (type, 10, "OM"); | |
66 | + tdesc_add_flag (type, 11, "UM"); | |
67 | + tdesc_add_flag (type, 12, "PM"); | |
68 | + tdesc_add_flag (type, 15, "FZ"); | |
69 | + | |
70 | + regnum = 40; | |
71 | + tdesc_create_reg (feature, "xmm0", regnum++, 1, NULL, 128, "vec128"); | |
72 | + tdesc_create_reg (feature, "xmm1", regnum++, 1, NULL, 128, "vec128"); | |
73 | + tdesc_create_reg (feature, "xmm2", regnum++, 1, NULL, 128, "vec128"); | |
74 | + tdesc_create_reg (feature, "xmm3", regnum++, 1, NULL, 128, "vec128"); | |
75 | + tdesc_create_reg (feature, "xmm4", regnum++, 1, NULL, 128, "vec128"); | |
76 | + tdesc_create_reg (feature, "xmm5", regnum++, 1, NULL, 128, "vec128"); | |
77 | + tdesc_create_reg (feature, "xmm6", regnum++, 1, NULL, 128, "vec128"); | |
78 | + tdesc_create_reg (feature, "xmm7", regnum++, 1, NULL, 128, "vec128"); | |
79 | + tdesc_create_reg (feature, "xmm8", regnum++, 1, NULL, 128, "vec128"); | |
80 | + tdesc_create_reg (feature, "xmm9", regnum++, 1, NULL, 128, "vec128"); | |
81 | + tdesc_create_reg (feature, "xmm10", regnum++, 1, NULL, 128, "vec128"); | |
82 | + tdesc_create_reg (feature, "xmm11", regnum++, 1, NULL, 128, "vec128"); | |
83 | + tdesc_create_reg (feature, "xmm12", regnum++, 1, NULL, 128, "vec128"); | |
84 | + tdesc_create_reg (feature, "xmm13", regnum++, 1, NULL, 128, "vec128"); | |
85 | + tdesc_create_reg (feature, "xmm14", regnum++, 1, NULL, 128, "vec128"); | |
86 | + tdesc_create_reg (feature, "xmm15", regnum++, 1, NULL, 128, "vec128"); | |
87 | + tdesc_create_reg (feature, "mxcsr", regnum++, 1, "vector", 32, "i386_mxcsr"); | |
88 | + return regnum; | |
89 | +} |
@@ -0,0 +1,80 @@ | ||
1 | +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: | |
2 | + Original: x32-core.xml.tmp */ | |
3 | + | |
4 | +#ifdef GDBSERVER | |
5 | +#include "tdesc.h" | |
6 | +#else | |
7 | +#include "defs.h" | |
8 | +#include "osabi.h" | |
9 | +#include "target-descriptions.h" | |
10 | +#endif | |
11 | + | |
12 | +static int | |
13 | +create_feature_i386_x32_core (struct target_desc *result, long regnum) | |
14 | +{ | |
15 | + struct tdesc_feature *feature; | |
16 | + | |
17 | + feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core", "x32-core.xml"); | |
18 | + struct tdesc_type *field_type; | |
19 | + struct tdesc_type *type; | |
20 | + type = tdesc_create_flags (feature, "i386_eflags", 4); | |
21 | + tdesc_add_flag (type, 0, "CF"); | |
22 | + tdesc_add_flag (type, 1, ""); | |
23 | + tdesc_add_flag (type, 2, "PF"); | |
24 | + tdesc_add_flag (type, 4, "AF"); | |
25 | + tdesc_add_flag (type, 6, "ZF"); | |
26 | + tdesc_add_flag (type, 7, "SF"); | |
27 | + tdesc_add_flag (type, 8, "TF"); | |
28 | + tdesc_add_flag (type, 9, "IF"); | |
29 | + tdesc_add_flag (type, 10, "DF"); | |
30 | + tdesc_add_flag (type, 11, "OF"); | |
31 | + tdesc_add_flag (type, 14, "NT"); | |
32 | + tdesc_add_flag (type, 16, "RF"); | |
33 | + tdesc_add_flag (type, 17, "VM"); | |
34 | + tdesc_add_flag (type, 18, "AC"); | |
35 | + tdesc_add_flag (type, 19, "VIF"); | |
36 | + tdesc_add_flag (type, 20, "VIP"); | |
37 | + tdesc_add_flag (type, 21, "ID"); | |
38 | + | |
39 | + tdesc_create_reg (feature, "rax", regnum++, 1, NULL, 64, "int64"); | |
40 | + tdesc_create_reg (feature, "rbx", regnum++, 1, NULL, 64, "int64"); | |
41 | + tdesc_create_reg (feature, "rcx", regnum++, 1, NULL, 64, "int64"); | |
42 | + tdesc_create_reg (feature, "rdx", regnum++, 1, NULL, 64, "int64"); | |
43 | + tdesc_create_reg (feature, "rsi", regnum++, 1, NULL, 64, "int64"); | |
44 | + tdesc_create_reg (feature, "rdi", regnum++, 1, NULL, 64, "int64"); | |
45 | + tdesc_create_reg (feature, "rbp", regnum++, 1, NULL, 64, "int64"); | |
46 | + tdesc_create_reg (feature, "rsp", regnum++, 1, NULL, 64, "int64"); | |
47 | + tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 64, "int64"); | |
48 | + tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 64, "int64"); | |
49 | + tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 64, "int64"); | |
50 | + tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 64, "int64"); | |
51 | + tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 64, "int64"); | |
52 | + tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 64, "int64"); | |
53 | + tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 64, "int64"); | |
54 | + tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 64, "int64"); | |
55 | + tdesc_create_reg (feature, "rip", regnum++, 1, NULL, 64, "uint64"); | |
56 | + tdesc_create_reg (feature, "eflags", regnum++, 1, NULL, 32, "i386_eflags"); | |
57 | + tdesc_create_reg (feature, "cs", regnum++, 1, NULL, 32, "int32"); | |
58 | + tdesc_create_reg (feature, "ss", regnum++, 1, NULL, 32, "int32"); | |
59 | + tdesc_create_reg (feature, "ds", regnum++, 1, NULL, 32, "int32"); | |
60 | + tdesc_create_reg (feature, "es", regnum++, 1, NULL, 32, "int32"); | |
61 | + tdesc_create_reg (feature, "fs", regnum++, 1, NULL, 32, "int32"); | |
62 | + tdesc_create_reg (feature, "gs", regnum++, 1, NULL, 32, "int32"); | |
63 | + tdesc_create_reg (feature, "st0", regnum++, 1, NULL, 80, "i387_ext"); | |
64 | + tdesc_create_reg (feature, "st1", regnum++, 1, NULL, 80, "i387_ext"); | |
65 | + tdesc_create_reg (feature, "st2", regnum++, 1, NULL, 80, "i387_ext"); | |
66 | + tdesc_create_reg (feature, "st3", regnum++, 1, NULL, 80, "i387_ext"); | |
67 | + tdesc_create_reg (feature, "st4", regnum++, 1, NULL, 80, "i387_ext"); | |
68 | + tdesc_create_reg (feature, "st5", regnum++, 1, NULL, 80, "i387_ext"); | |
69 | + tdesc_create_reg (feature, "st6", regnum++, 1, NULL, 80, "i387_ext"); | |
70 | + tdesc_create_reg (feature, "st7", regnum++, 1, NULL, 80, "i387_ext"); | |
71 | + tdesc_create_reg (feature, "fctrl", regnum++, 1, "float", 32, "int"); | |
72 | + tdesc_create_reg (feature, "fstat", regnum++, 1, "float", 32, "int"); | |
73 | + tdesc_create_reg (feature, "ftag", regnum++, 1, "float", 32, "int"); | |
74 | + tdesc_create_reg (feature, "fiseg", regnum++, 1, "float", 32, "int"); | |
75 | + tdesc_create_reg (feature, "fioff", regnum++, 1, "float", 32, "int"); | |
76 | + tdesc_create_reg (feature, "foseg", regnum++, 1, "float", 32, "int"); | |
77 | + tdesc_create_reg (feature, "fooff", regnum++, 1, "float", 32, "int"); | |
78 | + tdesc_create_reg (feature, "fop", regnum++, 1, "float", 32, "int"); | |
79 | + return regnum; | |
80 | +} |
@@ -2263,7 +2263,9 @@ maint_print_c_tdesc_cmd (char *args, int from_tty) | ||
2263 | 2263 | if (loc != std::string::npos) |
2264 | 2264 | filename_after_features = filename_after_features.substr (loc + 10); |
2265 | 2265 | |
2266 | - if (strncmp (filename_after_features.c_str(), "i386/32bit-", 11) == 0) | |
2266 | + if (strncmp (filename_after_features.c_str(), "i386/32bit-", 11) == 0 | |
2267 | + || strncmp (filename_after_features.c_str(), "i386/64bit-", 11) == 0 | |
2268 | + || strncmp (filename_after_features.c_str(), "i386/x32-core.xml", 17) == 0) | |
2267 | 2269 | { |
2268 | 2270 | print_c_feature v (filename_after_features); |
2269 | 2271 |