From 9df31a9747deb29ca220230c2fae6c0c7e2e552b Mon Sep 17 00:00:00 2001 From: skidau Date: Mon, 18 Jan 2010 04:39:01 +0000 Subject: [PATCH] Implemented tlbie instruction git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4875 8ced0084-cf51-0410-be5f-012b33b47a6e --- .../PowerPC/Interpreter/Interpreter_LoadStore.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp index e09dfbf5f5..6b4d2b558a 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp @@ -665,10 +665,16 @@ void tlbia(UGeckoInstruction _inst) void tlbie(UGeckoInstruction _inst) { - // invalid entry - // int entry = _inst.RB; - - //MessageBox(0,"TLBIE","TLBIE",0); + // Invalidate TLB entry + u32 _Address = m_GPR[_inst.RB]; + for (int i = 0; i < 16; i++) + { + if ((_Address & ~0xfff) == (PowerPC::ppcState.tlb_va[(PowerPC::ppcState.tlb_last + i) & 15])) + { + PowerPC::ppcState.tlb_pa[(PowerPC::ppcState.tlb_last + i) & 15] = 0; + PowerPC::ppcState.tlb_va[(PowerPC::ppcState.tlb_last + i) & 15] = 0; + } + } } void tlbsync(UGeckoInstruction _inst)