diff options
author | Vladimir Marko <vmarko@google.com> | 2013-12-03 15:25:24 +0000 |
---|---|---|
committer | Vladimir Marko <vmarko@google.com> | 2013-12-03 18:32:29 +0000 |
commit | 70b797d998f2a28e39f7d6ffc8a07c9cbc47da14 (patch) | |
tree | e5607068be133899ff9111e33327e0c2aa525cd1 /disassembler | |
parent | 057c74a3a2d50d1247d4e6472763ca6f59060762 (diff) | |
download | art-70b797d998f2a28e39f7d6ffc8a07c9cbc47da14.tar.gz art-70b797d998f2a28e39f7d6ffc8a07c9cbc47da14.tar.bz2 art-70b797d998f2a28e39f7d6ffc8a07c9cbc47da14.zip |
Unsafe.compareAndSwapLong() intrinsic for x86.
Change-Id: Idbc5371a62dfdd84485a657d4548990519200205
Diffstat (limited to 'disassembler')
-rw-r--r-- | disassembler/disassembler_x86.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc index 9ed65cd80a..8781c7a274 100644 --- a/disassembler/disassembler_x86.cc +++ b/disassembler/disassembler_x86.cc @@ -520,6 +520,13 @@ DISASSEMBLER_ENTRY(cmp, case 0xB7: opcode << "movzxw"; has_modrm = true; load = true; break; case 0xBE: opcode << "movsxb"; has_modrm = true; load = true; break; case 0xBF: opcode << "movsxw"; has_modrm = true; load = true; break; + case 0xC7: + static const char* x0FxC7_opcodes[] = { "unknown-0f-c7", "cmpxchg8b", "unknown-0f-c7", "unknown-0f-c7", "unknown-0f-c7", "unknown-0f-c7", "unknown-0f-c7", "unknown-0f-c7" }; + modrm_opcodes = x0FxC7_opcodes; + has_modrm = true; + reg_is_opcode = true; + store = true; + break; case 0xC8: case 0xC9: case 0xCA: case 0xCB: case 0xCC: case 0xCD: case 0xCE: case 0xCF: opcode << "bswap"; reg_in_opcode = true; |