X86: Sometimes CPUID depends on ecx, so pass that in.
This commit is contained in:
parent
d75ad847b3
commit
7524fdda6a
3 changed files with 6 additions and 3 deletions
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue