diff --git a/pcsx2/COP0.cpp b/pcsx2/COP0.cpp index 2fce7afa6b..356bb2ece3 100644 --- a/pcsx2/COP0.cpp +++ b/pcsx2/COP0.cpp @@ -121,10 +121,9 @@ __fi void COP0_UpdatePCCR() { //if( cpuRegs.CP0.n.Status.b.ERL || !cpuRegs.PERF.n.pccr.b.CTE ) return; - // TODO : Implement memory mode checks here (kernel/super/user) - // For now we just assume kernel mode. + // Implemented memory mode check (kernel/super/user) - if( cpuRegs.PERF.n.pccr.val & 0xf ) + if( cpuRegs.PERF.n.pccr.val & ((1 << (cpuRegs.CP0.n.Status.b.KSU + 2)) | (cpuRegs.CP0.n.Status.b.EXL << 1))) { // ---------------------------------- // Update Performance Counter 0 @@ -175,7 +174,7 @@ __fi void COP0_UpdatePCCR() } } - if( cpuRegs.PERF.n.pccr.b.U1 ) + if( cpuRegs.PERF.n.pccr.val & ((1 << (cpuRegs.CP0.n.Status.b.KSU + 12)) | (cpuRegs.CP0.n.Status.b.EXL << 11))) { // ---------------------------------- // Update Performance Counter 1