From 2a0d360125d17d4307f1f8fb9361a9378b6fd1d0 Mon Sep 17 00:00:00 2001 From: "Jake.Stine" Date: Tue, 1 Jun 2010 13:34:55 +0000 Subject: [PATCH] Minor fix to memzero function in gcc/linux (mentioned in Issue 577); may help fix some errant SIGSEGV's with certain optimizations enabled. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3141 96395faa-99c1-11dd-bbfe-3dabce05a288 --- common/include/Utilities/lnx_memzero.h | 8 ++++---- pcsx2/windows/WinSysExec.cpp | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/common/include/Utilities/lnx_memzero.h b/common/include/Utilities/lnx_memzero.h index b64ec47243..11c3e78093 100644 --- a/common/include/Utilities/lnx_memzero.h +++ b/common/include/Utilities/lnx_memzero.h @@ -112,7 +112,7 @@ static __forceinline void memset_8( void *dest ) "stosd\n" "stosd\n" ".att_syntax\n" - : + : "=D"(dest) // Input specifiers: D - edi, a -- eax, c ecx : [dest]"D"(dest), [data32]"a"(data32) : "memory" @@ -131,7 +131,7 @@ static __forceinline void memset_8( void *dest ) "stosd\n" "stosd\n" ".att_syntax\n" - : + : "=D"(dest) : [dest]"D"(dest), [data32]"a"(data32) : "memory" @@ -151,7 +151,7 @@ static __forceinline void memset_8( void *dest ) "stosd\n" "stosd\n" ".att_syntax\n" - : + : "=D"(dest) : [dest]"D"(dest), [data32]"a"(data32) : "memory" @@ -168,7 +168,7 @@ static __forceinline void memset_8( void *dest ) // "mov eax, %\[data32]n" "rep stosd\n" ".att_syntax\n" - : + : "=D"(dest) : [remdat]"c"(remdat), [dest]"D"(dest), [data32]"a"(data32) : "memory" ); diff --git a/pcsx2/windows/WinSysExec.cpp b/pcsx2/windows/WinSysExec.cpp index 6a11a70c62..ef1e761a3f 100644 --- a/pcsx2/windows/WinSysExec.cpp +++ b/pcsx2/windows/WinSysExec.cpp @@ -20,6 +20,8 @@ #include "Common.h" #include "System/PageFaultSource.h" +#if PCSX2_SEH + int SysPageFaultExceptionFilter( EXCEPTION_POINTERS* eps ) { if( eps->ExceptionRecord->ExceptionCode != EXCEPTION_ACCESS_VIOLATION ) @@ -29,6 +31,8 @@ int SysPageFaultExceptionFilter( EXCEPTION_POINTERS* eps ) return Source_PageFault.WasHandled() ? EXCEPTION_CONTINUE_EXECUTION : EXCEPTION_CONTINUE_SEARCH; } +#endif + void InstallSignalHandler() { // NOP on Win32 systems -- we use __try{} __except{} instead.