Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 215733
b: refs/heads/master
c: 5c56e1c
h: refs/heads/master
i:
  215731: c040ba0
v: v3
  • Loading branch information
Avi Kivity committed Oct 24, 2010
1 parent f610db5 commit cff490b
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a13a63faa6237001ed80d4f4051fc028dace10d9
refs/heads/master: 5c56e1cf7a758c4772e2470b4346a8219ec7f44e
13 changes: 12 additions & 1 deletion trunk/arch/x86/kvm/emulate.c
Original file line number Diff line number Diff line change
Expand Up @@ -1232,7 +1232,7 @@ int emulate_int_real(struct x86_emulate_ctxt *ctxt,
struct x86_emulate_ops *ops, int irq)
{
struct decode_cache *c = &ctxt->decode;
int rc = X86EMUL_CONTINUE;
int rc;
struct desc_ptr dt;
gva_t cs_addr;
gva_t eip_addr;
Expand All @@ -1242,14 +1242,25 @@ 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;

c->dst.type = OP_NONE;

ops->get_idt(&dt, ctxt->vcpu);

Expand Down

0 comments on commit cff490b

Please sign in to comment.