X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Fi386-dis.c;h=21d9d3a61a63edabc57ac6feb00f4b50cbadbde6;hb=4e86f6e7478e40a288ec6567fa7f3b4ef0f8d516;hp=734cfa6965c46fd00bb5e2222687b2a6a633687c;hpb=a847e32224d9a4297514a9a291c024c207eefdb9;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 734cfa6965..21d9d3a61a 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -962,6 +962,7 @@ enum PREFIX_0F01_REG_3_RM_1, PREFIX_0F01_REG_5_MOD_0, PREFIX_0F01_REG_5_MOD_3_RM_0, + PREFIX_0F01_REG_5_MOD_3_RM_1, PREFIX_0F01_REG_5_MOD_3_RM_2, PREFIX_0F01_REG_7_MOD_3_RM_2, PREFIX_0F01_REG_7_MOD_3_RM_3, @@ -1741,7 +1742,7 @@ enum { X86_64_06 = 0, X86_64_07, - X86_64_0D, + X86_64_0E, X86_64_16, X86_64_17, X86_64_1E, @@ -2379,7 +2380,7 @@ static const struct dis386 dis386[] = { { "orS", { Gv, EvS }, 0 }, { "orB", { AL, Ib }, 0 }, { "orS", { eAX, Iv }, 0 }, - { X86_64_TABLE (X86_64_0D) }, + { X86_64_TABLE (X86_64_0E) }, { Bad_Opcode }, /* 0x0f extended opcode escape */ /* 10 */ { "adcB", { Ebh1, Gb }, 0 }, @@ -3644,8 +3645,18 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F01_REG_5_MOD_3_RM_0 */ { - { Bad_Opcode }, + { "serialize", { Skip_MODRM }, PREFIX_OPCODE }, { "setssbsy", { Skip_MODRM }, PREFIX_OPCODE }, + { Bad_Opcode }, + { "xsuspldtrk", { Skip_MODRM }, PREFIX_OPCODE }, + }, + + /* PREFIX_0F01_REG_5_MOD_3_RM_1 */ + { + { Bad_Opcode }, + { Bad_Opcode }, + { Bad_Opcode }, + { "xresldtrk", { Skip_MODRM }, PREFIX_OPCODE }, }, /* PREFIX_0F01_REG_5_MOD_3_RM_2 */ @@ -6815,7 +6826,7 @@ static const struct dis386 x86_64_table[][2] = { { "popP", { es }, 0 }, }, - /* X86_64_0D */ + /* X86_64_0E */ { { "pushP", { cs }, 0 }, }, @@ -11038,7 +11049,7 @@ static const struct dis386 rm_table[][8] = { { /* RM_0F01_REG_5_MOD_3 */ { PREFIX_TABLE (PREFIX_0F01_REG_5_MOD_3_RM_0) }, - { Bad_Opcode }, + { PREFIX_TABLE (PREFIX_0F01_REG_5_MOD_3_RM_1) }, { PREFIX_TABLE (PREFIX_0F01_REG_5_MOD_3_RM_2) }, { Bad_Opcode }, { Bad_Opcode }, @@ -14272,10 +14283,11 @@ OP_E_memory (int bytemode, int sizeflag) } if ((havebase || haveindex || needindex || needaddr32 || riprel) - && (bytemode != v_bnd_mode) - && (bytemode != v_bndmk_mode) - && (bytemode != bnd_mode) - && (bytemode != bnd_swap_mode)) + && (address_mode != mode_64bit + || ((bytemode != v_bnd_mode) + && (bytemode != v_bndmk_mode) + && (bytemode != bnd_mode) + && (bytemode != bnd_swap_mode)))) used_prefixes |= PREFIX_ADDR; if (havedisp || (intel_syntax && riprel)) @@ -14356,6 +14368,14 @@ OP_E_memory (int bytemode, int sizeflag) } } } + else if (bytemode == v_bnd_mode + || bytemode == v_bndmk_mode + || bytemode == bnd_mode + || bytemode == bnd_swap_mode) + { + oappend ("(bad)"); + return; + } else { /* 16 bit address mode */