• A
    x86/insn: perf tools: Pedantically tweak opcode map for MPX instructions · 78173ec6
    Adrian Hunter 提交于
    The MPX instructions are presently not described in the SDM
    opcode maps, and there are not encoding characters for bnd
    registers, address method or operand type.  So the kernel
    opcode map is using 'Gv' for bnd registers and 'Ev' for
    everything else.  That is fine because the instruction
    decoder does not use that information anyway, except as
    an indication that there is a ModR/M byte.
    
    Nevertheless, in some cases the 'Gv' and 'Ev' are the wrong
    way around, BNDLDX and BNDSTX have 2 operands not 3, and it
    wouldn't hurt to identify the mandatory prefixes.
    
    This has no effect on the decoding of valid instructions,
    but the addition of the mandatory prefixes will cause some
    invalid instructions to error out that wouldn't have
    previously.
    
    Note that perf tools has a copy of the instruction decoder
    and provides a test for new instructions which includes MPX
    instructions e.g.
    
      $ perf test "x86 ins"
      39: Test x86 instruction decoder - new instructions          : Ok
    
    Or to see the details:
    
      $ perf test -v "x86 ins"
    
    Commiter notes:
    
    And to see these MPX instructions specifically:
    
      $ perf test -v "x86 ins" 2>&1 | grep bndldx | head -3
      Decoded ok: 0f 1a 00             	bndldx (%eax),%bnd0
      Decoded ok: 0f 1a 05 78 56 34 12 	bndldx 0x12345678,%bnd0
      Decoded ok: 0f 1a 18             	bndldx (%eax),%bnd3
      $ perf test -v "x86 ins" 2>&1 | grep bndstx | head -3
      Decoded ok: 0f 1b 00             	bndstx %bnd0,(%eax)
      Decoded ok: 0f 1b 05 78 56 34 12 	bndstx %bnd0,0x12345678
      Decoded ok: 0f 1b 18             	bndstx %bnd3,(%eax)
      $
    Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
    Acked-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Qiaowei Ren <qiaowei.ren@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1441196131-20632-4-git-send-email-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    78173ec6
x86-opcode-map.txt 24.7 KB