All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86 emulator: Update EIP even with instructions with no writeback
@ 2008-07-05 19:14 Mohammed Gamal
  2008-07-06  7:51 ` Avi Kivity
  0 siblings, 1 reply; 5+ messages in thread
From: Mohammed Gamal @ 2008-07-05 19:14 UTC (permalink / raw)
  To: kvm; +Cc: avi, riel

This patch resolves the problem encountered with HLT emulation with FreeDOS's HIMEM XMS Driver. 

HLT is the only instruction that goes to the done label unconditionally, 
causing the EIP value not to be updated which leads to the guest looping
forever on the same instruction.

Signed-off-by: Mohammed Gamal <m.gamal005@gmail.com>

---

 arch/x86/kvm/x86_emulate.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kvm/x86_emulate.c b/arch/x86/kvm/x86_emulate.c
index dd4efe1..04d7f02 100644
--- a/arch/x86/kvm/x86_emulate.c
+++ b/arch/x86/kvm/x86_emulate.c
@@ -1769,13 +1769,15 @@ writeback:
 
 	/* Commit shadow register state. */
 	memcpy(ctxt->vcpu->arch.regs, c->regs, sizeof c->regs);
-	kvm_rip_write(ctxt->vcpu, c->eip);
 
 done:
 	if (rc == X86EMUL_UNHANDLEABLE) {
 		c->eip = saved_eip;
 		return -1;
 	}
+	else
+		kvm_rip_write(ctxt->vcpu, c->eip);
+
 	return 0;
 
 twobyte_insn:

 


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-07-06 13:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-05 19:14 [PATCH] x86 emulator: Update EIP even with instructions with no writeback Mohammed Gamal
2008-07-06  7:51 ` Avi Kivity
2008-07-06 13:26   ` Mohammed Gamal
2008-07-06 13:34     ` Avi Kivity
2008-07-06 13:45       ` Mohammed Gamal

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.