|
|
1.1 root 1:
2: /* mem.h 4.9 81/04/03 */
3: /* Tahoe version Dec 1982 */
4:
5: /*
6: * Memory controller registers
7: *
8: */
9:
10:
11: /*
12: * Some bits definition for MCR
13: */
14:
15: #define EED 0x01 /* Enable error detection */
16: #define EEC 0x02 /* Enable error correction */
17: #define WMD 0x04 /* Write memory diagnostic */
18: #define RMD 0x08 /* Read memory diagnostic */
19: #define INT 0x20 /* Init = power on bit */
20: #define CEC 0x40 /* Clear error count */
21: #define CME 0x80 /* Clear memory error */
22: #define CMEC 0xff00 /* Corrected memory error count (mask) */
23:
24: /*
25: * MER bits
26: */
27:
28: #define ERRCD 0x07 /* Error code (mask) */
29: #define APE 1 /* Address parity error */
30: #define DPE 2 /* Data parity error */
31: #define DCE 3 /* Data check error */
32: #define VTO 4 /* Versabus timeout */
33: #define VBE 5 /* Versabus error */
34: #define NEM 6 /* Non-existent memory */
35:
36: #define AXE 0x08 /* Adapter external error */
37: #define ERM 0x10 /* Error master (0=CPU, 1=Versabus) */
38: #define IVV 0x100 /* Illegal Versabus vector */
39:
40: /*
41: * MCBR bits
42: */
43:
44: #define MCBR 0xffff0000
45: #define MEAR 0xffff0000
46:
47: /*
48: * Frame for bus error
49: */
50: struct buserframe {
51: int which_bus; /* primary or secondary */
52: int memerreg; /* memory error register */
53: int trp_pc; /* trapped pc */
54: int trp_psl; /* trapped psl */
55: };
56:
57: extern long IOinit;
58:
59: buserror(busef)
60: long *busef;
61: {
62: register struct buserframe *frameptr;
63: register long hardreg;
64:
65: if (IOinit) return;
66: frameptr = (struct buserframe *)busef;
67: writes("\nbus error at address : "); writeh(frameptr->trp_pc);
68: writes(", PSL : "); writeh(frameptr->trp_psl);
69: hardreg = frameptr->memerreg;
70:
71: writes("\nMEAR = "); writeh(((hardreg&MEAR)>>16)&0xffff);
72: switch (hardreg & ERRCD){
73: case (APE): writes("\tAddress parity error !! \n");
74: break;
75: case (DPE): writes("\tData parity error.\n");
76: break;
77: case (DCE): writes("\tData check error.\n");
78: break;
79: case (VTO): writes("\tVersabus timeout.\n");
80: break;
81: case (VBE): writes("\tVersabus error !! \n");
82: break;
83: case (NEM): writes("\tNon existent memory.\n");
84: break;
85: default: writes("\tUnknown error code : ");
86: writeh(hardreg&ERRCD);
87: }
88: if (hardreg&AXE) writes("\tAdapter external error\n");
89: writes ("\tError master : ");
90: if (hardreg&ERM) writes("Versabus\n");
91: else writes ("Tahoe\n");
92: if (hardreg&IVV) writes("\tIllegal interrupt vector\n");
93:
94: hardreg = frameptr->which_bus;
95: writes("\nMCBR = "); writeh(((hardreg&0x1fff)>>16)&0xffff);
96: writes("\tVersabus type : "); writeh(hardreg&0xffff); writec('\n');
97: }
98:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.