Use ABI_CallFunction instead of CALL where appropriate. Hopefully, this

will help with the reported crash problems on OSX. I can't really test 
properly, though, since I'm on Linux; please give me feedback on 
whether this helps.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1664 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
magumagu9 2008-12-25 22:18:39 +00:00
parent be4c7e1399
commit ce01268885
2 changed files with 7 additions and 7 deletions

View File

@ -293,7 +293,7 @@ namespace CPUCompare
void Jit64::Cleanup() void Jit64::Cleanup()
{ {
if (jo.optimizeGatherPipe && js.fifoBytesThisBlock > 0) if (jo.optimizeGatherPipe && js.fifoBytesThisBlock > 0)
CALL((void *)&GPFifo::CheckGatherPipe); ABI_CallFunction((void *)&GPFifo::CheckGatherPipe);
} }
void Jit64::WriteExit(u32 destination, int exit_num) void Jit64::WriteExit(u32 destination, int exit_num)
@ -412,7 +412,7 @@ namespace CPUCompare
const u8 *normalEntry = GetCodePtr(); const u8 *normalEntry = GetCodePtr();
if (ImHereDebug) if (ImHereDebug)
CALL((void *)&ImHere); //Used to get a trace of the last few blocks before a crash, sometimes VERY useful ABI_CallFunction((void *)&ImHere); //Used to get a trace of the last few blocks before a crash, sometimes VERY useful
if (js.fpa.any) if (js.fpa.any)
{ {
@ -489,7 +489,7 @@ namespace CPUCompare
if (jo.optimizeGatherPipe && js.fifoBytesThisBlock >= 32) if (jo.optimizeGatherPipe && js.fifoBytesThisBlock >= 32)
{ {
js.fifoBytesThisBlock -= 32; js.fifoBytesThisBlock -= 32;
CALL(thunks.ProtectFunction((void *)&GPFifo::CheckGatherPipe, 0)); ABI_CallFunction(thunks.ProtectFunction((void *)&GPFifo::CheckGatherPipe, 0));
} }
// If starting from the breakpointed instruction, we don't break. // If starting from the breakpointed instruction, we don't break.

View File

@ -75,7 +75,7 @@ void AsmRoutineManager::Generate()
#endif #endif
const u8 *outerLoop = GetCodePtr(); const u8 *outerLoop = GetCodePtr();
CALL(reinterpret_cast<void *>(&CoreTiming::Advance)); ABI_CallFunction(reinterpret_cast<void *>(&CoreTiming::Advance));
FixupBranch skipToRealDispatch = J(); //skip the sync and compare first time FixupBranch skipToRealDispatch = J(); //skip the sync and compare first time
dispatcher = GetCodePtr(); dispatcher = GetCodePtr();
@ -134,7 +134,7 @@ void AsmRoutineManager::Generate()
MOV(32, R(EAX), M(&PC)); MOV(32, R(EAX), M(&PC));
MOV(32, M(&NPC), R(EAX)); MOV(32, M(&NPC), R(EAX));
OR(32, M(&PowerPC::ppcState.Exceptions), Imm32(EXCEPTION_FPU_UNAVAILABLE)); OR(32, M(&PowerPC::ppcState.Exceptions), Imm32(EXCEPTION_FPU_UNAVAILABLE));
CALL(reinterpret_cast<void *>(&PowerPC::CheckExceptions)); ABI_CallFunction(reinterpret_cast<void *>(&PowerPC::CheckExceptions));
MOV(32, R(EAX), M(&NPC)); MOV(32, R(EAX), M(&NPC));
MOV(32, M(&PC), R(EAX)); MOV(32, M(&PC), R(EAX));
JMP(dispatcher); JMP(dispatcher);
@ -142,14 +142,14 @@ void AsmRoutineManager::Generate()
SetJumpTarget(bail); SetJumpTarget(bail);
doTiming = GetCodePtr(); doTiming = GetCodePtr();
CALL(reinterpret_cast<void *>(&CoreTiming::Advance)); ABI_CallFunction(reinterpret_cast<void *>(&CoreTiming::Advance));
testExceptions = GetCodePtr(); testExceptions = GetCodePtr();
TEST(32, M(&PowerPC::ppcState.Exceptions), Imm32(0xFFFFFFFF)); TEST(32, M(&PowerPC::ppcState.Exceptions), Imm32(0xFFFFFFFF));
FixupBranch skipExceptions = J_CC(CC_Z); FixupBranch skipExceptions = J_CC(CC_Z);
MOV(32, R(EAX), M(&PC)); MOV(32, R(EAX), M(&PC));
MOV(32, M(&NPC), R(EAX)); MOV(32, M(&NPC), R(EAX));
CALL(reinterpret_cast<void *>(&PowerPC::CheckExceptions)); ABI_CallFunction(reinterpret_cast<void *>(&PowerPC::CheckExceptions));
MOV(32, R(EAX), M(&NPC)); MOV(32, R(EAX), M(&NPC));
MOV(32, M(&PC), R(EAX)); MOV(32, M(&PC), R(EAX));
SetJumpTarget(skipExceptions); SetJumpTarget(skipExceptions);