From 771f1c8304253fcb95aef54da739f43712aea726 Mon Sep 17 00:00:00 2001 From: Jonathan Campbell Date: Sun, 20 May 2018 19:30:58 -0700 Subject: [PATCH] Suddenly MinGW GCC 7.3.0 does not allow the dynamic core to declare EBP clobbered. Fix dynamic core entry appropriately --- 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 dea5ae0ca..d2a847a4f 100644 --- a/src/cpu/core_dyn_x86/risc_x86.h +++ b/src/cpu/core_dyn_x86/risc_x86.h @@ -130,13 +130,15 @@ static BlockReturn gen_runcode(Bit8u * code) { #else register Bit32u tempflags=reg_flags & FMASK_TEST; __asm__ volatile ( + "pushl %%ebp \n" - "call 1f ; 1: addl $run_return_adress-.,(%%esp) \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","%ebp","cc","memory" + :"%edx","%ebx","%edi","%esi"/*,"%ebp"*/,"cc","memory" /* NTS: GCC 7.3.0 MinGW suddenly will not allow this code to declare EBP clobbered */ ); reg_flags=(reg_flags & ~FMASK_TEST) | (tempflags & FMASK_TEST); #endif