X86: Sometimes CPUID depends on ecx, so pass that in.

This commit is contained in:
Gabe Black 2010-05-02 00:40:17 -07:00
parent d75ad847b3
commit 7524fdda6a
3 changed files with 6 additions and 3 deletions

View file

@ -79,7 +79,8 @@ namespace X86ISA {
} }
bool bool
doCpuid(ThreadContext * tc, uint32_t function, CpuidResult &result) doCpuid(ThreadContext * tc, uint32_t function,
uint32_t index, CpuidResult &result)
{ {
uint16_t family = bits(function, 31, 16); uint16_t family = bits(function, 31, 16);
uint16_t funcNum = bits(function, 15, 0); uint16_t funcNum = bits(function, 15, 0);

View file

@ -55,7 +55,8 @@ namespace X86ISA
{} {}
}; };
bool doCpuid(ThreadContext * tc, uint32_t function, CpuidResult &result); bool doCpuid(ThreadContext * tc, uint32_t function,
uint32_t index, CpuidResult &result);
} // namespace X86ISA } // namespace X86ISA
#endif #endif

View file

@ -767,7 +767,8 @@
0x1: pop_fs(); 0x1: pop_fs();
0x2: CPUIDInst::CPUID({{ 0x2: CPUIDInst::CPUID({{
CpuidResult result; CpuidResult result;
success = doCpuid(xc->tcBase(), bits(Rax, 31, 0), result); success = doCpuid(xc->tcBase(), bits(Rax, 31, 0),
bits(Rcx, 31, 0), result);
Rax = result.rax; Rax = result.rax;
Rbx = result.rbx; Rbx = result.rbx;
Rcx = result.rcx; Rcx = result.rcx;