mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 14:39:09 +08:00
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.
This commit is contained in:

committed by
Shahab Vahedi

parent
67430cd00a
commit
817a758576
@ -1,3 +1,29 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
2020-03-16 Tom Tromey <tromey@adacore.com>
|
2020-03-16 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
PR gdb/25663:
|
PR gdb/25663:
|
||||||
|
@ -697,6 +697,7 @@ ALL_TARGET_OBS = \
|
|||||||
aarch32-tdep.o \
|
aarch32-tdep.o \
|
||||||
arc-tdep.o \
|
arc-tdep.o \
|
||||||
arch/aarch32.o \
|
arch/aarch32.o \
|
||||||
|
arch/arc.o \
|
||||||
arch/arm.o \
|
arch/arm.o \
|
||||||
arch/arm-get-next-pcs.o \
|
arch/arm-get-next-pcs.o \
|
||||||
arch/arm-linux.o \
|
arch/arm-linux.o \
|
||||||
@ -1440,6 +1441,7 @@ HFILES_NO_SRCDIR = \
|
|||||||
arch/aarch32.h \
|
arch/aarch32.h \
|
||||||
arch/aarch64.h \
|
arch/aarch64.h \
|
||||||
arch/aarch64-insn.h \
|
arch/aarch64-insn.h \
|
||||||
|
arch/arc.h \
|
||||||
arch/arm.h \
|
arch/arm.h \
|
||||||
arch/i386.h \
|
arch/i386.h \
|
||||||
arch/ppc-linux-common.h \
|
arch/ppc-linux-common.h \
|
||||||
|
@ -28,21 +28,20 @@
|
|||||||
#include "gdbcore.h"
|
#include "gdbcore.h"
|
||||||
#include "gdbcmd.h"
|
#include "gdbcmd.h"
|
||||||
#include "objfiles.h"
|
#include "objfiles.h"
|
||||||
|
#include "osabi.h"
|
||||||
#include "prologue-value.h"
|
#include "prologue-value.h"
|
||||||
|
#include "target-descriptions.h"
|
||||||
#include "trad-frame.h"
|
#include "trad-frame.h"
|
||||||
|
|
||||||
/* ARC header files. */
|
/* ARC header files. */
|
||||||
#include "opcode/arc.h"
|
#include "opcode/arc.h"
|
||||||
#include "opcodes/arc-dis.h"
|
#include "opcodes/arc-dis.h"
|
||||||
#include "arc-tdep.h"
|
#include "arc-tdep.h"
|
||||||
|
#include "arch/arc.h"
|
||||||
|
|
||||||
/* Standard headers. */
|
/* Standard headers. */
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
/* Default target descriptions. */
|
|
||||||
#include "features/arc-v2.c"
|
|
||||||
#include "features/arc-arcompact.c"
|
|
||||||
|
|
||||||
/* The frame unwind cache for ARC. */
|
/* The frame unwind cache for ARC. */
|
||||||
|
|
||||||
struct arc_frame_cache
|
struct arc_frame_cache
|
||||||
@ -147,6 +146,9 @@ static const char *const core_arcompact_register_names[] = {
|
|||||||
|
|
||||||
static char *arc_disassembler_options = NULL;
|
static char *arc_disassembler_options = NULL;
|
||||||
|
|
||||||
|
/* Possible arc target descriptors. */
|
||||||
|
static struct target_desc *tdesc_arc_list[ARC_SYS_TYPE_NUM];
|
||||||
|
|
||||||
/* Functions are sorted in the order as they are used in the
|
/* Functions are sorted in the order as they are used in the
|
||||||
_initialize_arc_tdep (), which uses the same order as gdbarch.h. Static
|
_initialize_arc_tdep (), which uses the same order as gdbarch.h. Static
|
||||||
functions are defined before the first invocation. */
|
functions are defined before the first invocation. */
|
||||||
@ -1750,21 +1752,13 @@ arc_tdesc_init (struct gdbarch_info info, const struct target_desc **tdesc,
|
|||||||
const char *const *core_regs;
|
const char *const *core_regs;
|
||||||
const char *core_feature_name;
|
const char *core_feature_name;
|
||||||
|
|
||||||
/* If target doesn't provide a description - use default one. */
|
/* If target doesn't provide a description, use the default ones. */
|
||||||
if (!tdesc_has_registers (tdesc_loc))
|
if (!tdesc_has_registers (tdesc_loc))
|
||||||
{
|
{
|
||||||
if (is_arcv2)
|
if (is_arcv2)
|
||||||
{
|
tdesc_loc = arc_read_description (ARC_SYS_TYPE_ARCV2);
|
||||||
tdesc_loc = tdesc_arc_v2;
|
|
||||||
if (arc_debug)
|
|
||||||
debug_printf ("arc: Using default register set for ARC v2.\n");
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
tdesc_loc = arc_read_description (ARC_SYS_TYPE_ARCOMPACT);
|
||||||
tdesc_loc = tdesc_arc_arcompact;
|
|
||||||
if (arc_debug)
|
|
||||||
debug_printf ("arc: Using default register set for ARCompact.\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2145,15 +2139,44 @@ dump_arc_instruction_command (const char *args, int from_tty)
|
|||||||
arc_insn_dump (insn);
|
arc_insn_dump (insn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* See arc-tdep.h. */
|
||||||
|
|
||||||
|
const target_desc *
|
||||||
|
arc_read_description (arc_sys_type sys_type)
|
||||||
|
{
|
||||||
|
if (arc_debug)
|
||||||
|
debug_printf ("arc: Reading target description for \"%s\".\n",
|
||||||
|
arc_sys_type_to_str (sys_type));
|
||||||
|
|
||||||
|
gdb_assert ((sys_type >= 0) && (sys_type < ARC_SYS_TYPE_NUM));
|
||||||
|
struct target_desc *tdesc = tdesc_arc_list[sys_type];
|
||||||
|
|
||||||
|
if (tdesc == nullptr)
|
||||||
|
{
|
||||||
|
tdesc = arc_create_target_description (sys_type);
|
||||||
|
tdesc_arc_list[sys_type] = tdesc;
|
||||||
|
|
||||||
|
if (arc_debug)
|
||||||
|
{
|
||||||
|
const char *arch = tdesc_architecture_name (tdesc);
|
||||||
|
const char *abi = tdesc_osabi_name (tdesc);
|
||||||
|
arch = arch != NULL ? arch : "";
|
||||||
|
abi = abi != NULL ? abi : "";
|
||||||
|
debug_printf ("arc: Created target description for "
|
||||||
|
"\"%s\": arch=\"%s\", ABI=\"%s\"\n",
|
||||||
|
arc_sys_type_to_str (sys_type), arch, abi);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tdesc;
|
||||||
|
}
|
||||||
|
|
||||||
void _initialize_arc_tdep ();
|
void _initialize_arc_tdep ();
|
||||||
void
|
void
|
||||||
_initialize_arc_tdep ()
|
_initialize_arc_tdep ()
|
||||||
{
|
{
|
||||||
gdbarch_register (bfd_arch_arc, arc_gdbarch_init, arc_dump_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. */
|
/* Register ARC-specific commands with gdb. */
|
||||||
|
|
||||||
/* Add root prefix command for "maintenance print arc" commands. */
|
/* Add root prefix command for "maintenance print arc" commands. */
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
/* Need disassemble_info. */
|
/* Need disassemble_info. */
|
||||||
#include "dis-asm.h"
|
#include "dis-asm.h"
|
||||||
|
#include "arch/arc.h"
|
||||||
|
|
||||||
/* To simplify GDB code this enum assumes that internal regnums should be same
|
/* To simplify GDB code this enum assumes that internal regnums should be same
|
||||||
as architectural register numbers, i.e. PCL regnum is 63. This allows to
|
as architectural register numbers, i.e. PCL regnum is 63. This allows to
|
||||||
@ -163,4 +164,7 @@ CORE_ADDR arc_insn_get_branch_target (const struct arc_instruction &insn);
|
|||||||
|
|
||||||
CORE_ADDR arc_insn_get_linear_next_pc (const struct arc_instruction &insn);
|
CORE_ADDR arc_insn_get_linear_next_pc (const struct arc_instruction &insn);
|
||||||
|
|
||||||
|
/* Get the correct ARC target description for the given system type. */
|
||||||
|
const target_desc *arc_read_description (arc_sys_type sys_type);
|
||||||
|
|
||||||
#endif /* ARC_TDEP_H */
|
#endif /* ARC_TDEP_H */
|
||||||
|
58
gdb/arch/arc.c
Normal file
58
gdb/arch/arc.c
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/* 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"
|
||||||
|
|
||||||
|
/* See arc.h. */
|
||||||
|
|
||||||
|
target_desc *
|
||||||
|
arc_create_target_description (arc_sys_type sys_type)
|
||||||
|
{
|
||||||
|
target_desc *tdesc = allocate_target_description ();
|
||||||
|
|
||||||
|
long regnum = 0;
|
||||||
|
|
||||||
|
#ifndef IN_PROCESS_AGENT
|
||||||
|
if (sys_type == ARC_SYS_TYPE_ARCV2)
|
||||||
|
set_tdesc_architecture (tdesc, "arc:ARCv2");
|
||||||
|
else
|
||||||
|
set_tdesc_architecture (tdesc, "arc:ARC700");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (sys_type == ARC_SYS_TYPE_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;
|
||||||
|
}
|
48
gdb/arch/arc.h
Normal file
48
gdb/arch/arc.h
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/* 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/>. */
|
||||||
|
|
||||||
|
#ifndef ARCH_ARC_H
|
||||||
|
#define ARCH_ARC_H
|
||||||
|
|
||||||
|
#include "gdbsupport/tdesc.h"
|
||||||
|
|
||||||
|
/* Supported ARC system hardware types. */
|
||||||
|
enum arc_sys_type
|
||||||
|
{
|
||||||
|
ARC_SYS_TYPE_ARCOMPACT = 0, /* ARC600 or ARC700 */
|
||||||
|
ARC_SYS_TYPE_ARCV2, /* ARC EM or ARC HS */
|
||||||
|
ARC_SYS_TYPE_NUM
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline const char *
|
||||||
|
arc_sys_type_to_str (const arc_sys_type type)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case ARC_SYS_TYPE_ARCOMPACT:
|
||||||
|
return "ARC_SYS_TYPE_ARCOMPACT";
|
||||||
|
case ARC_SYS_TYPE_ARCV2:
|
||||||
|
return "ARC_SYS_TYPE_ARCV2";
|
||||||
|
default:
|
||||||
|
return "Invalid";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create target description for the specified system type. */
|
||||||
|
target_desc *arc_create_target_description (arc_sys_type sys_type);
|
||||||
|
|
||||||
|
#endif /* ARCH_ARC_H */
|
@ -59,7 +59,7 @@ alpha*-*-*)
|
|||||||
|
|
||||||
arc*-*-*)
|
arc*-*-*)
|
||||||
# Target: Unidentified ARC target
|
# Target: Unidentified ARC target
|
||||||
cpu_obs="arc-tdep.o"
|
cpu_obs="arc-tdep.o arch/arc.o"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
arm*-*-*)
|
arm*-*-*)
|
||||||
|
@ -108,8 +108,6 @@ OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH))
|
|||||||
# --enable-targets=all GDB. You can override this by passing XMLTOC
|
# --enable-targets=all GDB. You can override this by passing XMLTOC
|
||||||
# to make on the command line.
|
# to make on the command line.
|
||||||
XMLTOC = \
|
XMLTOC = \
|
||||||
arc-v2.xml \
|
|
||||||
arc-arcompact.xml \
|
|
||||||
microblaze-with-stack-protect.xml \
|
microblaze-with-stack-protect.xml \
|
||||||
microblaze.xml \
|
microblaze.xml \
|
||||||
mips-dsp-linux.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 \
|
FEATURE_XMLFILES = aarch64-core.xml \
|
||||||
aarch64-fpu.xml \
|
aarch64-fpu.xml \
|
||||||
aarch64-pauth.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-core.xml \
|
||||||
arm/arm-fpa.xml \
|
arm/arm-fpa.xml \
|
||||||
arm/arm-m-profile.xml \
|
arm/arm-m-profile.xml \
|
||||||
|
@ -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;
|
|
||||||
}
|
|
@ -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>
|
|
@ -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;
|
|
||||||
}
|
|
@ -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>
|
|
31
gdb/features/arc/aux-arcompact.c
Normal file
31
gdb/features/arc/aux-arcompact.c
Normal file
@ -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;
|
||||||
|
}
|
28
gdb/features/arc/aux-arcompact.xml
Normal file
28
gdb/features/arc/aux-arcompact.xml
Normal file
@ -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>
|
35
gdb/features/arc/aux-v2.c
Normal file
35
gdb/features/arc/aux-v2.c
Normal file
@ -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;
|
||||||
|
}
|
32
gdb/features/arc/aux-v2.xml
Normal file
32
gdb/features/arc/aux-v2.xml
Normal file
@ -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>
|
47
gdb/features/arc/core-arcompact.c
Normal file
47
gdb/features/arc/core-arcompact.c
Normal file
@ -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;
|
||||||
|
}
|
58
gdb/features/arc/core-arcompact.xml
Normal file
58
gdb/features/arc/core-arcompact.xml
Normal file
@ -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>
|
47
gdb/features/arc/core-v2.c
Normal file
47
gdb/features/arc/core-v2.c
Normal file
@ -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;
|
||||||
|
}
|
61
gdb/features/arc/core-v2.xml
Normal file
61
gdb/features/arc/core-v2.xml
Normal file
@ -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,8 @@ maint_print_c_tdesc_cmd (const char *args, int from_tty)
|
|||||||
|| startswith (filename_after_features.c_str (), "riscv/")
|
|| startswith (filename_after_features.c_str (), "riscv/")
|
||||||
|| startswith (filename_after_features.c_str (), "tic6x-")
|
|| startswith (filename_after_features.c_str (), "tic6x-")
|
||||||
|| startswith (filename_after_features.c_str (), "aarch64")
|
|| 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/"))
|
||||||
{
|
{
|
||||||
print_c_feature v (filename_after_features);
|
print_c_feature v (filename_after_features);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user