background image

15-12 Vol. 3B

MACHINE-CHECK ARCHITECTURE

When a machine-check error is detected on a Pentium 4 or Intel Xeon processor, the processor saves the state of 
the general-purpose registers, the R/EFLAGS register, and the R/EIP in these extended machine-check state MSRs. 
This information can be used by a debugger to analyze the error.
These registers are read/write to zero registers. This means software can read them; but if software writes to 
them, only all zeros is allowed. If software attempts to write a non-zero value into one of these registers, a general-
protection (#GP) exception is generated. These registers are cleared on a hardware reset (power-up or RESET), 
but maintain their contents following a soft reset (INIT reset).

15.3.3 

Mapping of the Pentium

 

Processor Machine-Check Errors

to the Machine-Check Architecture

The Pentium processor reports machine-check errors using two registers: P5_MC_TYPE and P5_MC_ADDR. The 
Pentium 4, Intel Xeon, Intel Atom, and P6 family processors map these registers to the IA32_MCi_STATUS and 
IA32_MCi_ADDR in the error-reporting register bank. This bank reports on the same type of external bus errors 
reported in P5_MC_TYPE and P5_MC_ADDR. 
The information in these registers can then be accessed in two ways:

By reading the IA32_MCi_STATUS and IA32_MCi_ADDR registers as part of a general machine-check exception 
handler written for Pentium 4, Intel Atom and P6 family processors.

By reading the P5_MC_TYPE and P5_MC_ADDR registers using the RDMSR instruction.

The second capability permits a machine-check exception handler written to run on a Pentium processor to be run 
on a Pentium 4, Intel Xeon, Intel Atom, or P6 family processor. There is a limitation in that information returned by 
the Pentium 4, Intel Xeon, Intel Atom, and P6 family processors is encoded differently than information returned 
by the Pentium processor. To run a Pentium processor machine-check exception handler on a Pentium 4, Intel 
Xeon, Intel Atom, or P6 family processor; the handler must be written to interpret P5_MC_TYPE encodings 
correctly.

IA32_MCG_RCX

182H

Contains state of the RCX register at the time of the machine-check error.

IA32_MCG_RDX

183H

Contains state of the RDX register at the time of the machine-check error.

IA32_MCG_RSI

184H

Contains state of the RSI register at the time of the machine-check error.

IA32_MCG_RDI

185H

Contains state of the RDI register at the time of the machine-check error.

IA32_MCG_RBP

186H

Contains state of the RBP register at the time of the machine-check error.

IA32_MCG_RSP

187H

Contains state of the RSP register at the time of the machine-check error.

IA32_MCG_RFLAGS

188H

Contains state of the RFLAGS register at the time of the machine-check error.

IA32_MCG_RIP

189H

Contains state of the RIP register at the time of the machine-check error.

IA32_MCG_MISC

18AH

When set, indicates that a page assist or page fault occurred during DS normal 

operation.

IA32_MCG_

RSERVED[1:5]

18BH-

18FH

These registers, if present, are reserved.

IA32_MCG_R8

190H

Contains state of the R8 register at the time of the machine-check error.

IA32_MCG_R9

191H

Contains state of the R9 register at the time of the machine-check error.

IA32_MCG_R10

192H

Contains state of the R10 register at the time of the machine-check error.

IA32_MCG_R11

193H

Contains state of the R11 register at the time of the machine-check error.

IA32_MCG_R12

194H

Contains state of the R12 register at the time of the machine-check error.

IA32_MCG_R13

195H

Contains state of the R13 register at the time of the machine-check error.

IA32_MCG_R14

196H

Contains state of the R14 register at the time of the machine-check error.

IA32_MCG_R15

197H

Contains state of the R15 register at the time of the machine-check error.

Table 15-5.  Extended Machine Check State MSRs 

In Processors With Support For Intel 64 Architecture (Contd.)

MSR

Address

Description