DMTC0 CP0_Cause does a redundant gen_io_start() and gen_io_end() pair, even though this is done for all DMTC0 operations outside of the switch statement. Remove these redundant calls.
Fixes: 5dc5d9f055c5 ("mips: more fixes to the MIPS interrupt glue logic") Signed-off-by: James Hogan <james.ho...@imgtec.com> Cc: Yongbok Kim <yongbok....@imgtec.com> Cc: Aurelien Jarno <aurel...@aurel32.net> --- target/mips/translate.c | 8 -------- 1 file changed, 0 insertions(+), 8 deletions(-) diff --git a/target/mips/translate.c b/target/mips/translate.c index 6b41f7b65e00..6e724ac71dcd 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -7403,15 +7403,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel) switch (sel) { case 0: save_cpu_state(ctx, 1); - /* Mark as an IO operation because we may trigger a software - interrupt. */ - if (ctx->tb->cflags & CF_USE_ICOUNT) { - gen_io_start(); - } gen_helper_mtc0_cause(cpu_env, arg); - if (ctx->tb->cflags & CF_USE_ICOUNT) { - gen_io_end(); - } /* Stop translation as we may have triggered an intetrupt. BS_STOP * isn't sufficient, we need to ensure we break out of translated * code to check for pending interrupts. */ -- git-series 0.8.10