summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2006-04-12 03:22:29 +0000
committerMark Mitchell <mark@codesourcery.com>2006-04-12 03:22:29 +0000
commit8a122564f379500ebfea010c314a18e90aead4c9 (patch)
treeedb031740816848ded6318ca102fd5b869e5bee2
parente568fb7484065e9fb8a051049416d24f86e38086 (diff)
downloadbinutils-gdb-8a122564f379500ebfea010c314a18e90aead4c9.tar.gz
* mt-tdep.c (mt_gdb_regnums): Define
MT_COPRO_PSEUDOREG_MAC_REGNUM. (mt_register_name): Use it. (mt_copro_register_type): Likewise. (mt_register_type): Likewise. (mt_pseudo_register_read): Likewise. Read the MAC register, not the coprocessor register. (mt_pseudo_register_write): Likewise.
-rw-r--r--ChangeLog.csl12
-rw-r--r--gdb/mt-tdep.c21
2 files changed, 25 insertions, 8 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl
index c610b84dcb0..1ace4225fd2 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -1,3 +1,15 @@
+2006-04-11 Mark Mitchell <mark@codesourcery.com>
+
+ Issue #658
+ * gdb/mt-tdep.c (mt_gdb_regnums): Define
+ MT_COPRO_PSEUDOREG_MAC_REGNUM.
+ (mt_register_name): Use it.
+ (mt_copro_register_type): Likewise.
+ (mt_register_type): Likewise.
+ (mt_pseudo_register_read): Likewise. Read the MAC register, not
+ the coprocessor register.
+ (mt_pseudo_register_write): Likewise.
+
2006-04-11 Daniel Jacobowitz <dan@codesourcery.com>
* bfd/cpu-arm.c (bfd_is_arm_mapping_symbol_name): Accept more
diff --git a/gdb/mt-tdep.c b/gdb/mt-tdep.c
index 99725e73faa..3b158aee9c1 100644
--- a/gdb/mt-tdep.c
+++ b/gdb/mt-tdep.c
@@ -120,7 +120,12 @@ enum mt_gdb_regnums
MT_COPRO_PSEUDOREG_DIM_1 = 2,
MT_COPRO_PSEUDOREG_DIM_2 = 8,
- MT_COPRO_PSEUDOREG_REGS = 32,
+ /* The number of pseudo-registers for each coprocessor. These
+ include the real coprocessor registers, the pseudo-registe for
+ the coprocessor number, and the pseudo-register for the MAC. */
+ MT_COPRO_PSEUDOREG_REGS = MT_NUM_REGS - MT_NUM_CPU_REGS + 2,
+ /* The register number of the MAC, relative to a given coprocessor. */
+ MT_COPRO_PSEUDOREG_MAC_REGNUM = MT_COPRO_PSEUDOREG_REGS - 1,
/* Two pseudo-regs ('coprocessor' and 'mac'). */
MT_NUM_PSEUDO_REGS = 2 + (MT_COPRO_PSEUDOREG_REGS
@@ -171,7 +176,7 @@ mt_register_name (int regnum)
dim_1 = ((regnum / MT_COPRO_PSEUDOREG_REGS / MT_COPRO_PSEUDOREG_DIM_2)
% MT_COPRO_PSEUDOREG_DIM_1);
- if (index == MT_COPRO_PSEUDOREG_REGS - 1)
+ if (index == MT_COPRO_PSEUDOREG_MAC_REGNUM)
stub = register_names[MT_MAC_PSEUDOREG_REGNUM];
else if (index > MT_QCHANNEL_REGNUM - MT_CPR0_REGNUM)
stub = "";
@@ -219,7 +224,7 @@ mt_copro_register_type (struct gdbarch *arch, int regnum)
default:
if (regnum >= MT_CPR0_REGNUM && regnum <= MT_CPR15_REGNUM)
return builtin_type_int16;
- else if (regnum == MT_CPR0_REGNUM + MT_COPRO_PSEUDOREG_REGS - 1)
+ else if (regnum == MT_CPR0_REGNUM + MT_COPRO_PSEUDOREG_MAC_REGNUM)
{
if (gdbarch_bfd_arch_info (arch)->mach == bfd_mach_mrisc2
|| gdbarch_bfd_arch_info (arch)->mach == bfd_mach_ms2)
@@ -269,7 +274,7 @@ mt_register_type (struct gdbarch *arch, int regnum)
case MT_MAC_PSEUDOREG_REGNUM:
return mt_copro_register_type (arch,
MT_CPR0_REGNUM
- + MT_COPRO_PSEUDOREG_REGS - 1);
+ + MT_COPRO_PSEUDOREG_MAC_REGNUM);
default:
if (regnum >= MT_R0_REGNUM && regnum <= MT_R15_REGNUM)
return builtin_type_int32;
@@ -530,9 +535,9 @@ mt_pseudo_register_read (struct gdbarch *gdbarch,
{
unsigned index = mt_select_coprocessor (gdbarch, regcache, regno);
- if (index == MT_COPRO_PSEUDOREG_REGS - 1)
+ if (index == MT_COPRO_PSEUDOREG_MAC_REGNUM)
mt_pseudo_register_read (gdbarch, regcache,
- MT_COPRO_PSEUDOREG_REGNUM, buf);
+ MT_MAC_PSEUDOREG_REGNUM, buf);
else if (index < MT_NUM_REGS - MT_CPR0_REGNUM)
regcache_raw_read (regcache, index + MT_CPR0_REGNUM, buf);
}
@@ -584,9 +589,9 @@ mt_pseudo_register_write (struct gdbarch *gdbarch,
{
unsigned index = mt_select_coprocessor (gdbarch, regcache, regno);
- if (index == MT_COPRO_PSEUDOREG_REGS - 1)
+ if (index == MT_COPRO_PSEUDOREG_MAC_REGNUM)
mt_pseudo_register_write (gdbarch, regcache,
- MT_COPRO_PSEUDOREG_REGNUM, buf);
+ MT_MAC_PSEUDOREG_REGNUM, buf);
else if (index < MT_NUM_REGS - MT_CPR0_REGNUM)
regcache_raw_write (regcache, index + MT_CPR0_REGNUM, buf);
}