From 596b4ac167e1817c113be7c1e6d9b570699c833c Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 11 Apr 2005 13:06:48 +0000 Subject: [PATCH] opcodes/ 2005-03-15 Jan Beulich * i386-dis.c (PNI_Fixup): Neither mwait nor monitor have any visible operands in Intel mode. The first operand of monitor is %rax in 64-bit mode. --- opcodes/ChangeLog | 6 ++++++ opcodes/i386-dis.c | 24 ++++++++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 08d6475fce8..9085878e62c 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2005-03-15 Jan Beulich + + * i386-dis.c (PNI_Fixup): Neither mwait nor monitor have any + visible operands in Intel mode. The first operand of monitor is + %rax in 64-bit mode. + 2005-03-15 Jan Beulich * i386-dis.c (INVLPG_Fixup): Decode rdtscp; change code to allow for diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 7fbd27f3240..1ddf1134ab1 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -4372,16 +4372,32 @@ PNI_Fixup (int extrachar ATTRIBUTE_UNUSED, int sizeflag) { /* mwait %eax,%ecx */ strcpy (p, "mwait"); + if (!intel_syntax) + strcpy (op1out, names32[0]); } else { /* monitor %eax,%ecx,%edx" */ strcpy (p, "monitor"); - strcpy (op3out, names32[2]); + if (!intel_syntax) + { + if (!mode_64bit) + strcpy (op1out, names32[0]); + else if (!(prefixes & PREFIX_ADDR)) + strcpy (op1out, names64[0]); + else + { + strcpy (op1out, names32[0]); + used_prefixes |= PREFIX_ADDR; + } + strcpy (op3out, names32[2]); + } + } + if (!intel_syntax) + { + strcpy (op2out, names32[1]); + two_source_ops = 1; } - strcpy (op1out, names32[0]); - strcpy (op2out, names32[1]); - two_source_ops = 1; codep++; } -- 2.47.2