Fix the DCBZ instruction.

Needs to zero memory.
This commit is contained in:
Unknown W. Brackets 2014-05-23 09:57:13 -07:00
parent a186efded2
commit f49d3d6a28
2 changed files with 7 additions and 5 deletions

View File

@ -1788,9 +1788,9 @@ private:
{
DisAsm_R2("icbi", ra, rb);
}
void DCBZ(u32 ra, u32 rs)
void DCBZ(u32 ra, u32 rb)
{
DisAsm_R2("dcbz", ra, rs);
DisAsm_R2("dcbz", ra, rb);
}
void LWZ(u32 rd, u32 ra, s32 d)
{

View File

@ -3291,16 +3291,18 @@ private:
void EXTSW(u32 ra, u32 rs, bool rc)
{
CPU.GPR[ra] = (s64)(s32)CPU.GPR[rs];
//CPU.XER.CA = ((s64)CPU.GPR[ra] < 0); // ???
if(rc) CPU.UpdateCR0<s32>(CPU.GPR[ra]);
}
void ICBI(u32 ra, u32 rs)
{
// Clear jit for the specified block? Nothing to do in the interpreter.
}
void DCBZ(u32 ra, u32 rs)
void DCBZ(u32 ra, u32 rb)
{
//UNK("dcbz", false);
const u64 addr = ra ? CPU.GPR[ra] + CPU.GPR[rb] : CPU.GPR[rb];
u8 *const cache_line = Memory.GetMemFromAddr(addr & ~127);
if (cache_line)
memset(cache_line, 0, 128);
_mm_mfence();
}
void LWZ(u32 rd, u32 ra, s32 d)