| Index: src/arm/simulator-arm.cc
|
| diff --git a/src/arm/simulator-arm.cc b/src/arm/simulator-arm.cc
|
| index 5b8ba2adae0d5178145ef523691f11033a602ecf..5cdba9c467a65c1b23862ccbf3638837784152a6 100644
|
| --- a/src/arm/simulator-arm.cc
|
| +++ b/src/arm/simulator-arm.cc
|
| @@ -1459,7 +1459,14 @@ int32_t Simulator::GetShiftRm(Instruction* instr, bool* carry_out) {
|
| }
|
|
|
| case ROR: {
|
| - UNIMPLEMENTED();
|
| + if (shift_amount == 0) {
|
| + *carry_out = c_flag_;
|
| + } else {
|
| + uint32_t left = static_cast<uint32_t>(result) >> shift_amount;
|
| + uint32_t right = static_cast<uint32_t>(result) << (32 - shift_amount);
|
| + result = right | left;
|
| + *carry_out = (static_cast<uint32_t>(result) >> 31) != 0;
|
| + }
|
| break;
|
| }
|
|
|
|
|