summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/x86/cpuid.cc4
-rw-r--r--src/arch/x86/isa/decoder/two_byte_opcodes.isa2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/arch/x86/cpuid.cc b/src/arch/x86/cpuid.cc
index f06ba04d8..4ac7a5d19 100644
--- a/src/arch/x86/cpuid.cc
+++ b/src/arch/x86/cpuid.cc
@@ -89,7 +89,7 @@ namespace X86ISA {
case VendorAndLargestExtFunc:
assert(vendorStringSize >= 12);
result = CpuidResult(
- NumExtendedCpuidFuncs - 1,
+ 0x80000000 + NumExtendedCpuidFuncs - 1,
stringToRegister(vendorString),
stringToRegister(vendorString + 4),
stringToRegister(vendorString + 8));
@@ -149,7 +149,7 @@ namespace X86ISA {
break;
case FamilyModelStepping:
result = CpuidResult(0x00020f51, 0000000405,
- 0xe3d3fbff, 0x00000001);
+ 0xe7d3fbff, 0x00000001);
break;
default:
return false;
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
index 1ee62142a..0f6d59f3d 100644
--- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
@@ -813,7 +813,7 @@
0x1: pop_fs();
0x2: CPUIDInst::CPUID({{
CpuidResult result;
- success = doCpuid(xc->tcBase(), Rax, result);
+ success = doCpuid(xc->tcBase(), bits(Rax, 31, 0), result);
Rax = result.rax;
Rbx = result.rbx;
Rcx = result.rcx;