summaryrefslogtreecommitdiff
path: root/arch/x86/lib/inat.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-01-31 15:13:14 +0100
committerTakashi Iwai <tiwai@suse.de>2012-01-31 15:13:14 +0100
commitea51e5040e24eefe44d70bc654a237ca1f0225b0 (patch)
treedf2e5922dcdfafae62a10d8cd97f98121064fc23 /arch/x86/lib/inat.c
parent3422a47041b8cb8f14ac1e3926bcf711121df6dc (diff)
parent8dbd52daee38adaae4d5a674bcca837e694a4f4c (diff)
Merge branch 'fix/asoc' into for-linus
Diffstat (limited to 'arch/x86/lib/inat.c')
-rw-r--r--arch/x86/lib/inat.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/x86/lib/inat.c b/arch/x86/lib/inat.c
index 46fc4ee09fc4..88ad5fbda6e1 100644
--- a/arch/x86/lib/inat.c
+++ b/arch/x86/lib/inat.c
@@ -82,9 +82,16 @@ insn_attr_t inat_get_avx_attribute(insn_byte_t opcode, insn_byte_t vex_m,
const insn_attr_t *table;
if (vex_m > X86_VEX_M_MAX || vex_p > INAT_LSTPFX_MAX)
return 0;
- table = inat_avx_tables[vex_m][vex_p];
+ /* At first, this checks the master table */
+ table = inat_avx_tables[vex_m][0];
if (!table)
return 0;
+ if (!inat_is_group(table[opcode]) && vex_p) {
+ /* If this is not a group, get attribute directly */
+ table = inat_avx_tables[vex_m][vex_p];
+ if (!table)
+ return 0;
+ }
return table[opcode];
}