mirror of
https://github.com/libretro/pcsx2.git
synced 2024-12-21 09:18:18 +00:00
aligned_stack: fix attempt #1 for RecExit. Changed the jump to a call, which (I think!) should give GCC the stackframe setup it expects to see when trying to throw an exception.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/aligned_stack@2025 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
87cbaaf5ca
commit
9a1f3ae9f1
@ -58,6 +58,7 @@
|
||||
</Target>
|
||||
</Build>
|
||||
<Compiler>
|
||||
<Add option="-march=native" />
|
||||
<Add directory="../../include/Utilities" />
|
||||
<Add directory="../../include" />
|
||||
<Add directory="../../../3rdparty" />
|
||||
|
@ -88,8 +88,6 @@
|
||||
</Environment>
|
||||
</Build>
|
||||
<Compiler>
|
||||
<Add option="-march=pentium4" />
|
||||
<Add option="-march=i486" />
|
||||
<Add option="-Wno-format" />
|
||||
<Add option="-Wno-unused-parameter" />
|
||||
<Add option="-Wno-unused-value" />
|
||||
@ -420,7 +418,6 @@
|
||||
<Option compiler="gcc" use="0" buildCommand="gcc $options -S $includes -c $file -o $object" />
|
||||
</Unit>
|
||||
<Unit filename="../x86/ir5900tables.cpp" />
|
||||
<Unit filename="../x86/ix86-32/aR5900-32.S" />
|
||||
<Unit filename="../x86/ix86-32/iCore-32.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900-32.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900Arit.cpp" />
|
||||
|
@ -422,11 +422,11 @@ static DynGenFunc* _DynGen_EnterRecompiledCode()
|
||||
// esp into ebp, and then align esp. ebp references the original esp base
|
||||
// for the duration of our function, and is used to restore the original
|
||||
// esp before returning from the function
|
||||
|
||||
|
||||
// Optimization: We "allocate" 0x20 bytes of stack ahead of time here. The first
|
||||
// 16 bytes are used for saving esi, edi, and ebx. The second 16 bytes are used
|
||||
// for passing parameters to stdcall/cdecl functions.
|
||||
|
||||
|
||||
xPUSH( ebp );
|
||||
xMOV( ebp, esp );
|
||||
xAND( esp, -0x10 );
|
||||
@ -834,10 +834,15 @@ void CheckForBIOSEnd()
|
||||
xMOV( eax, &cpuRegs.pc );
|
||||
|
||||
xCMP( eax, 0x00200008 );
|
||||
xJE( ExitRec );
|
||||
xForwardJE8 CallExitRec;
|
||||
|
||||
xCMP( eax, 0x00100008 );
|
||||
xJE( ExitRec );
|
||||
xForwardJNE8 SkipExitRec;
|
||||
|
||||
CallExitRec.SetTarget();
|
||||
xCALL( ExitRec );
|
||||
|
||||
SkipExitRec.SetTarget();
|
||||
}
|
||||
|
||||
static int *s_pCode;
|
||||
@ -1262,7 +1267,7 @@ void __fastcall dyna_block_discard(u32 start,u32 sz)
|
||||
{
|
||||
DevCon.WriteLn("dyna_block_discard .. start=0x%08X size=%d", start, sz*4);
|
||||
recClear(start, sz);
|
||||
|
||||
|
||||
// Note: this function is accessed via a JMP, and thus the RET here will exit
|
||||
// recompiled code and take us back to recExecute.
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user