
5-8
PowerPC Microprocessor Family: The Bus Interface for 32-Bit Microprocessors
5.3.2 Machine Check Exception (0x00200)
If no higher-priority exception is pending (namely, a hard reset), the processor initiates a
machine check exception when the appropriate condition is detected. Note that the causes
of machine check exceptions are implementation- and system-dependent, and are typically
signalled to the processor by the assertion of a specified signal on the processor interface.
When a machine check condition occurs and MSR[ME] = 1, the exception is recognized
and handled. If MSR[ME] = 0 and a machine check occurs, the processor generates an
internal checkstop condition. When a processor is in checkstop state, instruction processing
is suspended and generally cannot continue without resetting the processor. Some
implementations may preserve some or all of the internal state of the processor when
entering the checkstop state, so that the state can be analyzed as an aid in problem
determination.
In general, it is expected that a bus error signal would be used by a memory controller to
indicate a memory parity error or an uncorrectable memory ECC error. Note that the
resulting machine check exception has priority over any exceptions caused by the
instruction that generated the bus operation.
If a machine check exception causes an exception that is not context synchronizing, the
exception is not recoverable. Also, if a machine check exception causes the loss of one of
the following exceptions, the exception is not recoverable:
An external exception (interrupt or decrementer)
Direct-store error type DSI exception
Floating-point enabled type program exception, If the SRR1 bit corresponding to
MSR[RI] is cleared, the exception is context synchronizing only with respect to
subsequent instructions. If the exception is recoverable, the SRR1 bit corresponding
to MSR[RI] is set and the exception is context synchronizing.
On some implementations, a machine check exception may be caused by referring to a
nonexistent physical (real) address, either because translation is disabled (MSR[IR] or
MSR[DR] = 0) or through an invalid translation. On such a system, execution of the
dcbz
instruction can cause a delayed machine check exception by introducing a block into the
data cache that is associated with an invalid physical (real) address. A machine check
exception could eventually occur when and if a subsequent attempt is made to store that
block to memory.
When a machine check exception is taken, registers are updated as shown in Table 5-6.