From aa0980d7e7ba11aaabc4689c89e317f1e98b32d8 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Mon, 18 Apr 2011 04:46:13 +0000 Subject: [PATCH] Added the "wrmsr" instruction --- src/arch/i386.ins | 22 ++++++++++++---------- test/i386.S | 1 + 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/arch/i386.ins b/src/arch/i386.ins index 9158dbe..aa15eb3 100644 --- a/src/arch/i386.ins +++ b/src/arch/i386.ins @@ -418,6 +418,18 @@ { "fnclex", 0xdbe2, OP2F, AOT_NONE, AOT_NONE, AOT_NONE }, /* NOP 0x90 1 */ { "nop", 0x90, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, +/* WRMSR 0x0f30 2 */ +{ "wrmsr", 0x0f30, OP2F, AOT_NONE, AOT_NONE, AOT_NONE }, +/* XADD 0x0fc0 /r 2 r/m8 r8 */ +{ "xadd", 0x0fc0, OP2F, OP_RM8_D0_R,OP_R8, AOT_NONE }, +{ "xadd", 0x0fc0, OP2F, OP_RM8_D8_R,OP_R8, AOT_NONE }, +{ "xadd", 0x0fc0, OP2F, OP_RM8_DW_R,OP_R8, AOT_NONE }, +{ "xadd", 0x0fc0, OP2F, OP_RM8_R8_R,OP_R8, AOT_NONE }, +/* XADD 0x0fc1 /r 2 r/mW rW */ +{ "xadd", 0x0fc1, OP2F, OP_RMW_D0_R,OP_RW, AOT_NONE }, +{ "xadd", 0x0fc1, OP2F, OP_RMW_D8_R,OP_RW, AOT_NONE }, +{ "xadd", 0x0fc1, OP2F, OP_RMW_DW_R,OP_RW, AOT_NONE }, +{ "xadd", 0x0fc1, OP2F, OP_RMW_RW_R,OP_RW, AOT_NONE }, /* XCHG 0x90 +rW 1 AX rW */ { "xchg", 0x90, OP1F, OP_AX, OP_AX, AOT_NONE }, { "xchg", 0x91, OP1F, OP_AX, OP_CX, AOT_NONE }, @@ -434,16 +446,6 @@ { "xchg", 0x95, OP1F, OP_BP, OP_AX, AOT_NONE }, { "xchg", 0x96, OP1F, OP_SI, OP_AX, AOT_NONE }, { "xchg", 0x97, OP1F, OP_DI, OP_AX, AOT_NONE }, -/* XADD 0x0fc0 /r 2 r/m8 r8 */ -{ "xadd", 0x0fc0, OP2F, OP_RM8_D0_R,OP_R8, AOT_NONE }, -{ "xadd", 0x0fc0, OP2F, OP_RM8_D8_R,OP_R8, AOT_NONE }, -{ "xadd", 0x0fc0, OP2F, OP_RM8_DW_R,OP_R8, AOT_NONE }, -{ "xadd", 0x0fc0, OP2F, OP_RM8_R8_R,OP_R8, AOT_NONE }, -/* XADD 0x0fc1 /r 2 r/mW rW */ -{ "xadd", 0x0fc1, OP2F, OP_RMW_D0_R,OP_RW, AOT_NONE }, -{ "xadd", 0x0fc1, OP2F, OP_RMW_D8_R,OP_RW, AOT_NONE }, -{ "xadd", 0x0fc1, OP2F, OP_RMW_DW_R,OP_RW, AOT_NONE }, -{ "xadd", 0x0fc1, OP2F, OP_RMW_RW_R,OP_RW, AOT_NONE }, /* XCHG 0x86 /r 1 r/m8 r8 */ { "xchg", 0x86, OP1F, OP_RM8_D0_R,OP_R8, AOT_NONE }, { "xchg", 0x86, OP1F, OP_RM8_D8_R,OP_R8, AOT_NONE }, diff --git a/test/i386.S b/test/i386.S index 0497a87..6c3dcf6 100644 --- a/test/i386.S +++ b/test/i386.S @@ -145,6 +145,7 @@ fclex fnclex nop /* 90 */ + wrmsr /* XADD */ xadd %eax, %ecx /* 0f c1 c8 */ xadd %ecx, %eax /* 0f c1 c1 */