void op_mtc0_watchlo0 (void)
{
- env->CP0_WatchLo = (int32_t)T0;
+ /* Watch exceptions for instructions, data loads, data stores
+ not implemented. */
+ env->CP0_WatchLo = (int32_t)(T0 & ~0x7);
RETURN();
}
void op_mtc0_watchhi0 (void)
{
- env->CP0_WatchHi = T0 & 0x40FF0FF8;
+ env->CP0_WatchHi = (T0 & 0x40FF0FF8);
+ env->CP0_WatchHi &= ~(env->CP0_WatchHi & T0 & 0x7);
RETURN();
}
void op_dmtc0_watchlo0 (void)
{
- env->CP0_WatchLo = T0;
+ /* Watch exceptions for instructions, data loads, data stores
+ not implemented. */
+ env->CP0_WatchLo = T0 & ~0x7;
RETURN();
}
env->CP0_EBase = 0x80000000;
env->CP0_Status = (1 << CP0St_BEV) | (1 << CP0St_ERL);
env->CP0_WatchLo = 0;
+ env->CP0_WatchHi = 0;
/* Count register increments in debug mode, EJTAG version 1 */
env->CP0_Debug = (1 << CP0DB_CNT) | (0x1 << CP0DB_VER);
#endif