@@ -694,6 +694,7 @@ ALL_TARGET_OBS = \
aarch32-tdep.o \
arc-tdep.o \
arch/aarch32.o \
+ arch/arc.o \
arch/arm.o \
arch/arm-get-next-pcs.o \
arch/arm-linux.o \
@@ -1438,6 +1439,7 @@ HFILES_NO_SRCDIR = \
arch/aarch32.h \
arch/aarch64.h \
arch/aarch64-insn.h \
+ arch/arc.h \
arch/arm.h \
arch/i386.h \
arch/ppc-linux-common.h \
@@ -2119,6 +2121,7 @@ ALLDEPFILES = \
amd64-obsd-tdep.c \
amd64-sol2-tdep.c \
amd64-tdep.c \
+ arc.c \
arc-tdep.c \
arm.c \
arm-bsd-tdep.c \
@@ -28,21 +28,20 @@
#include "gdbcore.h"
#include "gdbcmd.h"
#include "objfiles.h"
+#include "osabi.h"
#include "prologue-value.h"
+#include "target-descriptions.h"
#include "trad-frame.h"
/* ARC header files. */
#include "opcode/arc.h"
#include "opcodes/arc-dis.h"
#include "arc-tdep.h"
+#include "arch/arc.h"
/* Standard headers. */
#include <algorithm>
-/* Default target descriptions. */
-#include "features/arc-v2.c"
-#include "features/arc-arcompact.c"
-
/* The frame unwind cache for ARC. */
struct arc_frame_cache
@@ -1753,18 +1752,7 @@ arc_tdesc_init (struct gdbarch_info info, const struct target_desc **tdesc,
/* If target doesn't provide a description - use default one. */
if (!tdesc_has_registers (tdesc_loc))
{
- if (is_arcv2)
- {
- tdesc_loc = tdesc_arc_v2;
- if (arc_debug)
- debug_printf ("arc: Using default register set for ARC v2.\n");
- }
- else
- {
- tdesc_loc = tdesc_arc_arcompact;
- if (arc_debug)
- debug_printf ("arc: Using default register set for ARCompact.\n");
- }
+ tdesc_loc = arc_create_target_description (arc_debug, is_arcv2);
}
else
{
@@ -2114,7 +2102,7 @@ arc_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- fprintf_unfiltered (file, "arc_dump_tdep: jb_pc = %i\n", tdep->jb_pc);
+ fprintf_unfiltered (file, "arc_dump_tdep: jb_pc = %li\n", tdep->jb_pc);
}
/* Wrapper for "maintenance print arc" list of commands. */
@@ -2151,9 +2139,6 @@ _initialize_arc_tdep ()
{
gdbarch_register (bfd_arch_arc, arc_gdbarch_init, arc_dump_tdep);
- initialize_tdesc_arc_v2 ();
- initialize_tdesc_arc_arcompact ();
-
/* Register ARC-specific commands with gdb. */
/* Add root prefix command for "maintenance print arc" commands. */
@@ -2176,3 +2161,5 @@ _initialize_arc_tdep ()
_("Non-zero enables ARC specific debugging."),
NULL, NULL, &setdebuglist, &showdebuglist);
}
+
+/* vim: set sts=2 shiftwidth=2 ts=8: */
@@ -99,7 +99,7 @@ struct gdbarch_tdep
{
/* Offset to PC value in jump buffer. If this is negative, longjmp
support will be disabled. */
- int jb_pc;
+ CORE_ADDR jb_pc;
};
/* Utility functions used by other ARC-specific modules. */
new file mode 100644
@@ -0,0 +1,70 @@
+/* Copyright (C) 2017-2020 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/>. */
+
+
+#include "gdbsupport/common-defs.h"
+#include <stdlib.h>
+
+#include "arc.h"
+
+/* Target description features. */
+#include "features/arc/core-v2.c"
+#include "features/arc/aux-v2.c"
+#include "features/arc/core-arcompact.c"
+#include "features/arc/aux-arcompact.c"
+
+/* Create target description for a target with specified parameters.
+ PRINT_DEBUG defines whether to print debug messages to the stderr stream.
+ IS_ARCV2 defines if this is an ARCv2 (ARC EM or ARC HS) target or ARCompact
+ (ARC600 or ARC700); there is no use for more specific information about
+ target processor. */
+
+target_desc *
+arc_create_target_description (bool print_debug, bool is_arcv2)
+{
+ target_desc *tdesc = allocate_target_description ();
+
+ if (print_debug)
+ debug_printf ("arc: Creating target description, "
+ "is_arcv2=%i\n", is_arcv2);
+
+ long regnum = 0;
+
+#ifndef IN_PROCESS_AGENT
+ if (is_arcv2)
+ {
+ set_tdesc_architecture (tdesc, "arc:ARCv2");
+ }
+ else
+ {
+ set_tdesc_architecture (tdesc, "arc:ARC700");
+ }
+#endif
+
+ if (is_arcv2)
+ {
+ regnum = create_feature_arc_core_v2 (tdesc, regnum);
+ regnum = create_feature_arc_aux_v2 (tdesc, regnum);
+ }
+ else
+ {
+ regnum = create_feature_arc_core_arcompact (tdesc, regnum);
+ regnum = create_feature_arc_aux_arcompact (tdesc, regnum);
+ }
+
+ return tdesc;
+}
new file mode 100644
@@ -0,0 +1,20 @@
+/* Copyright (C) 2017-2020 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/>. */
+
+#include "gdbsupport/tdesc.h"
+
+target_desc *arc_create_target_description (bool print_debug, bool is_arcv2);
@@ -59,7 +59,7 @@ alpha*-*-*)
arc*-*-*)
# Target: Unidentified ARC target
- cpu_obs="arc-tdep.o"
+ cpu_obs="arc-tdep.o arch/arc.o"
;;
arm*-*-*)
@@ -108,8 +108,14 @@ 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 \
+ aarch64.xml \
+ arm/arm-with-iwmmxt.xml \
+ arm/arm-with-m-fpa-layout.xml \
+ arm/arm-with-m-vfp-d16.xml \
+ arm/arm-with-m.xml \
+ arm/arm-with-neon.xml \
+ arm/arm-with-vfpv2.xml \
+ arm/arm-with-vfpv3.xml \
microblaze-with-stack-protect.xml \
microblaze.xml \
mips-dsp-linux.xml \
@@ -203,16 +209,11 @@ $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl
# For targets with feature based target descriptions,
# the set of xml files we'll generate .c files for GDB from.
-FEATURE_XMLFILES = aarch64-core.xml \
- aarch64-fpu.xml \
- aarch64-pauth.xml \
- arm/arm-core.xml \
- arm/arm-fpa.xml \
- arm/arm-m-profile.xml \
- arm/arm-m-profile-with-fpa.xml \
- arm/arm-vfpv2.xml \
- arm/arm-vfpv3.xml \
- arm/xscale-iwmmxt.xml \
+FEATURE_XMLFILES = \
+ arc/core-v2.xml \
+ arc/aux-v2.xml \
+ arc/core-arcompact.xml \
+ arc/aux-arcompact.xml \
i386/32bit-core.xml \
i386/32bit-sse.xml \
i386/32bit-linux.xml \
deleted file mode 100644
@@ -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;
-}
deleted file mode 100644
@@ -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>
deleted file mode 100644
@@ -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;
-}
deleted file mode 100644
@@ -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>
new file mode 100644
@@ -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;
+}
new file mode 100644
@@ -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>
new file mode 100644
@@ -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;
+}
new file mode 100644
@@ -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>
new file mode 100644
@@ -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;
+}
new file mode 100644
@@ -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>
new file mode 100644
@@ -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;
+}
new file mode 100644
@@ -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>
@@ -1715,7 +1715,9 @@ maint_print_c_tdesc_cmd (const char *args, int from_tty)
|| startswith (filename_after_features.c_str (), "riscv/")
|| startswith (filename_after_features.c_str (), "tic6x-")
|| startswith (filename_after_features.c_str (), "aarch64")
- || startswith (filename_after_features.c_str (), "arm/"))
+ || startswith (filename_after_features.c_str (), "arm/")
+ || startswith (filename_after_features.c_str (), "arc/core-")
+ || startswith (filename_after_features.c_str (), "arc/aux-"))
{
print_c_feature v (filename_after_features);