summaryrefslogtreecommitdiffstats
path: root/disassembler/disassembler_arm.cc
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2013-11-19 18:00:50 -0800
committerIan Rogers <irogers@google.com>2013-12-20 08:01:57 -0800
commitb122a4bbed34ab22b4c1541ee25e5cf22f12a926 (patch)
tree624f16271f4481a8fd5aa2f607385f490dc7b3ae /disassembler/disassembler_arm.cc
parente40687d053b89c495b6fbeb7a766b01c9c7e039c (diff)
downloadandroid_art-b122a4bbed34ab22b4c1541ee25e5cf22f12a926.tar.gz
android_art-b122a4bbed34ab22b4c1541ee25e5cf22f12a926.tar.bz2
android_art-b122a4bbed34ab22b4c1541ee25e5cf22f12a926.zip
Tidy up memory barriers.
Change-Id: I937ea93e6df1835ecfe2d4bb7d84c24fe7fc097b
Diffstat (limited to 'disassembler/disassembler_arm.cc')
-rw-r--r--disassembler/disassembler_arm.cc19
1 files changed, 16 insertions, 3 deletions
diff --git a/disassembler/disassembler_arm.cc b/disassembler/disassembler_arm.cc
index 90d84d5a72..71f70c4e5b 100644
--- a/disassembler/disassembler_arm.cc
+++ b/disassembler/disassembler_arm.cc
@@ -81,6 +81,19 @@ void DisassemblerArm::DumpCond(std::ostream& os, uint32_t cond) {
}
}
+void DisassemblerArm::DumpMemoryDomain(std::ostream& os, uint32_t domain) {
+ switch (domain) {
+ case 0b1111: os << "sy"; break;
+ case 0b1110: os << "st"; break;
+ case 0b1011: os << "ish"; break;
+ case 0b1010: os << "ishst"; break;
+ case 0b0111: os << "nsh"; break;
+ case 0b0110: os << "nshst"; break;
+ case 0b0011: os << "osh"; break;
+ case 0b0010: os << "oshst"; break;
+ }
+}
+
void DisassemblerArm::DumpBranchTarget(std::ostream& os, const uint8_t* instr_ptr, int32_t imm32) {
os << StringPrintf("%+d (%p)", imm32, instr_ptr + imm32);
}
@@ -996,9 +1009,9 @@ size_t DisassemblerArm::DumpThumb32(std::ostream& os, const uint8_t* instr_ptr)
// Miscellaneous control instructions
uint32_t op5 = (instr >> 4) & 0xF;
switch (op5) {
- case 4: opcode << "dsb"; break;
- case 5: opcode << "dmb"; break;
- case 6: opcode << "isb"; break;
+ case 4: opcode << "dsb"; DumpMemoryDomain(args, instr & 0xF); break;
+ case 5: opcode << "dmb"; DumpMemoryDomain(args, instr & 0xF); break;
+ case 6: opcode << "isb"; DumpMemoryDomain(args, instr & 0xF); break;
}
}
break;