From ad0a504f7e10ea11dbf58eb9990a5180f781b695 Mon Sep 17 00:00:00 2001 From: Anton Kolesov Date: Fri, 12 Aug 2016 20:02:20 +0300 Subject: arc: New Synopsys ARC port ARC is a family of licensable processors developed by Synopsys. This is an initial patch that doesn't yet support some of the features, that are already available in Synopsys' fork of GDB, namely: * longjmp support * signal frame handling * prologue analysis * Linux targets support * native Linux support ARC cores are configurable and extensible, which means from debugger perspective that some registers and debug capabilities are optional, therefore it is up to the GDB stub to determine exact list of register available on target and supply it to GDB via XML target descriptions. List of registers that is known to GDB and is required is intentionally kept small to simplify requirements to GDB stub and implementation of a GDB client. gdb/ChangeLog: * Makefile.in (ALL_TARGET_OBS): Add arc-tdep.o. (HFILES_NO_SRCDIR): Add arc-tdep.h. (ALLDEPFILES): Add arc-tdep.c. * NEWS: Mention new ARC port. * configure.tgt: Add ARC. * arc-tdep.c: New file. * arc-tdep.h: New file. * features/Makefile (XMLTOC): Add arc-v2.xml and arc-arcompact.xml. * features/arc-v2.xml: New file. * features/arc-v2.c: New file (generated). * features/arc-arcompact.xml: New file. * features/arc-arcompact.c: New file (generated). gdb/doc/ChangeLog: * gdb.texinfo (Embedded Processors): Document ARC. (Synopsys ARC): New section. (Standard Target Features): Document ARC features. (ARC Features): New section. gdb/testsuite/ChangeLog: * gdb.xml/tdesc-regs.exp: set core-regs for arc*-*-elf32. --- gdb/features/Makefile | 2 + gdb/features/arc-arcompact.c | 75 ++++++++++++++++++++++++++++++++++ gdb/features/arc-arcompact.xml | 85 ++++++++++++++++++++++++++++++++++++++ gdb/features/arc-v2.c | 79 ++++++++++++++++++++++++++++++++++++ gdb/features/arc-v2.xml | 92 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 333 insertions(+) create mode 100644 gdb/features/arc-arcompact.c create mode 100644 gdb/features/arc-arcompact.xml create mode 100644 gdb/features/arc-v2.c create mode 100644 gdb/features/arc-v2.xml (limited to 'gdb/features') diff --git a/gdb/features/Makefile b/gdb/features/Makefile index 809c811..4efb1a5 100644 --- a/gdb/features/Makefile +++ b/gdb/features/Makefile @@ -148,6 +148,8 @@ OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH)) # to make on the command line. XMLTOC = \ aarch64.xml \ + arc-v2.xml \ + arc-arcompact.xml \ arm-with-iwmmxt.xml \ arm-with-m-fpa-layout.xml \ arm-with-m-vfp-d16.xml \ diff --git a/gdb/features/arc-arcompact.c b/gdb/features/arc-arcompact.c new file mode 100644 index 0000000..d1fa4fe --- /dev/null +++ b/gdb/features/arc-arcompact.c @@ -0,0 +1,75 @@ +/* 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 (); + struct tdesc_feature *feature; + struct tdesc_type *field_type; + struct tdesc_type *type; + + set_tdesc_architecture (result, bfd_scan_arch ("ARC700")); + + 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, "", 32, "code_ptr"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal"); + type = tdesc_create_flags (feature, "status32_type", 4); + tdesc_add_bitfield (type, "H", 0, 0); + tdesc_add_bitfield (type, "E", 1, 2); + tdesc_add_bitfield (type, "A", 3, 4); + tdesc_add_bitfield (type, "AE", 5, 5); + tdesc_add_bitfield (type, "DE", 6, 6); + tdesc_add_bitfield (type, "U", 7, 7); + tdesc_add_bitfield (type, "V", 8, 8); + tdesc_add_bitfield (type, "C", 9, 9); + tdesc_add_bitfield (type, "N", 10, 10); + tdesc_add_bitfield (type, "Z", 11, 11); + tdesc_add_bitfield (type, "L", 12, 12); + tdesc_add_bitfield (type, "R", 13, 13); + tdesc_add_bitfield (type, "SE", 14, 14); + + 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 new file mode 100644 index 0000000..e66bb45 --- /dev/null +++ b/gdb/features/arc-arcompact.xml @@ -0,0 +1,85 @@ + + + + + + arc:ARC700 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gdb/features/arc-v2.c b/gdb/features/arc-v2.c new file mode 100644 index 0000000..c963410 --- /dev/null +++ b/gdb/features/arc-v2.c @@ -0,0 +1,79 @@ +/* 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 (); + struct tdesc_feature *feature; + struct tdesc_type *field_type; + struct tdesc_type *type; + + set_tdesc_architecture (result, bfd_scan_arch ("ARCv2")); + + 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, "", 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, "", 32, "code_ptr"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal"); + type = tdesc_create_flags (feature, "status32_type", 4); + tdesc_add_bitfield (type, "H", 0, 0); + tdesc_add_bitfield (type, "E", 1, 4); + tdesc_add_bitfield (type, "AE", 5, 5); + tdesc_add_bitfield (type, "DE", 6, 6); + tdesc_add_bitfield (type, "U", 7, 7); + tdesc_add_bitfield (type, "V", 8, 8); + tdesc_add_bitfield (type, "C", 9, 9); + tdesc_add_bitfield (type, "N", 10, 10); + tdesc_add_bitfield (type, "Z", 11, 11); + tdesc_add_bitfield (type, "L", 12, 12); + tdesc_add_bitfield (type, "DZ", 13, 13); + tdesc_add_bitfield (type, "SC", 14, 14); + tdesc_add_bitfield (type, "ES", 15, 15); + tdesc_add_bitfield (type, "RB", 16, 18); + tdesc_add_bitfield (type, "AD", 19, 19); + tdesc_add_bitfield (type, "US", 20, 20); + tdesc_add_bitfield (type, "IE", 31, 31); + + 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 new file mode 100644 index 0000000..7f06dde --- /dev/null +++ b/gdb/features/arc-v2.xml @@ -0,0 +1,92 @@ + + + + + + arc:ARCv2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.1