KVM: SVM: Emulate read/write access to cr8
authorJoerg Roedel <jroedel@lemmy.amd.com>
Thu, 6 Dec 2007 14:46:52 +0000 (15:46 +0100)
committerAvi Kivity <avi@qumranet.com>
Wed, 30 Jan 2008 15:53:19 +0000 (17:53 +0200)
This patch adds code to emulate the access to the cr8 register to the x86
instruction emulator in kvm.  This is needed on svm, where there is no
hardware decode for control register access.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Markus Rechberger <markus.rechberger@amd.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
drivers/kvm/x86.c

index 6deb052b5f937887c68013554890f30a45419d1f..9db4e3242b626b5c8b429add2290f9c5c59472a3 100644 (file)
@@ -2236,6 +2236,8 @@ unsigned long realmode_get_cr(struct kvm_vcpu *vcpu, int cr)
                return vcpu->cr3;
        case 4:
                return vcpu->cr4;
+       case 8:
+               return get_cr8(vcpu);
        default:
                vcpu_printf(vcpu, "%s: unexpected cr %u\n", __FUNCTION__, cr);
                return 0;
@@ -2259,6 +2261,9 @@ void realmode_set_cr(struct kvm_vcpu *vcpu, int cr, unsigned long val,
        case 4:
                set_cr4(vcpu, mk_cr_64(vcpu->cr4, val));
                break;
+       case 8:
+               set_cr8(vcpu, val & 0xfUL);
+               break;
        default:
                vcpu_printf(vcpu, "%s: unexpected cr %u\n", __FUNCTION__, cr);
        }