|
|
1.1 root 1: /* MOVB 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 _moveb
23: _moveb: /* MOVE MEMORY TO REGISTER */
24: callf $4,_setjmp /* save context for error return */
25: movab _moveb,_stpc /* save starting address of subtest */
26: movl $1,_subtst /* subtest number */
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: movb 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 /* error if not equal; z flag not set */
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 /* make sure source unchanged */
51: jeql movwrr /* error if not equal; z flag not set */
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: movb 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 /* error if not equal; z flag not set */
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: movb r4,r5
87: movb r5,r6 /* move r5 to r6 */
88: movb r6,r7 /* move r6 to r7 */
89: movb r7,r9 /* move r7 to r9 */
90: movl r9,oldval /* save value of source = 0x00000055 */
91: movb r9,r11 /* move r9 to r11 */
92: cmpl expval,r11 /* compare r11 to 0x00000055 */
93: jeql 1f /* error if not equal; z flag not set */
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 /* error if not equal; z flag not set */
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:
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: movb $-16,r3 /* move byte 0xf0 to r3 */
117: movl r3,expval /* save source */
118: bispsw $(Z|V)
119: bicpsw $(C|N)
120: movb 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 /* error if not equal; z flag not set */
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 /* error if not equal; z flag not set */
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: movb 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: cmpl $0x000000ff,tstloc /* compare tstloc to expected value */
168: jeql 1f /* error if not equal; z flag not set */
169: bbs $0,_scoplp,0b /* if set scope loop on error */
170: movl $1,_ercode /* error code data miscompare */
171: movl tstloc,_actual /* actual data */
172: movl $0x000000ff,_expected /* expected data */
173: jmp *badrtn
174: 1: bicpsw $Z
175: cmpl oprd,oldval /* make sure source unchanged */
176: jeql m5 /* error if not equal; z flag not set */
177: bbs $0,_scoplp,0b /* if set scope loop on error */
178: movl $3,_ercode /* error code operand miscompare */
179: movl oprd,_actual /* actual data */
180: movl oldval,_expected /* expected data */
181: jmp *badrtn
182:
183: m5:
184: bbs $0,_force_lp,0b /* if set loop on last subtest */
185: am5: callf $4,_setjmp /* save context for error return */
186: movab am5,_stpc /* save starting address of subtest */
187: movl $5,_subtst /* subtest number */
188: movl $1,_no_opr /* number of operands in use */
189: movl $0x55,_opr /* first operand */
190: 0: movl $0x55,tstloc
191: movl tstloc,oldval /* save source */
192: bispsw $(N|V|Z) /* set n,v,z flags */
193: bicpsw $C /* clear c flag */
194: movb tstloc+3,oprd+3
195: jlss error5 /* error if n flag set */
196: jeql error5 /* error if z flag set */
197: jvs error5 /* error if v flag set */
198: jcc error5 /* error if c flag not set */
199: jmp 1f
200: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */
201: bbs $0,_scoplp,0b /* if set scope loop on error */
202: movl $2,_ercode /* error code flag failure */
203: jmp *badrtn
204: 1: cmpl $0xff000055,oprd /* compare oprd to expected value */
205: jeql 1f /* error if not equal; z flag not set */
206: bbs $0,_scoplp,0b /* if set scope loop on error */
207: movl $1,_ercode /* error code data miscompare */
208: movl oprd,_actual /* actual data */
209: movl $0xff000055,_expected /* expected data */
210: jmp *badrtn
211: 1: bicpsw $Z
212: cmpl tstloc,oldval /* make sure source unchanged */
213: jeql movbdm /* error if not equal; z flag not set */
214: bbs $0,_scoplp,0b /* if set scope loop on error */
215: movl $3,_ercode /* error code operand miscompare */
216: movl tstloc,_actual /* actual data */
217: movl oldval,_expected /* expected data */
218: jmp *badrtn
219: movbdm: /* MOVE DATA TO MEMORY */
220: bbs $0,_force_lp,0b /* if set loop on last subtest */
221: am6: callf $4,_setjmp /* save context for error return */
222: movab am6,_stpc /* save starting address of subtest */
223: movl $6,_subtst /* subtest number */
224: movl $1,_no_opr /* number of operands in use */
225: movl $-1,_opr /* first operand */
226: 0: movl $0x0,tstloc
227: bispsw $(Z|V) /* set z,v flags */
228: bicpsw $(C|N) /* clear n,c flag */
229: movb $-1,tstloc+3
230: jgeq error6 /* error if n flag not set */
231: jeql error6 /* error if z flag set */
232: jvs error6 /* error if v flag set */
233: jcc error6 /* error if c flag not set */
234: jmp 1f
235: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */
236: bbs $0,_scoplp,0b /* if set scope loop on error */
237: movl $2,_ercode /* error code flag failure */
238: jmp *badrtn
239: 1: cmpl $0x000000ff,tstloc /* compare tstloc to expected value */
240: jeql movbrm /* error if not equal; z flag not set */
241: bbs $0,_scoplp,0b /* if set scope loop on error */
242: movl $1,_ercode /* error code data miscompare */
243: movl tstloc,_actual /* actual data */
244: movl $0x000000ff,_expected /* expected data */
245: jmp *badrtn
246:
247: movbrm: /* MOVE DATA TO MEMORY */
248: bbs $0,_force_lp,0b /* if set loop on last subtest */
249: am7: callf $4,_setjmp /* save context for error return */
250: movab am7,_stpc /* save starting address of subtest */
251: movl $7,_subtst /* subtest number */
252: movl $1,_no_opr /* number of operands in use */
253: movl $0xaa,_opr /* first operand */
254: 0: movl $0x0,tstloc
255: movl $0xaa,tmp /* load tmp to sign extend r5 contents */
256: movb tmp+3,r3
257: bispsw $(Z|V) /* set z,v flags */
258: bicpsw $(C|N) /* clear n,c flag */
259: movb r3,tstloc+3
260: jgeq error7 /* error if n flag not set */
261: jeql error7 /* error if z flag set */
262: jvs error7 /* error if v flag set */
263: jcc error7 /* error if c flag not set */
264: jmp 1f
265: error7: movpsl _actual /* actual = psl MAYBE it is incorrect */
266: bbs $0,_scoplp,0b /* if set scope loop on error */
267: movl $2,_ercode /* error code flag failure */
268: jmp *badrtn
269: 1: cmpl $0x000000aa,tstloc /* compare tstloc to expected value */
270: jeql movbdr /* error if not equal; z flag not set */
271: bbs $0,_scoplp,0b /* if set scope loop on error */
272: movl $1,_ercode /* error code data miscompare */
273: movl tstloc,_actual /* actual data */
274: movl $0x000000aa,_expected /* expected data */
275: jmp *badrtn
276:
277: movbdr: /* MOVE DATA TO REGISTER */
278: bbs $0,_force_lp,0b /* if set loop on last subtest */
279: am8: callf $4,_setjmp /* save context for error return */
280: movab am8,_stpc /* save starting address of subtest */
281: movl $8,_subtst /* subtest number */
282: movl $1,_no_opr /* number of operands in use */
283: movl $0x55,_opr /* first operand */
284: 0: movl $MASKHW,r5 /* initialize r5 = 0x55550000 */
285: bispsw $(Z|V|C) /* set z,v,c flags */
286: bicpsw $N /* clear n flag */
287: movb $-0x60,r5 /* move word 0xa0 to r5 */
288: jgeq error8 /* error if n flag not set */
289: jeql error8 /* error if z flag set */
290: jvs error8 /* error if v flag set */
291: jcc error8 /* error if c flag not set */
292: jmp 1f
293: error8: movpsl _actual /* actual = psl MAYBE it is incorrect */
294: bbs $0,_scoplp,0b /* if set scope loop on error */
295: movl $2,_ercode /* error code flag failure */
296: jmp *badrtn
297: 1: cmpl expr4,r5 /* compare r5 to 0xffffffa0 */
298: jeql aldn /* error if not equal; z flag not set */
299: bbs $0,_scoplp,0b /* if set scope loop on error */
300: movl $1,_ercode /* error code data miscompare */
301: movl r5,_actual /* actual data */
302: movl expr4,_expected /* expected data */
303: jmp *badrtn
304:
305: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
306: jmp *return
307:
308: /* test data */
309: .align 2
310: expval: .long 0x0
311: oldval: .long 0x0
312: negno: .long NEGNO
313: expr4: .long 0xffffffa0
314: tstloc: .long 0x0
315: oprd: .long 0x0
316: tmp: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.