Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 103697
b: refs/heads/master
c: 54e445c
h: refs/heads/master
i:
  103695: a75e7f9
v: v3
  • Loading branch information
Joerg Roedel authored and Avi Kivity committed Jul 20, 2008
1 parent efa8439 commit 0cd4332
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 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: a069805579a390f0fa91694f6963bcc4b2cecc6b
refs/heads/master: 54e445ca8411ec892f986d9f8c11b8c1806ecde4
25 changes: 20 additions & 5 deletions trunk/arch/x86/kvm/x86.c
Original file line number Diff line number Diff line change
Expand Up @@ -2020,6 +2020,7 @@ int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address)

int emulate_clts(struct kvm_vcpu *vcpu)
{
KVMTRACE_0D(CLTS, vcpu, handler);
kvm_x86_ops->set_cr0(vcpu, vcpu->arch.cr0 & ~X86_CR0_TS);
return X86EMUL_CONTINUE;
}
Expand Down Expand Up @@ -2600,27 +2601,41 @@ void realmode_lmsw(struct kvm_vcpu *vcpu, unsigned long msw,

unsigned long realmode_get_cr(struct kvm_vcpu *vcpu, int cr)
{
unsigned long value;

kvm_x86_ops->decache_cr4_guest_bits(vcpu);
switch (cr) {
case 0:
return vcpu->arch.cr0;
value = vcpu->arch.cr0;
break;
case 2:
return vcpu->arch.cr2;
value = vcpu->arch.cr2;
break;
case 3:
return vcpu->arch.cr3;
value = vcpu->arch.cr3;
break;
case 4:
return vcpu->arch.cr4;
value = vcpu->arch.cr4;
break;
case 8:
return kvm_get_cr8(vcpu);
value = kvm_get_cr8(vcpu);
break;
default:
vcpu_printf(vcpu, "%s: unexpected cr %u\n", __func__, cr);
return 0;
}
KVMTRACE_3D(CR_READ, vcpu, (u32)cr, (u32)value,
(u32)((u64)value >> 32), handler);

return value;
}

void realmode_set_cr(struct kvm_vcpu *vcpu, int cr, unsigned long val,
unsigned long *rflags)
{
KVMTRACE_3D(CR_WRITE, vcpu, (u32)cr, (u32)val,
(u32)((u64)val >> 32), handler);

switch (cr) {
case 0:
kvm_set_cr0(vcpu, mk_cr_64(vcpu->arch.cr0, val));
Expand Down

0 comments on commit 0cd4332

Please sign in to comment.