Browse Source

dyncom: Fix 32-bit ASR shifts for immediates

pull/15/merge
Lioncash 11 years ago
parent
commit
f7770b83d4
  1. 8
      src/core/arm/dyncom/arm_dyncom_interpreter.cpp

8
src/core/arm/dyncom/arm_dyncom_interpreter.cpp

@ -176,13 +176,11 @@ unsigned int DPO(ArithmeticShiftRightByImmediate)(arm_processor *cpu, unsigned i
unsigned int shifter_operand;
int shift_imm = BITS(sht_oper, 7, 11);
if (shift_imm == 0) {
if (BIT(rm, 31)) {
if (BIT(rm, 31) == 0)
shifter_operand = 0;
cpu->shifter_carry_out = BIT(rm, 31);
} else {
else
shifter_operand = 0xFFFFFFFF;
cpu->shifter_carry_out = BIT(rm, 31);
}
cpu->shifter_carry_out = BIT(rm, 31);
} else {
shifter_operand = static_cast<int>(rm) >> shift_imm;
cpu->shifter_carry_out = BIT(rm, shift_imm - 1);

Loading…
Cancel
Save