* cr16.h (cr16_num_optab): Declared.
[deliverable/binutils-gdb.git] / opcodes / i386-dis.c
index 4f14a327efaa65a615c2afe68be132bc7b828d0e..cb6a171edd4a164ad71067b87de49b24190823cf 100644 (file)
@@ -231,7 +231,7 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
 #define Em { OP_E, m_mode }
 #define Ew { OP_E, w_mode }
 #define M { OP_M, 0 }          /* lea, lgdt, etc. */
-#define Ma { OP_M, v_mode }
+#define Ma { OP_M, a_mode }
 #define Mb { OP_M, b_mode }
 #define Md { OP_M, d_mode }
 #define Mp { OP_M, f_mode }            /* 32 or 48 bit memory operand for LDS, LES etc */
@@ -378,7 +378,9 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
 #define x_mode                 (t_mode + 1)
 /* d_mode in 32bit, q_mode in 64bit mode.  */
 #define m_mode                 (x_mode + 1)
-#define cond_jump_mode         (m_mode + 1)
+/* pair of v_mode operands */
+#define a_mode                 (m_mode + 1)
+#define cond_jump_mode         (a_mode + 1)
 #define loop_jcxz_mode         (cond_jump_mode + 1)
 /* operand size depends on REX prefixes.  */
 #define dq_mode                        (loop_jcxz_mode + 1)
@@ -542,7 +544,8 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
 #define MOD_0FAE_REG_1         (MOD_0FAE_REG_0 + 1)
 #define MOD_0FAE_REG_2         (MOD_0FAE_REG_1 + 1)
 #define MOD_0FAE_REG_3         (MOD_0FAE_REG_2 + 1)
-#define MOD_0FAE_REG_5         (MOD_0FAE_REG_3 + 1)
+#define MOD_0FAE_REG_4         (MOD_0FAE_REG_3 + 1)
+#define MOD_0FAE_REG_5         (MOD_0FAE_REG_4 + 1)
 #define MOD_0FAE_REG_6         (MOD_0FAE_REG_5 + 1)
 #define MOD_0FAE_REG_7         (MOD_0FAE_REG_6 + 1)
 #define MOD_0FB2               (MOD_0FAE_REG_7 + 1)
@@ -560,7 +563,8 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
 
 #define RM_0F01_REG_0          0
 #define RM_0F01_REG_1          (RM_0F01_REG_0 + 1)
-#define RM_0F01_REG_3          (RM_0F01_REG_1 + 1)
+#define RM_0F01_REG_2          (RM_0F01_REG_1 + 1)
+#define RM_0F01_REG_3          (RM_0F01_REG_2 + 1)
 #define RM_0F01_REG_7          (RM_0F01_REG_3 + 1)
 #define RM_0FAE_REG_5          (RM_0F01_REG_7 + 1)
 #define RM_0FAE_REG_6          (RM_0FAE_REG_5 + 1)
@@ -1764,7 +1768,7 @@ static const struct dis386 reg_table[][8] = {
     { MOD_TABLE (MOD_0FAE_REG_1) },
     { MOD_TABLE (MOD_0FAE_REG_2) },
     { MOD_TABLE (MOD_0FAE_REG_3) },
-    { "(bad)", { XX } },
+    { MOD_TABLE (MOD_0FAE_REG_4) },
     { MOD_TABLE (MOD_0FAE_REG_5) },
     { MOD_TABLE (MOD_0FAE_REG_6) },
     { MOD_TABLE (MOD_0FAE_REG_7) },
@@ -4549,7 +4553,7 @@ static const struct dis386 mod_table[][2] = {
   {
     /* MOD_0F01_REG_2 */
     { X86_64_TABLE (X86_64_0F01_REG_2) },
-    { "(bad)",         { XX } },
+    { RM_TABLE (RM_0F01_REG_2) },
   },
   {
     /* MOD_0F01_REG_3 */
@@ -4727,8 +4731,13 @@ static const struct dis386 mod_table[][2] = {
     { "(bad)",         { XX } },
   },
   {
-    /* MOD_0FAE_REG_5 */
+    /* MOD_0FAE_REG_4 */
+    { "xsave",         { M } },
     { "(bad)",         { XX } },
+  },
+  {
+    /* MOD_0FAE_REG_5 */
+    { "xrstor",                { M } },
     { RM_TABLE (RM_0FAE_REG_5) },
   },
   {
@@ -4826,6 +4835,17 @@ static const struct dis386 rm_table[][8] = {
     { "(bad)",         { XX } },
     { "(bad)",         { XX } },
   },
+  {
+    /* RM_0F01_REG_2 */
+    { "xgetbv",                { Skip_MODRM } },
+    { "xsetbv",                { Skip_MODRM } },
+    { "(bad)",         { XX } },
+    { "(bad)",         { XX } },
+    { "(bad)",         { XX } },
+    { "(bad)",         { XX } },
+    { "(bad)",         { XX } },
+    { "(bad)",         { XX } },
+  },
   {
     /* RM_0F01_REG_3 */
     { "vmrun",         { Skip_MODRM } },
@@ -6526,6 +6546,13 @@ intel_operand_size (int bytemode, int sizeflag)
       if (!(rex & REX_W))
        used_prefixes |= (prefixes & PREFIX_DATA);
       break;
+    case a_mode:
+      if (sizeflag & DFLAG)
+       oappend ("QWORD PTR ");
+      else
+       oappend ("DWORD PTR ");
+      used_prefixes |= (prefixes & PREFIX_DATA);
+      break;
     case d_mode:
     case dqd_mode:
       oappend ("DWORD PTR ");
This page took 0.038787 seconds and 4 git commands to generate.