summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-04-19 03:11:24 -0700
committerGabe Black <gblack@eecs.umich.edu>2009-04-19 03:11:24 -0700
commiteba640c963cc9548fe842923d02c9bd7b38e12a1 (patch)
treeb7ec74b4487b3ecf9efb13856aa53b4b4d2e3a96 /src/arch
parent27e54982b40cda334f03d4f4c13a19df028b884b (diff)
downloadgem5-eba640c963cc9548fe842923d02c9bd7b38e12a1.tar.xz
X86: Only use %eax to select a function and look like we support sse2.
Diffstat (limited to 'src/arch')
-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;