summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2009-01-29 17:02:17 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2009-01-29 17:02:17 +0000
commitdd5e3b1771b7c528690f2c0714c8e88be07c9bc2 (patch)
tree33304f22667c8e87cdce88e90c357824ecc4e331 /target-i386/op_helper.c
parentDon't notify virtio devices before S_DRIVER_OK (Mark McLoughlin) (diff)
downloadqemu-kvm-dd5e3b1771b7c528690f2c0714c8e88be07c9bc2.tar.gz
qemu-kvm-dd5e3b1771b7c528690f2c0714c8e88be07c9bc2.tar.bz2
qemu-kvm-dd5e3b1771b7c528690f2c0714c8e88be07c9bc2.zip
MTRR support on x86, part 2 (Carl-Daniel Hailfinger)
Load and save MTRR state together with machine state. Add support for the MTRRcap MSR which is used by the latest Bochs BIOS and some operating systems. Fix a typo in ext2_feature_name. With this patch, MTRR emulation should be good enough to not trigger any sanity checks in well behaved BIOS/kernel code. Some corner cases for BIOS/firmware usage remain to be implemented, but that can be deferred to another patch. Also, MTRR accesses on hardware not supporting MTRRs should cause #GP. That can be enforced by another patch as well. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6472 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-i386/op_helper.c')
-rw-r--r--target-i386/op_helper.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/target-i386/op_helper.c b/target-i386/op_helper.c
index 8cf3bb2d8..0584bd493 100644
--- a/target-i386/op_helper.c
+++ b/target-i386/op_helper.c
@@ -3215,6 +3215,13 @@ void helper_rdmsr(void)
case MSR_MTRRdefType:
val = env->mtrr_deftype;
break;
+ case MSR_MTRRcap:
+ if (env->cpuid_features & CPUID_MTRR)
+ val = MSR_MTRRcap_VCNT | MSR_MTRRcap_FIXRANGE_SUPPORT | MSR_MTRRcap_WC_SUPPORTED;
+ else
+ /* XXX: exception ? */
+ val = 0;
+ break;
default:
/* XXX: exception ? */
val = 0;