disasm and some cpuid code according to recently published AVX_319433-007.pdf document
This commit is contained in:
parent
21e39a66c9
commit
7f7c249934
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: cpu.h,v 1.680 2010-05-23 19:17:40 sshwarts Exp $
|
||||
// $Id: cpu.h,v 1.681 2010-07-22 15:12:08 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001-2010 The Bochs Project
|
||||
@ -625,11 +625,13 @@ typedef struct
|
||||
#define BX_CPU_SMX 0x00040000 /* SMX instruction */
|
||||
#define BX_CPU_SVM 0x00080000 /* SVM instruction */
|
||||
#define BX_CPU_XSAVE 0x00100000 /* XSAVE/XRSTOR extensions instruction */
|
||||
#define BX_CPU_AES_PCLMULQDQ 0x00200000 /* AES+PCLMULQDQ instructions */
|
||||
#define BX_CPU_MOVBE 0x00400000 /* MOVBE Intel Atom(R) instruction */
|
||||
#define BX_CPU_AVX 0x00800000 /* AVX instruction */
|
||||
#define BX_CPU_AVX_FMA 0x01000000 /* AVX FMA instruction */
|
||||
#define BX_CPU_X86_64 0x02000000 /* x86-64 instruction */
|
||||
#define BX_CPU_XSAVEOPT 0x00200000 /* XSAVEOPT instruction */
|
||||
#define BX_CPU_AES_PCLMULQDQ 0x00400000 /* AES+PCLMULQDQ instructions */
|
||||
#define BX_CPU_MOVBE 0x00800000 /* MOVBE Intel Atom(R) instruction */
|
||||
#define BX_CPU_FSGSBASE 0x01000000 /* FS/GS BASE access instructions */
|
||||
#define BX_CPU_AVX 0x02000000 /* AVX instruction */
|
||||
#define BX_CPU_AVX_FMA 0x04000000 /* AVX FMA instruction */
|
||||
#define BX_CPU_X86_64 0x08000000 /* x86-64 instruction */
|
||||
|
||||
struct cpuid_function_t {
|
||||
Bit32u eax;
|
||||
@ -3246,6 +3248,7 @@ public: // for now...
|
||||
|
||||
BX_SMF Bit32u get_cpu_version_information(void);
|
||||
BX_SMF Bit32u get_extended_cpuid_features(void);
|
||||
BX_SMF Bit32u get_ext2_cpuid_features(void);
|
||||
BX_SMF Bit32u get_std_cpuid_features(void);
|
||||
BX_SMF void set_cpuid_defaults(void);
|
||||
|
||||
@ -3256,6 +3259,7 @@ public: // for now...
|
||||
#endif
|
||||
#if BX_CPU_LEVEL >= 6
|
||||
BX_SMF void bx_cpuid_xsave_leaf(Bit32u subfunction);
|
||||
BX_SMF void bx_cpuid_extended_cpuid_leaf(Bit32u subfunction);
|
||||
#endif
|
||||
|
||||
BX_SMF BX_CPP_INLINE int bx_cpuid_support_debug_extensions(void);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: cpuid.cc,v 1.120 2010-07-16 21:03:52 sshwarts Exp $
|
||||
// $Id: cpuid.cc,v 1.121 2010-07-22 15:12:08 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2007-2010 Stanislav Shwartsman
|
||||
@ -142,7 +142,8 @@ Bit32u BX_CPU_C::get_extended_cpuid_features(void)
|
||||
// [12:12] FMA Instructions support
|
||||
// [13:13] CMPXCHG16B: CMPXCHG16B instruction support
|
||||
// [14:14] xTPR update control
|
||||
// [16:15] reserved
|
||||
// [15:15] PDCM - Perfon and Debug Capability MSR
|
||||
// [16:16] reserved
|
||||
// [17:17] PCID: Process Context Identifiers
|
||||
// [18:18] DCA - Direct Cache Access
|
||||
// [19:19] SSE4.1 Instructions
|
||||
@ -155,7 +156,9 @@ Bit32u BX_CPU_C::get_extended_cpuid_features(void)
|
||||
// [26:26] XSAVE extensions support
|
||||
// [27:27] OSXSAVE support
|
||||
// [28:28] AVX extensions support
|
||||
// [31:29] reserved
|
||||
// [29:29] F16C - Float16 conversion support
|
||||
// [30:30] RDRAND instruction
|
||||
// [31:31] reserved
|
||||
|
||||
Bit32u features = 0;
|
||||
|
||||
@ -213,6 +216,13 @@ Bit32u BX_CPU_C::get_extended_cpuid_features(void)
|
||||
return features;
|
||||
}
|
||||
|
||||
Bit32u BX_CPU_C::get_ext2_cpuid_features(void)
|
||||
{
|
||||
// [0:0] FS/GS BASE access instructions
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Get CPU feature flags. Returned by CPUID functions 1 and 80000001. */
|
||||
Bit32u BX_CPU_C::get_std_cpuid_features(void)
|
||||
{
|
||||
@ -340,6 +350,10 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::CPUID(bxInstruction_c *i)
|
||||
}
|
||||
#endif
|
||||
#if BX_CPU_LEVEL >= 6
|
||||
if (function == 0x7) {
|
||||
bx_cpuid_extended_cpuid_leaf(subfunction);
|
||||
return;
|
||||
}
|
||||
if (function == 0xd) {
|
||||
bx_cpuid_xsave_leaf(subfunction);
|
||||
return;
|
||||
@ -462,71 +476,10 @@ void BX_CPU_C::set_cpuid_defaults(void)
|
||||
cpuid->ebx |= ((BX_CPU_THIS_PTR lapic.get_id() & 0xff) << 24);
|
||||
#endif
|
||||
|
||||
// ECX: Extended Feature Flags
|
||||
// [0:0] SSE3: SSE3 Instructions
|
||||
// [1:1] PCLMULQDQ Instruction support
|
||||
// [2:2] DTES64: 64-bit DS area
|
||||
// [3:3] MONITOR/MWAIT support
|
||||
// [4:4] DS-CPL: CPL qualified debug store
|
||||
// [5:5] VMX: Virtual Machine Technology
|
||||
// [6:6] SMX: Secure Virtual Machine Technology
|
||||
// [7:7] EST: Enhanced Intel SpeedStep Technology
|
||||
// [8:8] TM2: Thermal Monitor 2
|
||||
// [9:9] SSSE3: SSSE3 Instructions
|
||||
// [10:10] CNXT-ID: L1 context ID
|
||||
// [11:11] reserved
|
||||
// [12:12] FMA Instructions support
|
||||
// [13:13] CMPXCHG16B: CMPXCHG16B instruction support
|
||||
// [14:14] xTPR update control
|
||||
// [16:15] reserved
|
||||
// [17:17] PCID: Process Context Identifiers
|
||||
// [18:18] DCA - Direct Cache Access
|
||||
// [19:19] SSE4.1 Instructions
|
||||
// [20:20] SSE4.2 Instructions
|
||||
// [21:21] X2APIC
|
||||
// [22:22] MOVBE instruction
|
||||
// [23:23] POPCNT instruction
|
||||
// [24:24] TSC Deadline
|
||||
// [25:25] AES Instructions
|
||||
// [26:26] XSAVE extensions support
|
||||
// [27:27] OSXSAVE support
|
||||
// [28:28] AVX extensions support
|
||||
// [31:29] reserved
|
||||
// ECX: Extended Feature Flags
|
||||
cpuid->ecx = get_extended_cpuid_features();
|
||||
|
||||
// EDX: Standard Feature Flags
|
||||
// [0:0] FPU on chip
|
||||
// [1:1] VME: Virtual-8086 Mode enhancements
|
||||
// [2:2] DE: Debug Extensions (I/O breakpoints)
|
||||
// [3:3] PSE: Page Size Extensions
|
||||
// [4:4] TSC: Time Stamp Counter
|
||||
// [5:5] MSR: RDMSR and WRMSR support
|
||||
// [6:6] PAE: Physical Address Extensions
|
||||
// [7:7] MCE: Machine Check Exception
|
||||
// [8:8] CXS: CMPXCHG8B instruction
|
||||
// [9:9] APIC: APIC on Chip
|
||||
// [10:10] Reserved
|
||||
// [11:11] SYSENTER/SYSEXIT support
|
||||
// [12:12] MTRR: Memory Type Range Reg
|
||||
// [13:13] PGE/PTE Global Bit
|
||||
// [14:14] MCA: Machine Check Architecture
|
||||
// [15:15] CMOV: Cond Mov/Cmp Instructions
|
||||
// [16:16] PAT: Page Attribute Table
|
||||
// [17:17] PSE-36: Physical Address Extensions
|
||||
// [18:18] PSN: Processor Serial Number
|
||||
// [19:19] CLFLUSH: CLFLUSH Instruction support
|
||||
// [20:20] Reserved
|
||||
// [21:21] DS: Debug Store
|
||||
// [22:22] ACPI: Thermal Monitor and Software Controlled Clock Facilities
|
||||
// [23:23] MMX Technology
|
||||
// [24:24] FXSR: FXSAVE/FXRSTOR (also indicates CR4.OSFXSR is available)
|
||||
// [25:25] SSE: SSE Extensions
|
||||
// [26:26] SSE2: SSE2 Extensions
|
||||
// [27:27] Self Snoop
|
||||
// [28:28] Hyper Threading Technology
|
||||
// [29:29] TM: Thermal Monitor
|
||||
// [30:30] Reserved
|
||||
// [31:31] PBE: Pending Break Enable
|
||||
// EDX: Standard Feature Flags
|
||||
cpuid->edx = get_std_cpuid_features();
|
||||
|
||||
BX_INFO(("CPUID[0x00000001]: %08x %08x %08x %08x", cpuid->eax, cpuid->ebx, cpuid->ecx, cpuid->edx));
|
||||
@ -596,6 +549,19 @@ void BX_CPU_C::set_cpuid_defaults(void)
|
||||
BX_INFO(("CPUID[0x00000005]: %08x %08x %08x %08x", cpuid->eax, cpuid->ebx, cpuid->ecx, cpuid->edx));
|
||||
#endif
|
||||
|
||||
// ------------------------------------------------------
|
||||
// CPUID function 0x00000007
|
||||
cpuid = &(BX_CPU_THIS_PTR cpuid_std_function[7]);
|
||||
|
||||
cpuid->ebx = get_ext2_cpuid_features();
|
||||
cpuid->ecx = 0;
|
||||
cpuid->edx = 0;
|
||||
if (cpuid->ebx)
|
||||
cpuid->eax = 1; /* report max sub-leaves that are supported in leaf 7 */
|
||||
else
|
||||
cpuid->eax = 0; /* leaf 7 not supported */
|
||||
|
||||
|
||||
// ------------------------------------------------------
|
||||
// CPUID function 0x0000000d
|
||||
if (BX_CPU_SUPPORT_ISA_EXTENSION(BX_CPU_XSAVE))
|
||||
@ -912,6 +878,22 @@ void BX_CPU_C::bx_cpuid_extended_topology_leaf(Bit32u subfunction)
|
||||
#endif
|
||||
|
||||
#if BX_CPU_LEVEL >= 6
|
||||
void BX_CPU_C::bx_cpuid_extended_cpuid_leaf(Bit32u subfunction)
|
||||
{
|
||||
if (subfunction == 0) {
|
||||
RAX = BX_CPU_THIS_PTR cpuid_std_function[0x7].eax;
|
||||
RBX = BX_CPU_THIS_PTR cpuid_std_function[0x7].ebx;
|
||||
RCX = BX_CPU_THIS_PTR cpuid_std_function[0x7].ecx;
|
||||
RDX = BX_CPU_THIS_PTR cpuid_std_function[0x7].edx;
|
||||
}
|
||||
else {
|
||||
RAX = 0; // reserved
|
||||
RBX = 0; // reserved
|
||||
RCX = 0; // reserved
|
||||
RDX = 0; // reserved
|
||||
}
|
||||
}
|
||||
|
||||
void BX_CPU_C::bx_cpuid_xsave_leaf(Bit32u subfunction)
|
||||
{
|
||||
BX_ASSERT(BX_CPU_SUPPORT_ISA_EXTENSION(BX_CPU_XSAVE));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: crregs.h,v 1.29 2010-05-12 21:33:04 sshwarts Exp $
|
||||
// $Id: crregs.h,v 1.30 2010-07-22 15:12:08 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2007-2009 Stanislav Shwartsman
|
||||
@ -89,6 +89,7 @@ struct bx_cr0_t {
|
||||
#define BX_CR4_OSXMMEXCPT_MASK (1 << 10)
|
||||
#define BX_CR4_VMXE_MASK (1 << 13)
|
||||
#define BX_CR4_SMXE_MASK (1 << 14)
|
||||
#define BX_CR4_FSGSBASE_MASK (1 << 16)
|
||||
#define BX_CR4_PCIDE_MASK (1 << 17)
|
||||
#define BX_CR4_OSXSAVE_MASK (1 << 18)
|
||||
|
||||
@ -110,6 +111,7 @@ struct bx_cr4_t {
|
||||
IMPLEMENT_CRREG_ACCESSORS(VMXE, 13);
|
||||
#endif
|
||||
#if BX_SUPPORT_X86_64
|
||||
IMPLEMENT_CRREG_ACCESSORS(FSGSBASE, 16);
|
||||
IMPLEMENT_CRREG_ACCESSORS(PCIDE, 17);
|
||||
#endif
|
||||
IMPLEMENT_CRREG_ACCESSORS(OSXSAVE, 18);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: dis_groups.cc,v 1.52 2010-04-02 19:01:16 sshwarts Exp $
|
||||
// $Id: dis_groups.cc,v 1.53 2010-07-22 15:12:07 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2005-2009 Stanislav Shwartsman
|
||||
@ -353,6 +353,12 @@ void disassembler::Rq(const x86_insn *insn)
|
||||
dis_sprintf("%s", general_64bit_regname[insn->rm]);
|
||||
}
|
||||
|
||||
void disassembler::Ry(const x86_insn *insn)
|
||||
{
|
||||
if (insn->os_64) Rq(insn);
|
||||
else Rd(insn);
|
||||
}
|
||||
|
||||
// mmx register
|
||||
void disassembler::Pq(const x86_insn *insn)
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: dis_tables.h,v 1.45 2010-04-02 19:01:16 sshwarts Exp $
|
||||
// $Id: dis_tables.h,v 1.46 2010-07-22 15:12:07 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2005-2010 Stanislav Shwartsman
|
||||
@ -119,6 +119,7 @@
|
||||
#define Rw &disassembler::Rw
|
||||
#define Rd &disassembler::Rd
|
||||
#define Rq &disassembler::Rq
|
||||
#define Ry &disassembler::Ry
|
||||
|
||||
#define Pq &disassembler::Pq
|
||||
#define Qd &disassembler::Qd
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: dis_tables.inc,v 1.35 2010-05-23 20:05:14 sshwarts Exp $
|
||||
// $Id: dis_tables.inc,v 1.36 2010-07-22 15:12:07 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2005-2010 Stanislav Shwartsman
|
||||
@ -495,7 +495,7 @@ static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G9VMX7[4] = {
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasmGroupG9[8] = {
|
||||
/* 0 */ { 0, &Ia_Invalid },
|
||||
/* 1 */ { 0, &Ia_cmpxchg8b },
|
||||
/* 1 */ { 0, &Ia_cmpxchg8b_Mq },
|
||||
/* 2 */ { 0, &Ia_Invalid },
|
||||
/* 3 */ { 0, &Ia_Invalid },
|
||||
/* 4 */ { 0, &Ia_Invalid },
|
||||
@ -506,7 +506,7 @@ static BxDisasmOpcodeTable_t BxDisasmGroupG9[8] = {
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasmGroupG9q[8] = {
|
||||
/* 0 */ { 0, &Ia_Invalid },
|
||||
/* 1 */ { 0, &Ia_cmpxchg16b },
|
||||
/* 1 */ { 0, &Ia_cmpxchg16b_Mdq },
|
||||
/* 2 */ { 0, &Ia_Invalid },
|
||||
/* 3 */ { 0, &Ia_Invalid },
|
||||
/* 4 */ { 0, &Ia_Invalid },
|
||||
@ -598,21 +598,21 @@ static BxDisasmOpcodeTable_t BxDisasmGroupG14[8] = {
|
||||
|
||||
/* Group15 */
|
||||
static BxDisasmOpcodeTable_t BxDisasmGroupG15M[8] = {
|
||||
/* 0 */ { 0, &Ia_fxsave },
|
||||
/* 1 */ { 0, &Ia_fxrstor },
|
||||
/* 2 */ { 0, &Ia_ldmxcsr },
|
||||
/* 3 */ { 0, &Ia_stmxcsr },
|
||||
/* 4 */ { 0, &Ia_xsave },
|
||||
/* 5 */ { 0, &Ia_xrstor },
|
||||
/* 6 */ { 0, &Ia_Invalid },
|
||||
/* 7 */ { 0, &Ia_cflush }
|
||||
/* 0 */ { 0, &Ia_fxsave },
|
||||
/* 1 */ { 0, &Ia_fxrstor },
|
||||
/* 2 */ { 0, &Ia_ldmxcsr },
|
||||
/* 3 */ { 0, &Ia_stmxcsr },
|
||||
/* 4 */ { 0, &Ia_xsave },
|
||||
/* 5 */ { 0, &Ia_xrstor },
|
||||
/* 6 */ { 0, &Ia_xsaveopt },
|
||||
/* 7 */ { 0, &Ia_cflush }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasmGroupG15R[8] = {
|
||||
/* 0 */ { 0, &Ia_Invalid },
|
||||
/* 1 */ { 0, &Ia_Invalid },
|
||||
/* 2 */ { 0, &Ia_Invalid },
|
||||
/* 3 */ { 0, &Ia_Invalid },
|
||||
/* 0 */ { GRPSSEF3(Ia_rdfsbase_Ry) },
|
||||
/* 1 */ { GRPSSEF3(Ia_rdgsbase_Ry) },
|
||||
/* 2 */ { GRPSSEF3(Ia_wrfsbase_Ry) },
|
||||
/* 3 */ { GRPSSEF3(Ia_wrgsbase_Ry) },
|
||||
/* 4 */ { 0, &Ia_Invalid },
|
||||
/* 5 */ { 0, &Ia_lfence },
|
||||
/* 6 */ { 0, &Ia_mfence },
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: disasm.h,v 1.62 2010-04-08 15:50:39 sshwarts Exp $
|
||||
// $Id: disasm.h,v 1.63 2010-07-22 15:12:07 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2005-2009 Stanislav Shwartsman
|
||||
@ -60,11 +60,13 @@
|
||||
#define IA_SMX 0x00040000 /* SMX instruction */
|
||||
#define IA_SVM 0x00080000 /* SVM instruction */
|
||||
#define IA_XSAVE 0x00100000 /* XSAVE/XRSTOR extensions instruction */
|
||||
#define IA_AES_PCLMULQDQ 0x00200000 /* AES+PCLMULQDQ instructions */
|
||||
#define IA_MOVBE 0x00400000 /* MOVBE Intel Atom(R) instruction */
|
||||
#define IA_AVX 0x00800000 /* AVX instruction */
|
||||
#define IA_AVX_FMA 0x01000000 /* AVX FMA instruction */
|
||||
#define IA_X86_64 0x02000000 /* x86-64 instruction */
|
||||
#define IA_XSAVEOPT 0x00200000 /* XSAVEOPT instruction */
|
||||
#define IA_AES_PCLMULQDQ 0x00400000 /* AES+PCLMULQDQ instructions */
|
||||
#define IA_MOVBE 0x00800000 /* MOVBE Intel Atom(R) instruction */
|
||||
#define IA_FSGSBASE 0x01000000 /* FS/GS BASE access instructions */
|
||||
#define IA_AVX 0x02000000 /* AVX instruction */
|
||||
#define IA_AVX_FMA 0x04000000 /* AVX FMA instruction */
|
||||
#define IA_X86_64 0x08000000 /* x86-64 instruction */
|
||||
|
||||
/* general purpose bit register */
|
||||
enum {
|
||||
@ -480,6 +482,7 @@ public:
|
||||
void Rw(const x86_insn *insn);
|
||||
void Rd(const x86_insn *insn);
|
||||
void Rq(const x86_insn *insn);
|
||||
void Ry(const x86_insn *insn);
|
||||
|
||||
// mmx register
|
||||
void Pq(const x86_insn *insn);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: opcodes.inc,v 1.39 2010-05-23 20:05:14 sshwarts Exp $
|
||||
// $Id: opcodes.inc,v 1.40 2010-07-22 15:12:07 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2005-2009 Stanislav Shwartsman
|
||||
@ -226,8 +226,8 @@ Ia_cmpw_Ew_Gw = { "cmp", "cmpw", Ew, Gw, XX, XX, 0 },
|
||||
Ia_cmpw_Ew_Iw = { "cmp", "cmpw", Ew, Iw, XX, XX, 0 },
|
||||
Ia_cmpw_Ew_sIb = { "cmp", "cmpw", Ew, sIbw, XX, XX, 0 },
|
||||
Ia_cmpw_Gw_Ew = { "cmp", "cmpw", Gw, Ew, XX, XX, 0 },
|
||||
Ia_cmpxchg16b = { "cmpxchg16b", "cmpxchg16b", Mdq, XX, XX, XX, IA_X86_64 },
|
||||
Ia_cmpxchg8b = { "cmpxchg8b", "cmpxchg8b", Mq, XX, XX, XX, IA_PENTIUM },
|
||||
Ia_cmpxchg16b_Mdq = { "cmpxchg16b", "cmpxchg16b", Mdq, XX, XX, XX, IA_X86_64 },
|
||||
Ia_cmpxchg8b_Mq = { "cmpxchg8b", "cmpxchg8b", Mq, XX, XX, XX, IA_PENTIUM },
|
||||
Ia_cmpxchgb_Eb_Gb = { "cmpxchg", "cmpxchgb", Eb, Gb, XX, XX, IA_486 },
|
||||
Ia_cmpxchgl_Ed_Gd = { "cmpxchg", "cmpxchgl", Ed, Gd, XX, XX, IA_486 },
|
||||
Ia_cmpxchgq_Eq_Gq = { "cmpxchg", "cmpxchgq", Eq, Gq, XX, XX, IA_X86_64 },
|
||||
@ -1098,6 +1098,8 @@ Ia_rcrq_Eq_Ib = { "rcr", "rcrq", Eq, Ib, XX, XX, IA_X86_64 },
|
||||
Ia_rcrw_Ew_CL = { "rcr", "rcrw", Ew, CL_Reg, XX, XX, 0 },
|
||||
Ia_rcrw_Ew_I1 = { "rcr", "rcrw", Ew, I1, XX, XX, 0 },
|
||||
Ia_rcrw_Ew_Ib = { "rcr", "rcrw", Ew, Ib, XX, XX, 0 },
|
||||
Ia_rdfsbase_Ry = { "rdfsbase", "rdfsbase", Ry, XX, XX, XX, IA_FSGSBASE },
|
||||
Ia_rdgsbase_Ry = { "rdgsbase", "rdgsbase", Ry, XX, XX, XX, IA_FSGSBASE },
|
||||
Ia_rdmsr = { "rdmsr", "rdmsr", XX, XX, XX, XX, IA_PENTIUM },
|
||||
Ia_rdpmc = { "rdpmc", "rdpmc", XX, XX, XX, XX, IA_P6 },
|
||||
Ia_rdtsc = { "rdtsc", "rdtsc", XX, XX, XX, XX, IA_PENTIUM },
|
||||
@ -1307,6 +1309,8 @@ Ia_vmwrite_Gq_Eq = { "vmwrite", "vmwrite", Gq, Eq, XX, XX, IA_VMX },
|
||||
Ia_vmxoff = { "vmxoff", "vmxoff", XX, XX, XX, XX, IA_VMX },
|
||||
Ia_vmxon_Mq = { "vmxon", "vmxon", Mq, XX, XX, XX, IA_VMX },
|
||||
Ia_wbinvd = { "wbinvd", "wbinvd", XX, XX, XX, XX, IA_486 },
|
||||
Ia_wrfsbase_Ry = { "wrfsbase", "wrfsbase", Ry, XX, XX, XX, IA_FSGSBASE },
|
||||
Ia_wrgsbase_Ry = { "wrgsbase", "wrgsbase", Ry, XX, XX, XX, IA_FSGSBASE },
|
||||
Ia_wrmsr = { "wrmsr", "wrmsr", XX, XX, XX, XX, IA_PENTIUM },
|
||||
Ia_xaddb_Eb_Gb = { "xadd", "xaddb", Eb, Gb, XX, XX, IA_486 },
|
||||
Ia_xaddl_Ed_Gd = { "xadd", "xaddl", Ed, Gd, XX, XX, IA_486 },
|
||||
@ -1344,4 +1348,5 @@ Ia_xorw_Ew_sIb = { "xor", "xorw", Ew, sIbw, XX, XX, 0 },
|
||||
Ia_xorw_Gw_Ew = { "xor", "xorw", Gw, Ew, XX, XX, 0 },
|
||||
Ia_xrstor = { "xrstor", "xrstor", Mx, XX, XX, XX, IA_XSAVE },
|
||||
Ia_xsave = { "xsave", "xsave", Mx, XX, XX, XX, IA_XSAVE },
|
||||
Ia_xsaveopt = { "xsaveopt", "xsaveopt", Mx, XX, XX, XX, IA_XSAVEOPT },
|
||||
Ia_xsetbv = { "xsetbv", "xsetbv", XX, XX, XX, XX, IA_XSAVE };
|
||||
|
Loading…
x
Reference in New Issue
Block a user