1 #ifndef __ALPHA_MCE_H 2 #define __ALPHA_MCE_H 3 4 /* 5 * This is the logout header that should be common to all platforms 6 * (assuming they are running OSF/1 PALcode, I guess). 7 */ 8 struct el_common { 9 unsigned int size; /* size in bytes of logout area */ 10 unsigned int sbz1 : 30; /* should be zero */ 11 unsigned int err2 : 1; /* second error */ 12 unsigned int retry : 1; /* retry flag */ 13 unsigned int proc_offset; /* processor-specific offset */ 14 unsigned int sys_offset; /* system-specific offset */ 15 unsigned int code; /* machine check code */ 16 unsigned int frame_rev; /* frame revision */ 17 }; 18 19 /* Machine Check Frame for uncorrectable errors (Large format) 20 * --- This is used to log uncorrectable errors such as 21 * double bit ECC errors. 22 * --- These errors are detected by both processor and systems. 23 */ 24 struct el_common_EV5_uncorrectable_mcheck { 25 unsigned long shadow[8]; /* Shadow reg. 8-14, 25 */ 26 unsigned long paltemp[24]; /* PAL TEMP REGS. */ 27 unsigned long exc_addr; /* Address of excepting instruction*/ 28 unsigned long exc_sum; /* Summary of arithmetic traps. */ 29 unsigned long exc_mask; /* Exception mask (from exc_sum). */ 30 unsigned long pal_base; /* Base address for PALcode. */ 31 unsigned long isr; /* Interrupt Status Reg. */ 32 unsigned long icsr; /* CURRENT SETUP OF EV5 IBOX */ 33 unsigned long ic_perr_stat; /* I-CACHE Reg. <11> set Data parity 34 <12> set TAG parity*/ 35 unsigned long dc_perr_stat; /* D-CACHE error Reg. Bits set to 1: 36 <2> Data error in bank 0 37 <3> Data error in bank 1 38 <4> Tag error in bank 0 39 <5> Tag error in bank 1 */ 40 unsigned long va; /* Effective VA of fault or miss. */ 41 unsigned long mm_stat; /* Holds the reason for D-stream 42 fault or D-cache parity errors */ 43 unsigned long sc_addr; /* Address that was being accessed 44 when EV5 detected Secondary cache 45 failure. */ 46 unsigned long sc_stat; /* Helps determine if the error was 47 TAG/Data parity(Secondary Cache)*/ 48 unsigned long bc_tag_addr; /* Contents of EV5 BC_TAG_ADDR */ 49 unsigned long ei_addr; /* Physical address of any transfer 50 that is logged in EV5 EI_STAT */ 51 unsigned long fill_syndrome; /* For correcting ECC errors. */ 52 unsigned long ei_stat; /* Helps identify reason of any 53 processor uncorrectable error 54 at its external interface. */ 55 unsigned long ld_lock; /* Contents of EV5 LD_LOCK register*/ 56 }; 57 58 struct el_common_EV6_mcheck { 59 unsigned int FrameSize; /* Bytes, including this field */ 60 unsigned int FrameFlags; /* <31> = Retry, <30> = Second Error */ 61 unsigned int CpuOffset; /* Offset to CPU-specific info */ 62 unsigned int SystemOffset; /* Offset to system-specific info */ 63 unsigned int MCHK_Code; 64 unsigned int MCHK_Frame_Rev; 65 unsigned long I_STAT; /* EV6 Internal Processor Registers */ 66 unsigned long DC_STAT; /* (See the 21264 Spec) */ 67 unsigned long C_ADDR; 68 unsigned long DC1_SYNDROME; 69 unsigned long DC0_SYNDROME; 70 unsigned long C_STAT; 71 unsigned long C_STS; 72 unsigned long MM_STAT; 73 unsigned long EXC_ADDR; 74 unsigned long IER_CM; 75 unsigned long ISUM; 76 unsigned long RESERVED0; 77 unsigned long PAL_BASE; 78 unsigned long I_CTL; 79 unsigned long PCTX; 80 }; 81 82 83 #endif /* __ALPHA_MCE_H */ 84