Skip to content
Permalink
Browse files
Merge pull request #8914 from JosJuice/jit64-low-dcbz
Jit64: Implement low DCBZ hack
  • Loading branch information
Tilka committed Aug 8, 2020
2 parents 8b236fc + 76228fa commit a161e58
Showing 1 changed file with 13 additions and 3 deletions.
@@ -290,7 +290,6 @@ void Jit64::dcbz(UGeckoInstruction inst)
{
INSTRUCTION_START
JITDISABLE(bJITLoadStoreOff);
FALLBACK_IF(SConfig::GetInstance().bLowDCBZHack);

int a = inst.RA;
int b = inst.RB;
@@ -304,6 +303,14 @@ void Jit64::dcbz(UGeckoInstruction inst)
AND(32, R(RSCRATCH), Imm32(~31));
}

FixupBranch end_dcbz_hack;
if (SConfig::GetInstance().bLowDCBZHack)
{
// HACK: Don't clear any memory in the [0x8000'0000, 0x8000'8000) region.
CMP(32, R(RSCRATCH), Imm32(0x8000'8000));
end_dcbz_hack = J_CC(CC_L);
}

bool emit_fast_path = MSR.DR && m_jit.jo.fastmem_arena;

if (emit_fast_path)
@@ -333,10 +340,13 @@ void Jit64::dcbz(UGeckoInstruction inst)

if (emit_fast_path)
{
FixupBranch end = J(true);
FixupBranch end_far_code = J(true);
SwitchToNearCode();
SetJumpTarget(end);
SetJumpTarget(end_far_code);
}

if (SConfig::GetInstance().bLowDCBZHack)
SetJumpTarget(end_dcbz_hack);
}

void Jit64::stX(UGeckoInstruction inst)

0 comments on commit a161e58

Please sign in to comment.