1 |
1275 |
phoenix |
/* $Id: memreg.h,v 1.1.1.1 2004-04-15 02:40:39 phoenix 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) */
|