Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752160AbbBLTFX (ORCPT ); Thu, 12 Feb 2015 14:05:23 -0500 Received: from mx1.redhat.com ([209.132.183.28]:34692 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752137AbbBLTFR (ORCPT ); Thu, 12 Feb 2015 14:05:17 -0500 From: Denys Vlasenko To: Masami Hiramatsu Cc: Denys Vlasenko , "Frank Ch. Eigler" , Srikar Dronamraju , Ananth N Mavinakayanahalli , Jim Keniston , Oleg Nesterov , Andi Kleen , Ingo Molnar , linux-kernel@vger.kernel.org Subject: [PATCH] x86: insn decoder: create artificial 3rd byte for 2-byte VEX Date: Thu, 12 Feb 2015 20:04:39 +0100 Message-Id: <1423767879-31691-1-git-send-email-dvlasenk@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1777 Lines: 54 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 Cc: Masami Hiramatsu Cc: Frank Ch. Eigler Cc: Srikar Dronamraju Cc: Ananth N Mavinakayanahalli Cc: Jim Keniston Cc: Oleg Nesterov Cc: Andi Kleen Cc: Ingo Molnar Cc: linux-kernel@vger.kernel.org --- Masami, you were ok with this patch last time it was posted. Can you "officially" add your Acked-By? 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/