|
|
1.1 root 1: /* ORB2 (or byte 2 operand) test */
2:
3: /*Test name = orb2 */
4: /*Description = */
5: /* This test checks 'orb2' instruction as follows: */
6: /* destination = r1, memory location (dest) */
7: /* destination mask result Z N C V(flags) */
8: /* ___________ ____ _____ _____________ */
9: /* 0xaa 0xaa 0xaa 0 0 1 0 */
10: /* 0xaa 0x55 0xff 0 1 1 0 */
11: /* 0x00 0x00 0x00 1 0 x 0 */
12: /* */
13: /* */
14: /* */
15: /* */
16: /* Constants */
17: /* */
18: .set VALUEB,0x555555aa
19: .set VALUEW,0X5555aaaa
20: .set VALUEL,0xaaaaaaaa
21: .set VALUE3B,0X00000000
22: .set VALUE3W,VALUE3B
23: .set VALUE3L,VALUE3B
24: .set MASK1B,0xaa
25: .set MASK1W,0xaaaa
26: .set MASK1L,0xaaaaaaaa
27: .set MASK2B,0x55
28: .set MASK2W,0x5555
29: .set MASK2L,0x55555555
30: .set MASK3B,0x00
31: .set MASK3W,0x0000
32: .set MASK3L,0x00000000
33: .set EXP1B,0x555555aa
34: .set EXP1W,0x5555aaaa
35: .set EXP1L,0xaaaaaaaa
36: .set EXP2B,0x555555ff
37: .set EXP2W,0x5555ffff
38: .set EXP2L,0xffffffff
39: .set EXP3B,0x00000000
40: .set EXP3W,EXP3B
41: .set EXP3L,EXP3B
42:
43: /* */
44: /* */
45: /* */
46: /* Syst.s - constants */
47: /* */
48: .set IPL,8
49: .set HIGH,31
50: .set ZERO,0
51: .set ONES,0xffffffff
52: .set N,8
53: .set Z,4
54: .set V,2
55: .set C,1
56: .set T,16
57: .set IV,32
58: .set FU,64
59: .set DV,128
60: .set PSWMASK,0x003f
61:
62: .globl _or_b2
63: _or_b2:
64: callf $4,_setjmp /* save context for error return */
65: movab _or_b2,_stpc /* save starting address of subtest */
66: movl $1,_subtst /* subtest number */
67: movl $2,_no_opr /* number of operands in use */
68: movl $MASK1B,_opr /* first operand */
69: movl $VALUEB,_opr + 4 /* second operand */
70: 0:
71: bicpsw $PSWMASK /*turn overflow enable bit off */
72: movl $VALUEB,r4 /*set r4 = 0xaa */
73: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
74: orb2 $MASK1B,r4 /*mask r4 with 0xaa data to reg */
75: beql error1 /*error if Z = 1 */
76: blss error1 /*error if N = 1 */
77: bcc error1 /*error if C = 0 */
78: bvs error1 /*error if V = 1 */
79: jmp 1f
80: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */
81: bbs $0,_scoplp,0b /* if set scope loop on error */
82: movl $2,_ercode /* error code flag failure */
83: jmp *badrtn
84: 1: cmpl r4,$EXP1B /*if r4 <> expected, */
85: jeql o2 /* if correct continue */
86: bbs $0,_scoplp,0b /* if set scope loop on error */
87: movl $1,_ercode /* error code data miscompare */
88: movl r4,_actual /* actual data */
89: movl $EXP1B,_expected /* expected data */
90: jmp *badrtn
91:
92: /* Now try another mask(0x55) register to register */
93: /* */
94:
95: o2:
96: bbs $0,_force_lp,0b /* if set loop on last error */
97: ao2: callf $4,_setjmp /* save context for error return */
98: movab ao2,_stpc /* save starting address of subtest */
99: movl $2,_subtst /* subtest number */
100: movl $2,_no_opr /* number of operands in use */
101: movl $MASK2B,_opr /* first operand */
102: movl $VALUEB,_opr + 4 /* second operand */
103: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
104: movl $VALUEB,r4 /*set r4 = 0xaa */
105: movl $MASK2B,r3 /* load mask into reg 3 */
106: bispsw $(Z|V) /*overflow & zero bits ON */
107: orb2 r3,r4 /*mask r4 with 0x55 reg to reg */
108: beql error2 /*error if Z = 1 */
109: blss error2 /*error if N = 1 */
110: bcc error2 /*error if C = 0 */
111: bvs error2 /*error if V = 1 */
112: jmp 1f
113: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */
114: bbs $0,_scoplp,0b /* if set scope loop on error */
115: movl $2,_ercode /* error code flag failure */
116: jmp *badrtn
117: 1: cmpl r4,$EXP2B /*if r4 <> expected, */
118: jeql o3 /* if correct continue */
119: bbs $0,_scoplp,0b /* if set scope loop on error */
120: movl $1,_ercode /* error code data miscompare */
121: movl r4,_actual /* actual data */
122: movl $EXP2B,_expected /* expected data */
123: jmp *badrtn
124: /* */
125: /* Now try another mask(0x00) & dest(0x00) reg to mem */
126: /* */
127:
128: o3:
129: bbs $0,_force_lp,0b /* if set loop on last error */
130: ao3: callf $4,_setjmp /* save context for error return */
131: movab ao3,_stpc /* save starting address of subtest */
132: movl $3,_subtst /* subtest number */
133: movl $2,_no_opr /* number of operands in use */
134: movl $MASK3B,_opr /* first operand */
135: movl $VALUE3B,_opr + 4 /* second operand */
136: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
137: movl $VALUE3B,r3 /*set r3 = 0x00 */
138: movl $MASK3B,dest
139: bispsw $(N|V) /*overflow & negetive bits ON */
140: orb2 r3,dest /*mask r3 with 0x00 reg to mem */
141: bneq error3 /*error if Z = 0 */
142: blss error3 /*error if N = 1 */
143: bcc error3 /*error if C = 0 */
144: bvs error3 /*error if V = 1 */
145: jmp 1f
146: error3: movpsl _actual /* actual = psl MAYBE it is incorrect */
147: bbs $0,_scoplp,0b /* if set scope loop on error */
148: movl $2,_ercode /* error code flag failure */
149: jmp *badrtn
150: 1: cmpl dest,$EXP3B /*if dest <> expected, */
151: jeql orb2m /* if correct continue */
152: bbs $0,_scoplp,0b /* if set scope loop on error */
153: movl $1,_ercode /* error code data miscompare */
154: movl dest,_actual /* actual data */
155: movl $EXP3B,_expected /* expected data */
156: jmp *badrtn
157:
158: /* */
159: /* Now use memory location instead of register as destination */
160: /* */
161: orb2m:
162: bbs $0,_force_lp,0b /* if set loop on last error */
163: ao4: callf $4,_setjmp /* save context for error return */
164: movab ao4,_stpc /* save starting address of subtest */
165: movl $4,_subtst /* subtest number */
166: movl $2,_no_opr /* number of operands in use */
167: movl $-0x56,_opr /* first operand */
168: movl $VALUEB,_opr + 4 /* second operand */
169: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
170: movl $VALUEB,dest /*set dest = 0xaa */
171: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
172: orb2 $-0x56,dest+3 /*mask dest with 0xaa data to mem */
173: beql error4 /*error if Z = 1 */
174: bgeq error4 /*error if N = 0 */
175: bcc error4 /*error if C = 0 */
176: bvs error4 /*error if V = 1 */
177: jmp 1f
178: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */
179: bbs $0,_scoplp,0b /* if set scope loop on error */
180: movl $2,_ercode /* error code flag failure */
181: jmp *badrtn
182: 1: cmpl dest,$EXP1B /*if dest <> expected, */
183: jeql o5 /* if correct continue */
184: bbs $0,_scoplp,0b /* if set scope loop on error */
185: movl $1,_ercode /* error code data miscompare */
186: movl dest,_actual /* actual data */
187: movl $EXP1B,_expected /* expected data */
188: jmp *badrtn
189:
190: /* Now try another mask(0x55) mem to reg */
191: /* */
192:
193: o5:
194: bbs $0,_force_lp,0b /* if set loop on last error */
195: ao5: callf $4,_setjmp /* save context for error return */
196: movab ao5,_stpc /* save starting address of subtest */
197: movl $5,_subtst /* subtest number */
198: movl $2,_no_opr /* number of operands in use */
199: movl $VALUEB,_opr /* first operand */
200: movl $MASK2B,_opr + 4 /* second operand */
201: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
202: movl $VALUEB,dest /*set dest = 0xaa */
203: movl $MASK2B,r3 /* mask value in reg r3 */
204: bispsw $(Z|V) /*overflow & zero bits ON */
205: orb2 dest+3,r3 /*mask dest with 0x55 */
206: beql error5 /*error if Z = 1 */
207: bgeq error5 /*error if N = 0 */
208: bcc error5 /*error if C = 0 */
209: bvs error5 /*error if V = 1 */
210: jmp 1f
211: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */
212: bbs $0,_scoplp,0b /* if set scope loop on error */
213: movl $2,_ercode /* error code flag failure */
214: jmp *badrtn
215: 1: cmpl $EXP2L,r3 /*if dest <> expected, */
216: jeql o6 /* if correct continue */
217: bbs $0,_scoplp,0b /* if set scope loop on error */
218: movl $1,_ercode /* error code data miscompare */
219: movl r3,_actual /* actual data */
220: movl $EXP2L,_expected /* expected data */
221: jmp *badrtn
222:
223:
224: /* */
225: /* Now try another mask(0x00) & dest(0x00) mem to mem */
226: /* */
227:
228: o6:
229: bbs $0,_force_lp,0b /* if set loop on last error */
230: ao6: callf $4,_setjmp /* save context for error return */
231: movab ao6,_stpc /* save starting address of subtest */
232: movl $6,_subtst /* subtest number */
233: movl $2,_no_opr /* number of operands in use */
234: movl $VALUEB,_opr /* first operand */
235: movl $MASK2B,_opr + 4 /* second operand */
236: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
237: movl $VALUE3B,dest /*set dest = 0x00 */
238: movl $MASK3B,srce /* load mask into loc srce */
239: bispsw $(N|V) /*overflow & negetive bits ON */
240: orb2 srce,dest+3 /*mask dest with 0x00 mem to mem */
241: jneq error6 /*error if Z = 0 */
242: jlss error6 /*error if N = 1 */
243: jcc error6 /*error if C = 0 */
244: jvs error6 /*error if V = 1 */
245: jmp 1f
246: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */
247: bbs $0,_scoplp,0b /* if set scope loop on error */
248: movl $2,_ercode /* error code flag failure */
249: jmp *badrtn
250: 1: cmpl dest,$EXP3B /*if dest <> expected, */
251: jeql aldn /* if correct continue */
252: bbs $0,_scoplp,0b /* if set scope loop on error */
253: movl $1,_ercode /* error code data miscompare */
254: movl dest,_actual /* actual data */
255: movl $EXP3B,_expected /* expected data */
256: jmp *badrtn
257:
258: aldn: bbs $0,_force_lp,0b /* if set loop on last error */
259: jmp *return /* good, return to monitor */
260:
261: /* */
262: /* variables */
263: /* */
264: .align 2
265: dest: .space 4
266: .align 2
267: srce: .space 4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.