>> if (op < 4) { >> /* Saturating add/subtract. */ >> + if (!(arm_dc_feature(s, ARM_FEATURE_THUMB_DSP))){ >> + /* qsub, qadd, qdadd, qdsub are DSP instructions. */ >> + goto illegal_op; >> + } >> tmp = load_reg(s, rn); >> tmp2 = load_reg(s, rm); >> if (op & 1) >> @@ -9559,6 +9598,12 @@ static int disas_thumb2_insn(CPUARMState *env, >> DisasContext *s, uint16_t insn_hw >> gen_revsh(tmp); >> break; >> case 0x10: /* sel */ >> + if (!(arm_dc_feature(s, ARM_FEATURE_THUMB_DSP))){ >> + /* sel is a DSP instruction. */ >> + /* need to free this so there's no TCG temporary leak */ >> + tcg_temp_free_i32(tmp); >> + goto illegal_op; >> + } >> tmp2 = load_reg(s, rm); >> tmp3 = tcg_temp_new_i32(); >> tcg_gen_ld_i32(tmp3, cpu_env, offsetof(CPUARMState, >> GE)); >> @@ -9624,6 +9669,15 @@ static int disas_thumb2_insn(CPUARMState *env, >> DisasContext *s, uint16_t insn_hw >> } >> break; >> case 1: /* 16 x 16 -> 32 */ >> + if (!(arm_dc_feature(s, ARM_FEATURE_THUMB_DSP))){ >> + /* smlabb, smlabt, smlatb, smlatt, smulbb, smulbt, >> smultt >> + * and smultb are DSP instructions >> + */ >> + /* need to free this so there's no TCG temporary leak >> */ > > Comment un-needed.
Why do you think it's not needed? Any comments are helpful as long as they're correct. Thanks