|
|
1.1 root 1: #* INSQUE, REMQUE instruction test */
2: #* Privilege registers */
3:
4: .set IPL,0x8
5: .set MAPEN,0x9
6: .set KSP,0x19
7: #* PSL fields */
8: .set IV,32
9: .set T,16
10: .set N,8
11: .set Z,4
12: .set V,2
13: .set C,1
14:
15: #* constants */
16: .set DISABLE,0
17: .set ENABLE,1
18: .set MAXPOSL,0x7fffffff
19: .set MAXNEGL,0x80000000
20: .set MAXPOSW,0x7fff
21: .set MAXNEGW,0x8000
22: .set MAXPOSB,0x7f
23: .set MAXNEGB,0x80
24: .set ZERO,0
25: .set ONES,0xffffffff
26: .set HIGH,31 /* highest interrupt priority */
27:
28:
29: .globl _insque
30: _insque:
31: # Init queue to initial state : has 3 entries
32: #
33: callf $4,_setjmp /* save context for error return */
34: movab _insque,_stpc /* save starting address of subtest */
35: movl $1,_subtst /* subtest number */
36: movl $1,_no_opr /* number of operands in use */
37: movab e4,_opr /* first operand */
38: 0: movab e1,qhead
39: movab e3,qtail
40: movab e2,e1
41: movab qhead,e1+4
42: movab e3,e2
43: movab e1,e2+4
44: movab qhead,e3
45: movab e2,e3+4
46:
47: # INSQUE at head of queue
48:
49: bicpsw $(IV|T) /* disable overflow,trace exceptions */
50: insque e4,qhead
51:
52: movl qhead,r3 /* Check forward link of queue header */
53: movab e4,r4
54: cmpl r3,r4
55: jeql 1f
56: bbs $0,_scoplp,0b /* if set scope loop on error */
57: movl $1,_ercode /* error code data miscompare */
58: movl r3,_actual /* actual data */
59: movl r4,_expected /* expected data */
60: jmp *badrtn
61:
62: 1: movl qtail,r3 /* Check backward link of queue header */
63: movab e3,r4
64: cmpl r3,r4
65: jeql 1f
66: bbs $0,_scoplp,0b /* if set scope loop on error */
67: movl $1,_ercode /* error code data miscompare */
68: movl r3,_actual /* actual data */
69: movl r4,_expected /* expected data */
70: jmp *badrtn
71:
72: 1: movl e4,r3 /* Check forward link of added entry */
73: movab e1,r4
74: cmpl r3,r4
75: jeql 1f
76: bbs $0,_scoplp,0b /* if set scope loop on error */
77: movl $1,_ercode /* error code data miscompare */
78: movl r3,_actual /* actual data */
79: movl r4,_expected /* expected data */
80: jmp *badrtn
81:
82: 1: movl e4+4,r3 /* Check backward link of added entry */
83: movab qhead,r4
84: cmpl r3,r4
85: jeql 1f
86: bbs $0,_scoplp,0b /* if set scope loop on error */
87: movl $1,_ercode /* error code data miscompare */
88: movl r3,_actual /* actual data */
89: movl r4,_expected /* expected data */
90: jmp *badrtn
91:
92: 1: movl e1,r3 /* Check forward link of previous 1st entry */
93: movab e2,r4
94: cmpl r3,r4
95: jeql 1f
96: bbs $0,_scoplp,0b /* if set scope loop on error */
97: movl $1,_ercode /* error code data miscompare */
98: movl r3,_actual /* actual data */
99: movl r4,_expected /* expected data */
100: jmp *badrtn
101:
102: 1: movl e1+4,r3 /* Check backward link of previous 1st entry */
103: movab e4,r4
104: cmpl r3,r4
105: jeql i2
106: bbs $0,_scoplp,0b /* if set scope loop on error */
107: movl $1,_ercode /* error code data miscompare */
108: movl r3,_actual /* actual data */
109: movl r4,_expected /* expected data */
110: jmp *badrtn
111:
112: # REMQUE at head of queue
113:
114: i2:
115: bbs $0,_force_lp,0b /* if set loop on last subtest */
116: ai2: callf $4,_setjmp /* save context for error return */
117: movab ai2,_stpc /* save starting address of subtest */
118: movl $2,_subtst /* subtest number */
119: movl $1,_no_opr /* number of operands in use */
120: movab e4,_opr /* first operand */
121: 0: remque e4
122:
123: movl qhead,r3 /* Check forward link of queue header */
124: movab e1,r4
125: cmpl r3,r4
126: jeql 1f
127: bbs $0,_scoplp,0b /* if set scope loop on error */
128: movl $1,_ercode /* error code data miscompare */
129: movl r3,_actual /* actual data */
130: movl r4,_expected /* expected data */
131: jmp *badrtn
132:
133: 1: movl qtail,r3 /* Check backward link of queue header */
134: movab e3,r4
135: cmpl r3,r4
136: jeql 1f
137: bbs $0,_scoplp,0b /* if set scope loop on error */
138: movl $1,_ercode /* error code data miscompare */
139: movl r3,_actual /* actual data */
140: movl r4,_expected /* expected data */
141: jmp *badrtn
142:
143: 1: movl e1,r3 /* Check forward link of preceeding entry */
144: movab e2,r4 /* after REMQUE */
145: cmpl r3,r4
146: jeql 1f
147: bbs $0,_scoplp,0b /* if set scope loop on error */
148: movl $1,_ercode /* error code data miscompare */
149: movl r3,_actual /* actual data */
150: movl r4,_expected /* expected data */
151: jmp *badrtn
152:
153: 1: movl e1+4,r3 /* Check backward link of preceeding entry */
154: movab qhead,r4 /* after REMQUE */
155: cmpl r3,r4
156: jeql i3
157: bbs $0,_scoplp,0b /* if set scope loop on error */
158: movl $1,_ercode /* error code data miscompare */
159: movl r3,_actual /* actual data */
160: movl r4,_expected /* expected data */
161: jmp *badrtn
162:
163: # INSQUE at tail of queue
164:
165: i3:
166: bbs $0,_force_lp,0b /* if set loop on last subtest */
167: ai3: callf $4,_setjmp /* save context for error return */
168: movab ai3,_stpc /* save starting address of subtest */
169: movl $3,_subtst /* subtest number */
170: movl $2,_no_opr /* number of operands in use */
171: movab e4,_opr /* first operand */
172: movab e3,_opr + 4 /* second operand */
173: 0: movab e3,r7
174: movab e4,r8
175: insque (r8),(r7)
176:
177: movl qhead,r3 /* Check forward link of queue header */
178: movab e1,r4
179: cmpl r3,r4
180: jeql 1f
181: bbs $0,_scoplp,0b /* if set scope loop on error */
182: movl $1,_ercode /* error code data miscompare */
183: movl r3,_actual /* actual data */
184: movl r4,_expected /* expected data */
185: jmp *badrtn
186:
187: 1: movl qtail,r3 /* Check backward link of queue header */
188: movab e4,r4
189: cmpl r3,r4
190: jeql 1f
191: bbs $0,_scoplp,0b /* if set scope loop on error */
192: movl $1,_ercode /* error code data miscompare */
193: movl r3,_actual /* actual data */
194: movl r4,_expected /* expected data */
195: jmp *badrtn
196:
197: 1: movl e4,r3 /* Check forward link of added entry */
198: movab qhead,r4
199: cmpl r3,r4
200: jeql 1f
201: bbs $0,_scoplp,0b /* if set scope loop on error */
202: movl $1,_ercode /* error code data miscompare */
203: movl r3,_actual /* actual data */
204: movl r4,_expected /* expected data */
205: jmp *badrtn
206:
207: 1: movl e4+4,r3 /* Check backward link of added entry */
208: movab e3,r4
209: cmpl r3,r4
210: jeql 1f
211: bbs $0,_scoplp,0b /* if set scope loop on error */
212: movl $1,_ercode /* error code data miscompare */
213: movl r3,_actual /* actual data */
214: movl r4,_expected /* expected data */
215: jmp *badrtn
216:
217: 1: movl e3,r3 /* Check forward link of preceeding entry */
218: movab e4,r4 /* of added entry when insert at tail */
219: cmpl r3,r4
220: jeql 1f
221: bbs $0,_scoplp,0b /* if set scope loop on error */
222: movl $1,_ercode /* error code data miscompare */
223: movl r3,_actual /* actual data */
224: movl r4,_expected /* expected data */
225: jmp *badrtn
226:
227: 1: movl e3+4,r3 /* Check backward link of preceeding entry */
228: movab e2,r4 /* of added entry when insert at tail */
229: cmpl r3,r4
230: jeql i4
231: bbs $0,_scoplp,0b /* if set scope loop on error */
232: movl $1,_ercode /* error code data miscompare */
233: movl r3,_actual /* actual data */
234: movl r4,_expected /* expected data */
235: jmp *badrtn
236:
237: # REMQUE at tail of queue
238:
239: i4:
240: bbs $0,_force_lp,0b /* if set loop on last subtest */
241: ai4: callf $4,_setjmp /* save context for error return */
242: movab ai4,_stpc /* save starting address of subtest */
243: movl $4,_subtst /* subtest number */
244: movl $1,_no_opr /* number of operands in use */
245: movab e4,_opr /* first operand */
246: 0: movab e4,r7
247: remque (r7)
248:
249: movl qhead,r3 /* Check forward link of queue header */
250: movab e1,r4
251: cmpl r3,r4
252: jeql 1f
253: bbs $0,_scoplp,0b /* if set scope loop on error */
254: movl $1,_ercode /* error code data miscompare */
255: movl r3,_actual /* actual data */
256: movl r4,_expected /* expected data */
257: jmp *badrtn
258:
259: 1: movl qtail,r3 /* Check backward link of queue header */
260: movab e3,r4
261: cmpl r3,r4
262: jeql 1f
263: bbs $0,_scoplp,0b /* if set scope loop on error */
264: movl $1,_ercode /* error code data miscompare */
265: movl r3,_actual /* actual data */
266: movl r4,_expected /* expected data */
267: jmp *badrtn
268:
269: 1: movl e3,r3 /* Check forward link of preceeding entry */
270: movab qhead,r4 /* after REMQUE */
271: cmpl r3,r4
272: jeql 1f
273: bbs $0,_scoplp,0b /* if set scope loop on error */
274: movl $1,_ercode /* error code data miscompare */
275: movl r3,_actual /* actual data */
276: movl r4,_expected /* expected data */
277: jmp *badrtn
278:
279: 1: movl e3+4,r3 /* Check backward link of preceeding entry */
280: movab e2,r4 /* after REMQUE */
281: cmpl r3,r4
282: jeql i5
283: bbs $0,_scoplp,0b /* if set scope loop on error */
284: movl $1,_ercode /* error code data miscompare */
285: movl r3,_actual /* actual data */
286: movl r4,_expected /* expected data */
287: jmp *badrtn
288: #
289: # INSQUE to empty queue : check Z flag
290: #
291: i5:
292: bbs $0,_force_lp,0b /* if set loop on last subtest */
293: ai5: callf $4,_setjmp /* save context for error return */
294: movab ai5,_stpc /* save starting address of subtest */
295: movl $5,_subtst /* subtest number */
296: movl $1,_no_opr /* number of operands in use */
297: movab qhead,_opr /* first operand */
298: 0: movab qhead,qhead /* Make queue empty */
299: movab qhead,qtail
300:
301: insque e4,qhead
302: jeql 1f
303: movpsl _actual /* actual = psl is incorrect */
304: bbs $0,_scoplp,0b /* if set scope loop on error */
305: movl $2,_ercode /* error code flag miscompare */
306: jmp *badrtn
307:
308: 1: movl qhead,r3 /* Check forward link of queue header */
309: movab e4,r4
310: cmpl r3,r4
311: jeql 1f
312: bbs $0,_scoplp,0b /* if set scope loop on error */
313: movl $1,_ercode /* error code data miscompare */
314: movl r3,_actual /* actual data */
315: movl r4,_expected /* expected data */
316: jmp *badrtn
317:
318: 1: movl qtail,r3 /* Check backward link of queue header */
319: movab e4,r4
320: cmpl r3,r4
321: jeql 1f
322: bbs $0,_scoplp,0b /* if set scope loop on error */
323: movl $1,_ercode /* error code data miscompare */
324: movl r3,_actual /* actual data */
325: movl r4,_expected /* expected data */
326: jmp *badrtn
327:
328: 1: movl e4,r3 /* Check forward link of added entry */
329: movab qhead,r4
330: cmpl r3,r4
331: jeql 1f
332: bbs $0,_scoplp,0b /* if set scope loop on error */
333: movl $1,_ercode /* error code data miscompare */
334: movl r3,_actual /* actual data */
335: movl r4,_expected /* expected data */
336: jmp *badrtn
337:
338: 1: movl e4+4,r3 /* Check backward link of added entry */
339: movab qhead,r4
340: cmpl r3,r4
341: jeql i6
342: bbs $0,_scoplp,0b /* if set scope loop on error */
343: movl $1,_ercode /* error code data miscompare */
344: movl r3,_actual /* actual data */
345: movl r4,_expected /* expected data */
346: jmp *badrtn
347: #
348: # REMQUE last entry the queue : check Z bit
349: #
350: i6:
351: bbs $0,_force_lp,0b /* if set loop on last subtest */
352: ai6: callf $4,_setjmp /* save context for error return */
353: movab ai6,_stpc /* save starting address of subtest */
354: movl $6,_subtst /* subtest number */
355: movl $1,_no_opr /* number of operands in use */
356: movab e4,_opr /* first operand */
357:
358: 0: remque e4
359: jeql 1f
360: movpsl _actual /* actual = psl is incorrect */
361: bbs $0,_scoplp,0b /* if set scope loop on error */
362: movl $2,_ercode /* error code flag miscompare */
363: jmp *badrtn
364:
365: 1: movl qhead,r3 /* Check forward link of queue header */
366: movab qhead,r4
367: cmpl r3,r4
368: jeql 1f
369: bbs $0,_scoplp,0b /* if set scope loop on error */
370: movl $1,_ercode /* error code data miscompare */
371: movl r3,_actual /* actual data */
372: movl r4,_expected /* expected data */
373: jmp *badrtn
374:
375: 1: movl qtail,r3 /* Check backward link of queue header */
376: movab qhead,r4
377: cmpl r3,r4
378: jeql i7
379: bbs $0,_scoplp,0b /* if set scope loop on error */
380: movl $1,_ercode /* error code data miscompare */
381: movl r3,_actual /* actual data */
382: movl r4,_expected /* expected data */
383: jmp *badrtn
384:
385: #
386: # REMQUE entry in an empty queue : check V flag
387: #
388: i7:
389: bbs $0,_force_lp,0b /* if set loop on last subtest */
390: ai7: callf $4,_setjmp /* save context for error return */
391: movab ai7,_stpc /* save starting address of subtest */
392: movl $7,_subtst /* subtest number */
393: movl $1,_no_opr /* number of operands in use */
394: movab qhead,_opr
395:
396: 0: remque qhead
397: jvs 1f /* error if V flag not set */
398: movpsl _actual /* actual = psl is incorrect */
399: bbs $0,_scoplp,0b /* if set scope loop on error */
400: movl $2,_ercode /* error code flag miscompare */
401: jmp *badrtn
402: 1: bicpsw $V
403:
404: movl qhead,r3 /* Check forward link of queue header */
405: movab qhead,r4
406: cmpl r3,r4
407: jeql 1f
408: bbs $0,_scoplp,0b /* if set scope loop on error */
409: movl $1,_ercode /* error code data miscompare */
410: movl r3,_actual /* actual data */
411: movl r4,_expected /* expected data */
412: jmp *badrtn
413:
414: 1: movl qtail,r3 /* Check backward link of queue header */
415: movab qhead,r4
416: cmpl r3,r4
417: jeql aldn
418: bbs $0,_scoplp,0b /* if set scope loop on error */
419: movl $1,_ercode /* error code data miscompare */
420: movl r3,_actual /* actual data */
421: movl r4,_expected /* expected data */
422: jmp *badrtn
423:
424: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
425: jmp *return
426:
427: # *********
428: # test data
429: .align 2
430:
431: qhead: /* Queue head */
432: .long e1
433: qtail: /* Queue tail */
434: .long e3 /* Initial queue has 3 entries */
435: .space 20*4
436:
437: e1:
438: .long e2 /* Forward link */
439: .long qhead /* Backward link */
440: .long 0xaaaaaaaa /* entry */
441: .space 20*4
442: e2:
443: .long e3 /* Forward link */
444: .long e1 /* Backward link */
445: .long 0xbbbbbbbb /* entry */
446: .space 20*4
447:
448: e3:
449: .long qhead /* Forward link */
450: .long e2 /* Backward link */
451: .long 0xcccccccc /* entry */
452: .space 20*4
453:
454: e4:
455: .long 0 /* Forward link */
456: .long 0 /* Backward link */
457: .long 0xdddddddd /* entry */
458: .space 20*4
459:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.