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