opcodes/
authorJan Beulich <jbeulich@novell.com>
Fri, 1 Apr 2005 16:06:40 +0000 (16:06 +0000)
committerJan Beulich <jbeulich@novell.com>
Fri, 1 Apr 2005 16:06:40 +0000 (16:06 +0000)
2005-04-01  Jan Beulich  <jbeulich@novell.com>

* 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
opcodes/i386-dis.c

index b1ea875..d289c15 100644 (file)
@@ -1,5 +1,11 @@
 2005-04-01  Jan Beulich  <jbeulich@novell.com>
 
+       * 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-04-01  Jan Beulich  <jbeulich@novell.com>
+
        * i386-dis.c (INVLPG_Fixup): Decode rdtscp; change code to allow for
        easier future additions.
 
index d48e6de..d3acb84 100644 (file)
@@ -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++;
     }