]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
Add missing bit for SSE instr in VEX decoding
authorEugene Minibaev <mail@kitsu.me>
Fri, 6 Apr 2018 13:41:52 +0000 (16:41 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 9 Apr 2018 14:36:40 +0000 (16:36 +0200)
The 2-byte VEX prefix imples a leading 0Fh opcode byte.

Signed-off-by: Eugene Minibaev <mail@kitsu.me>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target/i386/translate.c

index 3b7ce9232e93790dd65a06cb325dec5f106006d4..c9ed8dc70978eb165e817b131df872ff366558db 100644 (file)
@@ -4563,9 +4563,11 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu)
 #endif
             rex_r = (~vex2 >> 4) & 8;
             if (b == 0xc5) {
+                /* 2-byte VEX prefix: RVVVVlpp, implied 0f leading opcode byte */
                 vex3 = vex2;
-                b = x86_ldub_code(env, s);
+                b = x86_ldub_code(env, s) | 0x100;
             } else {
+                /* 3-byte VEX prefix: RXBmmmmm wVVVVlpp */
 #ifdef TARGET_X86_64
                 s->rex_x = (~vex2 >> 3) & 8;
                 s->rex_b = (~vex2 >> 2) & 8;