blob: d305a0704586233ac037d017bb3e280e53055f6b (
plain) (
tree)
|
|
/*++
Copyright (c) 1994 Digital Equipment Corporation
Module Name:
eb164err.c
Abstract:
This module implements error handling (machine checks and error
interrupts) for the EB164 platform.
Author:
Joe Notarangelo 06-Sep-1994
Environment:
Kernel mode only.
Revision History:
--*/
#include "halp.h"
#include "eb164.h"
//
// Declare the extern variable UncorrectableError declared in
// inithal.c.
//
extern PERROR_FRAME PUncorrectableError;
VOID
HalpErrorInterrupt(
VOID
)
/*++
Routine Description:
This routine is the interrupt handler for an EB164 machine check interrupt
The function calls HalpCiaReportFatalError()
Arguments:
None.
Return Value:
None. If a Fatal Error is detected the system is crashed.
--*/
{
HalAcquireDisplayOwnership(NULL);
//
// Display the dreaded banner.
//
HalDisplayString( "\nFatal system hardware error.\n\n" );
//
// Report the error and crash the system
//
HalpCiaReportFatalError();
KeBugCheckEx( DATA_BUS_ERROR,
0xfacefeed, //jnfix - quick error interrupt id
0,
0,
(ULONG)PUncorrectableError );
return; // never
}
BOOLEAN
HalpPlatformMachineCheck(
IN PEXCEPTION_RECORD ExceptionRecord,
IN PKEXCEPTION_FRAME ExceptionFrame,
IN PKTRAP_FRAME TrapFrame
)
/*++
Routine Description:
This routine is given control when an hard error is acknowledged
by the CIA chipset. The routine is given the chance to
correct and dismiss the error.
Arguments:
ExceptionRecord - Supplies a pointer to the exception record generated
at the point of the exception.
ExceptionFrame - Supplies a pointer to the exception frame generated
at the point of the exception.
TrapFrame - Supplies a pointer to the trap frame generated
at the point of the exception.
Return Value:
TRUE is returned if the machine check has been handled and dismissed -
indicating that execution can continue. FALSE is return otherwise.
--*/
{
//
// All machine check handling is determined by the CIA
//
return(HalpCiaMachineCheck( ExceptionRecord,
ExceptionFrame,
TrapFrame ));
}
|