Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

buserror.c File Reference

#include "ki.h"

Go to the source code of this file.

Functions

VOID KiMachineCheck (IN PEXCEPTION_RECORD ExceptionRecord, IN PKEXCEPTION_FRAME ExceptionFrame, IN PKTRAP_FRAME TrapFrame)


Function Documentation

VOID KiMachineCheck IN PEXCEPTION_RECORD  ExceptionRecord,
IN PKEXCEPTION_FRAME  ExceptionFrame,
IN PKTRAP_FRAME  TrapFrame
 

Definition at line 31 of file alpha/buserror.c.

References DATA_BUS_ERROR, DbgPrint, and KeBugCheck().

Referenced by KiDispatchException().

00039 : 00040 00041 This function is called to process a machine check. If the vendor 00042 has supplied a machine check handler with its HAL then the machine 00043 check handler is called. If the routine returns TRUE indicating 00044 that the error has been handled then execution resumes, otherwise, 00045 a bugcheck is raised. 00046 00047 If no machine check handler is registered or it does not indicate 00048 that the error has been handled, then this routine will attempt 00049 default handling. Default handling consists of checking the 00050 machine check status in the exception record. If the status indicates 00051 that the machine check is correctable or retryable then return and 00052 resume execution, otherwise a bugcheck is raised. 00053 00054 Arguments: 00055 00056 ExceptionRecord - Supplies a pointer to an exception record. 00057 00058 ExceptionFrame - Supplies a pointer to an exception frame. 00059 00060 TrapFrame - Supplies a pointer to a trap frame. 00061 00062 Return Value: 00063 00064 None. 00065 00066 --*/ 00067 00068 { 00069 00070 if( ((ULONG_PTR)PCR->MachineCheckError != 0) && 00071 (PCR->MachineCheckError)(ExceptionRecord, 00072 ExceptionFrame, 00073 TrapFrame) ) { 00074 00075 // 00076 // The HAL has handled the error. 00077 // 00078 00079 return; 00080 00081 } else { 00082 00083 // 00084 // Either there is no HAL handler, or it did not handle the 00085 // error. 00086 // 00087 00088 if( ExceptionRecord->ExceptionInformation[0] != 0 ){ 00089 00090 // 00091 // The error is either correctable or retryable, resume 00092 // execution. 00093 // 00094 00095 #if DBG 00096 00097 DbgPrint( "MCHK: resuming correctable or retryable error\n" ); 00098 00099 #endif //DBG 00100 00101 return; 00102 00103 } 00104 } 00105 00106 00107 // 00108 // The error was not handled and is not correctable or retryable. 00109 // 00110 00111 KeBugCheck(DATA_BUS_ERROR); 00112 }


Generated on Sat May 15 19:42:58 2004 for test by doxygen 1.3.7