diff --git a/rpcs3/Emu/Cell/PPUDisAsm.h b/rpcs3/Emu/Cell/PPUDisAsm.h index be33460752..8682e3564d 100644 --- a/rpcs3/Emu/Cell/PPUDisAsm.h +++ b/rpcs3/Emu/Cell/PPUDisAsm.h @@ -1784,7 +1784,10 @@ private: { DisAsm_R2_RC("extsw", ra, rs, rc); } - /*0x3d6*///ICBI + void ICBI(u32 ra, u32 rb) + { + DisAsm_R2("icbi", ra, rb); + } void DCBZ(u32 ra, u32 rs) { DisAsm_R2("dcbz", ra, rs); diff --git a/rpcs3/Emu/Cell/PPUInstrTable.h b/rpcs3/Emu/Cell/PPUInstrTable.h index 27463ce2ab..8962eb7376 100644 --- a/rpcs3/Emu/Cell/PPUInstrTable.h +++ b/rpcs3/Emu/Cell/PPUInstrTable.h @@ -571,7 +571,7 @@ namespace PPU_instr /*0x3ba*/bind_instr(g1f_list, EXTSB, RA, RS, RC); /*0x3d7*/bind_instr(g1f_list, STFIWX, FRS, RA, RB); /*0x3da*/bind_instr(g1f_list, EXTSW, RA, RS, RC); - /*0x3d6*///ICBI + /*0x3d6*/bind_instr(g1f_list, ICBI, RA, RB); /*0x3f6*/bind_instr(g1f_list, DCBZ, RA, RB); bind_instr(g3a_list, LD, RD, RA, DS); diff --git a/rpcs3/Emu/Cell/PPUInterpreter.h b/rpcs3/Emu/Cell/PPUInterpreter.h index 8dd160d0b3..421f7603a4 100644 --- a/rpcs3/Emu/Cell/PPUInterpreter.h +++ b/rpcs3/Emu/Cell/PPUInterpreter.h @@ -3291,7 +3291,10 @@ private: //CPU.XER.CA = ((s64)CPU.GPR[ra] < 0); // ??? if(rc) CPU.UpdateCR0(CPU.GPR[ra]); } - /*0x3d6*///ICBI + void ICBI(u32 ra, u32 rs) + { + // Clear jit for the specified block? Nothing to do in the interpreter. + } void DCBZ(u32 ra, u32 rs) { //UNK("dcbz", false); diff --git a/rpcs3/Emu/Cell/PPUOpcodes.h b/rpcs3/Emu/Cell/PPUOpcodes.h index af5fd6623b..ec96bac715 100644 --- a/rpcs3/Emu/Cell/PPUOpcodes.h +++ b/rpcs3/Emu/Cell/PPUOpcodes.h @@ -782,7 +782,7 @@ public: virtual void EXTSB(u32 ra, u32 rs, bool rc) = 0; virtual void STFIWX(u32 frs, u32 ra, u32 rb) = 0; virtual void EXTSW(u32 ra, u32 rs, bool rc) = 0; - //ICBI + virtual void ICBI(u32 ra, u32 rb) = 0; virtual void DCBZ(u32 ra, u32 rb) = 0; virtual void LWZ(u32 rd, u32 ra, s32 d) = 0; virtual void LWZU(u32 rd, u32 ra, s32 d) = 0;