HalpCmciInitProcessor
VOID __fastcall HalpCmciInitProcessor(INT64 a1, INT64 a2){
CHAR CpuInfo;
unsigned __int8 CurrentIrql;
CHAR v6;
INT64 McaPcrContext;
UINT8 v8;
v8 = 0;
CpuInfo = HalpGetCpuInfo(0i64, 0i64, 0i64, &v8);
v8 &= -(CpuInfo != 0);
if( v8 == 1 && !HalpIsCmciImplementedAMD() )
HalpMcaPollForCmc = 1;
CurrentIrql = KeGetCurrentIrql();
__writecr8(0xFui64);
v6 = 1;
if( HalpCmciRevertToPolledMode )
goto LABEL_19;
if( *(_BYTE *)(a1 + 48) != 5 )
{
HalpMcaPollForCmc = 1;
LABEL_19:
v6 = 0;
}
HalpCmciSetProcessorConfig(a1, v6, a2);
McaPcrContext = HalpGetMcaPcrContext(a2);
if( McaPcrContext && v6 )
{
*(_DWORD *)(McaPcrContext + 112) = 0;
*(_BYTE *)(McaPcrContext + 120) = 0;
}
__writecr8(CurrentIrql);
if( v6 && HalpMcaWheaReady )
{
if( KeGetCurrentIrql() > 2u )
{
if( McaPcrContext && *(_QWORD *)(McaPcrContext + 16) )
{
if( *(_QWORD *)(McaPcrContext + 24) )
KeInsertQueueDpc((PRKDPC)(McaPcrContext + 40), 0i64, 0i64);
}
}
else
{
HalpCmciPollProcessor(a2);
}
}
}Referenced by:
HalpCmciInit
HalpInitializeCmc
HalpMcaResumeProcessorConfig