Hi, Philippe! > > @@ -6711,6 +6720,11 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, > > int reg, int sel) > > gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_BadInstrP)); > > rn = "BadInstrP"; > > break; > > + case 3: > > + CP0_CHECK(ctx->bi); > > + gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_BadInstrX)); > > I'm unsure re-using gen_mfc0_load32() is enough, shouldn't we zero the > 16 lower bits?
I contacted Stefan, and he says that you are right - zeroing 16 lower bits seems to be necessary. We'll hopefully fix this in v4. Yours, Aleksandar