aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorGleb Natapov <gleb@redhat.com>2010-03-18 09:20:04 -0400
committerAvi Kivity <avi@redhat.com>2010-05-17 05:15:56 -0400
commit93a152be5af3d651ff0ab5459f5e0f9662b22438 (patch)
treefa172d2923a452f3b53f8be021a83a76a9ca5a16 /arch
parent52a4661737ecc918633f6b05c611a4af4b5eae5a (diff)
KVM: remove realmode_lmsw function.
Use (get|set)_cr callback to emulate lmsw inside emulator. Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/include/asm/kvm_host.h2
-rw-r--r--arch/x86/kvm/emulate.c4
-rw-r--r--arch/x86/kvm/x86.c7
3 files changed, 2 insertions, 11 deletions
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 9d474c7ae261..b99cec1547c6 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -583,8 +583,6 @@ int emulate_instruction(struct kvm_vcpu *vcpu,
583void kvm_report_emulation_failure(struct kvm_vcpu *cvpu, const char *context); 583void kvm_report_emulation_failure(struct kvm_vcpu *cvpu, const char *context);
584void realmode_lgdt(struct kvm_vcpu *vcpu, u16 size, unsigned long address); 584void realmode_lgdt(struct kvm_vcpu *vcpu, u16 size, unsigned long address);
585void realmode_lidt(struct kvm_vcpu *vcpu, u16 size, unsigned long address); 585void realmode_lidt(struct kvm_vcpu *vcpu, u16 size, unsigned long address);
586void realmode_lmsw(struct kvm_vcpu *vcpu, unsigned long msw,
587 unsigned long *rflags);
588 586
589void kvm_enable_efer_bits(u64); 587void kvm_enable_efer_bits(u64);
590int kvm_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *data); 588int kvm_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *data);
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 5b060e4be0e3..5e2fa61e8104 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2486,8 +2486,8 @@ twobyte_insn:
2486 c->dst.val = ops->get_cr(0, ctxt->vcpu); 2486 c->dst.val = ops->get_cr(0, ctxt->vcpu);
2487 break; 2487 break;
2488 case 6: /* lmsw */ 2488 case 6: /* lmsw */
2489 realmode_lmsw(ctxt->vcpu, (u16)c->src.val, 2489 ops->set_cr(0, (ops->get_cr(0, ctxt->vcpu) & ~0x0ful) |
2490 &ctxt->eflags); 2490 (c->src.val & 0x0f), ctxt->vcpu);
2491 c->dst.type = OP_NONE; 2491 c->dst.type = OP_NONE;
2492 break; 2492 break;
2493 case 7: /* invlpg*/ 2493 case 7: /* invlpg*/
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 94a29759ab2c..c382e9721099 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -4098,13 +4098,6 @@ void realmode_lidt(struct kvm_vcpu *vcpu, u16 limit, unsigned long base)
4098 kvm_x86_ops->set_idt(vcpu, &dt); 4098 kvm_x86_ops->set_idt(vcpu, &dt);
4099} 4099}
4100 4100
4101void realmode_lmsw(struct kvm_vcpu *vcpu, unsigned long msw,
4102 unsigned long *rflags)
4103{
4104 kvm_lmsw(vcpu, msw);
4105 *rflags = kvm_get_rflags(vcpu);
4106}
4107
4108static int move_to_next_stateful_cpuid_entry(struct kvm_vcpu *vcpu, int i) 4101static int move_to_next_stateful_cpuid_entry(struct kvm_vcpu *vcpu, int i)
4109{ 4102{
4110 struct kvm_cpuid_entry2 *e = &vcpu->arch.cpuid_entries[i]; 4103 struct kvm_cpuid_entry2 *e = &vcpu->arch.cpuid_entries[i];