Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[ARM] lmw implementation.
  • Loading branch information
Sonicadvance1 committed Sep 3, 2013
1 parent 30cd436 commit 39ad48d
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
1 change: 1 addition & 0 deletions Source/Core/Core/Src/PowerPC/JitArm32/Jit.h
Expand Up @@ -179,6 +179,7 @@ class JitArm : public JitBase, public ArmGen::ARMXCodeBlock
// LoadStore
void stX(UGeckoInstruction _inst);
void lXX(UGeckoInstruction _inst);
void lmw(UGeckoInstruction _inst);

void icbi(UGeckoInstruction _inst);
void dcbst(UGeckoInstruction _inst);
Expand Down
24 changes: 24 additions & 0 deletions Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp
Expand Up @@ -436,6 +436,30 @@ void JitArm::LoadToReg(ARMReg dest, ARMReg addr, int accessSize, s32 offset)
gpr.Unlock(rA);
}

// Some games use this heavily in video codecs
// We make the assumption that this pulls from main RAM at /all/ times
void JitArm::lmw(UGeckoInstruction inst)
{
u32 a = inst.RA;
ARMReg rA = gpr.GetReg();
ARMReg rB = gpr.GetReg();
MOVI2R(rA, inst.SIMM_16);
if (a)
ADD(rA, rA, gpr.R(a));
MOVI2R(rB, Memory::MEMVIEW32_MASK, false); // 1-2
AND(rA, rA, rB); // 3
MOVI2R(rB, (u32)Memory::base, false); // 4-5
ADD(rA, rA, rB); // 6

for (int i = inst.RD; i < 32; i++)
{
ARMReg RX = gpr.R(i);
LDR(RX, rA, (i - inst.RD) * 4);
REV(RX, RX);
}
gpr.Unlock(rA, rB);
}

void JitArm::dcbst(UGeckoInstruction inst)
{
INSTRUCTION_START
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Tables.cpp
Expand Up @@ -94,7 +94,7 @@ static GekkoOPTemplate primarytable[] =
{38, &JitArm::stX}, //"stb", OPTYPE_STORE, FL_IN_A | FL_IN_S}},
{39, &JitArm::stX}, //"stbu", OPTYPE_STORE, FL_OUT_A | FL_IN_A | FL_IN_S}},

{46, &JitArm::Default}, //"lmw", OPTYPE_SYSTEM, FL_EVIL, 10}},
{46, &JitArm::lmw}, //"lmw", OPTYPE_SYSTEM, FL_EVIL, 10}},
{47, &JitArm::Default}, //"stmw", OPTYPE_SYSTEM, FL_EVIL, 10}},

{48, &JitArm::lfs}, //"lfs", OPTYPE_LOADFP, FL_IN_A}},
Expand Down

0 comments on commit 39ad48d

Please sign in to comment.