Commit 62c68869 authored by Leon Alrae's avatar Leon Alrae
Browse files

target-mips: fix CP0.BadVAddr by stopping translation on Address Error



CP0.BadVAddr is supposed to capture the most recent virtual address that caused
the exception. Currently this does not work correctly for unaligned instruction
fetch as translation is not stopped and CP0.BadVAddr is updated with subsequent
addresses.

Signed-off-by: default avatarLeon Alrae <leon.alrae@imgtec.com>
parent 5a499283
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -18438,6 +18438,7 @@ static void decode_opc(CPUMIPSState *env, DisasContext *ctx)
    if (ctx->pc & 0x3) {
        env->CP0_BadVAddr = ctx->pc;
        generate_exception_err(ctx, EXCP_AdEL, EXCP_INST_NOTAVAIL);
        ctx->bstate = BS_STOP;
        return;
    }