|
|
1.1 root 1: # prvreg.s 1.0 9/3/82 */
2: #
3: # *Privileged registers test : MTPR/MFPR
4: #
5: # R2 : expected value
6: # R3 : actual value
7: # R4 : privilege register no. that fail
8:
9:
10: .globl _prvreg
11: _prvreg:
12: .word 0x1fff
13: movl $0x55555554,r2
14: mtpr r2,$SBR /* Entry point : Register to Memory */
15: mfpr $SBR,r3 /* Entry point : Memory to Register */
16: cmpl r2,r3
17: beql 1f
18: movl $0,r4 /* R4 = privilege reg. no that failed */
19: jmp *badrtn /* **** - r2 & r3 contains exp */
20: /* and observed values; r4 = prv reg no.*/
21: 1:
22: mtpr $0xaaaaaaa4,$SBR /* Entry point : Memory to Memory */
23: mfpr $SBR,prvar /* Entry point : Memory to Memory */
24: cmpl $0xaaaaaaa4,prvar
25: beql 2f
26: movl $0,r4 /* R4 = privilege reg. no that failed */
27: movl $0xaaaaaaa4,r2 /* R2 = Expected value; R3 = Actual value */
28: movl prvar,r3
29: jmp *badrtn
30: 2:
31:
32: movl $SLR,r12 /* System Length Register */
33: movl $0x35555555,r2
34: mtpr r2,r12 /* Entry point : Register to Register */
35: mfpr r12,r3 /* Entry point : Register to Register */
36: cmpl r2,r3
37: beql 1f
38: movl $1,r4 /* R4 = privilege reg. no that failed */
39: jmp *badrtn /***** - r2 & r3 contains exp */
40: /*and observed values; r4 = prv reg no. */
41: 1:
42: mtpr $0x3aaaaaaa,r12 /* Entry point : Memory to register */
43: mfpr r12,prvar /* Entry point : Register to Memory */
44: cmpl $0x3aaaaaaa,prvar
45: beql 2f
46: movl $1,r4 /* R4 = privilege reg. no that failed */
47: movl $0x3aaaaaaa,r2 /* R2 = Expected value; R3 = Actual value */
48: movl prvar,r3
49: jmp *badrtn
50: 2:
51:
52: movl $0x55555554,r2 /*p0 base register */
53: mtpr r2,$P0BR
54: movl $P0BR,_cache1
55: mfpr _cache1,r3 /* Cache to register */
56: cmpl r2,r3
57: beql 1f
58: movl $2,r4 /* R4 = privilege reg. no that failed */
59: jmp *badrtn /***** - r2 & r3 contains exp */
60: /*and observed values; r4 = prv reg no. */
61: 1:
62: movl $0xaaaaaaa4,r2
63: mtpr r2,$P0BR
64: mfpr _cache1,_cache2 /* Cache to cache */
65: movl _cache2,r3
66: cmpl r2,r3
67: beql 2f
68: movl $2,r4 /*reg no. */
69: jmp *badrtn /***** - r2 & r3 contains exp */
70: /*and observed values; r4 = prv reg no. */
71: 2:
72:
73: movl $0x35555555,r2 /*p0 length register */
74: andl2 $0x1fffffff,r2
75: mtpr r2,$P0LR
76: mfpr $P0LR,r3
77: cmpl r2,r3
78: beql 1f
79: movl $3,r4 /*reg no. */
80: jmp *badrtn /***** - r2 & r3 contains exp */
81: /*and observed values; r4 = prv reg no. */
82: 1:
83: movl $0x3aaaaaaa,r2
84: andl2 $0x1fffffff,r2
85: mtpr r2,$P0LR
86: mfpr $P0LR,r3
87: cmpl r2,r3
88: beql 2f
89: movl $3,r4 /*reg no. */
90: jmp *badrtn /***** - r2 & r3 contains exp */
91: /*and observed values; r4 = prv reg no. */
92: 2:
93:
94: movl $0x55555554,r2 /*p1 base register */
95: movl $P1BR,_sreg
96: mtpr r2,_sreg
97: mfpr $P1BR,r3
98: cmpl r2,r3
99: beql 1f
100: movl $4,r4 /*reg no. */
101: jmp *badrtn /***** - r2 & r3 contains exp */
102: /*and observed values; r4 = prv reg no. */
103: 1:
104: movl $0xaaaaaaa4,r2
105: mtpr r2,$P1BR
106: mfpr $P1BR,r3
107: cmpl r2,r3
108: beql 2f
109: movl $4,r4 /*reg no. */
110: jmp *badrtn /***** - r2 & r3 contains exp */
111: /*and observed values; r4 = prv reg no. */
112: 2:
113:
114:
115: movl $0x35555555,r2 /*p1 length register */
116: andl2 $0x1fffffff,r2
117: mtpr r2,$P1LR
118: mfpr $P1LR,r3
119: cmpl r2,r3
120: beql 1f
121: movl $5,r4 /*reg no. */
122: jmp *badrtn /***** - r2 & r3 contains exp */
123: /*and observed values; r4 = prv reg no. */
124: 1:
125: movl $0x3aaaaaaa,r2
126: andl2 $0x1fffffff,r2
127: mtpr r2,$P1LR
128: mfpr $P1LR,r3
129: cmpl r2,r3
130: beql 2f
131: movl $5,r4 /*reg no. */
132: jmp *badrtn /***** - r2 & r3 contains exp */
133: /*and observed values; r4 = prv reg no. */
134: 2:
135:
136:
137: movl $0x55555554,r2 /*p2 base register */
138: mtpr r2,$P2BR
139: mfpr $P2BR,r3
140: cmpl r2,r3
141: beql 1f
142: movl $6,r4 /*reg no. */
143: jmp *badrtn /***** - r2 & r3 contains exp */
144: /*and observed values; r4 = prv reg no. */
145: 1:
146: movl $0xaaaaaaa4,r2
147: mtpr r2,$P2BR
148: mfpr $P2BR,r3
149: cmpl r2,r3
150: beql 2f
151: movl $6,r4 /*reg no. */
152: jmp *badrtn /***** - r2 & r3 contains exp */
153: /*and observed values; r4 = prv reg no. */
154: 2:
155:
156: movl $0x35555555,r2 /*p2 length register */
157: andl2 $0x1fffffff,r2
158: mtpr r2,$P2LR
159: mfpr $P2LR,r3
160: cmpl r2,r3
161: beql 1f
162: movl $7,r4 /*reg no. */
163: jmp *badrtn /***** - r2 & r3 contains exp */
164: /*and observed values; r4 = prv reg no. */
165: 1:
166: movl $0x3aaaaaaa,r2
167: andl2 $0x1fffffff,r2
168: mtpr r2,$P2LR
169: mfpr $P2LR,r3
170: cmpl r2,r3
171: beql 2f
172: movl $7,r4 /*reg no. */
173: jmp *badrtn /***** - r2 & r3 contains exp */
174: /*and observed values; r4 = prv reg no. */
175: 2:
176:
177: movl $10,r2
178: mtpr r2,$IPL
179: mfpr $IPL,r3
180: cmpl r2,r3
181: beql 1f
182: movl $8,r4 /*reg no. */
183: jmp *badrtn /***** - r2 & r3 contains exp */
184: /*and observed values; r4 = prv reg no. */
185: 1:
186: movl $21,r2
187: mtpr r2,$IPL
188: mfpr $IPL,r3
189: cmpl r2,r3
190: beql 2f
191: movl $8,r4 /*reg no. */
192: jmp *badrtn /***** - r2 & r3 contains exp */
193: /*and observed values; r4 = prv reg no. */
194: 2:
195: movl $31,r2
196: mtpr r2,$IPL
197: mfpr $IPL,r3
198: cmpl r2,r3
199: beql 2f
200: movl $8,r4 /*reg no. */
201: jmp *badrtn /***** - r2 & r3 contains exp */
202: /*and observed values; r4 = prv reg no. */
203: 2:
204:
205: movl $0xffffc,r2 /*PCB base register */
206: mtpr r2,$PCBB
207: mfpr $PCBB,r3
208: cmpl r2,r3
209: beql 1f
210: movl $14,r4 /*reg no. */
211: jmp *badrtn /***** - r2 & r3 contains exp */
212: /*and observed values; r4 = prv reg no. */
213: 1:
214: movl $0xeeeec,r2
215: mtpr r2,$PCBB
216: mfpr $PCBB,r3
217: cmpl r2,r3
218: beql 2f
219: movl $14,r4 /*reg no. */
220: jmp *badrtn /***** - r2 & r3 contains exp */
221: /*and observed values; r4 = prv reg no. */
222: /*LET US HOPE WE DON'T GET EXCEPTION DURING THIS TEST */
223:
224: 2:
1.1.1.2 ! root 225: mfpr $ISP,_savvec0 /* save value of ISP */
! 226: mtpr $0x1f,$IPL /* Set IPL to high */
1.1 root 227: movl $0x55555554,r2 /*int stck ptr register */
228: mtpr r2,$ISP
229: mfpr $ISP,r3
230: cmpl r2,r3
231: beql 1f
232: movl $15,r4 /*reg no. */
233: jmp *badrtn /***** - r2 & r3 contains exp */
234: /*and observed values; r4 = prv reg no. */
235: 1:
236: movl $0xaaaaaaac,r2
237: mtpr r2,$ISP
238: mfpr $ISP,r3
239: cmpl r2,r3
240: beql 2f
241: movl $15,r4 /*reg no. */
242: jmp *badrtn /***** - r2 & r3 contains exp */
243: /*and observed values; r4 = prv reg no. */
244: 2:
1.1.1.2 ! root 245: mtpr _savvec0,$ISP /* Restore ISP */
1.1 root 246: movl $0xaaaa,r2 /* Soft int summary register */
247: movl r2,*$SSR /* is a read only register */
248: mfpr $SISR,r3 /* funtional test no comparison */
249: cmpl r2,r3
250: beql 1f
251: movl $17,r4 /*reg no. */
252: jmp *badrtn /***** - r2 & r3 contains exp */
253: /*and observed values; r4 = prv reg no. */
254: 1:
255: movl $0x5555,r2
256: movl r2,*$SSR
257: mfpr $SISR,r3
258: cmpl r2,r3
259: beql 2f
260: movl $17,r4 /*reg no. */
261: jmp *badrtn /***** - r2 & r3 contains exp */
262: /*and observed values; r4 = prv reg no. */
263: 2:
264: clrl *$SSR
265: movl $0xfff000,r2
266: movab _iob4,r9
267: mtpr r9,$PCBB /* Init PCBB */
268: mtpr r2,$USP
269: mfpr $USP,r3
270: cmpl r2,r3
271: beql 2f
272: movl $20,r4 /*reg no. */
273: jmp *badrtn /***** - r2 & r3 contains exp */
274: /*and observed values; r4 = prv reg no. */
275: 2:
1.1.1.2 ! root 276: mfpr $KSP,_savvec9 /* Save KSP */
1.1 root 277: movl $0xffe000,r2
278: mtpr r2,$KSP
279: mfpr $KSP,r3
280: cmpl r2,r3
281: beql 2f
282: movl $19,r4 /*reg no. */
283: jmp *badrtn /***** - r2 & r3 contains exp */
284: /*and observed values; r4 = prv reg no. */
285: 2:
1.1.1.2 ! root 286: mtpr _savvec9,$KSP /* Restore KSP */
1.1 root 287: movl *$0x414,r12 /* Save original SCB value in R12 */
288: movl $0xeee000,r2
289: mtpr r2,$SCBB
290: mfpr $SCBB,r3
291: cmpl r2,r3
292: beql 2f
293: movl $18,r4 /*reg no. */
294: jmp *badrtn /***** - r2 & r3 contains exp */
295: /*and observed values; r4 = prv reg no. */
296: 2:
297: movl r12,*$0x414 /* Restore original SCB */
298: mtpr $0x1f,$IPL /* Set IPL to High */
299: movl $0x8000,r2
300: mtpr $0xf,$SIRR /* Set SIRR at level 15 */
301: mfpr $SISR,r3 /* Read software int. summary register */
302: cmpl $0x8000,r3 /* Should indicate int. pending at level 15 */
303: beql 2f
304: movl $16,r4 /*reg no. */
305: jmp *badrtn /***** - r2 & r3 contains exp */
306: /*and observed values; r4 = prv reg no. */
307: 2:
308: mtpr $0,$SIRR /* Clear SIRR */
309: clrl *$SSR
310: movl $0xaa,r2
311: mtpr r2,$DCK
312: movl *$TDCK,r3
313: cmpl r2,r3
314: beql 2f
315: movl $12,r4 /*reg no. */
316: jmp *badrtn /***** - r2 & r3 contains exp */
317: /*and observed values; r4 = prv reg no. */
318: 2:
319: movl $0xbb,r2
320: mtpr r2,$CCK
321: movl *$TCCK,r3
322: cmpl r2,r3
323: beql 2f
324: movl $13,r4 /*reg no. */
325: jmp *badrtn /***** - r2 & r3 contains exp */
326: /*and observed values; r4 = prv reg no. */
327: 2:
328:
329: movl $0xffe000,r2
330: movl $KSP,_cache1
331: mtpr $0xffe000,_cache1 /* Literal to cache */
332: mfpr $KSP,r3
333: cmpl r2,r3
334: beql 2f
335: movl $27,r4 /* R4 = which part of the test */
336: jmp *badrtn /***** - r2 & r3 contains exp */
337: 2:
338: movl $0xffa000,r2
339: movl r2,_cache2
340: mtpr _cache2,_cache1 /* Cache to cache */
341: mfpr $KSP,r3
342: cmpl r2,r3
343: beql 2f
344: movl $28,r4 /* R4 = which part of the test */
345: jmp *badrtn /***** - r2 & r3 contains exp */
346: 2:
347: movl $0xffb000,r2
348: movl r2,_cache2
349: movl $KSP,r11
350: mtpr _cache2,r11 /* Cache to register */
351: mfpr $KSP,r3
352: cmpl r2,r3
353: beql 2f
354: movl $29,r4 /* R4 = which part of the test */
355: jmp *badrtn /***** - r2 & r3 contains exp */
356: 2:
357: movl $0xffc000,r2
358: movl r2,_cache2
359: mtpr _cache2,$KSP /* Cache to literal */
360: mfpr $KSP,r3
361: cmpl r2,r3
362: beql 2f
363: movl $30,r4 /* R4 = which part of the test */
364: jmp *badrtn /***** - r2 & r3 contains exp */
365: 2:
1.1.1.2 ! root 366: mtpr $KSP,_savvec9 /* Restore KSP */
1.1 root 367: mfpr $MME,r9 /* The following MTPR/MFPR just to see */
368: mtpr $1,$TBIA /* if control return to program !! */
369: mtpr $_iob4,$TBIS
370: mfpr $DCB,r9
371: mtpr $4,$PADC
372: mtpr $_iob4,$P1DC
373: mtpr $2,$PACC
374: mtpr $0,$DCR
375: mfpr $DCR,r9
376: ret /* End of privileged registers test */
377:
378: .align 2
379: prvar: .long 0
380: _cache1:
381: .long 0
382: _cache2:
383: .long 0
384: _sreg: .long 0
385:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.