public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] x86: insn decoder: create artificial 3rd byte for 2-byte VEX
@ 2014-05-16 18:34 Denys Vlasenko
  2014-05-16 18:34 ` [PATCH 2/2] x86: extend insn decoder to understand xop and evex prefixes Denys Vlasenko
  2014-05-17 15:59 ` [PATCH 1/2] x86: insn decoder: create artificial 3rd byte for 2-byte VEX Masami Hiramatsu
  0 siblings, 2 replies; 8+ messages in thread
From: Denys Vlasenko @ 2014-05-16 18:34 UTC (permalink / raw)
  To: linux-kernel
  Cc: Denys Vlasenko, Masami Hiramatsu, Frank Ch. Eigler,
	Srikar Dronamraju, Ananth N Mavinakayanahalli, Jim Keniston,
	Oleg Nesterov, Andi Kleen, Ingo Molnar

Before this patch, users need to do this to fetch vex.vvvv:

        if (insn->vex_prefix.nbytes == 2) {
                vex_vvvv = ((insn->vex_prefix.bytes[1] >> 3) & 0xf) ^ 0xf;
        }
        if (insn->vex_prefix.nbytes == 3) {
                vex_vvvv = ((insn->vex_prefix.bytes[2] >> 3) & 0xf) ^ 0xf;
        }

Make it so that insn->vex_prefix.bytes[2] always contains vex.wvvvvLpp bits.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Frank Ch. Eigler <fche@redhat.com>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Jim Keniston <jkenisto@linux.vnet.ibm.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/lib/insn.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/x86/lib/insn.c b/arch/x86/lib/insn.c
index 54fcffe..829ca4c 100644
--- a/arch/x86/lib/insn.c
+++ b/arch/x86/lib/insn.c
@@ -163,6 +163,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;
 		}
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-05-21  7:40 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-16 18:34 [PATCH 1/2] x86: insn decoder: create artificial 3rd byte for 2-byte VEX Denys Vlasenko
2014-05-16 18:34 ` [PATCH 2/2] x86: extend insn decoder to understand xop and evex prefixes Denys Vlasenko
2014-05-17 16:00   ` Masami Hiramatsu
2014-05-19 15:04     ` Denys Vlasenko
2014-05-21  7:40       ` Masami Hiramatsu
2014-05-17 15:59 ` [PATCH 1/2] x86: insn decoder: create artificial 3rd byte for 2-byte VEX Masami Hiramatsu
2014-05-19 14:58   ` Denys Vlasenko
2014-05-21  7:38     ` Masami Hiramatsu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox