summaryrefslogtreecommitdiff
path: root/opcodes/i386-dis.c
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r--opcodes/i386-dis.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index d48e6de46d7..d3acb84138f 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -4374,16 +4374,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++;
}