From 75413a22c61d2e90d84c0afc0c7e29fade441376 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 11 Dec 2006 18:11:13 +0000 Subject: [PATCH] 2006-12-11 H.J. Lu * i386-dis.c (Eq): Replaced by ... (Mq): New. This. (Ma): Defined with OP_M instead of OP_E. (grps): Updated cmpxchg8b and vmptrst for Eq -> Mq. (OP_M): Added bound, cmpxchg8b and vmptrst to bad modrm list. --- opcodes/ChangeLog | 8 ++++++++ opcodes/i386-dis.c | 11 ++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 5302b2e75b..97fcec5168 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,11 @@ +2006-12-11 H.J. Lu + + * i386-dis.c (Eq): Replaced by ... + (Mq): New. This. + (Ma): Defined with OP_M instead of OP_E. + (grps): Updated cmpxchg8b and vmptrst for Eq -> Mq. + (OP_M): Added bound, cmpxchg8b and vmptrst to bad modrm list. + 2006-12-11 Daniel Jacobowitz * po/Make-in (.po.gmo): Put gmo files in objdir. diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 1ea683fc7f..8b6f532aab 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -209,7 +209,6 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define Eb OP_E, b_mode #define Ev OP_E, v_mode #define Ed OP_E, d_mode -#define Eq OP_E, q_mode #define Edq OP_E, dq_mode #define Edqw OP_E, dqw_mode #define indirEv OP_indirE, stack_v_mode @@ -217,9 +216,10 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define stackEv OP_E, stack_v_mode #define Em OP_E, m_mode #define Ew OP_E, w_mode -#define Ma OP_E, v_mode #define M OP_M, 0 /* lea, lgdt, etc. */ +#define Ma OP_M, v_mode #define Mp OP_M, f_mode /* 32 or 48 bit memory operand for LDS, LES etc */ +#define Mq OP_M, q_mode #define Gb OP_G, b_mode #define Gv OP_G, v_mode #define Gd OP_G, d_mode @@ -1638,13 +1638,13 @@ static const struct dis386 grps[][8] = { /* GRP9 */ { { "(bad)", XX, XX, XX, XX }, - { "cmpxchg8b", Eq, XX, XX, XX }, + { "cmpxchg8b", Mq, XX, XX, XX }, { "(bad)", XX, XX, XX, XX }, { "(bad)", XX, XX, XX, XX }, { "(bad)", XX, XX, XX, XX }, { "(bad)", XX, XX, XX, XX }, { "", VM, XX, XX, XX }, /* See OP_VMX. */ - { "vmptrst", Eq, XX, XX, XX }, + { "vmptrst", Mq, XX, XX, XX }, }, /* GRP11_C6 */ { @@ -5262,7 +5262,8 @@ static void OP_M (int bytemode, int sizeflag) { if (mod == 3) - BadOp (); /* bad lea,lds,les,lfs,lgs,lss modrm */ + /* bad bound,lea,lds,les,lfs,lgs,lss,cmpxchg8b,vmptrst modrm */ + BadOp (); else OP_E (bytemode, sizeflag); } -- 2.34.1