diff --git a/Common/ArmEmitter.cpp b/Common/ArmEmitter.cpp index 88fc99529f..d67347a1b2 100644 --- a/Common/ArmEmitter.cpp +++ b/Common/ArmEmitter.cpp @@ -114,7 +114,7 @@ void ARMXEmitter::ORI2R(ARMReg rd, ARMReg rs, u32 val, ARMReg scratch) ORR(rd, rs, op2); } else { MOVI2R(scratch, val); - AND(rd, rs, scratch); + ORR(rd, rs, scratch); } } diff --git a/Core/MIPS/ARM/ArmCompALU.cpp b/Core/MIPS/ARM/ArmCompALU.cpp index 1a2dba5e62..be06014050 100644 --- a/Core/MIPS/ARM/ArmCompALU.cpp +++ b/Core/MIPS/ARM/ArmCompALU.cpp @@ -351,6 +351,7 @@ namespace MIPSComp case 0x4: //ins { + DISABLE; u32 sourcemask = mask >> pos; u32 destmask = ~(sourcemask << pos); if (gpr.IsImm(rs)) @@ -374,7 +375,7 @@ namespace MIPSComp } else { gpr.MapDirtyIn(rt, rs, false); ANDI2R(R0, gpr.R(rs), sourcemask, R1); - MOV(R0, Operand2(pos, ST_LSL, gpr.R(rs))); + MOV(R0, Operand2(pos, ST_LSL, R0)); ANDI2R(gpr.R(rt), gpr.R(rt), destmask, R1); ORR(gpr.R(rt), gpr.R(rt), R0); }