Also allow JitIL to update EXI exceptions much more frequently.

At this point, the mic branch is ready for testing by windows people at least. cmake/scons may work already, not sure.
This commit is contained in:
Shawn Hoffman 2011-10-09 03:41:31 -07:00
parent 41424d98e8
commit 3556069f9f
1 changed files with 5 additions and 8 deletions

View File

@ -210,14 +210,11 @@ void JitILAsmRoutineManager::Generate()
ABI_CallFunction(reinterpret_cast<void *>(&CoreTiming::Advance)); ABI_CallFunction(reinterpret_cast<void *>(&CoreTiming::Advance));
testExceptions = GetCodePtr(); testExceptions = GetCodePtr();
TEST(32, M((void *)&PowerPC::ppcState.Exceptions), Imm32(0xFFFFFFFF)); MOV(32, R(EAX), M(&PC));
FixupBranch skipExceptions = J_CC(CC_Z); MOV(32, M(&NPC), R(EAX));
MOV(32, R(EAX), M(&PC)); ABI_CallFunction(reinterpret_cast<void *>(&PowerPC::CheckExceptions));
MOV(32, M(&NPC), R(EAX)); MOV(32, R(EAX), M(&NPC));
ABI_CallFunction(reinterpret_cast<void *>(&PowerPC::CheckExceptions)); MOV(32, M(&PC), R(EAX));
MOV(32, R(EAX), M(&NPC));
MOV(32, M(&PC), R(EAX));
SetJumpTarget(skipExceptions);
TEST(32, M((void*)PowerPC::GetStatePtr()), Imm32(0xFFFFFFFF)); TEST(32, M((void*)PowerPC::GetStatePtr()), Imm32(0xFFFFFFFF));
J_CC(CC_Z, outerLoop, true); J_CC(CC_Z, outerLoop, true);