From ed586cfa46902ad2577aeb2c409dc2cc295c395d Mon Sep 17 00:00:00 2001 From: Fredrik Noring Date: Fri, 23 Nov 2018 18:39:35 -0500 Subject: [PATCH] target/mips: Guard check_insn with INSN_R5900 check Explicitely mark handling of PREF instruction for R5900 as treating the same as NOP. Backports commit 992e8176d36882983bb04f0259f7151a36d003a1 from qemu --- qemu/target/mips/translate.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/qemu/target/mips/translate.c b/qemu/target/mips/translate.c index 6cb2f881..0a80e526 100644 --- a/qemu/target/mips/translate.c +++ b/qemu/target/mips/translate.c @@ -28550,9 +28550,12 @@ static void decode_opc(CPUMIPSState *env, DisasContext *ctx, bool *insn_need_pat break; case OPC_PREF: check_insn_opc_removed(ctx, ISA_MIPS32R6); - check_insn(ctx, ISA_MIPS4 | ISA_MIPS32 | - INSN_R5900); - /* Treat as NOP. */ + if (ctx->insn_flags & INSN_R5900) { + /* Treat as NOP. */ + } else { + check_insn(ctx, ISA_MIPS4 | ISA_MIPS32); + /* Treat as NOP. */ + } break; /* Floating point (COP1). */