summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2012-03-09 17:52:49 +0000
committerKevin Enderby <enderby@apple.com>2012-03-09 17:52:49 +0000
commit014e1cde5f6d245f528d6d2e34a28a125bb654b3 (patch)
tree887e450107b930f8eef01c17a1155c0e6222bf7f /llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
parent3618cb7b6b7ff933a962583d7acde5006fa2db54 (diff)
downloadbcm5719-llvm-014e1cde5f6d245f528d6d2e34a28a125bb654b3.tar.gz
bcm5719-llvm-014e1cde5f6d245f528d6d2e34a28a125bb654b3.zip
Fix the x86 disassembler to at least print the lock prefix if it is the first
prefix. Added a FIXME to remind us this still does not work when it is not the first prefix. llvm-svn: 152414
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c')
-rw-r--r--llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
index b0e66f00c71..6f7e8f23466 100644
--- a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
+++ b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
@@ -312,6 +312,13 @@ static int readPrefixes(struct InternalInstruction* insn) {
if (consumeByte(insn, &byte))
return -1;
+
+ // If the the first byte is a LOCK prefix break and let it be disassembled
+ // as a lock "instruction", by creating an <MCInst #xxxx LOCK_PREFIX>.
+ // FIXME there is currently no way to get the disassembler to print the
+ // lock prefix if it is not the first byte.
+ if (insn->readerCursor - 1 == insn->startLocation && byte == 0xf0)
+ break;
switch (byte) {
case 0xf0: /* LOCK */
OpenPOWER on IntegriCloud