summaryrefslogtreecommitdiff
path: root/drivers/kvm/x86_emulate.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-27 14:27:56 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-27 14:27:56 -0800
commit2ea0718884c520f85c869c3bfef57477316ea91f (patch)
tree560be7967d411d2ce19162c6402f51983d860ee7 /drivers/kvm/x86_emulate.c
parent9c8ff4f4dac189e4111238d54c2b12e7837f4818 (diff)
parent404fb881b82cf0cf6981832f8d31a7484e4dee81 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm: KVM: SVM: Fix FPU leak while emulating clts KVM: SVM: Unload guest fpu on vcpu_put() KVM: x86 emulator: Use emulator_write_emulated and not emulator_write_std KVM: x86 emulator: fix the saving of of the eip value KVM: x86 emulator: fix JMP_REL
Diffstat (limited to 'drivers/kvm/x86_emulate.c')
-rw-r--r--drivers/kvm/x86_emulate.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index 33b181451557..bd46de6bf891 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -448,8 +448,7 @@ struct operand {
#define JMP_REL(rel) \
do { \
- _eip += (int)(rel); \
- _eip = ((op_bytes == 2) ? (uint16_t)_eip : (uint32_t)_eip); \
+ register_address_increment(_eip, rel); \
} while (0)
/*
@@ -1147,7 +1146,7 @@ done_prefixes:
}
register_address_increment(_regs[VCPU_REGS_RSP],
-dst.bytes);
- if ((rc = ops->write_std(
+ if ((rc = ops->write_emulated(
register_address(ctxt->ss_base,
_regs[VCPU_REGS_RSP]),
&dst.val, dst.bytes, ctxt->vcpu)) != 0)
@@ -1359,6 +1358,7 @@ special_insn:
}
src.val = (unsigned long) _eip;
JMP_REL(rel);
+ op_bytes = ad_bytes;
goto push;
}
case 0xe9: /* jmp rel */