|
|
1.1 root 1: #include "preg.h"
2:
3: extern long pfint, pfcnt, memflg;
4: extern long sbr, slr, p0br, p0lr, p1br, p1lr, p2br, p2lr, ipl, mme, Pcbb;
5: extern long Isp, Sisr, scbb, ksp;
6:
7: #define NBPG 1024
8: #define TP0BR 0x100
9: #define TP0LR 0x200
10: #define TP1BR 0x300
11: #define TP1LR 0x400
12: #define TP2BR 0x500
13: #define TP2LR 0x600
14: #define TKSP 0x700
15: #define KMEM 64
16:
17:
18: pfsetup(baddr)
19: register long *baddr;
20: { register long ix;
21:
22: /* write pattern into 64K of memory */
23: writes("** writing patterns to 64K bytes of memory...\n");
24: for(ix=0;ix<((NBPG/4)*KMEM) ;ix++) baddr[ix] = ix;
25: }
26:
27:
28: prest(baddr)
29: register long *baddr;
30: { register long ix;
31:
32: writes("** Power restarted...\n");
33: if (pfint==0) {
34: writes(" Tahoe did not receive power fail interrupt.\n");
35: }
36: if (memflg != 0xcafebabe) {
37: writes(" Memory is not backed up on when power fails\n");
38: return(0);
39: }
40: writes(" Count is "); writeh(pfcnt);
41:
42: /* Check if memory is backed up */
43: writes(" Checking patterns written to memory previously...\n");
44: for(ix=0;ix<((NBPG/4)*KMEM) ;ix++) {
45: if (baddr[ix] != ix) {
46: writes("** Memory error, begin address ");
47: writeh(baddr); writes(", longword no. "); writeh(ix);
48: writes(", actual "); writeh(baddr[ix]);
49: break;
50: }
51: }
52: chk_pr(); /* Check privilege registes */
53: }
54:
55: chk_pr()
56: { register long actual;
57:
58: actual = mfpr(SBR);
59: if (actual != sbr) pferr("\n SBR error ",actual,sbr);
60: actual = mfpr(SLR);
61: if (actual != slr) pferr("\n SLR error ",actual,slr);
62: actual = mfpr(P0BR);
63: if (actual != p0br) pferr("\n P0BR error ",actual,p0br);
64: actual = mfpr(P0LR);
65: if (actual != p0lr) pferr("\n P0LR error ",actual,p0lr);
66: actual = mfpr(P1BR);
67: if (actual != p1br) pferr("\n P1BR error ",actual,p1br);
68: actual = mfpr(P1LR);
69: if (actual != p1lr) pferr("\n P1LR error ",actual,p1lr);
70: actual = mfpr(P2BR);
71: if (actual != p2br) pferr("\n P2BR error ",actual,p2br);
72: actual = mfpr(P2LR);
73: if (actual != p2lr) pferr("\n P2LR error ",actual,p2lr);
74: actual = mfpr(IPL);
75: if (actual != ipl) pferr("\n IPL error ",actual,ipl);
76: actual = mfpr(MME);
77: if (actual != mme) pferr("\n MME error ",actual,mme);
78: actual = mfpr(PCBB);
79: if (actual != Pcbb) pferr("\n PCBB error ",actual,Pcbb);
80: actual = mfpr(ISP);
81: if (actual != Isp) pferr("\n ISP error ",actual,Isp);
82: actual = mfpr(SISR);
83: if (actual != Sisr) pferr("\n SISR error ",actual,Sisr);
84: actual = mfpr(SCBB);
85: if (actual != scbb) pferr("\n SCBB error ",actual,scbb);
86: actual = mfpr(KSP);
87: if (actual != ksp) pferr("\n KSP error ",actual,ksp);
88: }
89:
90:
91: mfpr(pn)
92: long pn;
93: { register long r12;
94:
95: asm("mfpr 4(fp),r12");
96: return(r12);
97: }
98:
99: pferr(str,actual,expected)
100: char *str;
101: long actual, expected;
102: {
103: writes(str); writes("** actual "); writeh(actual);
104: writes(" , expected "); writeh(expected);
105: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.