|
|
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.