HalpErrataApplyPerProcessor
CHAR __stdcall HalpErrataApplyPerProcessor(){
unsigned __int64 v0;
UINT8 v2;
UINT8 v3;
CHAR v4;
UINT8 v5;
v4 = 0;
v2 = 0;
v5 = 0;
v3 = 0;
LOBYTE(v0) = -HalpGetCpuInfo(&v4, &v5, &v2, &v3);
if( (v3 & (unsigned __int8)-((_BYTE)v0 != 0)) == 1 )
{
if( v4 == 15 )
{
v0 = __readmsr(0xC001001F) & 0xFFFFFFFEFFEFFFFFui64 | 0x100000000i64;
__writemsr(0xC001001F, v0);
}
if( v4 == 18 )
{
v0 = __readmsr(0xC0011029) | 0x80000000;
__writemsr(0xC0011029, v0);
}
if( v4 == 23 && v2 == 1 && v5 == 1 )
{
v0 = __readmsr(0xC0011023) | 0x100;
__writemsr(0xC0011023, v0);
}
if( !*(_BYTE *)HalpHvCpuManager && v4 == 23 && v2 <= 0x2Fu )
{
v0 = __readmsr(0xC001102C) | 0x8000000000000i64;
__writemsr(0xC001102C, v0);
}
}
return v0;
}Referenced by:
HalpErrataInitSystem
HalpPostSleepMP