diff --git a/qemu/target/mips/translate.c b/qemu/target/mips/translate.c index c7f22b1e..f86d6990 100644 --- a/qemu/target/mips/translate.c +++ b/qemu/target/mips/translate.c @@ -16696,6 +16696,19 @@ enum { NM_EVP = 0x01, }; + +/* + * + * nanoMIPS decoding engine + * + */ + +static int decode_nanomips_opc(CPUMIPSState *env, DisasContext *ctx) +{ + return 2; +} + + /* SmartMIPS extension to MIPS32 */ #if defined(TARGET_MIPS64) @@ -21568,7 +21581,10 @@ static void mips_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) } is_slot = ctx->hflags & MIPS_HFLAG_BMASK; - if (!(ctx->hflags & MIPS_HFLAG_M16)) { + if (ctx->insn_flags & ISA_NANOMIPS32) { + ctx->opcode = cpu_lduw_code(env, ctx->base.pc_next); + insn_bytes = decode_nanomips_opc(env, ctx); + } else if (!(ctx->hflags & MIPS_HFLAG_M16)) { ctx->opcode = cpu_ldl_code(env, ctx->base.pc_next); insn_bytes = 4; decode_opc(env, ctx, &need_patch, &patch_offset);