|
|
1.1 root 1: /* @(#)eccreg.h 1.1 86/02/03 SMI */
2:
3: /*
4: * Copyright (c) 1985 by Sun Microsystems, Inc.
5: */
6:
7: #define OBIO_ECCREG 0x1C0000 /* addr of ECC memory regsiters in obio space */
8:
9: #define MAX_ECC 4 /* maximium number of ECC memory cards */
10:
11: #define ECCREG_ADDR 0x0FFE8000 /* virtual address we map eccreg to be at */
12:
13: #ifdef LOCORE
14: #define ECCREG ECCREG_ADDR
15: #else
16: struct eccreg {
17: struct eccena {
18: u_int ena_type : 3; /* r/o - board type identifier */
19: u_int ena_mode : 2; /* r/w - operation mode */
20: #define ENA_MODE_NORMAL 0
21: #define ENA_MODE_DIAG_GENERATE 1
22: #define ENA_MODE_DIAG_DETECT 2
23: #define ENA_MODE_DIAG_INIT 3
24: u_int ena_size : 2; /* r/o - board size */
25: #define ENA_SIZE_4MB 0
26: #define ENA_SIZE_8MB 1
27: #define ENA_SIZE_16MB 2
28: #define ENA_SIZE_32MB 3
29: u_int ena_scrub : 1; /* r/w - enable refresh scrub cycle */
30: u_int ena_busena : 1; /* r/w - enable mem bus ecc reporting */
31: u_int ena_boardena : 1; /* r/w - overall board enable */
32: u_int ena_addr : 6; /* r/w - base address <A27..A22> */
33: u_int : 16;
34: } eccena;
35: struct syndrome {
36: u_int sy_synd : 8; /* r/o - syndrome for first error */
37: u_int : 1;
38: u_int sy_addr : 22; /* r/o - real addr bits <A24..A3> */
39: u_int sy_ce : 1; /* r/o - correctable error */
40: } syndrome;
41: struct eccdiag_reg {
42: u_int : 8;
43: u_int dr_cb32 : 1; /* w/o - check bit 32 (data D<71>) */
44: u_int : 16;
45: u_int dr_cb16 : 1; /* w/o - check bit 16 (data D<70>) */
46: u_int : 32;
47: u_int dr_cb8 : 1; /* w/o - check bit 8 (data D<69>) */
48: u_int dr_cb4 : 1; /* w/o - check bit 4 (data D<68>) */
49: u_int dr_cb2 : 1; /* w/o - check bit 2 (data D<67>) */
50: u_int dr_cb1 : 1; /* w/o - check bit 1 (data D<66>) */
51: u_int dr_cb0 : 1; /* w/o - check bit 1 (data D<65>) */
52: u_int dr_cbX : 1; /* w/o - check bit X (data D<64>) */
53: } eccdiag_reg;
54: u_char eccreg_pad[64 - sizeof (struct eccdiag_reg) -
55: sizeof (struct syndrome) - sizeof (struct eccena)];
56: };
57:
58: #define ECCREG ((struct eccreg *)ECCREG_ADDR)
59: #endif
60:
61: #define SYNDERR_BITS "\20\10S32\7S16\6S8\5S4\4S2\3S1\2S0\1SX"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.