diff options
author | Guillaume Thouvenin <guillaume.thouvenin@ext.bull.net> | 2008-10-28 05:51:30 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2008-12-31 09:51:48 -0500 |
commit | e93f36bcfaa9e899c595e1c446c784a69021854a (patch) | |
tree | 25a506f2427ee4cd8f7197a7748fc90efd0bf7b8 /arch/x86/kvm/x86_emulate.c | |
parent | c0d09828c870f90c6bc72070ada281568f89c63b (diff) |
KVM: allow emulator to adjust rip for emulated pio instructions
If we call the emulator we shouldn't call skip_emulated_instruction()
in the first place, since the emulator already computes the next rip
for us. Thus we move ->skip_emulated_instruction() out of
kvm_emulate_pio() and into handle_io() (and the svm equivalent). We
also replaced "return 0" by "break" in the "do_io:" case because now
the shadow register state needs to be committed. Otherwise eip will never
be updated.
Signed-off-by: Guillaume Thouvenin <guillaume.thouvenin@ext.bull.net>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/x86_emulate.c')
-rw-r--r-- | arch/x86/kvm/x86_emulate.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kvm/x86_emulate.c b/arch/x86/kvm/x86_emulate.c index 57d7cc45be44..8f60ace13874 100644 --- a/arch/x86/kvm/x86_emulate.c +++ b/arch/x86/kvm/x86_emulate.c | |||
@@ -1772,7 +1772,7 @@ special_insn: | |||
1772 | c->eip = saved_eip; | 1772 | c->eip = saved_eip; |
1773 | goto cannot_emulate; | 1773 | goto cannot_emulate; |
1774 | } | 1774 | } |
1775 | return 0; | 1775 | break; |
1776 | case 0xf4: /* hlt */ | 1776 | case 0xf4: /* hlt */ |
1777 | ctxt->vcpu->arch.halt_request = 1; | 1777 | ctxt->vcpu->arch.halt_request = 1; |
1778 | break; | 1778 | break; |