mirror of
https://github.com/izzy2lost/PSX2.git
synced 2026-07-05 15:18:36 -07:00
Android project - Added armLdrsh function
This commit is contained in:
@@ -548,6 +548,12 @@ a64::Register armLdrsh(const void* addr)
|
||||
return EEX;
|
||||
}
|
||||
|
||||
a64::Register armLdrsh(const a64::MemOperand offset)
|
||||
{
|
||||
armAsm->Ldrsh(EEX, offset);
|
||||
return EEX;
|
||||
}
|
||||
|
||||
a64::Register armLoadPtr(const a64::MemOperand offset)
|
||||
{
|
||||
armAsm->Ldr(EEX, offset);
|
||||
|
||||
@@ -179,6 +179,7 @@ a64::Register armLoadPtr(const void* addr);
|
||||
a64::Register armLoadPtr64(const void* addr);
|
||||
a64::Register armLdrh(const void* addr);
|
||||
a64::Register armLdrsh(const void* addr);
|
||||
a64::Register armLdrsh(const a64::MemOperand offset);
|
||||
a64::Register armLoadPtr(const a64::MemOperand offset);
|
||||
void armLoadPtr(const a64::CPURegister& reg, const void* addr, int64_t offset);
|
||||
a64::Register armLoadPtr(a64::Register regRs, int64_t offset);
|
||||
|
||||
@@ -304,8 +304,7 @@ static void DynGen_HandlerTest(const GenDirectFn& gen_direct, int mode, int bits
|
||||
armBind(&to_handler);
|
||||
|
||||
// xFastCall(GetIndirectDispatcherPtr(mode, szidx, sign));
|
||||
armAsm->Mov(RXVIXLSCRATCH, reinterpret_cast<uintptr_t>(GetIndirectDispatcherPtr(mode, szidx, sign)));
|
||||
armAsm->Blr(RXVIXLSCRATCH);
|
||||
armEmitCall(GetIndirectDispatcherPtr(mode, szidx, sign));
|
||||
|
||||
// done.SetTarget();
|
||||
armBind(&done);
|
||||
|
||||
@@ -575,7 +575,7 @@ void condBranch(mV, microFlagCycles& mFC, a64::Condition JMPcc)
|
||||
}
|
||||
mVUDTendProgram(mVU, &mFC, 2);
|
||||
// xCMP(ptr16[&mVU.branch], 0);
|
||||
armAsm->Cmp(armLdrsh(&mVU.branch), 0);
|
||||
armAsm->Cmp(armLdrsh(PTR_MVU(microVU[mVU.index].branch)), a64::wzr);
|
||||
// xForwardJump32 tJMP(xInvertCond((JccComparisonType)JMPcc));
|
||||
a64::Label tJMP;
|
||||
armAsm->B(&tJMP, a64::InvertCondition(JMPcc));
|
||||
@@ -627,7 +627,7 @@ void condBranch(mV, microFlagCycles& mFC, a64::Condition JMPcc)
|
||||
}
|
||||
mVUDTendProgram(mVU, &mFC, 2);
|
||||
// xCMP(ptr16[&mVU.branch], 0);
|
||||
armAsm->Cmp(armLdrsh(&mVU.branch), 0);
|
||||
armAsm->Cmp(armLdrsh(PTR_MVU(microVU[mVU.index].branch)), a64::wzr);
|
||||
// xForwardJump32 dJMP(xInvertCond((JccComparisonType)JMPcc));
|
||||
a64::Label dJMP;
|
||||
armAsm->B(&dJMP, a64::InvertCondition(JMPcc));
|
||||
@@ -660,7 +660,7 @@ void condBranch(mV, microFlagCycles& mFC, a64::Condition JMPcc)
|
||||
|
||||
mVUendProgram(mVU, &mFC, 3);
|
||||
// xCMP(ptr16[&mVU.branch], 0);
|
||||
armAsm->Cmp(armLdrsh(&mVU.branch), 0);
|
||||
armAsm->Cmp(armLdrsh(PTR_MVU(microVU[mVU.index].branch)), a64::wzr);
|
||||
// xForwardJump32 dJMP((JccComparisonType)JMPcc);
|
||||
a64::Label dJMP;
|
||||
armAsm->B(&dJMP, JMPcc);
|
||||
@@ -694,7 +694,7 @@ void condBranch(mV, microFlagCycles& mFC, a64::Condition JMPcc)
|
||||
|
||||
mVUendProgram(mVU, &mFC, 2);
|
||||
// xCMP(ptr16[&mVU.branch], 0);
|
||||
armAsm->Cmp(armLdrsh(&mVU.branch), 0);
|
||||
armAsm->Cmp(armLdrsh(PTR_MVU(microVU[mVU.index].branch)), a64::wzr);
|
||||
|
||||
incPC(3);
|
||||
// xForwardJump32 eJMP(((JccComparisonType)JMPcc));
|
||||
@@ -727,7 +727,7 @@ void condBranch(mV, microFlagCycles& mFC, a64::Condition JMPcc)
|
||||
else // Normal Conditional Branch
|
||||
{
|
||||
// xCMP(ptr16[&mVU.branch], 0);
|
||||
armAsm->Cmp(armLdrsh(&mVU.branch), 0);
|
||||
armAsm->Cmp(armLdrsh(PTR_MVU(microVU[mVU.index].branch)), a64::wzr);
|
||||
|
||||
incPC(3);
|
||||
microBlock* bBlock;
|
||||
|
||||
Reference in New Issue
Block a user