|
|
1.1 root 1: /* MOVOW instruction test */
2: /* MOVL have been tested prior to this test. */
3: /* constant definitions */
4:
5: .set HIGH,31
6: .set IPL,8
7: .set ZERO,0
8: .set ONES,0xffffffff
9: .set IV,32
10: .set T,16
11: .set N,8
12: .set Z,4
13: .set V,2
14: .set C,1
15: .set NEGNO,0xa000ffff
16: .set NEGVAL,0xff0fffff
17: .set WORD,0xffff
18: .set BYTE,0xff
19: .set MASKHW,0x55550000
20: .set MASKLW,0x5555
21: .set MASKB,0x55555500
22:
23: .globl _movow
24: _movow:
25:
26: callf $4,_setjmp /* save context for return from error */
27: movab _movow,_stpc /* save subtest starting address */
28: movw $1,_subtst /* subtest no : Used MOVOW to clear latch */
29: movl $1,_no_opr /* number of operands */
30: movl negno,_opr /* first operand in use */
31: 0:
32: bicpsw $(IV|T) /* disable overflow,trace exceptions */
33: movwmr: /* MOVE MEMORY TO REGISTER */
34: movl $MASKHW,r4 /* initialize r4 = 0x55550000 */
35: bispsw $(Z|V|C) /* set z,v,c flags */
36: bicpsw $N /* clear n flag */
37: movow negno,r4 /* move word 0xa000 to r4 */
38: jgeq error1 /* error if n flag not set */
39: jeql error1 /* error if z flag set */
40: jvs error1 /* error if v flag set */
41: jcc error1 /* error if c flag not set */
42: jmp 1f
43: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */
44: bbs $0,_scoplp,0b /* if set scope loop on error */
45: movl $2,_ercode /* error code flag failure */
46: jmp *badrtn
47: 1: cmpl expr5,r4 /* compare r4 to 0xffffa000 */
48: jeql 1f
49: bbs $0,_scoplp,0b /* if set scope loop on error */
50: movl $1,_ercode /* error code data miscompare */
51: movl r4,_actual /* actual data */
52: movl expr5,_expected /* expected data */
53: jmp *badrtn
54: 1: bicpsw $Z
55: cmpl $NEGNO,negno /* make sure source unchanged */
56: jeql movwrr
57: bbs $0,_scoplp,0b /* if set scope loop on error */
58: movl $3,_ercode /* error code operand was modiefied */
59: movl negno,_actual /* actual data */
60: movl $NEGNO,_expected /* expected data */
61: jmp *badrtn
62: movwrr: /* MOVE REGISTER TO REGISTER */
63: bbs $0,_force_lp,0b /* if set loop on last subtest */
64: m2: callf $4,_setjmp /* save context for return from error */
65: movab m2,_stpc /* save subtest starting address */
66: movl $2,_subtst /* subtest number */
67: movl $1,_no_opr /* number of operands */
68: movl $MASKLW,_opr /* first operand in use */
69: 0: movl $MASKLW,r3 /* initialize r3 = 0x5555 */
70: movl r3,expval
71: movl $0xffffffff,r4 /* initialize r4 = 0xffffffff */
72: bispsw $(Z|N|V) /* set Z,V,N flags */
73: bicpsw $C /* clear C flag */
74: movow r3,r4 /* move r3 to r4 */
75: jlss error2 /* error if n flag set */
76: jeql error2 /* error if z flag set */
77: jvs error2 /* error if v flag set */
78: jcc error2 /* error if c flag not set */
79: jmp 1f
80: error2: 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: cmpl r4,expval
85: jeql 1f
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 expval,_expected /* expected data */
90: jmp *badrtn
91: 1: movow r4,r5 /* move r4 to r5 */
92: movow r5,r6 /* move r5 to r6 */
93: movow r6,r7 /* move r6 to r7 */
94: movow r7,r9 /* move r7 to r9 */
95: movl r9,oldval /* save value of source = 0x00005555 */
96: movow r9,r11 /* move r9 to r11 */
97: cmpl expval,r11 /* compare r11 to 0x00005555 */
98: jneq error2 /* error if not equal; z flag not set */
99: jeql 1f
100: bbs $0,_scoplp,0b /* if set scope loop on error */
101: movl $1,_ercode /* error code data miscompare */
102: movl r4,_actual /* actual data */
103: movl expval,_expected /* expected data */
104: jmp *badrtn
105: 1: bicpsw $Z
106: cmpl oldval,r9 /* make sure source unchanged */
107: jeql m3
108: bbs $0,_scoplp,0b /* if set scope loop on error */
109: movl $3,_ercode /* error code operand was modiefied */
110: movl r9,_actual /* actual data */
111: movl oldval,_expected /* expected data */
112: jmp *badrtn
113:
114: m3: bbs $0,_force_lp,0b /* if set loop on last subtest */
115: am3: callf $4,_setjmp /* save context for return from error */
116: movab am3,_stpc /* save subtest starting address */
117: movl $3,_subtst /* subtest number */
118: movl $1,_no_opr /* number of operands */
119: movl negval,_opr /* first operand in use */
120: 0: movl $0x0,r4
121: movw negval,r3 /* move word 0xff0f to r3 */
122: movl r3,expval /* save source */
123: bispsw $(Z|V)
124: bicpsw $(C|N)
125: movow r3,r4 /* move 0xffffff0f to r4 */
126: jgeq error3 /* error if n flag not set */
127: jeql error3 /* error if z flag set */
128: jvs error3 /* error if v flag set */
129: jcc error3 /* error if c flag not set */
130: jmp 1f
131: error3: movpsl _actual /* actual = psl MAYBE it is incorrect */
132: bbs $0,_scoplp,0b /* if set scope loop on error */
133: movl $2,_ercode /* error code flag failure */
134: jmp *badrtn
135: 1: cmpl r4,expval
136: jeql 1f
137: bbs $0,_scoplp,0b /* if set scope loop on error */
138: movl $1,_ercode /* error code data miscompare */
139: movl r4,_actual /* actual data */
140: movl expval,_expected /* expected data */
141: jmp *badrtn
142: 1: bicpsw $Z
143: cmpl r3,expval
144: jeql movwmm
145: bbs $0,_scoplp,0b /* if set scope loop on error */
146: movl $3,_ercode /* error code operand was modiefied */
147: movl r3,_actual /* actual data */
148: movl expval,_expected /* expected data */
149: jmp *badrtn
150: movwmm: /* MOVE MEMORY TO MEMORY */
151: bbs $0,_force_lp,0b /* if set loop on last subtest */
152: m4: callf $4,_setjmp /* save context for return from error */
153: movab m4,_stpc /* save subtest starting address */
154: movl $4,_subtst /* subtest number */
155: movl $1,_no_opr /* number of operands */
156: movl $0xffff0000,_opr /* first operand in use */
157: 0: movl $0x0,tstloc
158: movl $0xffff0000,oprd
159: movl oprd,oldval /* save source */
160: bispsw $(Z|V) /* set z,v flags */
161: bicpsw $(C|N) /* clear n,c flag */
162: movow oprd,tstloc+2
163: jgeq error4 /* error if n flag not set */
164: jeql error4 /* error if z flag set */
165: jvs error4 /* error if v flag set */
166: jcc error4 /* error if c flag not set */
167: jmp 1f
168: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */
169: bbs $0,_scoplp,0b /* if set scope loop on error */
170: movl $2,_ercode /* error code flag failure */
171: jmp *badrtn
172: 1:
173: andl2 $0xffff,tstloc
174: cmpl $0xffff,tstloc /* compare tstloc to expected value */
175: jeql 1f
176: bbs $0,_scoplp,0b /* if set scope loop on error */
177: movl $1,_ercode /* error code data miscompare */
178: movl tstloc,_actual /* actual data */
179: movl $0xffff,_expected /* expected data */
180: jmp *badrtn
181: 1: bicpsw $Z
182: cmpl oprd,oldval /* make sure source unchanged */
183: jeql m5
184: bbs $0,_scoplp,0b /* if set scope loop on error */
185: movl $3,_ercode /* error code operand was modiefied */
186: movl oprd,_actual /* actual data */
187: movl oldval,_expected /* expected data */
188: jmp *badrtn
189:
190: m5: /* MOVE MEMORY TO MEMORY */
191: bbs $0,_force_lp,0b /* if set loop on last subtest */
192: am5: callf $4,_setjmp /* save context for return from error */
193: movab am5,_stpc /* save subtest starting address */
194: movl $5,_subtst /* subtest number */
195: movl $1,_no_opr /* number of operands */
196: movl $0x5555,_opr /* first operand in use */
197: 0: movl $0x5555,tstloc
198: movl tstloc,oldval /* save source */
199: bispsw $(N|V|Z) /* set n,v,z flags */
200: bicpsw $C /* clear c flag */
201: movow tstloc+2,oprd+2
202: jlss error5 /* error if n flag set */
203: jeql error5 /* error if z flag set */
204: jvs error5 /* error if v flag set */
205: jcc error5 /* error if c flag not set */
206: jmp 1f
207: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */
208: bbs $0,_scoplp,0b /* if set scope loop on error */
209: movl $2,_ercode /* error code flag failure */
210: jmp *badrtn
211: 1:
212: andl2 $0xffff,oprd
213: cmpl $0x5555,oprd /* compare oprd to expected value */
214: jeql 1f
215: bbs $0,_scoplp,0b /* if set scope loop on error */
216: movl $1,_ercode /* error code data miscompare */
217: movl oprd,_actual /* actual data */
218: movl $0x5555,_expected /* expected data */
219: jmp *badrtn
220: 1: bicpsw $Z
221: cmpl tstloc,oldval /* make sure source unchanged */
222: jeql movwdm
223: bbs $0,_scoplp,0b /* if set scope loop on error */
224: movl $3,_ercode /* error code operand was modiefied */
225: movl tstloc,_actual /* actual data */
226: movl oldval,_expected /* expected data */
227: jmp *badrtn
228: movwdm: /* MOVE DATA TO MEMORY */
229: bbs $0,_force_lp,0b /* if set loop on last subtest */
230: m6: callf $4,_setjmp /* save context for return from error */
231: movab m6,_stpc /* save subtest starting address */
232: movl $6,_subtst /* subtest number */
233: movl $1,_no_opr /* number of operands */
234: movl $0x5555,_opr /* first operand in use */
235: 0: movl $0x0,tstloc
236: movl $0xffff0000,oprd
237: movl oprd,oldval /* save source */
238: bispsw $(Z|V) /* set z,v flags */
239: bicpsw $(C|N) /* clear n,c flag */
240: movow $-0x0001,tstloc+2
241: jgeq error6 /* error if n flag not set */
242: jeql error6 /* error if z flag set */
243: jvs error6 /* error if v flag set */
244: jcc error6 /* error if c flag not set */
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:
251: andl2 $0xffff,tstloc
252: cmpl $0xffff,tstloc /* compare tstloc to expected value */
253: jeql 1f
254: bbs $0,_scoplp,0b /* if set scope loop on error */
255: movl $1,_ercode /* error code data miscompare */
256: movl tstloc,_actual /* actual data */
257: movl $0x0000ffff,_expected /* expected data */
258: jmp *badrtn
259: 1: bicpsw $Z
260: cmpl oprd,oldval /* make sure source unchanged */
261: jeql movwrm
262: bbs $0,_scoplp,0b /* if set scope loop on error */
263: movl $3,_ercode /* error code operand was modiefied */
264: movl oprd,_actual /* actual data */
265: movl oldval,_expected /* expected data */
266: jmp *badrtn
267: movwrm:
268: bbs $0,_force_lp,0b /* if set loop on last subtest */
269: m7: callf $4,_setjmp /* save context for return from error */
270: movab m7,_stpc /* save subtest starting address */
271: movl $7,_subtst /* subtest number */
272: movl $1,_no_opr /* number of operands */
273: movl $0xff0f,_opr /* first operand in use */
274: 0: movl $0xff0f,expval /* move word 0xff0f to expval */
275: movl $0xff0f,tmp /* save source */
276: movw tmp+2,r3
277: bispsw $(Z|V)
278: bicpsw $(C|N)
279: movow r3,tstloc+2 /* move 0xffffff0f to tstloc+2 */
280: jgeq error7 /* error if n flag not set */
281: jeql error7 /* error if z flag set */
282: jvs error7 /* error if v flag set */
283: jcc error7 /* error if c flag not set */
284: jmp 1f
285: error7: movpsl _actual /* actual = psl MAYBE it is incorrect */
286: bbs $0,_scoplp,0b /* if set scope loop on error */
287: movl $2,_ercode /* error code flag failure */
288: jmp *badrtn
289: 1:
290: andl2 $0xffff,tstloc
291: cmpl tstloc,expval
292: jeql movwdr
293: bbs $0,_scoplp,0b /* if set scope loop on error */
294: movl $1,_ercode /* error code data miscompare */
295: movl tstloc,_actual /* actual data */
296: movl expval,_expected /* expected data */
297: jmp *badrtn
298:
299: movwdr: /* MOVE DATA TO REGISTER */
300: bbs $0,_force_lp,0b /* if set loop on last subtest */
301: m8: callf $4,_setjmp /* save context for return from error */
302: movab m8,_stpc /* save subtest starting address */
303: movl $8,_subtst /* subtest number */
304: movl $1,_no_opr /* number of operands */
305: movl negval,_opr /* first operand in use */
306: 0: movl $0x0,r4
307: movow negval,r3 /* move word 0xff0f to r3 */
308: movl r3,expval /* save source */
309: bispsw $(Z|V)
310: bicpsw $(C|N)
311: movow $-0x00f1,r4 /* move 0xffffff0f to r4 */
312: jgeq error8 /* error if n flag not set */
313: jeql error8 /* error if z flag set */
314: jvs error8 /* error if v flag set */
315: jcc error8 /* error if c flag not set */
316: jmp 1f
317: error8: movpsl _actual /* actual = psl MAYBE it is incorrect */
318: bbs $0,_scoplp,0b /* if set scope loop on error */
319: movl $2,_ercode /* error code flag failure */
320: jmp *badrtn
321: 1: cmpl r4,expval
322: jeql 1f
323: bbs $0,_scoplp,0b /* if set scope loop on error */
324: movl $1,_ercode /* error code data miscompare */
325: movl r4,_actual /* actual data */
326: movl expval,_expected /* expected data */
327: jmp *badrtn
328: 1: bicpsw $Z
329: cmpl r3,expval
330: jeql aldn
331: bbs $0,_scoplp,0b /* if set scope loop on error */
332: movl $3,_ercode /* error code operand was modiefied */
333: movl r3,_actual /* actual data */
334: movl oldval,_expected /* expected data */
335: jmp *badrtn
336:
337:
338: aldn: bbs $0,_force_lp,0b /* if set loop on last error */
339: jmp *return /* good, return to monitor */
340:
341: /* test data */
342: .align 2
343: negval: .long NEGVAL /* 0xf0ffffff */
344: zero: .long 0x0
345: expval: .long 0x0
346: oldval: .long 0x0
347: negno: .long NEGNO
348: expr5: .long 0xffffa000
349: tstloc: .long 0x0
350: tmp: .long 0x0
351: oprd: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.