|
|
1.1 root 1:
2:
3: /* BBSSI (branch on bit set & set interlocked) test */
4: /* */
5: /* This test checks 'bbssi' instruction as follows: */
6: /* (1) forward/backward branch on bit set conditon */
7: /* (2) no branch on bit off condition & bit is set */
8: /* (3) no effect on condition codes */
9: /* */
10: /* */
11: /* Syst.s - Constants */
12: /* */
13: .set IPL,8
14: .set HIGH,31
15: .set ZERO,0
16: .set ONES,0xffffffff
17: .set N,8
18: .set Z,4
19: .set V,2
20: .set C,1
21: .set T,16
22: .set IV,32
23: .set FU,64
24: .set DV,128
25: .set PSWMASK,0xf
26:
27: .globl _bbssi
28: _bbssi:
29: callf $4,_setjmp /* save context for error return */
30: movab _bbssi,_stpc /* save subtest program counter */
31: movl $1,_subtst /* subtest number */
32: movl $1,_no_opr /* number of operands in use */
33: movl $0xfffffffe,_opr /* first operand */
34: 0: movl $0xfffffffe,r3 /* All bits are set except bit 0 */
35: bicpsw $PSWMASK
36: bispsw $(V|Z|C) /*these flags ON */
37: bbssi $0,r3,erc0 /*should not branch as bit 0 is OFF */
38: jneq errorc /*Z changed - error */
39: jlss errorc /*N changed - error */
40: jvc errorc /*V changed - error */
41: jcc errorc /*C changed - error */
42: cmpl $0xffffffff,r3 /*check that bit is set */
43: jeql nxt1
44: bbs $0,_scoplp,0b /* if set scope loop on error */
45: movl $1,_ercode /* error code data miscompare */
46: movl r3,_actual /* actual data */
47: movl $0xffffffff,_expected /* expected */
48: jmp *badrtn /*error - bit did not get set */
49: erc0:
50: bbs $0,_scoplp,0b /* if set scope loop on error */
51: movl $3,_ercode /* error code operand miscompare*/
52: movl r3,_actual /* actual data */
53: movl $0xffffffff,_expected /* expected */
54: jmp *badrtn /*error - branch taken with bit off; */
55:
56: errorc:
57: bbs $0,_scoplp,0b /* if set scope loop on error */
58: movl $2,_ercode /* error code flag failure */
59: movl r3,_actual /* actual data */
60: movl $0xffffffff,_expected /* expected */
61: jmp *badrtn /*error - error in flags */
62:
63: .space 12 /*dangerous area - don't come in */
64: nxt1:
65: bbs $0,_force_lp,0 /* if set loop on last subtest */
66: nxt: callf $4,_setjmp /* save context for error return */
67: movab nxt,_stpc /* save subtest program counter */
68: movl $2,_subtst /* subtest number */
69: movl $1,_no_opr /* number of operands in use */
70: movl $1,_opr /* first operand */
71: 0: movl $1,r3 /* All bit off except bit 0 */
72: bispsw $(Z|N|V|C) /*these flags ON */
73: bbssi $0,r3,nxt2 /*now branch forward as bit in ON */
74: bbs $0,_scoplp,0b /* if set scope loop on error */
75: movl $3,_ercode /* error code operand miscompare */
76: movl r3,_actual /* actual data */
77: movl $1,_expected /* expected */
78: jmp *badrtn /*error - did not branch with bit set; */
79: .space 400
80: nxt2:
81: movl $3,r1 /* subtest number */
82: cmpl $1,r3 /* Check if bit is set */
83: jeql nxt3
84: bbs $0,_scoplp,0b /* if set scope loop on error */
85: movl $1,_ercode /* error code data miscompare */
86: movl r3,_actual /* actual data */
87: movl $1,_expected /* expected */
88: jmp *badrtn /*error - bit did not get set */
89:
90: nxt3:
91: bbs $0,_force_lp,0 /* if set loop on last subtest */
92: nx: callf $4,_setjmp /* save context for error return */
93: movab nx,_stpc /* save subtest program counter */
94: movl $3,_subtst /* subtest number */
95: movl $1,_no_opr /* number of operands in use */
96: movl $0x7fffffff,_opr /* first operand */
97: 0: movl $0x7fffffff,r3 /* All bits are set except bit 31 */
98: bicpsw $PSWMASK
99: bispsw $(V|N|C) /*these flags ON */
100: bbssi $31,r3,erc1 /*should not branch as bit 31 is OFF */
101: jeql errord /*Z changed - error */
102: jgeq errord /*N changed - error */
103: jvc errord /*V changed - error */
104: jcc errord /*C changed - error */
105: cmpl $0xffffffff,r3 /*check that bit is set */
106: jeql nxt4
107: bbs $0,_scoplp,0b /* if set scope loop on error */
108: movl $1,_ercode /* error code data miscompare */
109: movl r3,_actual /* actual data */
110: movl $0x7fffffff,_expected /* expected */
111: jmp *badrtn /*error - bit did not get set */
112: erc1:
113: bbs $0,_scoplp,0b /* if set scope loop on error */
114: movl $3,_ercode /* error code operand miscompare */
115: movl r3,_actual /* actual data */
116: movl $0x7fffffff,_expected /* expected */
117: jmp *badrtn /*error - branch taken with bit off; */
118: errord:
119: bbs $0,_scoplp,0b /* if set scope loop on error */
120: movl $2,_ercode /* error code flag failure */
121: movl r3,_actual /* actual data */
122: movl $0x7fffffff,_expected /* expected */
123: jmp *badrtn /*error - error in flags */
124: nxt4:
125: bbs $0,_force_lp,0 /* if set loop on last subtest */
126: n: callf $4,_setjmp /* save context for error return */
127: movab n,_stpc /* save subtest program counter */
128: movl $4,_subtst /* subtest number */
129: movl $1,_no_opr /* number of operands in use */
130: movl $0x80000000,_opr /* first operand */
131: 0: movl $0x80000000,r3 /* All bit off except bit 31 */
132: bispsw $(Z|N|V|C) /*these flags ON */
133: bbssi $31,r3,nxt5 /*now branch forward as bit in ON */
134: bbs $0,_scoplp,0b /* if set scope loop on error */
135: movl $3,_ercode /* error code operand misompare */
136: movl r3,_actual /* actual data */
137: movl $0x80000000,_expected /* expected */
138: jmp *badrtn /*error - did not branch with bit set; */
139: .space 400
140: nxt5:
141: cmpl $0x80000000,r3 /* Check if bit still set ? */
142: jeql nxt6
143: bbs $0,_scoplp,0b /* if set scope loop on error */
144: movl $1,_ercode /* error code data miscompare */
145: movl r3,_actual /* actual data */
146: movl $0x80000000,_expected /* expected */
147: jmp *badrtn /*error - bit did not get set */
148:
149: /* */
150: /* Now use memory location (tloc) instead of register */
151: /* */
152:
153: nxt6:
154: bbs $0,_force_lp,0 /* if set loop on last subtest */
155: txn: callf $4,_setjmp /* save context for error return */
156: movab txn,_stpc /* save subtest program counter */
157: movl $5,_subtst /* subtest number */
158: movl $1,_no_opr /* number of operands in use */
159: movl $0xfffffffe,_opr /* first operand */
160: 0: movl $0xfffffffe,tloc /* All bits are set except bit 0 */
161: bicpsw $PSWMASK
162: bispsw $(V|Z|C) /*these flags ON */
163: bbssi $0,tloc,erc2 /*should not branch as bit 0 is OFF */
164: jneq errore /*Z changed - error */
165: jlss errore /*N changed - error */
166: jvc errore /*V changed - error */
167: jcc errore /*C changed - error */
168: cmpl $0xffffffff,tloc /* Check that bit is set */
169: jeql nxt7
170: bbs $0,_scoplp,0b /* if set scope loop on error */
171: movl $1,_ercode /* error code data miscompare */
172: movl tloc,_actual /* actual data */
173: movl $0xffffffff,_expected /* expected */
174: jmp *badrtn /*error - bit did not get set */
175: erc2:
176: bbs $0,_scoplp,0b /* if set scope loop on error */
177: movl $3,_ercode /* error code operand miscompare */
178: movl tloc,_actual /* actual data */
179: movl $0xffffffff,_expected /* expected */
180: jmp *badrtn /*error - branch taken with bit off; */
181:
182: errore:
183: bbs $0,_scoplp,0b /* if set scope loop on error */
184: movl $2,_ercode /* error flag miscompare */
185: movl tloc,_actual /* actual data */
186: movl $0xffffffff,_expected /* expected */
187: jmp *badrtn /*error - error in flags */
188:
189: nxt7:
190: bbs $0,_force_lp,0 /* if set loop on last subtest */
191: tx: callf $4,_setjmp /* save context for error return */
192: movab tx,_stpc /* save subtest program counter */
193: movl $6,_subtst /* subtest number */
194: movl $1,_no_opr /* number of operands in use */
195: movl $1,_opr /* first operand */
196: 0: movl $1,tloc /* All bit off except bit 0 */
197: bbssi $0,tloc,nxt8 /*now branch forward as bit in ON */
198: bbs $0,_scoplp,0b /* if set scope loop on error */
199: movl $3,_ercode /* error code operand miscompare */
200: movl tloc,_actual /* actual data */
201: movl $1,_expected /* expected */
202: jmp *badrtn /*error - did not branch with bit set; */
203: .space 400
204: nxt8:
205: cmpl $1,tloc /* Check if bit is set */
206: jeql nxt9
207: bbs $0,_scoplp,0b /* if set scope loop on error */
208: movl $1,_ercode /* error code data miscompare */
209: movl tloc,_actual /* actual data */
210: movl $1,_expected /* expected */
211: jmp *badrtn /*error - bit did not get set */
212: nxt9:
213: bbs $0,_force_lp,0 /* if set loop on last subtest */
214: tx9: callf $4,_setjmp /* save context for error return */
215: movab tx9,_stpc /* save subtest program counter */
216: movl $7,_subtst /* subtest number */
217: movl $1,_no_opr /* number of operands in use */
218: movl $0x7fffffff,_opr /* first operand */
219: 0: movl $0x7fffffff,tloc /* All bits are set except bit 31 */
220: bicpsw $PSWMASK
221: bispsw $(V|N|C) /*these flags ON */
222: bbssi $31,tloc,erc3 /*should not branch as bit 31 is OFF */
223: jeql errorf /*Z changed - error */
224: jgeq errorf /*N changed - error */
225: jvc errorf /*V changed - error */
226: jcc errorf /*C changed - error */
227: cmpl $0xffffffff,tloc /* Check that bit is set */
228: jeql nxt10
229: bbs $0,_scoplp,0b /* if set scope loop on error */
230: movl $1,_ercode /* error code data miscompare */
231: movl tloc,_actual /* actual data */
232: movl $0xffffffff,_expected /* expected */
233: jmp *badrtn /*error - bit did not get set */
234: erc3:
235: bbs $0,_scoplp,0b /* if set scope loop on error */
236: movl $3,_ercode /* error code operand miscompare */
237: movl tloc,_actual /* actual data */
238: movl $0x7ffffffff,_expected /* expected */
239: jmp *badrtn /*error - branch taken with bit off; */
240: errorf:
241: bbs $0,_scoplp,0b /* if set scope loop on error */
242: movl $2,_ercode /* error flag miscompare */
243: movl tloc,_actual /* actual data */
244: movl $0xffffffff,_expected /* expected */
245: jmp *badrtn /*error - error in flags */
246: nxt10:
247: bbs $0,_force_lp,0 /* if set loop on last subtest */
248: tx10: callf $4,_setjmp /* save context for error return */
249: movab tx10,_stpc /* save subtest program counter */
250: movl $8,_subtst /* subtest number */
251: movl $1,_no_opr /* number of operands in use */
252: movl $0x8000000,_opr /* first operand */
253: 0: movl $0x80000000,tloc /* All bit off except bit 31 */
254: bbssi $31,tloc,nxt11 /*now branch forward as bit in ON */
255: bbs $0,_scoplp,0b /* if set scope loop on error */
256: movl $3,_ercode /* error code operand miscompare */
257: movl tloc,_actual /* actual data */
258: movl $8000000,_expected /* expected */
259: jmp *badrtn /*error - did not branch with bit set; */
260: .space 400
261: nxt11:
262: movl $0xd,r1 /* subtest number */
263: cmpl $0x80000000,tloc /* Check if bit still set ? */
264: jeql nxt12
265: bbs $0,_scoplp,0b /* if set scope loop on error */
266: movl $1,_ercode /* error code data miscompare */
267: movl tloc,_actual /* actual data */
268: movl $0x80000000,_expected /* expected */
269: jmp *badrtn /*error - bit did not get set */
270:
271: nxt12:
272: bbs $0,_force_lp,0 /* if set loop on last subtest */
273: movl $0,_ercode /* no error all done */
274: jmp *return /*good , goto monitor */
275:
276: /* */
277: /* Variables */
278: /* */
279: .align 2
280: tloc: .long 0
281:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.