qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] Correct the max cpuid level for each x86 cpu model


From: Dan Kenigsberg
Subject: [Qemu-devel] [PATCH] Correct the max cpuid level for each x86 cpu model
Date: Sun, 23 Dec 2007 12:34:44 +0200
User-agent: Mutt/1.5.17 (2007-11-01)

Hi,
    
This little patch corrects the max cpuid level that is exposed to the
guest for each of the x86 cpu models. It allows cpuid levels other than 2.

Dan.

diff --git a/target-i386/helper2.c b/target-i386/helper2.c
index b9b3093..dee53d6 100644
--- a/target-i386/helper2.c
+++ b/target-i386/helper2.c
@@ -119,6 +119,7 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
 
 typedef struct x86_def_t {
     const char *name;
+    uint32_t level;
     uint32_t vendor1, vendor2, vendor3;
     char model_id[48];
     int family;
@@ -136,6 +137,7 @@ static x86_def_t x86_defs[] = {
 #ifdef TARGET_X86_64
     {
         .name = "qemu64",
+        .level = 2,
         .vendor1 = 0x68747541, /* "Auth" */
         .vendor2 = 0x69746e65, /* "enti" */
         .vendor3 = 0x444d4163, /* "cAMD" */
@@ -156,6 +158,7 @@ static x86_def_t x86_defs[] = {
 #endif
     {
         .name = "qemu32",
+        .level = 2,
         .family = 6,
         .model = 3,
         .stepping = 3,
@@ -165,6 +168,7 @@ static x86_def_t x86_defs[] = {
     },
     {
         .name = "486",
+        .level = 0,
         .family = 4,
         .model = 0,
         .stepping = 0,
@@ -173,6 +177,7 @@ static x86_def_t x86_defs[] = {
     },
     {
         .name = "pentium",
+        .level = 1,
         .family = 5,
         .model = 4,
         .stepping = 3,
@@ -181,6 +186,7 @@ static x86_def_t x86_defs[] = {
     },
     {
         .name = "pentium2",
+        .level = 2,
         .family = 6,
         .model = 5,
         .stepping = 2,
@@ -189,6 +195,7 @@ static x86_def_t x86_defs[] = {
     },
     {
         .name = "pentium3",
+        .level = 2,
         .family = 6,
         .model = 7,
         .stepping = 3,
@@ -321,7 +328,7 @@ static int cpu_x86_register (CPUX86State *env, const char 
*cpu_model)
         env->cpuid_vendor2 = 0x49656e69; /* "ineI" */
         env->cpuid_vendor3 = 0x6c65746e; /* "ntel" */
     }
-    env->cpuid_level = 2;
+    env->cpuid_level = def->level;
     env->cpuid_version = (def->family << 8) | (def->model << 4) | 
def->stepping;
     env->cpuid_features = def->features;
     env->pat = 0x0007040600070406ULL;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]