aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sim/mips/interp.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sim/mips/interp.c b/sim/mips/interp.c
index e0ec3e3..07b7e6b 100644
--- a/sim/mips/interp.c
+++ b/sim/mips/interp.c
@@ -3545,7 +3545,10 @@ decode_coproc (SIM_DESC sd,
unsigned_4 data;
/* enum + int calculation, argh! */
id = VU_REG_MST + 16 * id;
- read_vu_misc_reg(&(vu0_device.regs), id, & data);
+ if (id >= VU_REG_CMSAR0)
+ read_vu_special_reg(&vu0_device, id, & data);
+ else
+ read_vu_misc_reg(&(vu0_device.regs), id, & data);
GPR[rt] = EXTEND32(T2H_4(data));
}
}
@@ -3584,8 +3587,11 @@ decode_coproc (SIM_DESC sd,
{
unsigned_4 data = H2T_4(GPR[rt]);
/* enum + int calculation, argh! */
- id = VU_REG_MST + 16 * id;
- write_vu_misc_reg(&(vu0_device.regs), id, & data);
+ id = VU_REG_VI + 16 * id;
+ if (id >= VU_REG_CMSAR0)
+ write_vu_special_reg(&vu0_device, id, & data);
+ else
+ write_vu_misc_reg(&(vu0_device.regs), id, & data);
}
}
else if(i_10_0 == 0x3bf) /* VWAITQ */