From 872f5726d0c3d323e5040dd877223737ccd5fca8 Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Tue, 23 Mar 2004 22:17:55 +0000 Subject: [PATCH] Save ebp during dynamic block execution Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1739 --- src/cpu/core_dyn_x86/risc_x86.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cpu/core_dyn_x86/risc_x86.h b/src/cpu/core_dyn_x86/risc_x86.h index 9611e0ea..c74be278 100644 --- a/src/cpu/core_dyn_x86/risc_x86.h +++ b/src/cpu/core_dyn_x86/risc_x86.h @@ -116,13 +116,15 @@ return_address: #else register Bit32u tempflags=reg_flags & FMASK_TEST; __asm__ volatile ( + "pushl %%ebp \n" "pushl $(run_return_adress) \n" "pushl %2 \n" "jmp *%3 \n" "run_return_adress: \n" + "popl %%ebp \n" :"=a" (retval), "=c" (tempflags) :"r" (tempflags),"r" (code) - :"%edx","%ebx","%edi","%esi","cc","memory" + :"%edx","%ebx","%edi","%esi","%ebp","cc","memory" ); reg_flags=(reg_flags & ~FMASK_TEST) | (tempflags & FMASK_TEST); #endif