aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2009-11-06 23:17:26 +0000
committerSebastian Pop <sebastian.pop@amd.com>2009-11-06 23:17:26 +0000
commitc48244a521d54d2a8aaf7362e376b8aa551954da (patch)
treef180bbc3e4cd07790c1e0c9c533360103d16e16f /opcodes
parent7580967a3481f17bfcf5c9281a85be52f0cdc6e4 (diff)
downloadgdb-c48244a521d54d2a8aaf7362e376b8aa551954da.zip
gdb-c48244a521d54d2a8aaf7362e376b8aa551954da.tar.gz
gdb-c48244a521d54d2a8aaf7362e376b8aa551954da.tar.bz2
2009-11-06 Sebastian Pop <sebastian.pop@amd.com>
* opcodes/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. * gas/testsuite/gas/i386/x86-64-lwp.s: Updated to also contain patterns with r[8-15] registers. * gas/testsuite/gas/i386/x86-64-lwp.d: Same.
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: