Revision 59795a1f target-i386/helper.c
b/target-i386/helper.c | ||
---|---|---|
337 | 337 |
} else if (!strcmp(featurestr, "model")) { |
338 | 338 |
char *err; |
339 | 339 |
model = strtol(val, &err, 10); |
340 |
if (!*val || *err || model < 0 || model > 0xf) { |
|
340 |
if (!*val || *err || model < 0 || model > 0xff) {
|
|
341 | 341 |
fprintf(stderr, "bad numerical value %s\n", val); |
342 | 342 |
goto error; |
343 | 343 |
} |
... | ... | |
416 | 416 |
env->cpuid_vendor3 = CPUID_VENDOR_INTEL_3; |
417 | 417 |
} |
418 | 418 |
env->cpuid_level = def->level; |
419 |
env->cpuid_version = (def->family << 8) | (def->model << 4) | def->stepping; |
|
419 |
if (def->family > 0x0f) |
|
420 |
env->cpuid_version = 0xf00 | ((def->family - 0x0f) << 20); |
|
421 |
else |
|
422 |
env->cpuid_version = def->family << 8; |
|
423 |
env->cpuid_version |= ((def->model & 0xf) << 4) | ((def->model >> 4) << 16); |
|
424 |
env->cpuid_version |= def->stepping; |
|
420 | 425 |
env->cpuid_features = def->features; |
421 | 426 |
env->pat = 0x0007040600070406ULL; |
422 | 427 |
env->cpuid_ext_features = def->ext_features; |
Also available in: Unified diff