From 0f3e8ddced79447f54066a96082fce4c15812106 Mon Sep 17 00:00:00 2001 From: Maarten ter Huurne Date: Wed, 27 Aug 2008 01:04:54 +0000 Subject: [PATCH] On platforms where the OpenGL library uses the CDECL calling convention, the stack should be increased after making a call. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@334 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/x64Emitter.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Source/Core/Common/Src/x64Emitter.cpp b/Source/Core/Common/Src/x64Emitter.cpp index dff1847e9c..3c8cecc346 100644 --- a/Source/Core/Common/Src/x64Emitter.cpp +++ b/Source/Core/Common/Src/x64Emitter.cpp @@ -1337,7 +1337,11 @@ void CallCdeclFunction3(void* fnptr, u32 arg0, u32 arg1, u32 arg2) PUSH(32, Imm32(arg1)); PUSH(32, Imm32(arg0)); CALL(fnptr); +#ifdef _WIN32 // don't inc stack +#else + ADD(32, R(ESP), Imm8(3 * 4)); +#endif #endif } @@ -1366,7 +1370,11 @@ void CallCdeclFunction4(void* fnptr, u32 arg0, u32 arg1, u32 arg2, u32 arg3) PUSH(32, Imm32(arg1)); PUSH(32, Imm32(arg0)); CALL(fnptr); +#ifdef _WIN32 // don't inc stack +#else + ADD(32, R(ESP), Imm8(4 * 4)); +#endif #endif } @@ -1398,7 +1406,11 @@ void CallCdeclFunction5(void* fnptr, u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 PUSH(32, Imm32(arg1)); PUSH(32, Imm32(arg0)); CALL(fnptr); +#ifdef _WIN32 // don't inc stack +#else + ADD(32, R(ESP), Imm8(5 * 4)); +#endif #endif } @@ -1433,7 +1445,11 @@ void CallCdeclFunction6(void* fnptr, u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 PUSH(32, Imm32(arg1)); PUSH(32, Imm32(arg0)); CALL(fnptr); +#ifdef _WIN32 // don't inc stack +#else + ADD(32, R(ESP), Imm8(6 * 4)); +#endif #endif }