| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* $Id: memreg.h,v 1.8 1996/08/29 09:48:23 davem Exp $ */ | 
|  | 2 | #ifndef _SPARC_MEMREG_H | 
|  | 3 | #define _SPARC_MEMREG_H | 
|  | 4 | /* memreg.h:  Definitions of the values found in the synchronous | 
|  | 5 | *            and asynchronous memory error registers when a fault | 
|  | 6 | *            occurs on the sun4c. | 
|  | 7 | * | 
|  | 8 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 
|  | 9 | */ | 
|  | 10 |  | 
|  | 11 | /* First the synchronous error codes, these are usually just | 
|  | 12 | * normal page faults. | 
|  | 13 | */ | 
|  | 14 |  | 
|  | 15 | #define SUN4C_SYNC_WDRESET   0x0001  /* watchdog reset */ | 
|  | 16 | #define SUN4C_SYNC_SIZE      0x0002  /* bad access size? whuz this? */ | 
|  | 17 | #define SUN4C_SYNC_PARITY    0x0008  /* bad ram chips caused a parity error */ | 
|  | 18 | #define SUN4C_SYNC_SBUS      0x0010  /* the SBUS had some problems... */ | 
|  | 19 | #define SUN4C_SYNC_NOMEM     0x0020  /* translation to non-existent ram */ | 
|  | 20 | #define SUN4C_SYNC_PROT      0x0040  /* access violated pte protections */ | 
|  | 21 | #define SUN4C_SYNC_NPRESENT  0x0080  /* pte said that page was not present */ | 
|  | 22 | #define SUN4C_SYNC_BADWRITE  0x8000  /* while writing something went bogus */ | 
|  | 23 |  | 
|  | 24 | #define SUN4C_SYNC_BOLIXED  \ | 
|  | 25 | (SUN4C_SYNC_WDRESET | SUN4C_SYNC_SIZE | SUN4C_SYNC_SBUS | \ | 
|  | 26 | SUN4C_SYNC_NOMEM | SUN4C_SYNC_PARITY) | 
|  | 27 |  | 
|  | 28 | /* Now the asynchronous error codes, these are almost always produced | 
|  | 29 | * by the cache writing things back to memory and getting a bad translation. | 
|  | 30 | * Bad DVMA transactions can cause these faults too. | 
|  | 31 | */ | 
|  | 32 |  | 
|  | 33 | #define SUN4C_ASYNC_BADDVMA 0x0010  /* error during DVMA access */ | 
|  | 34 | #define SUN4C_ASYNC_NOMEM   0x0020  /* write back pointed to bad phys addr */ | 
|  | 35 | #define SUN4C_ASYNC_BADWB   0x0080  /* write back points to non-present page */ | 
|  | 36 |  | 
|  | 37 | /* Memory parity error register with associated bit constants. */ | 
|  | 38 | #ifndef __ASSEMBLY__ | 
| Al Viro | a329729 | 2005-12-06 05:56:39 -0500 | [diff] [blame] | 39 | extern __volatile__ unsigned long __iomem *sun4c_memerr_reg; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 40 | #endif | 
|  | 41 |  | 
|  | 42 | #define	SUN4C_MPE_ERROR	0x80	/* Parity error detected. (ro) */ | 
|  | 43 | #define	SUN4C_MPE_MULTI	0x40	/* Multiple parity errors detected. (ro) */ | 
|  | 44 | #define	SUN4C_MPE_TEST	0x20	/* Write inverse parity. (rw) */ | 
|  | 45 | #define	SUN4C_MPE_CHECK	0x10	/* Enable parity checking. (rw) */ | 
|  | 46 | #define	SUN4C_MPE_ERR00	0x08	/* Parity error in bits 0-7. (ro) */ | 
|  | 47 | #define	SUN4C_MPE_ERR08	0x04	/* Parity error in bits 8-15. (ro) */ | 
|  | 48 | #define	SUN4C_MPE_ERR16	0x02	/* Parity error in bits 16-23. (ro) */ | 
|  | 49 | #define	SUN4C_MPE_ERR24	0x01	/* Parity error in bits 24-31. (ro) */ | 
|  | 50 | #define	SUN4C_MPE_ERRS	0x0F	/* Bit mask for the error bits. (ro) */ | 
|  | 51 |  | 
|  | 52 | #endif /* !(_SPARC_MEMREG_H) */ |