Fix bad ARM code emitter bug
This mis-emits CMN instead of TEQ and TST in the reg-shift operand mode. This is never used by gpsp directly but translating real tst opcodes, hence it only affects games using such instruction. This fixes video players that previously crashed, many games that had graphical glitches in ARM mode (but not on other CPUs) usually in menus or other dialogues. Also fixes games that either crashed or went blank or similar issues. The extent of fixing is hard to determine but could affect many games in different levels.
This commit is contained in:
parent
55c6a69ccd
commit
2295dc4a3a
|
@ -1582,13 +1582,13 @@ ARM_CMN_REG_REGSHIFT_COND(p, rn, rm, shift_type, rs, ARMCOND_AL)
|
|||
#define ARM_TST_REG_REGSHIFT_COND(p, rn, rm, shift_type, rs, cond) \
|
||||
ARM_DPIOP_S_REG_REGSHIFT_COND(p, ARMOP_TST, 0, rn, rm, shift_type, rs, cond)
|
||||
#define ARM_TST_REG_REGSHIFT(p, rn, rm, shift_type, rs) \
|
||||
ARM_CMN_REG_REGSHIFT_COND(p, rn, rm, shift_type, rs, ARMCOND_AL)
|
||||
ARM_TST_REG_REGSHIFT_COND(p, rn, rm, shift_type, rs, ARMCOND_AL)
|
||||
|
||||
/* PSR := TEQ Rn, (Rm <shift_type> Rs) */
|
||||
#define ARM_TEQ_REG_REGSHIFT_COND(p, rn, rm, shift_type, rs, cond) \
|
||||
ARM_DPIOP_S_REG_REGSHIFT_COND(p, ARMOP_TEQ, 0, rn, rm, shift_type, rs, cond)
|
||||
#define ARM_TEQ_REG_REGSHIFT(p, rn, rm, shift_type, rs) \
|
||||
ARM_CMN_REG_REGSHIFT_COND(p, rn, rm, shift_type, rs, ARMCOND_AL)
|
||||
ARM_TEQ_REG_REGSHIFT_COND(p, rn, rm, shift_type, rs, ARMCOND_AL)
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue