]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/x86/lib/insn.c
x86/asm/decoder: Create artificial 3rd byte for 2-byte VEX
[karo-tx-linux.git] / arch / x86 / lib / insn.c
index 1313ae6b478b6c439741ee032a8c33b86868ee2c..5ea00ddc18251ecb4821a904a060c136d9fa7a1a 100644 (file)
@@ -164,6 +164,12 @@ found:
                                /* VEX.W overrides opnd_size */
                                insn->opnd_bytes = 8;
                } else {
+                       /*
+                        * For VEX2, fake VEX3-like byte#2.
+                        * Makes it easier to decode vex.W, vex.vvvv,
+                        * vex.L and vex.pp. Masking with 0x7f sets vex.W == 0.
+                        */
+                       insn->vex_prefix.bytes[2] = b2 & 0x7f;
                        insn->vex_prefix.nbytes = 2;
                        insn->next_byte += 2;
                }