Commit 3e98dc8ec6af89c7f4f1e006b979eb405b431629

Authored by balrog
1 parent e6198a70

Correct the max cpuid level for each x86 cpu model (Dan Kenigsberg).


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3847 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 8 additions and 1 deletions
target-i386/helper2.c
@@ -119,6 +119,7 @@ CPUX86State *cpu_x86_init(const char *cpu_model) @@ -119,6 +119,7 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
119 119
120 typedef struct x86_def_t { 120 typedef struct x86_def_t {
121 const char *name; 121 const char *name;
  122 + uint32_t level;
122 uint32_t vendor1, vendor2, vendor3; 123 uint32_t vendor1, vendor2, vendor3;
123 int family; 124 int family;
124 int model; 125 int model;
@@ -135,6 +136,7 @@ static x86_def_t x86_defs[] = { @@ -135,6 +136,7 @@ static x86_def_t x86_defs[] = {
135 #ifdef TARGET_X86_64 136 #ifdef TARGET_X86_64
136 { 137 {
137 .name = "qemu64", 138 .name = "qemu64",
  139 + .level = 2,
138 .vendor1 = 0x68747541, /* "Auth" */ 140 .vendor1 = 0x68747541, /* "Auth" */
139 .vendor2 = 0x69746e65, /* "enti" */ 141 .vendor2 = 0x69746e65, /* "enti" */
140 .vendor3 = 0x444d4163, /* "cAMD" */ 142 .vendor3 = 0x444d4163, /* "cAMD" */
@@ -155,6 +157,7 @@ static x86_def_t x86_defs[] = { @@ -155,6 +157,7 @@ static x86_def_t x86_defs[] = {
155 #endif 157 #endif
156 { 158 {
157 .name = "qemu32", 159 .name = "qemu32",
  160 + .level = 2,
158 .family = 6, 161 .family = 6,
159 .model = 3, 162 .model = 3,
160 .stepping = 3, 163 .stepping = 3,
@@ -164,6 +167,7 @@ static x86_def_t x86_defs[] = { @@ -164,6 +167,7 @@ static x86_def_t x86_defs[] = {
164 }, 167 },
165 { 168 {
166 .name = "486", 169 .name = "486",
  170 + .level = 0,
167 .family = 4, 171 .family = 4,
168 .model = 0, 172 .model = 0,
169 .stepping = 0, 173 .stepping = 0,
@@ -172,6 +176,7 @@ static x86_def_t x86_defs[] = { @@ -172,6 +176,7 @@ static x86_def_t x86_defs[] = {
172 }, 176 },
173 { 177 {
174 .name = "pentium", 178 .name = "pentium",
  179 + .level = 1,
175 .family = 5, 180 .family = 5,
176 .model = 4, 181 .model = 4,
177 .stepping = 3, 182 .stepping = 3,
@@ -180,6 +185,7 @@ static x86_def_t x86_defs[] = { @@ -180,6 +185,7 @@ static x86_def_t x86_defs[] = {
180 }, 185 },
181 { 186 {
182 .name = "pentium2", 187 .name = "pentium2",
  188 + .level = 2,
183 .family = 6, 189 .family = 6,
184 .model = 5, 190 .model = 5,
185 .stepping = 2, 191 .stepping = 2,
@@ -188,6 +194,7 @@ static x86_def_t x86_defs[] = { @@ -188,6 +194,7 @@ static x86_def_t x86_defs[] = {
188 }, 194 },
189 { 195 {
190 .name = "pentium3", 196 .name = "pentium3",
  197 + .level = 2,
191 .family = 6, 198 .family = 6,
192 .model = 7, 199 .model = 7,
193 .stepping = 3, 200 .stepping = 3,
@@ -306,7 +313,7 @@ static int cpu_x86_register (CPUX86State *env, const char *cpu_model) @@ -306,7 +313,7 @@ static int cpu_x86_register (CPUX86State *env, const char *cpu_model)
306 env->cpuid_vendor2 = 0x49656e69; /* "ineI" */ 313 env->cpuid_vendor2 = 0x49656e69; /* "ineI" */
307 env->cpuid_vendor3 = 0x6c65746e; /* "ntel" */ 314 env->cpuid_vendor3 = 0x6c65746e; /* "ntel" */
308 } 315 }
309 - env->cpuid_level = 2; 316 + env->cpuid_level = def->level;
310 env->cpuid_version = (def->family << 8) | (def->model << 4) | def->stepping; 317 env->cpuid_version = (def->family << 8) | (def->model << 4) | def->stepping;
311 env->cpuid_features = def->features; 318 env->cpuid_features = def->features;
312 env->pat = 0x0007040600070406ULL; 319 env->pat = 0x0007040600070406ULL;