pwb@trwrba.UUCP (06/27/84)
1984-0067.01 TRW/UNIX Modification 1984-0067.01 NAME autoconf - MS780E memory controllers are unsupported DATE ENACTED June 21, 1984 KEYWORDS kernel, memory, MS780E PROBLEM DESCRIPTION The autoconfiguration code does not recognize the MS780E memory controllers. RESOLUTION In the file /usr/src/sys/dev/autoconf.c, the routine pro- benexus() change the following section of code: case NEX_MEM4: case NEX_MEM4I: case NEX_MEM16: case NEX_MEM16I: printf("mcr%d at tr%d0, nmcr, nexnum); if (nmcr >= 4) { printf("5 mcr's"); goto unsupp; } mcraddr[nmcr++] = (struct mcr *)nxv; break; to: case NEX_MEM4: case NEX_MEM4I: case NEX_MEM16: case NEX_MEM16I: case NEX_MEM64I: printf("mcr%d at tr%d0, nmcr, nexnum); if (nmcr >= 4) { printf("5 mcr's"); goto unsupp; } mcraddr[nmcr++] = (struct mcr *)nxv; Memory_flavor = nexcsr.nex_type; break; case NEX_MEM64L: case NEX_MEM64LI: case NEX_MEM64U: case NEX_MEM64UI: printf("mcr%d (64K chips non or external interleaved)", nmcr); goto unsupp; 4.1bsd TRW (6/27/84) 1 1984-0067.01 TRW/UNIX Modification 1984-0067.01 FILES /usr/src/sys/dev/autoconf.c 1.2 REQUESTOR Michael Gorlick AUTHOR Phillip Bonesteele SEE ALSO 1984-0067.02, 1984-0067.03, 1984-0067.04 4.1bsd TRW (6/27/84) 2 1984-0067.02 TRW/UNIX Modification 1984-0067.02 NAME mem.h - MS780E memory controllers are unsupported DATE ENACTED June 21, 1984 KEYWORDS kernel, mem.h, memory, MS780E PROBLEM DESCRIPTION The MS780E memory controller register interfaces are unsup- ported in the memory device header file. RESOLUTION In the file /usr/src/sys/h/mem.h change the declaration for the variable mc_reg from: int mc_reg[3]; to: int mc_reg[4]; and add the following: /* * The following applies only to the MS780E memory controller. * Physically the controller consists of three boards, the M8376 * SBI controller and two M8375 array controllers sitting to the immediate * left and right respectively of the SBI controller (looking at your * VAX from the front). * There are 4 memory controller registers A, B, C and D. * Registers A and B are `shared' by the two M8375 array controllers. * Registers C and D are the error reporting registers for the RIGHT and * LEFT array controllers respectively. */ #define M780_LEFT_INH(mcr) \ (((mcr)->mc_reg[3] = (M780_ICRD|M780_HIER|M780_ERLOG)), mtpr(SBIER, 0)) #define M780_LEFT_ENA(mcr) \ (((mcr)->mc_reg[3] = (M780_HIER|M780_ERLOG)), mtpr(SBIER, 3<<14)) #define M780_LEFT_ERR(mcr) \ ((mcr)->mc_reg[3] & (M780_ERLOG)) #define M780_LEFT_SYN(mcr) ((mcr)->mc_reg[3] & 0xff) #define M780_LEFT_ADDR(mcr) (((mcr)->mc_reg[3] >> 8) & 0xfffff) #define M780_RIGHT_INH(mcr) M780_INH(mcr) #define M780_RIGHT_ENA(mcr) M780_ENA(mcr) #define M780_RIGHT_ERR(mcr) M780_ERR(mcr) #define M780_RIGHT_SYN(mcr) M780_SYN(mcr) #define M780_RIGHT_ADDR(mcr) M780_ADDR(mcr) 4.1bsd TRW (6/27/84) 1 1984-0067.02 TRW/UNIX Modification 1984-0067.02 FILES /usr/src/sys/h/mem.h 1.3 /usr/include/sys/mem.h 1.3 REQUESTOR Michael Gorlick AUTHOR Phillip Bonesteele SEE ALSO 1984-0067.01, 1984-0067.03, 1984-0067.04 4.1bsd TRW (6/27/84) 2 1984-0067.03 TRW/UNIX Modification 1984-0067.03 NAME nexus.h - MS780E memory controllers are unsupported DATE ENACTED June 21, 1984 KEYWORDS kernel, memory, MS780E PROBLEM DESCRIPTION The MS78E memory controller is unsupported by defines in the nexus header file. RESOLUTION In the file /usr/src/sys/h/nexus.h add the following macros: #define NEX_MEM64L 0x68 /* 64K chips, non-interleaved, lower */ #define NEX_MEM64LI 0x69 /* 64K chips, ext-interleaved, lower */ #define NEX_MEM64U 0x6a /* 64K chips, non-interleaved, upper */ #define NEX_MEM64UI 0x6b /* 64K chips, ext-interleaved, upper */ #define NEX_MEM64I 0x6c /* 64K chips, interleaved */ FILES /usr/src/sys/h/nexus.h 1.2 /usr/include/sys/nexus.h 1.2 REQUESTOR Michael Gorlick AUTHOR Phillip Bonesteele SEE ALSO 1984-0067.01, 1984-0067.02, 1984-0067.04 4.1bsd TRW (6/27/84) 1 1984-0067.04 TRW/UNIX Modification 1984-0067.04 NAME machdep.c - MS780E memory controllers are unsupported DATE ENACTED June 21, 1984 KEYWORDS kernel, memory, MS780E PROBLEM DESCRIPTION The MS78E memory controller is unsupported by the machine dependent memory error reporting code. RESOLUTION In the file /usr/src/sys/sys/machdep.c add the include #include "../h/nexus.h" and in the routine memenable() change the following code: case VAX_780: M780_ENA(mcr); break; to: case VAX_780: switch (Memory_flavor) { case NEX_MEM4: case NEX_MEM4I: case NEX_MEM16: case NEX_MEM16I: M780_ENA(mcr); break; case NEX_MEM64I: M780_LEFT_ENA(mcr); M780_RIGHT_ENA(mcr); break; } break; and change the following code: case VAX_780: if (M780_ERR(mcr)) { printf("mcr%d: soft ecc addr %x syn %x0, m, M780_ADDR(mcr), M780_SYN(mcr)); M780_INH(mcr); } break; to: 4.1bsd TRW (6/27/84) 1 1984-0067.04 TRW/UNIX Modification 1984-0067.04 case VAX_780: switch (Memory_flavor) { case NEX_MEM4: case NEX_MEM4I: case NEX_MEM16: case NEX_MEM16I: if (M780_ERR(mcr)) { printf("mcr%d: soft ecc addr %x syn %x0, m, M780_ADDR(mcr), M780_SYN(mcr)); M780_INH(mcr); } break; case NEX_MEM64I: if (M780_LEFT_ERR(mcr)) { printf("mcr%d (left): soft ecc addr %x syn %x0, m, M780_LEFT_ADDR(mcr), M780_LEFT_SYN(mcr)); M780_LEFT_INH(mcr); } if (M780_RIGHT_ERR(mcr)) { printf("mcr%d (right): soft ecc addr %x syn %x0, m, M780_RIGHT_ADDR(mcr), M780_RIGHT_SYN(mcr)); M780_RIGHT_INH(mcr); } break; } break; FILES /usr/src/sys/sys/machdep.c 1.3 REQUESTOR Michael Gorlick AUTHOR Phillip Bonesteele SEE ALSO 1984-0067.01, 1984-0067.02, 1984-0067.03 4.1bsd TRW (6/27/84) 2