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__ |
| 39 | extern __volatile__ unsigned long *sun4c_memerr_reg; |
| 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) */ |