b3c7ebb7cd
Also defines an entry point for memory errors reported by module interrupts.
101 lines
4.1 KiB
C
101 lines
4.1 KiB
C
/* $NetBSD: memeccreg.h,v 1.1 1998/09/18 20:18:10 pk Exp $ */
|
|
|
|
/*-
|
|
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This code is derived from software contributed to The NetBSD Foundation
|
|
* by Paul Kranenburg.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. All advertising materials mentioning features or use of this software
|
|
* must display the following acknowledgement:
|
|
* This product includes software developed by the NetBSD
|
|
* Foundation, Inc. and its contributors.
|
|
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
* contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
/*
|
|
* ECC memory control.
|
|
*/
|
|
|
|
/* Register offsets */
|
|
#define ECC_EN_REG 0
|
|
#define ECC_FSR_REG 8
|
|
#define ECC_AFR0_REG 16
|
|
#define ECC_AFR1_REG 20
|
|
#define ECC_DIAG_REG 24
|
|
|
|
/* ECC Memory Enable register */
|
|
#define ECC_EN_EE 0x00000001 /* Enable ECC checking */
|
|
#define ECC_EN_EI 0x00000002 /* Interrupt on correctable error */
|
|
#define ECC_EN_VER 0x0f000000 /* Version */
|
|
#define ECC_EN_IMPL 0xf0000000 /* Implementation Id */
|
|
|
|
/* ECC Memory Fault Status register */
|
|
#define ECC_FSR_CE 0x00000001 /* Correctable error */
|
|
#define ECC_FSR_TO 0x00000004 /* Timeout on write */
|
|
#define ECC_FSR_UE 0x00000008 /* Uncorrectable error */
|
|
#define ECC_FSR_DW 0x000000f0 /* Index of double word in block */
|
|
#define ECC_FSR_SYND 0x0000ff00 /* Syndrome for correctable error */
|
|
#define ECC_FSR_ME 0x00010000 /* Multiple errors */
|
|
#define ECC_FSR_BITS "\177\020" \
|
|
"b\0CE\0b\2TO\0b\3UE\0" \
|
|
"f\4\4DW\0f\10\10SYNDROME\0b\20ME\0"
|
|
|
|
/*
|
|
* ECC Memory Fault Address registers
|
|
* There are two of these. The first has bits 32-35 of the faulting
|
|
* physical address and assorted MBus bits. The second has bits
|
|
* 0-31 of the faulting physical address.
|
|
*/
|
|
#define ECC_AFR_PAH 0x0000000f /* PA[31-35] */
|
|
#define ECC_AFR_TYPE 0x000000f0 /* Transaction type */
|
|
#define ECC_AFR_SIZE 0x00000700 /* Transaction size */
|
|
#define ECC_AFR_C 0x00000800 /* Mapped cacheable */
|
|
#define ECC_AFR_LOCK 0x00001000 /* Error occurred in atomic cycle */
|
|
#define ECC_AFR_MBL 0x00002000 /* Boot mode */
|
|
#define ECC_AFR_VA 0x003fc000 /* VA[12-19] (superset bits) */
|
|
#define ECC_AFR_S 0x08000000 /* Access was in supervisor mode */
|
|
#define ECC_AFR_MID 0xf0000000 /* Module code */
|
|
#define ECC_AFR_BITS "\177\020" \
|
|
"f\0\4VAH\0f\4\4TYPE\0f\10\3SIZE\0" \
|
|
"b\13C\0b\14LOCK\0b\15MBL\0" \
|
|
"f\16\10VA\0b\33S\0f\34\4MID\0"
|
|
|
|
/* ECC Diagnostic register */
|
|
#define ECC_DR_CBX 0x00000001
|
|
#define ECC_DR_CB0 0x00000002
|
|
#define ECC_DR_CB1 0x00000004
|
|
#define ECC_DR_CB2 0x00000008
|
|
#define ECC_DR_CB4 0x00000010
|
|
#define ECC_DR_CB8 0x00000020
|
|
#define ECC_DR_CB16 0x00000040
|
|
#define ECC_DR_CB32 0x00000080
|
|
#define ECC_DR_DMODE 0x00000c00
|
|
#define ECC_DR_BITS "\177\020" \
|
|
"f\12\2DMODE\0=\0NORMAL\0=\1GEN\0=\2DETECT\0" \
|
|
"f\0\8CHECK BITS\0"
|
|
|