Index: runtime/vm/instructions_arm.cc |
=================================================================== |
--- runtime/vm/instructions_arm.cc (revision 23918) |
+++ runtime/vm/instructions_arm.cc (working copy) |
@@ -93,9 +93,9 @@ |
offset = instr & 0xfff; |
instr = Back(++end); |
if ((instr & 0xffff0000) == 0xe28a0000) { // add reg, pp, shifter_op |
- const int rot = (instr & 0xf00) * 2; |
+ const int rot = (instr & 0xf00) >> 7; |
const int imm8 = instr & 0xff; |
- offset |= (imm8 >> rot) | (imm8 << (32 - rot)); |
+ offset += (imm8 >> rot) | (imm8 << (32 - rot)); |
*reg = static_cast<Register>((instr & 0xf000) >> 12); |
} else { |
ASSERT((instr & 0xffff0000) == 0xe08a0000); // add reg, pp, reg |