mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-25 16:42:39 -06:00
dyncom: Fix 32-bit ASR shifts for immediates
This commit is contained in:
parent
ac05c4acb0
commit
f7770b83d4
1 changed files with 3 additions and 5 deletions
|
@ -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);
|
||||
}
|
||||
} else {
|
||||
shifter_operand = static_cast<int>(rm) >> shift_imm;
|
||||
cpu->shifter_carry_out = BIT(rm, shift_imm - 1);
|
||||
|
|
Loading…
Reference in a new issue