Fix bug in BIOS skip hack (which I always forget to test since I never use it personally ;)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2340 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2009-12-14 12:37:27 +00:00
parent c17455c702
commit fa95c0f191
4 changed files with 10 additions and 15 deletions

View File

@ -385,13 +385,13 @@ static void intExecute()
try { try {
while( true ) while( true )
execI(); execI();
} catch( Exception::ForceDispatcherReg& ) { } } catch( Exception::ExitCpuExecute& ) { }
} }
static void intCheckExecutionState() static void intCheckExecutionState()
{ {
if( GetCoreThread().HasPendingStateChangeRequest() ) if( GetCoreThread().HasPendingStateChangeRequest() )
throw Exception::ForceDispatcherReg(); throw Exception::ExitCpuExecute();
} }
static void intStep() static void intStep()

View File

@ -344,7 +344,8 @@
<Unit filename="../gui/ConsoleLogger.cpp" /> <Unit filename="../gui/ConsoleLogger.cpp" />
<Unit filename="../gui/ConsoleLogger.h" /> <Unit filename="../gui/ConsoleLogger.h" />
<Unit filename="../gui/Dialogs/AboutBoxDialog.cpp" /> <Unit filename="../gui/Dialogs/AboutBoxDialog.cpp" />
<Unit filename="../gui/Dialogs/ConfigurationDialog.cpp" /> <Unit filename="../gui/Dialogs/AssertionDialog.cpp" />
<Unit filename="../gui/Dialogs/ConfigurationDialog.cpp" />
<Unit filename="../gui/Dialogs/ConfigurationDialog.h" /> <Unit filename="../gui/Dialogs/ConfigurationDialog.h" />
<Unit filename="../gui/Dialogs/ConfirmationDialogs.cpp" /> <Unit filename="../gui/Dialogs/ConfirmationDialogs.cpp" />
<Unit filename="../gui/Dialogs/FirstTimeWizard.cpp" /> <Unit filename="../gui/Dialogs/FirstTimeWizard.cpp" />

View File

@ -32,16 +32,10 @@ namespace Exception
// Implementation Note: this exception has no meaningful type information and we don't // Implementation Note: this exception has no meaningful type information and we don't
// care to have it be caught by any BaseException handlers lying about, so let's not // care to have it be caught by any BaseException handlers lying about, so let's not
// derive from BaseException :D // derive from BaseException :D
class ForceDispatcherReg class ExitCpuExecute
{ {
public: public:
explicit ForceDispatcherReg() { } explicit ExitCpuExecute() { }
};
class ExitRecExecute
{
public:
explicit ExitRecExecute() { }
}; };
} }
#ifndef __LINUX__ #ifndef __LINUX__

View File

@ -264,7 +264,7 @@ u32* recGetImm64(u32 hi, u32 lo)
if (recConstBufPtr >= recConstBuf + RECCONSTBUF_SIZE) if (recConstBufPtr >= recConstBuf + RECCONSTBUF_SIZE)
{ {
Console.WriteLn( "EErec const buffer filled; Resetting..." ); Console.WriteLn( "EErec const buffer filled; Resetting..." );
throw Exception::ForceDispatcherReg(); throw Exception::ExitCpuExecute();
/*for (u32 *p = recConstBuf; p < recConstBuf + RECCONSTBUF_SIZE; p += 2) /*for (u32 *p = recConstBuf; p < recConstBuf + RECCONSTBUF_SIZE; p += 2)
{ {
@ -675,7 +675,7 @@ static void recCheckExecutionState()
if( GetCoreThread().HasPendingStateChangeRequest() ) if( GetCoreThread().HasPendingStateChangeRequest() )
{ {
#if PCSX2_SEH #if PCSX2_SEH
throw Exception::ForceDispatcherReg(); throw Exception::ExitCpuExecute();
#else #else
// Without SEH we'll need to hop to a safehouse point outside the scope of recompiled // Without SEH we'll need to hop to a safehouse point outside the scope of recompiled
// code. C++ exceptions can't cross the mighty chasm in the stackframe that the recompiler // code. C++ exceptions can't cross the mighty chasm in the stackframe that the recompiler
@ -699,7 +699,7 @@ static void recExecute()
try { try {
EnterRecompiledCode(); EnterRecompiledCode();
} }
catch( Exception::ForceDispatcherReg& ) { } catch( Exception::ExitCpuExecute& ) { }
#else #else
@ -837,7 +837,7 @@ void recClear(u32 addr, u32 size)
static void recExitExecution() static void recExitExecution()
{ {
#if PCSX2_SEH #if PCSX2_SEH
throw Exception::ExitRecExecute(); throw Exception::ExitCpuExecute();
#else #else
longjmp( m_SetJmp_StateCheck, 1 ); longjmp( m_SetJmp_StateCheck, 1 );
#endif #endif