Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(423)

Unified Diff: runtime/vm/assembler_arm.cc

Issue 12378080: Adds mrc instruction to arm simulator, assembler, disassembler. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/assembler_arm.cc
===================================================================
--- runtime/vm/assembler_arm.cc (revision 19404)
+++ runtime/vm/assembler_arm.cc (working copy)
@@ -1116,6 +1116,29 @@
}
+void Assembler::mrc(Register rd, int32_t coproc, int32_t opc1,
+ int32_t CRn, int32_t CRm, int32_t opc2, Condition cond) {
regis 2013/03/04 21:54:52 crn, crm
+ ASSERT(rd != kNoRegister);
+ ASSERT(cond != kNoCondition);
+
+ // This is all the simulator and disassembler know about.
+ ASSERT(coproc == 15);
+ ASSERT(opc1 == 0);
+ ASSERT(CRn == 0);
+ ASSERT(CRm == 2);
+ ASSERT(opc2 == 0);
+ int32_t encoding = (static_cast<int32_t>(cond) << kConditionShift) |
+ B27 | B26 | B25 | B20 | B4 |
+ ((opc1 & 0x7) << kOpc1Shift) |
+ ((CRn & 0xf) << kCRnShift) |
+ ((coproc & 0xf) << kCoprocShift) |
+ ((opc2 & 0x7) << kOpc2Shift) |
+ ((CRm & 0xf) << kCRmShift) |
+ (static_cast<int32_t>(rd) << kRdShift);
+ Emit(encoding);
+}
+
+
void Assembler::MarkExceptionHandler(Label* label) {
EmitType01(AL, 1, TST, 1, PC, R0, ShifterOperand(0));
Label l;

Powered by Google App Engine
This is Rietveld 408576698