aboutsummaryrefslogtreecommitdiff
path: root/gdb/features
diff options
context:
space:
mode:
authorAnton Kolesov <Anton.Kolesov@synopsys.com>2017-10-25 21:51:54 +0300
committerShahab Vahedi <shahab@synopsys.com>2020-03-16 22:53:10 +0100
commit817a7585764366397879cbbedfd7e9c1454b656c (patch)
treeee49e58f1c4723d8b45afa836425b748b428911a /gdb/features
parent67430cd00afcc270a27e44b10f9ef4249d554e66 (diff)
downloadfsf-binutils-gdb-817a7585764366397879cbbedfd7e9c1454b656c.zip
fsf-binutils-gdb-817a7585764366397879cbbedfd7e9c1454b656c.tar.gz
fsf-binutils-gdb-817a7585764366397879cbbedfd7e9c1454b656c.tar.bz2
arc: Migrate to new target features
This patch replaces usage of target descriptions in ARC, where the whole description is fixed in XML, with new target descriptions where XML describes individual features, and GDB assembles those features into actual target description. v2: Removed arc.c from ALLDEPFILES in gdb/Makefile.in. Removed vim modeline from arc-tdep.c to have it in a separate patch. Removed braces from one line "if/else". Undid the type change for "jb_pc" (kept it as "int"). Joined the unnecessary line breaks into one line. No more moving around arm targets in gdb/features/Makefile. Changed pattern checking for ARC features from "arc/{aux,core}" to "arc/". v3: Added include gaurds to arc.h. Added arc_read_description to _create_ target descriptions less. v4: Got rid of ARC_SYS_TYPE_NONE. Renamed ARC_SYS_TYPE_INVALID to ARC_SYS_TYPE_NUM. Fixed a few indentations/curly braces. Converted arc_sys_type_to_str from a macro to an inline function. gdb/ChangeLog: 2020-03-16 Anton Kolesov <anton.kolesov@synopsys.com> Shahab Vahedi <shahab@synopsys.com> * Makefile.in: Add arch/arc.o * configure.tgt: Likewise. * arc-tdep.c (arc_tdesc_init): Use arc_read_description. (_initialize_arc_tdep): Don't initialize old target descriptions. (arc_read_description): New function to cache target descriptions. * arc-tdep.h (arc_read_description): Add proto type. * arch/arc.c: New file. * arch/arc.h: Likewise. * features/Makefile: Replace old target descriptions with new. * features/arc-arcompact.c: Remove. * features/arc-arcompact.xml: Likewise. * features/arc-v2.c: Likewise * features/arc-v2.xml: Likewise * features/arc/aux-arcompact.xml: New file. * features/arc/aux-v2.xml: Likewise. * features/arc/core-arcompact.xml: Likewise. * features/arc/core-v2.xml: Likewise. * features/arc/aux-arcompact.c: Generate. * features/arc/aux-v2.c: Likewise. * features/arc/core-arcompact.c: Likewise. * features/arc/core-v2.c: Likewise. * target-descriptions (maint_print_c_tdesc_cmd): Support ARC features.
Diffstat (limited to 'gdb/features')
-rw-r--r--gdb/features/Makefile6
-rw-r--r--gdb/features/arc-arcompact.c74
-rw-r--r--gdb/features/arc-arcompact.xml85
-rw-r--r--gdb/features/arc-v2.c78
-rw-r--r--gdb/features/arc-v2.xml92
-rw-r--r--gdb/features/arc/aux-arcompact.c31
-rw-r--r--gdb/features/arc/aux-arcompact.xml28
-rw-r--r--gdb/features/arc/aux-v2.c35
-rw-r--r--gdb/features/arc/aux-v2.xml32
-rw-r--r--gdb/features/arc/core-arcompact.c47
-rw-r--r--gdb/features/arc/core-arcompact.xml58
-rw-r--r--gdb/features/arc/core-v2.c47
-rw-r--r--gdb/features/arc/core-v2.xml61
13 files changed, 343 insertions, 331 deletions
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 9a98b05..cc65baa 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -108,8 +108,6 @@ OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH))
# --enable-targets=all GDB. You can override this by passing XMLTOC
# to make on the command line.
XMLTOC = \
- arc-v2.xml \
- arc-arcompact.xml \
microblaze-with-stack-protect.xml \
microblaze.xml \
mips-dsp-linux.xml \
@@ -206,6 +204,10 @@ $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl
FEATURE_XMLFILES = aarch64-core.xml \
aarch64-fpu.xml \
aarch64-pauth.xml \
+ arc/core-v2.xml \
+ arc/aux-v2.xml \
+ arc/core-arcompact.xml \
+ arc/aux-arcompact.xml \
arm/arm-core.xml \
arm/arm-fpa.xml \
arm/arm-m-profile.xml \
diff --git a/gdb/features/arc-arcompact.c b/gdb/features/arc-arcompact.c
deleted file mode 100644
index f81f0a2..0000000
--- a/gdb/features/arc-arcompact.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: arc-arcompact.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_arc_arcompact;
-static void
-initialize_tdesc_arc_arcompact (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("ARC700"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.arcompact");
- tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "gp", 26, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "fp", 27, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "sp", 28, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ilink1", 29, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "ilink2", 30, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "blink", 31, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "lp_count", 32, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "pcl", 33, 1, NULL, 32, "code_ptr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
- tdesc_type_with_fields *type_with_fields;
- type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
- tdesc_add_flag (type_with_fields, 0, "H");
- tdesc_add_bitfield (type_with_fields, "E", 1, 2);
- tdesc_add_bitfield (type_with_fields, "A", 3, 4);
- tdesc_add_flag (type_with_fields, 5, "AE");
- tdesc_add_flag (type_with_fields, 6, "DE");
- tdesc_add_flag (type_with_fields, 7, "U");
- tdesc_add_flag (type_with_fields, 8, "V");
- tdesc_add_flag (type_with_fields, 9, "C");
- tdesc_add_flag (type_with_fields, 10, "N");
- tdesc_add_flag (type_with_fields, 11, "Z");
- tdesc_add_flag (type_with_fields, 12, "L");
- tdesc_add_flag (type_with_fields, 13, "R");
- tdesc_add_flag (type_with_fields, 14, "SE");
-
- tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
-
- tdesc_arc_arcompact = result;
-}
diff --git a/gdb/features/arc-arcompact.xml b/gdb/features/arc-arcompact.xml
deleted file mode 100644
index 31acbaf..0000000
--- a/gdb/features/arc-arcompact.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
-
- Copying and distribution of this file, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved. -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
- <architecture>arc:ARC700</architecture>
- <!-- No OSABI for bare metal. -->
- <!-- No compatibility for ARC. -->
-
- <feature name="org.gnu.gdb.arc.core.arcompact">
- <reg name="r0" bitsize="32"/>
- <reg name="r1" bitsize="32"/>
- <reg name="r2" bitsize="32"/>
- <reg name="r3" bitsize="32"/>
- <reg name="r4" bitsize="32"/>
- <reg name="r5" bitsize="32"/>
- <reg name="r6" bitsize="32"/>
- <reg name="r7" bitsize="32"/>
- <reg name="r8" bitsize="32"/>
- <reg name="r9" bitsize="32"/>
- <reg name="r10" bitsize="32"/>
- <reg name="r11" bitsize="32"/>
- <reg name="r12" bitsize="32"/>
- <reg name="r13" bitsize="32"/>
- <reg name="r14" bitsize="32"/>
- <reg name="r15" bitsize="32"/>
- <reg name="r16" bitsize="32"/>
- <reg name="r17" bitsize="32"/>
- <reg name="r18" bitsize="32"/>
- <reg name="r19" bitsize="32"/>
- <reg name="r20" bitsize="32"/>
- <reg name="r21" bitsize="32"/>
- <reg name="r22" bitsize="32"/>
- <reg name="r23" bitsize="32"/>
- <reg name="r24" bitsize="32"/>
- <reg name="r25" bitsize="32"/>
-
- <!-- ARC core data pointer registers. -->
- <reg name="gp" bitsize="32" type="data_ptr"/>
- <reg name="fp" bitsize="32" type="data_ptr"/>
- <reg name="sp" bitsize="32" type="data_ptr"/>
-
- <!-- Code pointers. -->
- <reg name="ilink1" bitsize="32" type="code_ptr"/>
- <reg name="ilink2" bitsize="32" type="code_ptr"/>
- <reg name="blink" bitsize="32" type="code_ptr"/>
-
- <!-- Here goes extension core registers: r32 - r59 -->
-
- <!-- Loop counter. -->
- <reg name="lp_count" bitsize="32" type="uint32"/>
-
- <!-- r61 is a reserved register address. -->
-
- <!-- r62 is a long immediate value, not a real register. -->
-
- <!-- 4-byte aligned read-only program counter. -->
- <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
- </feature>
-
- <feature name="org.gnu.gdb.arc.aux-minimal">
- <flags id="status32_type" size="4">
- <field name="H" start="0" end="0"/>
- <field name="E" start="1" end="2"/>
- <field name="A" start="3" end="4"/>
- <field name="AE" start="5" end="5"/>
- <field name="DE" start="6" end="6"/>
- <field name="U" start="7" end="7"/>
- <field name="V" start="8" end="8"/>
- <field name="C" start="9" end="9"/>
- <field name="N" start="10" end="10"/>
- <field name="Z" start="11" end="11"/>
- <field name="L" start="12" end="12"/>
- <field name="R" start="13" end="13"/>
- <field name="SE" start="14" end="14"/>
- </flags>
-
- <reg name="pc" bitsize="32" type="code_ptr"/>
- <reg name="status32" bitsize="32" type="status32_type"/>
- </feature>
-</target>
diff --git a/gdb/features/arc-v2.c b/gdb/features/arc-v2.c
deleted file mode 100644
index b2254b2..0000000
--- a/gdb/features/arc-v2.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: arc-v2.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_arc_v2;
-static void
-initialize_tdesc_arc_v2 (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("ARCv2"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.v2");
- tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "gp", 26, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "fp", 27, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "sp", 28, 1, NULL, 32, "data_ptr");
- tdesc_create_reg (feature, "ilink", 29, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "blink", 31, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "lp_count", 32, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "pcl", 33, 1, NULL, 32, "code_ptr");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
- tdesc_type_with_fields *type_with_fields;
- type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
- tdesc_add_flag (type_with_fields, 0, "H");
- tdesc_add_bitfield (type_with_fields, "E", 1, 4);
- tdesc_add_flag (type_with_fields, 5, "AE");
- tdesc_add_flag (type_with_fields, 6, "DE");
- tdesc_add_flag (type_with_fields, 7, "U");
- tdesc_add_flag (type_with_fields, 8, "V");
- tdesc_add_flag (type_with_fields, 9, "C");
- tdesc_add_flag (type_with_fields, 10, "N");
- tdesc_add_flag (type_with_fields, 11, "Z");
- tdesc_add_flag (type_with_fields, 12, "L");
- tdesc_add_flag (type_with_fields, 13, "DZ");
- tdesc_add_flag (type_with_fields, 14, "SC");
- tdesc_add_flag (type_with_fields, 15, "ES");
- tdesc_add_bitfield (type_with_fields, "RB", 16, 18);
- tdesc_add_flag (type_with_fields, 19, "AD");
- tdesc_add_flag (type_with_fields, 20, "US");
- tdesc_add_flag (type_with_fields, 31, "IE");
-
- tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
-
- tdesc_arc_v2 = result;
-}
diff --git a/gdb/features/arc-v2.xml b/gdb/features/arc-v2.xml
deleted file mode 100644
index 2dae670..0000000
--- a/gdb/features/arc-v2.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
-
- Copying and distribution of this file, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved. -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
- <architecture>arc:ARCv2</architecture>
- <!-- No OSABI for bare metal. -->
- <!-- No compatibility for ARC. -->
-
- <feature name="org.gnu.gdb.arc.core.v2">
- <reg name="r0" bitsize="32"/>
- <reg name="r1" bitsize="32"/>
- <reg name="r2" bitsize="32"/>
- <reg name="r3" bitsize="32"/>
- <reg name="r4" bitsize="32"/>
- <reg name="r5" bitsize="32"/>
- <reg name="r6" bitsize="32"/>
- <reg name="r7" bitsize="32"/>
- <reg name="r8" bitsize="32"/>
- <reg name="r9" bitsize="32"/>
- <reg name="r10" bitsize="32"/>
- <reg name="r11" bitsize="32"/>
- <reg name="r12" bitsize="32"/>
- <reg name="r13" bitsize="32"/>
- <reg name="r14" bitsize="32"/>
- <reg name="r15" bitsize="32"/>
- <reg name="r16" bitsize="32"/>
- <reg name="r17" bitsize="32"/>
- <reg name="r18" bitsize="32"/>
- <reg name="r19" bitsize="32"/>
- <reg name="r20" bitsize="32"/>
- <reg name="r21" bitsize="32"/>
- <reg name="r22" bitsize="32"/>
- <reg name="r23" bitsize="32"/>
- <reg name="r24" bitsize="32"/>
- <reg name="r25" bitsize="32"/>
-
- <!-- ARC core data pointer registers. -->
- <reg name="gp" bitsize="32" type="data_ptr"/>
- <reg name="fp" bitsize="32" type="data_ptr"/>
- <reg name="sp" bitsize="32" type="data_ptr"/>
-
- <!-- Code pointers. R30 is general purpose, but it used to be ILINK2 in
- ARCompact, thus its odd position in between of special purpose registers.
- GCC does't use this register, so it isn't a member of a general group. -->
- <reg name="ilink" bitsize="32" type="code_ptr"/>
- <reg name="r30" bitsize="32" group=""/>
- <reg name="blink" bitsize="32" type="code_ptr"/>
-
- <!-- Here goes extension core registers: r32 - r57. -->
- <!-- Here goes ACCL/ACCH registers, r58, r59. -->
-
- <!-- Loop counter. -->
- <reg name="lp_count" bitsize="32" type="uint32"/>
-
- <!-- r61 is a reserved register address. -->
-
- <!-- r62 is a long immediate value, not a real register. -->
-
- <!-- 4-byte aligned read-only program counter. -->
- <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
- </feature>
-
- <feature name="org.gnu.gdb.arc.aux-minimal">
- <flags id="status32_type" size="4">
- <field name="H" start="0" end="0"/>
- <field name="E" start="1" end="4"/>
- <field name="AE" start="5" end="5"/>
- <field name="DE" start="6" end="6"/>
- <field name="U" start="7" end="7"/>
- <field name="V" start="8" end="8"/>
- <field name="C" start="9" end="9"/>
- <field name="N" start="10" end="10"/>
- <field name="Z" start="11" end="11"/>
- <field name="L" start="12" end="12"/>
- <field name="DZ" start="13" end="13"/>
- <field name="SC" start="14" end="14"/>
- <field name="ES" start="15" end="15"/>
- <field name="RB" start="16" end="18"/>
- <field name="AD" start="19" end="19"/>
- <field name="US" start="20" end="20"/>
- <field name="IE" start="31" end="31"/>
- </flags>
-
- <reg name="pc" bitsize="32" type="code_ptr"/>
- <reg name="status32" bitsize="32" type="status32_type"/>
- </feature>
-</target>
diff --git a/gdb/features/arc/aux-arcompact.c b/gdb/features/arc/aux-arcompact.c
new file mode 100644
index 0000000..d8e8c74
--- /dev/null
+++ b/gdb/features/arc/aux-arcompact.c
@@ -0,0 +1,31 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: aux-arcompact.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_arc_aux_arcompact (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
+ tdesc_type_with_fields *type_with_fields;
+ type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
+ tdesc_add_flag (type_with_fields, 0, "H");
+ tdesc_add_bitfield (type_with_fields, "E", 1, 2);
+ tdesc_add_bitfield (type_with_fields, "A", 3, 4);
+ tdesc_add_flag (type_with_fields, 5, "AE");
+ tdesc_add_flag (type_with_fields, 6, "DE");
+ tdesc_add_flag (type_with_fields, 7, "U");
+ tdesc_add_flag (type_with_fields, 8, "V");
+ tdesc_add_flag (type_with_fields, 9, "C");
+ tdesc_add_flag (type_with_fields, 10, "N");
+ tdesc_add_flag (type_with_fields, 11, "Z");
+ tdesc_add_flag (type_with_fields, 12, "L");
+ tdesc_add_flag (type_with_fields, 13, "R");
+ tdesc_add_flag (type_with_fields, 14, "SE");
+
+ tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 32, "code_ptr");
+ tdesc_create_reg (feature, "status32", regnum++, 1, NULL, 32, "status32_type");
+ return regnum;
+}
diff --git a/gdb/features/arc/aux-arcompact.xml b/gdb/features/arc/aux-arcompact.xml
new file mode 100644
index 0000000..bf68112
--- /dev/null
+++ b/gdb/features/arc/aux-arcompact.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved. -->
+
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.arc.aux-minimal">
+ <flags id="status32_type" size="4">
+ <field name="H" start="0" end="0"/>
+ <field name="E" start="1" end="2"/>
+ <field name="A" start="3" end="4"/>
+ <field name="AE" start="5" end="5"/>
+ <field name="DE" start="6" end="6"/>
+ <field name="U" start="7" end="7"/>
+ <field name="V" start="8" end="8"/>
+ <field name="C" start="9" end="9"/>
+ <field name="N" start="10" end="10"/>
+ <field name="Z" start="11" end="11"/>
+ <field name="L" start="12" end="12"/>
+ <field name="R" start="13" end="13"/>
+ <field name="SE" start="14" end="14"/>
+ </flags>
+
+ <reg name="pc" bitsize="32" type="code_ptr"/>
+ <reg name="status32" bitsize="32" type="status32_type"/>
+</feature>
diff --git a/gdb/features/arc/aux-v2.c b/gdb/features/arc/aux-v2.c
new file mode 100644
index 0000000..6290b9b
--- /dev/null
+++ b/gdb/features/arc/aux-v2.c
@@ -0,0 +1,35 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: aux-v2.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_arc_aux_v2 (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
+ tdesc_type_with_fields *type_with_fields;
+ type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
+ tdesc_add_flag (type_with_fields, 0, "H");
+ tdesc_add_bitfield (type_with_fields, "E", 1, 4);
+ tdesc_add_flag (type_with_fields, 5, "AE");
+ tdesc_add_flag (type_with_fields, 6, "DE");
+ tdesc_add_flag (type_with_fields, 7, "U");
+ tdesc_add_flag (type_with_fields, 8, "V");
+ tdesc_add_flag (type_with_fields, 9, "C");
+ tdesc_add_flag (type_with_fields, 10, "N");
+ tdesc_add_flag (type_with_fields, 11, "Z");
+ tdesc_add_flag (type_with_fields, 12, "L");
+ tdesc_add_flag (type_with_fields, 13, "DZ");
+ tdesc_add_flag (type_with_fields, 14, "SC");
+ tdesc_add_flag (type_with_fields, 15, "ES");
+ tdesc_add_bitfield (type_with_fields, "RB", 16, 18);
+ tdesc_add_flag (type_with_fields, 19, "AD");
+ tdesc_add_flag (type_with_fields, 20, "US");
+ tdesc_add_flag (type_with_fields, 31, "IE");
+
+ tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 32, "code_ptr");
+ tdesc_create_reg (feature, "status32", regnum++, 1, NULL, 32, "status32_type");
+ return regnum;
+}
diff --git a/gdb/features/arc/aux-v2.xml b/gdb/features/arc/aux-v2.xml
new file mode 100644
index 0000000..2701fad
--- /dev/null
+++ b/gdb/features/arc/aux-v2.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved. -->
+
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.arc.aux-minimal">
+ <flags id="status32_type" size="4">
+ <field name="H" start="0" end="0"/>
+ <field name="E" start="1" end="4"/>
+ <field name="AE" start="5" end="5"/>
+ <field name="DE" start="6" end="6"/>
+ <field name="U" start="7" end="7"/>
+ <field name="V" start="8" end="8"/>
+ <field name="C" start="9" end="9"/>
+ <field name="N" start="10" end="10"/>
+ <field name="Z" start="11" end="11"/>
+ <field name="L" start="12" end="12"/>
+ <field name="DZ" start="13" end="13"/>
+ <field name="SC" start="14" end="14"/>
+ <field name="ES" start="15" end="15"/>
+ <field name="RB" start="16" end="18"/>
+ <field name="AD" start="19" end="19"/>
+ <field name="US" start="20" end="20"/>
+ <field name="IE" start="31" end="31"/>
+ </flags>
+
+ <reg name="pc" bitsize="32" type="code_ptr"/>
+ <reg name="status32" bitsize="32" type="status32_type"/>
+</feature>
diff --git a/gdb/features/arc/core-arcompact.c b/gdb/features/arc/core-arcompact.c
new file mode 100644
index 0000000..7d9a4b2
--- /dev/null
+++ b/gdb/features/arc/core-arcompact.c
@@ -0,0 +1,47 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: core-arcompact.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_arc_core_arcompact (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.arcompact");
+ tdesc_create_reg (feature, "r0", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r1", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r2", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r3", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r4", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r5", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r6", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r7", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r16", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r17", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r18", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r19", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r20", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r21", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r22", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r23", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r24", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r25", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "gp", regnum++, 1, NULL, 32, "data_ptr");
+ tdesc_create_reg (feature, "fp", regnum++, 1, NULL, 32, "data_ptr");
+ tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 32, "data_ptr");
+ tdesc_create_reg (feature, "ilink1", regnum++, 1, NULL, 32, "code_ptr");
+ tdesc_create_reg (feature, "ilink2", regnum++, 1, NULL, 32, "code_ptr");
+ tdesc_create_reg (feature, "blink", regnum++, 1, NULL, 32, "code_ptr");
+ tdesc_create_reg (feature, "lp_count", regnum++, 1, NULL, 32, "uint32");
+ tdesc_create_reg (feature, "pcl", regnum++, 1, NULL, 32, "code_ptr");
+ return regnum;
+}
diff --git a/gdb/features/arc/core-arcompact.xml b/gdb/features/arc/core-arcompact.xml
new file mode 100644
index 0000000..9209891
--- /dev/null
+++ b/gdb/features/arc/core-arcompact.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved. -->
+
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.arc.core.arcompact">
+ <reg name="r0" bitsize="32"/>
+ <reg name="r1" bitsize="32"/>
+ <reg name="r2" bitsize="32"/>
+ <reg name="r3" bitsize="32"/>
+ <reg name="r4" bitsize="32"/>
+ <reg name="r5" bitsize="32"/>
+ <reg name="r6" bitsize="32"/>
+ <reg name="r7" bitsize="32"/>
+ <reg name="r8" bitsize="32"/>
+ <reg name="r9" bitsize="32"/>
+ <reg name="r10" bitsize="32"/>
+ <reg name="r11" bitsize="32"/>
+ <reg name="r12" bitsize="32"/>
+ <reg name="r13" bitsize="32"/>
+ <reg name="r14" bitsize="32"/>
+ <reg name="r15" bitsize="32"/>
+ <reg name="r16" bitsize="32"/>
+ <reg name="r17" bitsize="32"/>
+ <reg name="r18" bitsize="32"/>
+ <reg name="r19" bitsize="32"/>
+ <reg name="r20" bitsize="32"/>
+ <reg name="r21" bitsize="32"/>
+ <reg name="r22" bitsize="32"/>
+ <reg name="r23" bitsize="32"/>
+ <reg name="r24" bitsize="32"/>
+ <reg name="r25" bitsize="32"/>
+
+ <!-- ARC core data pointer registers. -->
+ <reg name="gp" bitsize="32" type="data_ptr"/>
+ <reg name="fp" bitsize="32" type="data_ptr"/>
+ <reg name="sp" bitsize="32" type="data_ptr"/>
+
+ <!-- Code pointers. -->
+ <reg name="ilink1" bitsize="32" type="code_ptr"/>
+ <reg name="ilink2" bitsize="32" type="code_ptr"/>
+ <reg name="blink" bitsize="32" type="code_ptr"/>
+
+ <!-- Here goes extension core registers: r32 - r59 -->
+
+ <!-- Loop counter. -->
+ <reg name="lp_count" bitsize="32" type="uint32"/>
+
+ <!-- r61 is a reserved register address. -->
+
+ <!-- r62 is a long immediate value, not a real register. -->
+
+ <!-- 4-byte aligned read-only program counter. -->
+ <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
+</feature>
diff --git a/gdb/features/arc/core-v2.c b/gdb/features/arc/core-v2.c
new file mode 100644
index 0000000..d37da99
--- /dev/null
+++ b/gdb/features/arc/core-v2.c
@@ -0,0 +1,47 @@
+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
+ Original: core-v2.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_arc_core_v2 (struct target_desc *result, long regnum)
+{
+ struct tdesc_feature *feature;
+
+ feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.v2");
+ tdesc_create_reg (feature, "r0", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r1", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r2", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r3", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r4", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r5", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r6", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r7", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r16", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r17", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r18", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r19", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r20", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r21", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r22", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r23", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r24", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "r25", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "gp", regnum++, 1, NULL, 32, "data_ptr");
+ tdesc_create_reg (feature, "fp", regnum++, 1, NULL, 32, "data_ptr");
+ tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 32, "data_ptr");
+ tdesc_create_reg (feature, "ilink", regnum++, 1, NULL, 32, "code_ptr");
+ tdesc_create_reg (feature, "r30", regnum++, 1, NULL, 32, "int");
+ tdesc_create_reg (feature, "blink", regnum++, 1, NULL, 32, "code_ptr");
+ tdesc_create_reg (feature, "lp_count", regnum++, 1, NULL, 32, "uint32");
+ tdesc_create_reg (feature, "pcl", regnum++, 1, NULL, 32, "code_ptr");
+ return regnum;
+}
diff --git a/gdb/features/arc/core-v2.xml b/gdb/features/arc/core-v2.xml
new file mode 100644
index 0000000..1b17968
--- /dev/null
+++ b/gdb/features/arc/core-v2.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved. -->
+
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.arc.core.v2">
+ <reg name="r0" bitsize="32"/>
+ <reg name="r1" bitsize="32"/>
+ <reg name="r2" bitsize="32"/>
+ <reg name="r3" bitsize="32"/>
+ <reg name="r4" bitsize="32"/>
+ <reg name="r5" bitsize="32"/>
+ <reg name="r6" bitsize="32"/>
+ <reg name="r7" bitsize="32"/>
+ <reg name="r8" bitsize="32"/>
+ <reg name="r9" bitsize="32"/>
+ <reg name="r10" bitsize="32"/>
+ <reg name="r11" bitsize="32"/>
+ <reg name="r12" bitsize="32"/>
+ <reg name="r13" bitsize="32"/>
+ <reg name="r14" bitsize="32"/>
+ <reg name="r15" bitsize="32"/>
+ <reg name="r16" bitsize="32"/>
+ <reg name="r17" bitsize="32"/>
+ <reg name="r18" bitsize="32"/>
+ <reg name="r19" bitsize="32"/>
+ <reg name="r20" bitsize="32"/>
+ <reg name="r21" bitsize="32"/>
+ <reg name="r22" bitsize="32"/>
+ <reg name="r23" bitsize="32"/>
+ <reg name="r24" bitsize="32"/>
+ <reg name="r25" bitsize="32"/>
+
+ <!-- ARC core data pointer registers. -->
+ <reg name="gp" bitsize="32" type="data_ptr"/>
+ <reg name="fp" bitsize="32" type="data_ptr"/>
+ <reg name="sp" bitsize="32" type="data_ptr"/>
+
+ <!-- Code pointers. R30 is general purpose, but it used to be ILINK2 in
+ ARCompact, thus its odd position in between of special purpose registers.
+ GCC does't use this register, so it isn't a member of a general group. -->
+ <reg name="ilink" bitsize="32" type="code_ptr"/>
+ <reg name="r30" bitsize="32" group=""/>
+ <reg name="blink" bitsize="32" type="code_ptr"/>
+
+ <!-- Here goes extension core registers: r32 - r57. -->
+ <!-- Here goes ACCL/ACCH registers, r58, r59. -->
+
+ <!-- Loop counter. -->
+ <reg name="lp_count" bitsize="32" type="uint32"/>
+
+ <!-- r61 is a reserved register address. -->
+
+ <!-- r62 is a long immediate value, not a real register. -->
+
+ <!-- 4-byte aligned read-only program counter. -->
+ <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
+</feature>