From cb7b09720442419cc9c49b656c6c9b361f19fc11 Mon Sep 17 00:00:00 2001 From: Fredrik Noring Date: Sat, 10 Nov 2018 12:08:12 -0500 Subject: [PATCH] target/mips: Support R5900 MOVN, MOVZ and PREF instructions from MIPS IV The R5900 is taken to be MIPS III with certain modifications. From MIPS IV it implements the instructions MOVN, MOVZ and PREF. Backports commit 5601e6217d90ed322b4b9a6d68e8db607db91842 from qemu --- qemu/target/mips/translate.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qemu/target/mips/translate.c b/qemu/target/mips/translate.c index 9fa08d82..75a2b16c 100644 --- a/qemu/target/mips/translate.c +++ b/qemu/target/mips/translate.c @@ -23704,7 +23704,7 @@ static void decode_opc_special_legacy(CPUMIPSState *env, DisasContext *ctx) case OPC_MOVN: /* Conditional move */ case OPC_MOVZ: check_insn(ctx, ISA_MIPS4 | ISA_MIPS32 | - INSN_LOONGSON2E | INSN_LOONGSON2F); + INSN_LOONGSON2E | INSN_LOONGSON2F | INSN_R5900); gen_cond_move(ctx, op1, rd, rs, rt); break; case OPC_MFHI: /* Move from HI/LO */ @@ -26570,7 +26570,8 @@ 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); + check_insn(ctx, ISA_MIPS4 | ISA_MIPS32 | + INSN_R5900); /* Treat as NOP. */ break;