aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opcodes/ChangeLog8
-rw-r--r--opcodes/i386-dis.c11
2 files changed, 14 insertions, 5 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 5302b2e..97fcec5 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,11 @@
+2006-12-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * 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 <dan@codesourcery.com>
* po/Make-in (.po.gmo): Put gmo files in objdir.
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 1ea683f..8b6f532 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);
}