|
|
1.1 root 1: /* MOVOB instruction test */
2: /* MOVL,MOVW 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,0xa0ffffff
16: .set NEGVAL,0xff0fffff
17: .set WORD,0xffff
18: .set BYTE,0xff
19: .set MASKHW,0x55550000
20: .set MASKLB,0x55
21: .set MASKB,0x55555500
22: .globl _movob
23: _movob: /* MOVE MEMORY TO REGISTER */
24: callf $4,_setjmp /* save context for error return */
25: movab _movob,_stpc /* save starting address of subtest */
26: movb $1,_subtst /* subtest no : Used MOVB to clear latch */
27: movl $1,_no_opr /* number of operands in use */
28: movl negno,_opr /* first operand */
29: 0: movl $MASKHW,r4 /* initialize r4 = 0x55550000 */
30: bispsw $(Z|V|C) /* set z,v,c flags */
31: bicpsw $N /* clear n flag */
32: movob negno,r4 /* move word 0xa0 to r4 */
33: jgeq error1 /* error if n flag not set */
34: jeql error1 /* error if z flag set */
35: jvs error1 /* error if v flag set */
36: jcc error1 /* error if c flag not set */
37: jmp 1f
38: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */
39: bbs $0,_scoplp,0b /* if set scope loop on error */
40: movl $2,_ercode /* error code flag failure */
41: jmp *badrtn
42: 1: cmpl expr4,r4 /* compare r4 to 0xffffffa0 */
43: jeql 1f
44: bbs $0,_scoplp,0b /* if set scope loop on error */
45: movl $1,_ercode /* error code data miscompare */
46: movl r4,_actual /* actual data */
47: movl expr4,_expected /* expected data */
48: jmp *badrtn
49: 1: bicpsw $Z
50: cmpl $NEGNO,negno
51: jeql movwrr
52: bbs $0,_scoplp,0b /* if set scope loop on error */
53: movl $3,_ercode /* error code operand miscompare */
54: movl negno,_actual /* actual data */
55: movl $NEGNO,_expected /* expected data */
56: jmp *badrtn
57: movwrr: /* MOVE REGISTER TO REGISTER */
58: bbs $0,_force_lp,0b /* if set loop on last subtest */
59: am2: callf $4,_setjmp /* save context for error return */
60: movab am2,_stpc /* save starting address of subtest */
61: movl $2,_subtst /* subtest number */
62: movl $1,_no_opr /* number of operands in use */
63: movl $MASKLB,_opr /* first operand */
64: 0: movl $MASKLB,r3 /* initialize r3 = 0x55 */
65: movl r3,expval
66: movl $0xffffffff,r4 /* initialize r4 = 0xffffffff */
67: bispsw $(Z|N|V) /* set Z,V,N flags */
68: bicpsw $C /* clear C flag */
69: movob r3,r4 /* move r3 to r4 */
70: jlss error2 /* error if n flag set */
71: jeql error2 /* error if z flag set */
72: jvs error2 /* error if v flag set */
73: jcc error2 /* error if c flag not set */
74: jmp 1f
75: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */
76: bbs $0,_scoplp,0b /* if set scope loop on error */
77: movl $2,_ercode /* error code flag failure */
78: jmp *badrtn
79: 1: cmpl r4,expval
80: jeql 1f
81: bbs $0,_scoplp,0b /* if set scope loop on error */
82: movl $1,_ercode /* error code data miscompare */
83: movl r4,_actual /* actual data */
84: movl expval,_expected /* expected data */
85: jmp *badrtn
86: 1: movob r4,r5 /* move r4 to r5 */
87: movob r5,r6 /* move r5 to r6 */
88: movob r6,r7 /* move r6 to r7 */
89: movob r7,r9 /* move r7 to r9 */
90: movl r9,oldval /* save value of source = 0x00000055 */
91: movob r9,r11 /* move r9 to r11 */
92: cmpl expval,r11 /* compare r11 to 0x00000055 */
93: jeql 1f
94: bbs $0,_scoplp,0b /* if set scope loop on error */
95: movl $1,_ercode /* error code data miscompare */
96: movl r11,_actual /* actual data */
97: movl expval,_expected /* expected data */
98: jmp *badrtn
99: 1: bicpsw $Z
100: cmpl oldval,r9 /* make sure source unchanged */
101: jeql m3
102: bbs $0,_scoplp,0b /* if set scope loop on error */
103: movl $1,_ercode /* error code data miscompare */
104: movl r9,_actual /* actual data */
105: movl oldval,_expected /* expected data */
106: jmp *badrtn
107:
108: m3: /* MOVE REGISTER TO REGISTER */
109: bbs $0,_force_lp,0b /* if set loop on last subtest */
110: am3: callf $4,_setjmp /* save context for error return */
111: movab am3,_stpc /* save starting address of subtest */
112: movl $3,_subtst /* subtest number */
113: movl $1,_no_opr /* number of operands in use */
114: movl $-16,_opr /* first operand */
115: 0: movl $0x0,r4
116: movob $-16,r3 /* move byte 0xf0 to r3 */
117: movl r3,expval /* save source */
118: bispsw $(Z|V)
119: bicpsw $(C|N)
120: movob r3,r4 /* move 0xfffffff0 to r4 */
121: jgeq error3 /* error if n flag not set */
122: jeql error3 /* error if z flag set */
123: jvs error3 /* error if v flag set */
124: jcc error3 /* error if c flag not set */
125: jmp 1f
126: error3: movpsl _actual /* actual = psl MAYBE it is incorrect */
127: bbs $0,_scoplp,0b /* if set scope loop on error */
128: movl $2,_ercode /* error code flag failure */
129: jmp *badrtn
130: 1: cmpl r4,expval
131: jeql 1f
132: bbs $0,_scoplp,0b /* if set scope loop on error */
133: movl $1,_ercode /* error code data miscompare */
134: movl r4,_actual /* actual data */
135: movl expval,_expected /* expected data */
136: jmp *badrtn
137: 1: bicpsw $Z
138: cmpl r3,expval
139: jeql movbmm
140: bbs $0,_scoplp,0b /* if set scope loop on error */
141: movl $3,_ercode /* error code operand miscompare */
142: movl r3,_actual /* actual data */
143: movl expval,_expected /* expected data */
144: jmp *badrtn
145: movbmm: /* MOVE MEMORY TO MEMORY */
146: bbs $0,_force_lp,0b /* if set loop on last subtest */
147: am4: callf $4,_setjmp /* save context for error return */
148: movab am4,_stpc /* save starting address of subtest */
149: movl $4,_subtst /* subtest number */
150: movl $1,_no_opr /* number of operands in use */
151: movl $0xff000000,_opr /* first operand */
152: 0: movl $0x0,tstloc
153: movl $0xff000000,oprd
154: movl oprd,oldval /* save source */
155: bispsw $(Z|V) /* set z,v flags */
156: bicpsw $(C|N) /* clear n,c flag */
157: movob oprd,tstloc+3
158: jgeq error4 /* error if n flag not set */
159: jeql error4 /* error if z flag set */
160: jvs error4 /* error if v flag set */
161: jcc error4 /* error if c flag not set */
162: jmp 1f
163: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */
164: bbs $0,_scoplp,0b /* if set scope loop on error */
165: movl $2,_ercode /* error code flag failure */
166: jmp *badrtn
167: 1:
168: andl2 $0xff,tstloc
169: cmpl $0xff,tstloc /* compare tstloc to expected value */
170: jeql 1f
171: bbs $0,_scoplp,0b /* if set scope loop on error */
172: movl $1,_ercode /* error code data miscompare */
173: movl tstloc,_actual /* actual data */
174: movl $0x0ff,_expected /* expected data */
175: jmp *badrtn
176: 1: bicpsw $Z
177: cmpl oprd,oldval /* make sure source unchanged */
178: jeql m5
179: bbs $0,_scoplp,0b /* if set scope loop on error */
180: movl $3,_ercode /* error code data miscompare */
181: movl oprd,_actual /* actual data */
182: movl oldval,_expected /* expected data */
183: jmp *badrtn
184:
185: m5: /* MOVE MEMORY TO MEMORY */
186: bbs $0,_force_lp,0b /* if set loop on last subtest */
187: am5: callf $4,_setjmp /* save context for error return */
188: movab am5,_stpc /* save starting address of subtest */
189: movl $5,_subtst /* subtest number */
190: movl $1,_no_opr /* number of operands in use */
191: movl $0x55,_opr /* first operand */
192: 0: movl $0x55,tstloc
193: movl tstloc,oldval /* save source */
194: movl $0,oprd /* clear destination */
195: bispsw $(N|V|Z) /* set n,v,z flags */
196: bicpsw $C /* clear c flag */
197: movob tstloc+3,oprd+3
198: jlss error5 /* error if n flag set */
199: jeql error5 /* error if z flag set */
200: jvs error5 /* error if v flag set */
201: jcc error5 /* error if c flag not set */
202: jmp 1f
203: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */
204: bbs $0,_scoplp,0b /* if set scope loop on error */
205: movl $2,_ercode /* error code flag failure */
206: jmp *badrtn
207: 1:
208: andl2 $0xff,oprd
209: cmpl $0x55,oprd /* compare oprd to expected value */
210: jeql 1f
211: bbs $0,_scoplp,0b /* if set scope loop on error */
212: movl $1,_ercode /* error code data miscompare */
213: movl oprd,_actual /* actual data */
214: movl $0x55,_expected /* expected data */
215: jmp *badrtn
216: 1: bicpsw $Z
217: cmpl tstloc,oldval /* make sure source unchanged */
218: jeql movobdm
219: bbs $0,_scoplp,0b /* if set scope loop on error */
220: movl $3,_ercode /* error code operand miscompare */
221: movl tstloc,_actual /* actual data */
222: movl oldval,_expected /* expected data */
223: jmp *badrtn
224: movobdm: /* MOVE DATA TO MEMORY */
225: bbs $0,_force_lp,0b /* if set loop on last subtest */
226: am6: callf $4,_setjmp /* save context for error return */
227: movab am6,_stpc /* save starting address of subtest */
228: movl $6,_subtst /* subtest number */
229: movl $1,_no_opr /* number of operands in use */
230: movl $-1,_opr /* first operand */
231: 0: movl $0x0,tstloc
232: bispsw $(Z|V) /* set z,v flags */
233: bicpsw $(C|N) /* clear n,c flag */
234: movob $-1,tstloc+3
235: jgeq error6 /* error if n flag not set */
236: jeql error6 /* error if z flag set */
237: jvs error6 /* error if v flag set */
238: jcc error6 /* error if c flag not set */
239: jmp 1f
240: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */
241: bbs $0,_scoplp,0b /* if set scope loop on error */
242: movl $2,_ercode /* error code flag failure */
243: jmp *badrtn
244: 1:
245: andl2 $0xff,tstloc
246: cmpl $0xff,tstloc /* compare tstloc to expected value */
247: jeql movbrm
248: bbs $0,_scoplp,0b /* if set scope loop on error */
249: movl $1,_ercode /* error code data miscompare */
250: movl tstloc,_actual /* actual data */
251: movl $0x000000ff,_expected /* expected data */
252: jmp *badrtn
253:
254: movbrm: /* MOVE DATA TO MEMORY */
255: bbs $0,_force_lp,0b /* if set loop on last subtest */
256: am7: callf $4,_setjmp /* save context for error return */
257: movab am7,_stpc /* save starting address of subtest */
258: movl $7,_subtst /* subtest number */
259: movl $1,_no_opr /* number of operands in use */
260: movl $0xaa,_opr /* first operand */
261: 0: movl $0x0,tstloc
262: movl $0xaa,tmp /* load tmp to sign extend r5 contents */
263: movb tmp+3,r3
264: bispsw $(Z|V) /* set z,v flags */
265: bicpsw $(C|N) /* clear n,c flag */
266: movob r3,tstloc+3
267: jgeq error7 /* error if n flag not set */
268: jeql error7 /* error if z flag set */
269: jvs error7 /* error if v flag set */
270: jcc error7 /* error if c flag not set */
271: jmp 1f
272: error7: movpsl _actual /* actual = psl MAYBE it is incorrect */
273: bbs $0,_scoplp,0b /* if set scope loop on error */
274: movl $2,_ercode /* error code flag failure */
275: jmp *badrtn
276: 1:
277: andl2 $0xff,tstloc
278: cmpl $0xaa,tstloc /* compare tstloc to expected value */
279: jeql movbdr
280: bbs $0,_scoplp,0b /* if set scope loop on error */
281: movl $1,_ercode /* error code data miscompare */
282: movl tstloc,_actual /* actual data */
283: movl $0x000000aa,_expected /* expected data */
284: jmp *badrtn
285:
286: movbdr: /* MOVE DATA TO REGISTER */
287: bbs $0,_force_lp,0b /* if set loop on last subtest */
288: am8: callf $4,_setjmp /* save context for error return */
289: movab am8,_stpc /* save starting address of subtest */
290: movl $8,_subtst /* subtest number */
291: movl $1,_no_opr /* number of operands in use */
292: movl $0xaa,_opr /* first operand */
293: 0: movl $MASKHW,r4 /* initialize r4 = 0x55550000 */
294: bispsw $(Z|V|C) /* set z,v,c flags */
295: bicpsw $N /* clear n flag */
296: movob $-0x60,r4 /* move word 0xa0 to r4 */
297: jgeq error8 /* error if n flag not set */
298: jeql error8 /* error if z flag set */
299: jvs error8 /* error if v flag set */
300: jcc error8 /* error if c flag not set */
301: jmp 1f
302: error8: movpsl _actual /* actual = psl MAYBE it is incorrect */
303: bbs $0,_scoplp,0b /* if set scope loop on error */
304: movl $2,_ercode /* error code flag failure */
305: jmp *badrtn
306: 1: cmpl expr4,r4 /* compare r4 to 0xffffffa0 */
307: jeql aldn
308: bbs $0,_scoplp,0b /* if set scope loop on error */
309: movl $1,_ercode /* error code data miscompare */
310: movl r4,_actual /* actual data */
311: movl expr4,_expected /* expected data */
312: jmp *badrtn
313:
314: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
315: jmp *return
316:
317: /* test data */
318: .align 2
319: expval: .long 0x0
320: oldval: .long 0x0
321: negno: .long NEGNO
322: expr4: .long 0xffffffa0
323: tstloc: .long 0x0
324: tmp: .long 0x0
325: oprd: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.