diff options
author | Mark Mitchell <mark@codesourcery.com> | 2006-04-12 03:22:29 +0000 |
---|---|---|
committer | Mark Mitchell <mark@codesourcery.com> | 2006-04-12 03:22:29 +0000 |
commit | 8a122564f379500ebfea010c314a18e90aead4c9 (patch) | |
tree | edb031740816848ded6318ca102fd5b869e5bee2 | |
parent | e568fb7484065e9fb8a051049416d24f86e38086 (diff) | |
download | binutils-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.csl | 12 | ||||
-rw-r--r-- | gdb/mt-tdep.c | 21 |
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); } |