Chromium Code Reviews| Index: runtime/vm/simulator_arm.cc |
| =================================================================== |
| --- runtime/vm/simulator_arm.cc (revision 22334) |
| +++ runtime/vm/simulator_arm.cc (working copy) |
| @@ -1482,7 +1482,7 @@ |
| break; |
| } |
| case 7: { |
| - if (instr->Bits(21, 2) == 0x1) { |
| + if ((instr->Bits(21, 2) == 0x1) && (instr->ConditionField() == AL)) { |
| // Format(instr, "bkpt'cond #'imm12_4"); |
|
regis
2013/05/07 17:14:35
Remove 'cond.
zra
2013/05/07 17:50:18
Done.
|
| SimulatorDebugger dbg(this); |
| set_pc(get_pc() + Instr::kInstrSize); |
| @@ -2067,12 +2067,12 @@ |
| void Simulator::DoDivision(Instr* instr) { |
| ASSERT(CPUFeatures::integer_division_supported()); |
| - Register rd = instr->RdField(); |
| - Register rn = instr->RnField(); |
| - Register rm = instr->RmField(); |
| + Register rd = instr->DivRdField(); |
| + Register rn = instr->DivRnField(); |
| + Register rm = instr->DivRmField(); |
| - // TODO(zra): Does the hardware trap on divide-by-zero? |
| - // Revisit when we test on ARM hardware. |
| + // ARMv7-a does not trap on divide-by-zero. The destination register is just |
| + // set to 0. |
| if (get_register(rm) == 0) { |
| set_register(rd, 0); |
| return; |