mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 05:47:26 +08:00
Handle prefixes before fwait
0x9b (fwait) is both an instruction and an opcode prefix. When 0x9b is treated as an instruction, we need to handle any prefixes before it. This patch handles it properly. gas/testsuite/ PR binutils/16891 * gas/i386/opcode.s: Add test for fwait with prefix. * gas/i386/opcode-intel.d: Updated. * gas/i386/opcode-suffix.d: Likewise. * gas/i386/opcode.d: Likewise. opcodes/ PR binutils/16891 * i386-dis.c (print_insn): Handle prefixes before fwait.
This commit is contained in:
@ -1,3 +1,11 @@
|
||||
2014-05-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR binutils/16891
|
||||
* gas/i386/opcode.s: Add test for fwait with prefix.
|
||||
* gas/i386/opcode-intel.d: Updated.
|
||||
* gas/i386/opcode-suffix.d: Likewise.
|
||||
* gas/i386/opcode.d: Likewise.
|
||||
|
||||
2014-04-23 Will Newton <will.newton@linaro.org>
|
||||
|
||||
* gas/arm/backslash-at.d: Fix dump output regexps for
|
||||
|
@ -592,4 +592,6 @@ Disassembly of section .text:
|
||||
[ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnp edx,DWORD PTR \[eax-0x6f6f6f70\]
|
||||
[ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovp dx,WORD PTR \[eax-0x6f6f6f70\]
|
||||
[ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnp dx,WORD PTR \[eax-0x6f6f6f70\]
|
||||
[ ]*[a-f0-9]+: 26 9b [ ]*es fwait
|
||||
[ ]*[a-f0-9]+: 9b [ ]*fwait
|
||||
#pass
|
||||
|
@ -592,4 +592,6 @@ Disassembly of section .text:
|
||||
[ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnpl -0x6f6f6f70\(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovpw -0x6f6f6f70\(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnpw -0x6f6f6f70\(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 26 9b [ ]*es fwait
|
||||
[ ]*[a-f0-9]+: 9b [ ]*fwait
|
||||
#pass
|
||||
|
@ -591,4 +591,6 @@ Disassembly of section .text:
|
||||
[ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%edx
|
||||
[ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovp -0x6f6f6f70\(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%dx
|
||||
[ ]*[a-f0-9]+: 26 9b [ ]*es fwait
|
||||
[ ]*[a-f0-9]+: 9b [ ]*fwait
|
||||
#pass
|
||||
|
@ -589,3 +589,6 @@ foo:
|
||||
cmovpo 0x90909090(%eax),%edx
|
||||
cmovpe 0x90909090(%eax),%dx
|
||||
cmovpo 0x90909090(%eax),%dx
|
||||
|
||||
es fwait
|
||||
fwait
|
||||
|
@ -1,3 +1,8 @@
|
||||
2014-05-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR binutils/16891
|
||||
* i386-dis.c (print_insn): Handle prefixes before fwait.
|
||||
|
||||
2014-04-26 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* po/POTFILES.in: Regenerate.
|
||||
|
@ -12548,8 +12548,14 @@ print_insn (bfd_vma pc, disassemble_info *info)
|
||||
if (((prefixes & PREFIX_FWAIT)
|
||||
&& ((*codep < 0xd8) || (*codep > 0xdf))))
|
||||
{
|
||||
/* Handle prefixes before fwait. */
|
||||
for (i = 0;
|
||||
i < (int) ARRAY_SIZE (all_prefixes) && all_prefixes[i];
|
||||
i++)
|
||||
(*info->fprintf_func) (info->stream, "%s ",
|
||||
prefix_name (all_prefixes[i], sizeflag));
|
||||
(*info->fprintf_func) (info->stream, "fwait");
|
||||
return 1;
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
if (*codep == 0x0f)
|
||||
|
Reference in New Issue
Block a user