From 2d07e60f61e74182edf8c2390e5deff3a72ec3b1 Mon Sep 17 00:00:00 2001 From: Leon Alrae Date: Mon, 12 Feb 2018 16:30:55 -0500 Subject: [PATCH] target-mips: save cpu state before calling MSA load and store helpers PC needs to be saved if an exception can be generated by an helper. This fixes a problem related to resuming the execution at unexpected address after an exception (caused by MSA load/store instruction) has been serviced. Backports commit 0af7a37054310384e00209e0a43efe95b7c19ef0 from qemu --- qemu/target-mips/translate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qemu/target-mips/translate.c b/qemu/target-mips/translate.c index 6e4630ee..2a7949a9 100644 --- a/qemu/target-mips/translate.c +++ b/qemu/target-mips/translate.c @@ -18567,12 +18567,14 @@ static void gen_msa(CPUMIPSState *env, DisasContext *ctx) case OPC_LD_H: case OPC_LD_W: case OPC_LD_D: + save_cpu_state(ctx, 1); gen_helper_msa_ld_df(tcg_ctx, tcg_ctx->cpu_env, tdf, twd, trs, ts10); break; case OPC_ST_B: case OPC_ST_H: case OPC_ST_W: case OPC_ST_D: + save_cpu_state(ctx, 1); gen_helper_msa_st_df(tcg_ctx, tcg_ctx->cpu_env, tdf, twd, trs, ts10); break; }