Skip to content
  • Masami Hiramatsu's avatar
    x86: Instruction decoder API · eb13296c
    Masami Hiramatsu authored
    
    
    Add x86 instruction decoder to arch-specific libraries. This decoder
    can decode x86 instructions used in kernel into prefix, opcode, modrm,
    sib, displacement and immediates. This can also show the length of
    instructions.
    
    This version introduces instruction attributes for decoding
    instructions.
    The instruction attribute tables are generated from the opcode map file
    (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
    
    Currently, the opcode maps are based on opcode maps in Intel(R) 64 and
    IA-32 Architectures Software Developers Manual Vol.2: Appendix.A,
    and consist of below two types of opcode tables.
    
    1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are
    written as below;
    
     Table: table-name
     Referrer: escaped-name
     opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...]
      (or)
     opcode: escape # escaped-name
     EndTable
    
    Group opcodes, which has 8 elements, are written as below;
    
     GrpTable: GrpXXX
     reg:  mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...]
     EndTable
    
    These opcode maps include a few SSE and FP opcodes (for setup), because
    those opcodes are used in the kernel.
    
    Signed-off-by: default avatarMasami Hiramatsu <mhiramat@redhat.com>
    Signed-off-by: default avatarJim Keniston <jkenisto@us.ibm.com>
    Acked-by: default avatarH. Peter Anvin <hpa@zytor.com>
    Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
    Cc: Avi Kivity <avi@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Frank Ch. Eigler <fche@redhat.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Jason Baron <jbaron@redhat.com>
    Cc: K.Prasad <prasad@linux.vnet.ibm.com>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Li Zefan <lizf@cn.fujitsu.com>
    Cc: Przemysław Pawełczyk <przemyslaw@pawelczyk.it>
    Cc: Roland McGrath <roland@redhat.com>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    Cc: Vegard Nossum <vegard.nossum@gmail.com>
    LKML-Reference: <20090813203413.31965.49709.stgit@localhost.localdomain>
    Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    eb13296c