diff options
author | Gleb Natapov <gleb@redhat.com> | 2010-03-18 09:20:04 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-05-17 05:15:56 -0400 |
commit | 93a152be5af3d651ff0ab5459f5e0f9662b22438 (patch) | |
tree | fa172d2923a452f3b53f8be021a83a76a9ca5a16 /arch | |
parent | 52a4661737ecc918633f6b05c611a4af4b5eae5a (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.h | 2 | ||||
-rw-r--r-- | arch/x86/kvm/emulate.c | 4 | ||||
-rw-r--r-- | arch/x86/kvm/x86.c | 7 |
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, | |||
583 | void kvm_report_emulation_failure(struct kvm_vcpu *cvpu, const char *context); | 583 | void kvm_report_emulation_failure(struct kvm_vcpu *cvpu, const char *context); |
584 | void realmode_lgdt(struct kvm_vcpu *vcpu, u16 size, unsigned long address); | 584 | void realmode_lgdt(struct kvm_vcpu *vcpu, u16 size, unsigned long address); |
585 | void realmode_lidt(struct kvm_vcpu *vcpu, u16 size, unsigned long address); | 585 | void realmode_lidt(struct kvm_vcpu *vcpu, u16 size, unsigned long address); |
586 | void realmode_lmsw(struct kvm_vcpu *vcpu, unsigned long msw, | ||
587 | unsigned long *rflags); | ||
588 | 586 | ||
589 | void kvm_enable_efer_bits(u64); | 587 | void kvm_enable_efer_bits(u64); |
590 | int kvm_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *data); | 588 | int 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 | ||
4101 | void 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 | |||
4108 | static int move_to_next_stateful_cpuid_entry(struct kvm_vcpu *vcpu, int i) | 4101 | static 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]; |