Hack! Make Resets work in Linux by not throwing an exception that is supposed to be thrown, because gcc seems unable to catch it for some bizarre reason.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2004 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
arcum42 2009-10-13 12:49:05 +00:00
parent 52d34a0616
commit 3d43e53928
4 changed files with 8 additions and 18 deletions

View File

@ -336,8 +336,6 @@ static __forceinline void VSyncStart(u32 sCycle)
if ((CSRw & 0x8))
{
if (!(GSIMR&0x800))
{
gsIrq();
@ -412,8 +410,6 @@ __forceinline void rcntUpdate_hScanline()
else { //HBLANK END / HRENDER Begin
if (CSRw & 0x4)
{
if (!(GSIMR&0x400))
{
gsIrq();
@ -448,7 +444,13 @@ __forceinline void rcntUpdate_vSync()
{
eeRecIsReset = false;
cpuSetBranch();
// Hack! GCC is unwilling to let us throw exceptions here.
// (Ones in Exception::*, anyways.) Work around it by skipping
// it.
#ifdef _MSC_VER
throw Exception::ForceDispatcherReg();
#endif
}
VSyncEnd(vsyncCounter.sCycle);

View File

@ -96,7 +96,6 @@
<Add option="-fno-dse" />
<Add option="-fno-tree-dse" />
<Add option="-pipe -msse -msse2" />
<Add option="-fvisibility=default" />
<Add option="-DWX_PRECOMP" />
<Add directory="$(SvnRootDir)/common/include/" />
<Add directory="$(SvnRootDir)/3rdparty/" />

View File

@ -266,7 +266,7 @@ void SysSuspendableThread::StateCheck( bool isCancelable )
// --------------------------------------------------------------------------------------
// EECoreThread *External Thread* Implementations
// (Called form outside the context of this thread)
// (Called from outside the context of this thread)
// --------------------------------------------------------------------------------------
SysCoreThread::SysCoreThread() :

View File

@ -562,17 +562,6 @@ static void __naked DispatcherEvent()
}
#endif
static void DispatcherRegC()
{
#ifdef _MSC_VER
__asm jmp DispatcherReg;
#else
__asm__ __volatile__(
"jmp DispatcherReg\n"
);
#endif
}
static void recExecute()
{
// Implementation Notes:
@ -611,7 +600,7 @@ static void recExecute()
}
#else // _MSC_VER
DispatcherRegC();
DispatcherReg();
#endif
}
catch( Exception::ForceDispatcherReg& )