mirror of
https://github.com/shadps4-emu/ext-cryptopp.git
synced 2025-02-21 13:53:43 +00:00
Use x86 highest basic before calling a leaf function
This was a latent bug that just surfaced on a Sun Core2 workstation. RDSEED caused an illegal instruction exception on the Core2. It seems we managed to miss it because old processors had family and stepping values so low they never set CPUID.EBX.RDSEED[bit 18] = 1. Newer processors had the feature so CPUID.EBX.RDSEED[bit 18] = 1 was accurate.
This commit is contained in:
parent
591d70f1c7
commit
788cd1794d
4
cpu.cpp
4
cpu.cpp
@ -240,7 +240,7 @@ void DetectX86Features()
|
||||
g_cacheLineSize = 8 * GETBYTE(cpuid1[1], 1);
|
||||
g_hasRDRAND = !!(cpuid1[2] /*ECX*/ & RDRAND_FLAG);
|
||||
|
||||
if (cpuid1[0] /*EAX*/ >= 7)
|
||||
if (cpuid0[0] /*EAX*/ >= 7)
|
||||
{
|
||||
if (CpuId(7, 0, cpuid2))
|
||||
{
|
||||
@ -261,7 +261,7 @@ void DetectX86Features()
|
||||
g_cacheLineSize = GETBYTE(cpuid2[2], 0);
|
||||
g_hasRDRAND = !!(cpuid1[2] /*ECX*/ & RDRAND_FLAG);
|
||||
|
||||
if (cpuid1[0] /*EAX*/ >= 7)
|
||||
if (cpuid0[0] /*EAX*/ >= 7)
|
||||
{
|
||||
if (CpuId(7, 0, cpuid2))
|
||||
{
|
||||
|
@ -7,7 +7,7 @@
|
||||
// appropriate instructions sets in some build configurations.
|
||||
|
||||
// TODO: we still need to implement Power8 SHA. Once we have Power8 SHA,
|
||||
// we should be able to use CRYPTOPP_POWER8_AES_AVAILABLE and
|
||||
// we should be able to use CRYPTOPP_POWER8_AES_AVAILABLE and
|
||||
// CRYPTOPP_POWER8_SHA_AVAILABLE instead of the broader
|
||||
// CRYPTOPP_POWER8_AVAILABLE. The change will need to be coordinated
|
||||
// with the defines in config.h.
|
||||
|
Loading…
x
Reference in New Issue
Block a user