From 18f7967fee1cef0b96f0c9930234d39b75e3e23f Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Wed, 15 Sep 2004 08:57:40 +0000 Subject: [PATCH] Fix a popf issue Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1976 --- src/cpu/core_dyn_x86/decoder.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cpu/core_dyn_x86/decoder.h b/src/cpu/core_dyn_x86/decoder.h index 1e7570d5..7027c650 100644 --- a/src/cpu/core_dyn_x86/decoder.h +++ b/src/cpu/core_dyn_x86/decoder.h @@ -318,6 +318,7 @@ static void dyn_check_bool_exception(DynReg * check) { gen_fill_branch(branch); } + static void dyn_dop_ebgb(DualOps op) { dyn_get_modrm();DynReg * rm_reg=&DynRegs[decode.modrm.reg&3]; if (decode.modrm.mod<3) { @@ -1247,6 +1248,7 @@ restart_prefix: break; case 0x9d: //POPF gen_releasereg(DREG(ESP)); + gen_releasereg(DREG(FLAGS)); gen_call_function((void *)&CPU_POPF,"%Rd%Id",DREG(TMPB),decode.big_op); if (cpu.pmode) dyn_check_bool_exception(DREG(TMPB)); dyn_flags_host_to_gen(); @@ -1319,7 +1321,7 @@ restart_prefix: case 0xca:dyn_ret_far(decode_fetchw());goto finish_block; case 0xcb:dyn_ret_far(0);goto finish_block; /* Interrupt */ - case 0xcd:dyn_interrupt(decode_fetchb());goto finish_block; +// case 0xcd:dyn_interrupt(decode_fetchb());goto finish_block; /* IRET */ case 0xcf:dyn_iret();goto finish_block;