diff mbox

[RFC,v3,0/4] Real mode interrupt injection

Message ID AANLkTimZZXm7ErJb7cv-BP8+2pzeq7dtFAJhpyXHLatb@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Mohammed Gamal Aug. 16, 2010, 3:43 p.m. UTC
None
diff mbox

Patch

diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 32498e3..4002c87 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -1219,14 +1219,23 @@  int emulate_int_real(struct x86_emulate_ctxt *ctxt,
       /* TODO: Add limit checks */
       c->src.val = ctxt->eflags;
       emulate_push(ctxt, ops);
+       rc = writeback(ctxt, ops);
+       if (rc != X86EMUL_CONTINUE)
+               return rc;

       ctxt->eflags &= ~(EFLG_IF | EFLG_TF | EFLG_AC);

       c->src.val = ops->get_segment_selector(VCPU_SREG_CS, ctxt->vcpu);
       emulate_push(ctxt, ops);
+       rc = writeback(ctxt, ops);
+       if (rc != X86EMUL_CONTINUE)
+               return rc;

       c->src.val = c->eip;
       emulate_push(ctxt, ops);
+       rc = writeback(ctxt, ops);
+       if (rc != X86EMUL_CONTINUE)
+               return rc;