|
@@ -1803,16 +1803,18 @@ static void disas_insn_new(DisasContext *s, CPUState *cpu, int b)
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
|
|
- case X86_SPECIAL_MMX:
|
|
|
|
- if (!(s->prefix & (PREFIX_REPZ | PREFIX_REPNZ | PREFIX_DATA))) {
|
|
|
|
- gen_helper_enter_mmx(cpu_env);
|
|
|
|
- }
|
|
|
|
|
|
+ default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
if (!validate_vex(s, &decode)) {
|
|
if (!validate_vex(s, &decode)) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ if (decode.e.special == X86_SPECIAL_MMX &&
|
|
|
|
+ !(s->prefix & (PREFIX_REPZ | PREFIX_REPNZ | PREFIX_DATA))) {
|
|
|
|
+ gen_helper_enter_mmx(cpu_env);
|
|
|
|
+ }
|
|
|
|
+
|
|
if (decode.op[0].has_ea || decode.op[1].has_ea || decode.op[2].has_ea) {
|
|
if (decode.op[0].has_ea || decode.op[1].has_ea || decode.op[2].has_ea) {
|
|
gen_load_ea(s, &decode.mem, decode.e.vex_class == 12);
|
|
gen_load_ea(s, &decode.mem, decode.e.vex_class == 12);
|
|
}
|
|
}
|