aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog9
-rw-r--r--opcodes/i386-dis.c15
2 files changed, 15 insertions, 9 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 7053cb3..f8be7a3 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,12 @@
+2009-11-06 Sebastian Pop <sebastian.pop@amd.com>
+
+ * i386-dis.c (reg_table): Add XOP_8F_TABLE (XOP_09) to
+ reg_table[REG_8F][1]: for XOP instructions, ModRM.reg first points to
+ B.mm in the RXB.mmmmm byte, and so when B is set, we still should use
+ the xop_table.
+ (get_valid_dis386): Removed unused condition (from cut/n/paste) for
+ XOP instructions.
+
2009-11-05 Sebastian Pop <sebastian.pop@amd.com>
Quentin Neill <quentin.neill@amd.com>
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 8c2ea7f..b411c83 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -2132,7 +2132,7 @@ static const struct dis386 reg_table[][8] = {
/* REG_8F */
{
{ "popU", { stackEv } },
- { "(bad)", { XX } },
+ { XOP_8F_TABLE (XOP_09) },
{ "(bad)", { XX } },
{ "(bad)", { XX } },
{ "(bad)", { XX } },
@@ -9983,14 +9983,11 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
codep++;
index = *codep++;
dp = &xop_table[vex_table_index][index];
- /* There is no MODRM byte for VEX [82|77]. */
- if (index != 0x77 && index != 0x82)
- {
- FETCH_DATA (info, codep + 1);
- modrm.mod = (*codep >> 6) & 3;
- modrm.reg = (*codep >> 3) & 7;
- modrm.rm = *codep & 7;
- }
+
+ FETCH_DATA (info, codep + 1);
+ modrm.mod = (*codep >> 6) & 3;
+ modrm.reg = (*codep >> 3) & 7;
+ modrm.rm = *codep & 7;
break;
case USE_VEX_C4_TABLE: