old-cross-binutils/gdb/features/mips-dsp-linux.c
Maciej W. Rozycki 1faeff088b gdb/
* features/mips-dsp.xml: New file.
	* features/mips64-dsp.xml: New file.
	* features/mips-dsp-linux.xml: New file.
	* features/mips64-dsp-linux.xml: New file.
	* features/Makefile (WHICH): Add mips-dsp-linux and
	mips64-dsp-linux.
	(mips-dsp-expedite, mips64-dsp-expedite): New variables.
	* features/mips-dsp-linux.c: New file.
	* features/mips64-dsp-linux.c: New file.
	* regformats/mips-dsp-linux.dat: New file.
	* regformats/mips64-dsp-linux.dat: New file.
	* mips-linux-nat.c (mips_linux_register_addr): Handle DSP
	registers.
	(mips64_linux_register_addr): Likewise.
	(mips64_linux_regsets_fetch_registers): Likewise.
	(mips64_linux_regsets_store_registers): Likewise.
	(mips64_linux_fetch_registers): Update call to
	mips64_linux_regsets_fetch_registers.
	(mips64_linux_store_registers): Update call to
	mips64_linux_regsets_store_registers.
	(mips_linux_read_description): Probe for DSP registers.
	(_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux
	and initialize_tdesc_mips64_dsp_linux.
	* mips-linux-tdep.c (supply_gregset, mips64_supply_gregset):
	Remove padding of no longer used embedded register slots.
	* mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros.
	(MIPS_RESTART_REGNUM): Redefine enum value.
	* mips-tdep.c (mips_generic_reg_names): Remove trailing null
	strings.
	(mips_tx39_reg_names): Likewise.
	(mips_linux_reg_names): New array of register names for Linux
	targets.
	(mips_register_name): Check for a null pointer in
	mips_processor_reg_names and return an empty string.
	(mips_register_type): Exclude embedded registers for the IRIX
	and Linux ABIs.
	(mips_pseudo_register_type): Likewise.  Use dynamic numbers to
	refer to FP registers, LO, HI, BadVAddr, Cause and PC.  Handle
	DSP registers.
	(mips_stab_reg_to_regnum): Handle DSP accumulators.
	(mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise.
	(mips_gdbarch_init): Likewise.  Initialize internal register
	indices for the Linux ABI.  Use dynamic numbers to refer to
	registers, as applicable, while parsing the target description.
	* mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets.

	gdb/doc/
	* gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp.

	gdb/gdbserver/
	* linux-low.h (linux_target_ops): Add regset_bitmap member.
	* linux-low.c (use_linux_regsets): New macro.
	[!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise.
	[!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise.
	(linux_register_in_regsets): New function.
	(usr_fetch_inferior_registers): Skip registers covered by
	regsets.
	(usr_store_inferior_registers): Likewise.
	(usr_fetch_inferior_registers): New macro.
	(usr_store_inferior_registers): Likewise.
	(linux_fetch_registers): Handle mixed regset/non-regset targets.
	(linux_store_registers): Likewise.
	* linux-mips-low.c (init_registers_mips_dsp_linux): New
	prototype.
	(init_registers_mips64_dsp_linux): Likewise.
	(init_registers_mips_linux): New macro.
	(init_registers_mips_dsp_linux): Likewise.
	(mips_dsp_num_regs): Likewise.
	(DSP_BASE, DSP_CONTROL): New fallback macros.
	(mips_base_regs): New macro.
	(mips_regmap): Use it.  Fix the size.
	(mips_dsp_regmap): New variable.
	(mips_dsp_regset_bitmap): Likewise.
	(mips_arch_setup): New function.
	(mips_cannot_fetch_register): Use the_low_target.regmap rather
	than mips_regmap.
	(mips_cannot_store_register): Likewise.
	(the_low_target): Update .arch_setup, .num_regs and .regmap
	initializers.  Add .regset_bitmap initializer.
	* linux-arm-low.c (the_low_target): Add .regset_bitmap
	initializer.
	* linux-bfin-low.c (the_low_target): Likewise.
	* linux-cris-low.c (the_low_target): Likewise.
	* linux-crisv32-low.c (the_low_target): Likewise.
	* linux-ia64-low.c (the_low_target): Likewise.
	* linux-m32r-low.c (the_low_target): Likewise.
	* linux-m68k-low.c (the_low_target): Likewise.
	* linux-ppc-low.c (the_low_target): Likewise.
	* linux-s390-low.c (the_low_target): Likewise.
	* linux-sh-low.c (the_low_target): Likewise.
	* linux-sparc-low.c (the_low_target): Likewise.
	* linux-tic6x-low.c (the_low_target): Likewise.
	* linux-x86-low.c (the_low_target): Likewise.
	* linux-xtensa-low.c (the_low_target): Likewise.
	* configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and
	mips64-dsp-linux.o to srv_regobj.  Add mips-dsp-linux.xml,
	mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to
	srv_xmlfiles.
	* Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets.
	(mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise.

	gdb/testsuite/
	* gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS
	core registers.
2012-03-01 22:19:48 +00:00

110 lines
5.9 KiB
C

/* THIS FILE IS GENERATED. Original: mips-dsp-linux.xml */
#include "defs.h"
#include "osabi.h"
#include "target-descriptions.h"
struct target_desc *tdesc_mips_dsp_linux;
static void
initialize_tdesc_mips_dsp_linux (void)
{
struct target_desc *result = allocate_target_description ();
struct tdesc_feature *feature;
struct tdesc_type *field_type, *type;
set_tdesc_architecture (result, bfd_scan_arch ("mips"));
set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
feature = tdesc_create_feature (result, "org.gnu.gdb.mips.cpu");
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, "r26", 26, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "int");
tdesc_create_reg (feature, "lo", 33, 1, NULL, 32, "int");
tdesc_create_reg (feature, "hi", 34, 1, NULL, 32, "int");
tdesc_create_reg (feature, "pc", 37, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.mips.cp0");
tdesc_create_reg (feature, "status", 32, 1, NULL, 32, "int");
tdesc_create_reg (feature, "badvaddr", 35, 1, NULL, 32, "int");
tdesc_create_reg (feature, "cause", 36, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.mips.fpu");
tdesc_create_reg (feature, "f0", 38, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f1", 39, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f2", 40, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f3", 41, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f4", 42, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f5", 43, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f6", 44, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f7", 45, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f8", 46, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f9", 47, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f10", 48, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f11", 49, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f12", 50, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f13", 51, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f14", 52, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f15", 53, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f16", 54, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f17", 55, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f18", 56, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f19", 57, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f20", 58, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f21", 59, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f22", 60, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f23", 61, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f24", 62, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f25", 63, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f26", 64, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f27", 65, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f28", 66, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f29", 67, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f30", 68, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f31", 69, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "fcsr", 70, 1, "float", 32, "int");
tdesc_create_reg (feature, "fir", 71, 1, "float", 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.mips.dsp");
tdesc_create_reg (feature, "hi1", 72, 1, NULL, 32, "int");
tdesc_create_reg (feature, "lo1", 73, 1, NULL, 32, "int");
tdesc_create_reg (feature, "hi2", 74, 1, NULL, 32, "int");
tdesc_create_reg (feature, "lo2", 75, 1, NULL, 32, "int");
tdesc_create_reg (feature, "hi3", 76, 1, NULL, 32, "int");
tdesc_create_reg (feature, "lo3", 77, 1, NULL, 32, "int");
tdesc_create_reg (feature, "dspctl", 78, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.mips.linux");
tdesc_create_reg (feature, "restart", 79, 1, "system", 32, "int");
tdesc_mips_dsp_linux = result;
}