mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
[ARM] MicroOps in the branching instructions.
This commit is contained in:
parent
5158aea4dc
commit
1b1b5d2100
@ -85,7 +85,6 @@ void JitArm::rfi(UGeckoInstruction inst)
|
|||||||
LDR(rD, R9, PPCSTATE_OFF(msr));
|
LDR(rD, R9, PPCSTATE_OFF(msr));
|
||||||
|
|
||||||
AND(rD, rD, rB); // rD = Masked MSR
|
AND(rD, rD, rB); // rD = Masked MSR
|
||||||
STR(rD, R9, PPCSTATE_OFF(msr));
|
|
||||||
|
|
||||||
LDR(rB, R9, PPCSTATE_OFF(spr[SPR_SRR1])); // rB contains SRR1 here
|
LDR(rB, R9, PPCSTATE_OFF(spr[SPR_SRR1])); // rB contains SRR1 here
|
||||||
|
|
||||||
@ -230,7 +229,6 @@ void JitArm::bcctrx(UGeckoInstruction inst)
|
|||||||
|
|
||||||
//NPC = CTR & 0xfffffffc;
|
//NPC = CTR & 0xfffffffc;
|
||||||
ARMReg rA = gpr.GetReg();
|
ARMReg rA = gpr.GetReg();
|
||||||
ARMReg rB = gpr.GetReg();
|
|
||||||
|
|
||||||
if(inst.LK_3)
|
if(inst.LK_3)
|
||||||
{
|
{
|
||||||
@ -239,10 +237,8 @@ void JitArm::bcctrx(UGeckoInstruction inst)
|
|||||||
STR(rA, R9, PPCSTATE_OFF(spr[SPR_LR]));
|
STR(rA, R9, PPCSTATE_OFF(spr[SPR_LR]));
|
||||||
// ARMABI_MOVI2M((u32)&LR, js.compilerPC + 4);
|
// ARMABI_MOVI2M((u32)&LR, js.compilerPC + 4);
|
||||||
}
|
}
|
||||||
MVN(rB, 0x3); // 0xFFFFFFFC
|
|
||||||
LDR(rA, R9, PPCSTATE_OFF(spr[SPR_CTR]));
|
LDR(rA, R9, PPCSTATE_OFF(spr[SPR_CTR]));
|
||||||
AND(rA, rA, rB);
|
BIC(rA, rA, 0x3);
|
||||||
gpr.Unlock(rB);
|
|
||||||
WriteExitDestInR(rA);
|
WriteExitDestInR(rA);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -264,8 +260,7 @@ void JitArm::bcctrx(UGeckoInstruction inst)
|
|||||||
FixupBranch b = B_CC(branch);
|
FixupBranch b = B_CC(branch);
|
||||||
|
|
||||||
LDR(rA, R9, PPCSTATE_OFF(spr[SPR_CTR]));
|
LDR(rA, R9, PPCSTATE_OFF(spr[SPR_CTR]));
|
||||||
MVN(rB, 0x3); // 0xFFFFFFFC
|
BIC(rA, rA, 0x3);
|
||||||
AND(rA, rA, rB);
|
|
||||||
|
|
||||||
if (inst.LK_3){
|
if (inst.LK_3){
|
||||||
u32 Jumpto = js.compilerPC + 4;
|
u32 Jumpto = js.compilerPC + 4;
|
||||||
@ -336,9 +331,8 @@ void JitArm::bclrx(UGeckoInstruction inst)
|
|||||||
|
|
||||||
//MOV(32, R(EAX), M(&LR));
|
//MOV(32, R(EAX), M(&LR));
|
||||||
//AND(32, R(EAX), Imm32(0xFFFFFFFC));
|
//AND(32, R(EAX), Imm32(0xFFFFFFFC));
|
||||||
MVN(rB, 0x3); // 0xFFFFFFFC
|
|
||||||
LDR(rA, R9, PPCSTATE_OFF(spr[SPR_LR]));
|
LDR(rA, R9, PPCSTATE_OFF(spr[SPR_LR]));
|
||||||
AND(rA, rA, rB);
|
BIC(rA, rA, 0x3);
|
||||||
if (inst.LK){
|
if (inst.LK){
|
||||||
u32 Jumpto = js.compilerPC + 4;
|
u32 Jumpto = js.compilerPC + 4;
|
||||||
MOVI2R(rB, Jumpto);
|
MOVI2R(rB, Jumpto);
|
||||||
|
Loading…
Reference in New Issue
Block a user