Annotation of researchv9/sys/sun3/memerr.h, revision 1.1

1.1     ! root        1: /*      @(#)memerr.h 1.1 86/02/03 SMI      */
        !             2: 
        !             3: /*
        !             4:  * Copyright (c) 1985 by Sun Microsystems, Inc.
        !             5:  */
        !             6: 
        !             7: /*
        !             8:  * All Sun-3 implementations have either memory parity error detection
        !             9:  * or memory equipped with error correction (ECC). The memory error
        !            10:  * register consists of a control and an address register.  If an error
        !            11:  * occurs, the control register stores information relevant to the error.
        !            12:  * The memory address error register stores the virtual address, the
        !            13:  * context number, and the CPU/DVMA bit of the memory cycle at which
        !            14:  * the error was detected.  Errors are reported via a non-maskable
        !            15:  * level 7 interrupt.  In case of multiple (stacked) memory errors,
        !            16:  * the information relation to the first error is latched in the
        !            17:  * memory error register.  The interrupt is held pending and the error
        !            18:  * information in the memory error register is latched (frozen) until
        !            19:  * it is cleared (unfrozen) by a write to bits <31..24> of the memory
        !            20:  * error address register.
        !            21:  */
        !            22: 
        !            23: #define        OBIO_MEMREG 0x80000     /* address of memreg in obio space */
        !            24: 
        !            25: #ifdef LOCORE
        !            26: #define        MEMREG 0x0FFE4000       /* virtual address we map memreg to be at */
        !            27: #else
        !            28: struct memreg {
        !            29:        u_char  mr_er;          /* memory error control register */
        !            30: #define        mr_per  mr_er           /* parity error register */
        !            31: #define        mr_eer  mr_er           /* ECC error register */
        !            32:        u_char  mr_undef[3];
        !            33:        u_int   mr_dvma : 1;
        !            34:        u_int   mr_ctx  : 3;
        !            35:        u_int   mr_vaddr:28;
        !            36: };
        !            37: #define        MEMREG ((struct memreg *)(0x0FFE4000))
        !            38: #endif LOCORE
        !            39: 
        !            40: /*
        !            41:  *  Bits for the memory error register when used as parity error register
        !            42:  */
        !            43: #define PER_INTR       0x80    /* r/o - 1 = parity interrupt pending */
        !            44: #define PER_INTENA     0x40    /* r/w - 1 = enable interrupt on parity error */
        !            45: #define PER_TEST       0x20    /* r/w - 1 = write inverse parity */
        !            46: #define PER_CHECK      0x10    /* r/w - 1 = enable parity checking */
        !            47: #define PER_ERR24      0x08    /* r/o - 1 = parity error <24..31> */
        !            48: #define PER_ERR16      0x04    /* r/o - 1 = parity error <16..23> */
        !            49: #define PER_ERR08      0x02    /* r/o - 1 = parity error <8..15> */
        !            50: #define PER_ERR00      0x01    /* r/o - 1 = parity error <0..7> */
        !            51: #define        PER_ERR         0x0F    /* r/o - mask for some parity error occuring */
        !            52: #define PARERR_BITS    "\20\10INTR\7INTENA\6TEST\5CHECK\4ERR24\3ERR16\2ERR08\1ERR00"
        !            53: 
        !            54: /*
        !            55:  *  Bits for the memory error register when used as ECC error register
        !            56:  */
        !            57: #define EER_INTR       0x80    /* r/o - ECC memory interrupt pending */
        !            58: #define EER_INTENA     0x40    /* r/w - enable interrupts on errors */
        !            59: #define EER_BUSHOLD    0x20    /* r/w - hold memory bus mastership */
        !            60: #define EER_CE_ENA     0x10    /* r/w - enable CE recording */
        !            61: #define        EER_TIMEOUT     0x08    /* r/o - Sirius bus time out */
        !            62: #define        EER_WBACKERR    0x04    /* r/o - write back error */
        !            63: #define EER_UE         0x02    /* r/o - UE, uncorrectable error  */
        !            64: #define EER_CE         0x01    /* r/o - CE, correctable (single bit) error */
        !            65: #define        EER_ERR         0x0F    /* r/o - mask for some ECC error occuring */
        !            66: #define ECCERR_BITS    "\20\10INTR\7INTENA\6BUSHOLD\5CE_ENA\4TIMEOUT\3WBACKERR\2UE\1CE"
        !            67: 
        !            68: 
        !            69: #define        ER_INTR         0x80    /* mask for ECC/parity interrupt pending */
        !            70: #define        ER_INTENA       0x40    /* mask for ECC/parity enable interrupt */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.