beautypg.com

Intel IA-32 User Manual

Page 538

background image

14-12 Vol. 3A

MACHINE-CHECK ARCHITECTURE

Example 14-19. Machine-Check Initialization Pseudocode

Check CPUID Feature Flags for MCE and MCA support
IF CPU supports MCE
THEN

IF CPU supports MCA
THEN

IF (IA32_MCG_CAP.MCG_CTL_P = 1)
(* IA32_MCG_CTL register is present *)
THEN

IA32_MCG_CTL

FFFFFFFFFFFFFFFFH;

(* enables all MCA features *)

FI

(* Determine number of error-reporting banks supported *)
COUNT

IA32_MCG_CAP.Count;

MAX_BANK_NUMBER

COUNT - 1;

IF (Processor Family is 6H)
THEN

(* Enable logging of all errors except for MC0_CTL register *)
FOR error-reporting banks (1 through MAX_BANK_NUMBER)
DO

IA32_MCi_CTL

0FFFFFFFFFFFFFFFFH;

OD

(* Clear all errors *)
FOR error-reporting banks (0 through MAX_BANK_NUMBER)
DO

IA32_MCi_STATUS

0;

OD

ELSE IF (Processor Family is 0FH) (*any Processor Extended Family *)
THEN

(* Enable logging of all errors including MC0_CTL register *)
FOR error-reporting banks (0 through MAX_BANK_NUMBER)
DO

IA32_MCi_CTL

0FFFFFFFFFFFFFFFFH;

OD

(* BIOS clears all errors only on power-on reset *)
IF (BIOS detects Power-on reset)
THEN

FOR error-reporting banks (0 through MAX_BANK_NUMBER)
DO

IA32_MCi_STATUS

0;

OD

ELSE