diff options
Diffstat (limited to 'gdb/features')
-rw-r--r-- | gdb/features/Makefile | 16 | ||||
-rw-r--r-- | gdb/features/arm-with-iwmmxt.c | 89 | ||||
-rw-r--r-- | gdb/features/mips-linux.c | 99 | ||||
-rw-r--r-- | gdb/features/mips64-linux.c | 99 |
4 files changed, 303 insertions, 0 deletions
diff --git a/gdb/features/Makefile b/gdb/features/Makefile index e116266..b81c1b8 100644 --- a/gdb/features/Makefile +++ b/gdb/features/Makefile @@ -25,6 +25,12 @@ # affected XML files is changed, and the results should be kept in the # GDB repository. +# It can also update the C files in the features directory from their +# XML master copies. This relies on a GDB linked with expat and +# configured for the correct architecture, so the files are again kept +# in the GDB repository. To generate C files: +# make GDB=/path/to/gdb XMLTOC="xml files" cfiles + WHICH = arm-with-iwmmxt mips-linux mips64-linux # Record which registers should be sent to GDB by default after stop. @@ -36,6 +42,10 @@ XSLTPROC = xsltproc outdir = ../regformats OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH)) +XMLTOC = +CFILES = $(patsubst %.xml,%.c,$(XMLTOC)) +GDB = false + all: $(OUTPUTS) $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl @@ -47,5 +57,11 @@ $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl $(XSLTPROC) gdbserver-regs.xsl - >> $(outdir)/$*.tmp sh ../../move-if-change $(outdir)/$*.tmp $(outdir)/$*.dat +cfiles: $(CFILES) +%.c: %.xml + $(GDB) -nx -q -batch \ + -ex "set tdesc filename $<" -ex 'maint print c-tdesc' > $@.tmp + sh ../../move-if-change $@.tmp $@ + # Other dependencies. $(outdir)/arm-with-iwmmxt.dat: arm-core.xml xscale-iwmmxt.xml diff --git a/gdb/features/arm-with-iwmmxt.c b/gdb/features/arm-with-iwmmxt.c new file mode 100644 index 0000000..8255c7f --- /dev/null +++ b/gdb/features/arm-with-iwmmxt.c @@ -0,0 +1,89 @@ +/* THIS FILE IS GENERATED. Original: arm-with-iwmmxt.xml */ + +#include "defs.h" +#include "gdbtypes.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_arm_with_iwmmxt; +static void +initialize_tdesc_arm_with_iwmmxt (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("iwmmxt")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.arm.core"); + 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, "sp", 13, 1, NULL, 32, "data_ptr"); + tdesc_create_reg (feature, "lr", 14, 1, NULL, 32, "int"); + tdesc_create_reg (feature, "pc", 15, 1, NULL, 32, "code_ptr"); + tdesc_create_reg (feature, "cpsr", 25, 1, NULL, 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.xscale.iwmmxt"); + field_type = tdesc_named_type (feature, "uint8"); + type = init_vector_type (field_type, 8); + TYPE_NAME (type) = xstrdup ("iwmmxt_v8u8"); + tdesc_record_type (feature, type); + + field_type = tdesc_named_type (feature, "uint16"); + type = init_vector_type (field_type, 4); + TYPE_NAME (type) = xstrdup ("iwmmxt_v4u16"); + tdesc_record_type (feature, type); + + field_type = tdesc_named_type (feature, "uint32"); + type = init_vector_type (field_type, 2); + TYPE_NAME (type) = xstrdup ("iwmmxt_v2u32"); + tdesc_record_type (feature, type); + + type = init_composite_type (NULL, TYPE_CODE_UNION); + TYPE_NAME (type) = xstrdup ("iwmmxt_vec64i"); + field_type = tdesc_named_type (feature, "iwmmxt_v8u8"); + append_composite_type_field (type, xstrdup ("u8"), field_type); + field_type = tdesc_named_type (feature, "iwmmxt_v4u16"); + append_composite_type_field (type, xstrdup ("u16"), field_type); + field_type = tdesc_named_type (feature, "iwmmxt_v2u32"); + append_composite_type_field (type, xstrdup ("u32"), field_type); + field_type = tdesc_named_type (feature, "uint64"); + append_composite_type_field (type, xstrdup ("u64"), field_type); + TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR; + tdesc_record_type (feature, type); + + tdesc_create_reg (feature, "wR0", 26, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR1", 27, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR2", 28, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR3", 29, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR4", 30, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR5", 31, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR6", 32, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR7", 33, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR8", 34, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR9", 35, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR10", 36, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR11", 37, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR12", 38, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR13", 39, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR14", 40, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wR15", 41, 1, NULL, 64, "iwmmxt_vec64i"); + tdesc_create_reg (feature, "wCSSF", 42, 1, "vector", 32, "int"); + tdesc_create_reg (feature, "wCASF", 43, 1, "vector", 32, "int"); + tdesc_create_reg (feature, "wCGR0", 44, 1, "vector", 32, "int"); + tdesc_create_reg (feature, "wCGR1", 45, 1, "vector", 32, "int"); + tdesc_create_reg (feature, "wCGR2", 46, 1, "vector", 32, "int"); + tdesc_create_reg (feature, "wCGR3", 47, 1, "vector", 32, "int"); + + tdesc_arm_with_iwmmxt = result; +} diff --git a/gdb/features/mips-linux.c b/gdb/features/mips-linux.c new file mode 100644 index 0000000..51785e4 --- /dev/null +++ b/gdb/features/mips-linux.c @@ -0,0 +1,99 @@ +/* THIS FILE IS GENERATED. Original: mips-linux.xml */ + +#include "defs.h" +#include "gdbtypes.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_mips_linux; +static void +initialize_tdesc_mips_linux (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("mips")); + + 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", 37, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f1", 38, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f2", 39, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f3", 40, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f4", 41, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f5", 42, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f6", 43, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f7", 44, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f8", 45, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f9", 46, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f10", 47, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f11", 48, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f12", 49, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f13", 50, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f14", 51, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f15", 52, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f16", 53, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f17", 54, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f18", 55, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f19", 56, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f20", 57, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f21", 58, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f22", 59, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f23", 60, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f24", 61, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f25", 62, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f26", 63, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f27", 64, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f28", 65, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f29", 66, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f30", 67, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "f31", 68, 1, NULL, 32, "ieee_single"); + tdesc_create_reg (feature, "fcsr", 69, 1, "float", 32, "int"); + tdesc_create_reg (feature, "fir", 70, 1, "float", 32, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.mips.linux"); + tdesc_create_reg (feature, "restart", 71, 1, "system", 32, "int"); + + tdesc_mips_linux = result; +} diff --git a/gdb/features/mips64-linux.c b/gdb/features/mips64-linux.c new file mode 100644 index 0000000..85c99a6b --- /dev/null +++ b/gdb/features/mips64-linux.c @@ -0,0 +1,99 @@ +/* THIS FILE IS GENERATED. Original: mips64-linux.xml */ + +#include "defs.h" +#include "gdbtypes.h" +#include "target-descriptions.h" + +struct target_desc *tdesc_mips64_linux; +static void +initialize_tdesc_mips64_linux (void) +{ + struct target_desc *result = allocate_target_description (); + struct tdesc_feature *feature; + struct type *field_type, *type; + + set_tdesc_architecture (result, bfd_scan_arch ("mips")); + + feature = tdesc_create_feature (result, "org.gnu.gdb.mips.cpu"); + tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "lo", 33, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "hi", 34, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "pc", 37, 1, NULL, 64, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.mips.cp0"); + tdesc_create_reg (feature, "status", 32, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "badvaddr", 35, 1, NULL, 64, "int"); + tdesc_create_reg (feature, "cause", 36, 1, NULL, 64, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.mips.fpu"); + tdesc_create_reg (feature, "f0", 37, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f1", 38, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f2", 39, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f3", 40, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f4", 41, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f5", 42, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f6", 43, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f7", 44, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f8", 45, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f9", 46, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f10", 47, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f11", 48, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f12", 49, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f13", 50, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f14", 51, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f15", 52, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f16", 53, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f17", 54, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f18", 55, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f19", 56, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f20", 57, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f21", 58, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f22", 59, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f23", 60, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f24", 61, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f25", 62, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f26", 63, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f27", 64, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f28", 65, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f29", 66, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f30", 67, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "f31", 68, 1, NULL, 64, "ieee_double"); + tdesc_create_reg (feature, "fcsr", 69, 1, "float", 64, "int"); + tdesc_create_reg (feature, "fir", 70, 1, "float", 64, "int"); + + feature = tdesc_create_feature (result, "org.gnu.gdb.mips.linux"); + tdesc_create_reg (feature, "restart", 71, 1, "system", 64, "int"); + + tdesc_mips64_linux = result; +} |