From: Keir Fraser Date: Sat, 24 May 2008 07:54:59 +0000 (+0100) Subject: x86_emulate: Check single-step status at instruction start rather than end. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14207^2~46 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d0f28d825eafe00591d7b80b8de26e4fd783d924;p=xen.git x86_emulate: Check single-step status at instruction start rather than end. This fixes booting of FreeDOS with HIMEM.SYS enabled. Signed-off-by: Trolle Selander Signed-off-by: Keir Fraser --- diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c index bd318974c0..4c45ec0bce 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -2105,12 +2105,14 @@ x86_emulate( break; } + /* Inject #DB if single-step tracing was enabled at instruction start. */ + if ( (ctxt->regs->eflags & EFLG_TF) && (rc == X86EMUL_OKAY) && + (ops->inject_hw_exception != NULL) ) + rc = ops->inject_hw_exception(EXC_DB, -1, ctxt) ? : X86EMUL_EXCEPTION; + /* Commit shadow register state. */ _regs.eflags &= ~EFLG_RF; *ctxt->regs = _regs; - if ( (_regs.eflags & EFLG_TF) && (rc == X86EMUL_OKAY) && - (ops->inject_hw_exception != NULL) ) - rc = ops->inject_hw_exception(EXC_DB, -1, ctxt) ? : X86EMUL_EXCEPTION; done: return rc;