citra-emu
/
citra-canary
Archived
1
0
Fork 0

Merge pull request #476 from lioncash/asr

dyncom: Fix 32-bit ASR shifts for immediates
This commit is contained in:
bunnei 2015-01-12 14:52:01 -05:00
commit 86e8ff85c9
1 changed files with 3 additions and 5 deletions

View File

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