|
|
1.1 root 1:
2:
3:
4: /* TESTL (test long) test */
5:
6: /*Test name = tstl */
7: /*Description = */
8: /* This test checks "tstl" instruction to see that */
9: /* (1)Z, V, & C flags are set to zero (src < 0) & N = 1 */
10: /* (2)N, V, & C flags are set to zero (src = 0) & Z = 1 */
11: /* (3)all the flags are zero (src > 0). */
12: /* Register 1 (r1) & memory location tmloc(lebel) are used as */
13: /* src(source). */
14: /* */
15: /* Constants definition */
16: /* */
17: .set IPL,8
18: .set HIGH,31
19: .set ZERO,0
20: .set ONES,0xffffffff
21: .set N,8
22: .set Z,4
23: .set V,2
24: .set C,1
25: .set PSWMASK,0x003f
26: .set SRCB1,0xff
27: .set SRCW1,0xffff
28: .set SRCL1,0xffffffff
29: .set SRCB2,0
30: .set SRCW2,0
31: .set SRCL2,0
32: .set SRCB3,1
33: .set SRCW3,1
34: .set SRCL3,1
35:
36: .globl _tst_l
37: _tst_l:
38: callf $4,_setjmp /* save context for error return */
39: movab _tst_l,_stpc /* save subtest starting address */
40: movl $1,_subtst /* subtest number */
41: movl $1,_no_opr /* number of operands in use */
42: movl $SRCL1,_opr /* first operand in use */
43: 0: movl $SRCL1,r3 /*r3 = source */
44: bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */
45: tstl r3 /*execute "tstl" */
46: beql error1 /*error if Z = 1 */
47: bgeq error1 /*error if N = 0 */
48: bvs error1 /*error if V = 1 */
49: bcc error1 /*error if C = 0 */
50: jmp t2 /* if no error continue */
51: error1: movpsl _actual /* actual = psl it is incorrect */
52: bbs $0,_scoplp,0b /* if set scope loop on error */
53: movl $2,_ercode /* error code flag failure */
54: jmp *badrtn
55: /* */
56: /* Now try src = 0 */
57: /* */
58: t2:
59: bbs $0,_force_lp,0b /* if set loop on last subtest */
60: at2: callf $4,_setjmp /* save context for error return */
61: movab at2,_stpc /* save subtest starting address */
62: movl $2,_subtst /* subtest number */
63: movl $1,_no_opr /* number of operands in use */
64: movl $SRCL2,_opr /* first operand in use */
65: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
66: movl $SRCL2,r3 /*r3 = source */
67: bispsw $(N|V|C) /*turn neg, overflow, & carry ON */
68: tstl r3 /*execute "tstl" */
69: bneq error2 /*error if Z = 0 */
70: blss error2 /*error if N = 1 */
71: bvs error2 /*error if V = 1 */
72: bcc error2 /*error if C = 0 */
73: jmp t3 /* if no error continue */
74: error2: movpsl _actual /* actual = psl it is incorrect */
75: bbs $0,_scoplp,0b /* if set scope loop on error */
76: movl $2,_ercode /* error code flag failure */
77: jmp *badrtn
78: /* */
79: /* Now try src > 0 */
80: /* */
81:
82: t3:
83: bbs $0,_force_lp,0b /* if set loop on last subtest */
84: at3: callf $4,_setjmp /* save context for error return */
85: movab at3,_stpc /* save subtest starting address */
86: movl $3,_subtst /* subtest number */
87: movl $1,_no_opr /* number of operands in use */
88: movl $SRCL3,_opr /* first operand in use */
89: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
90: movl $SRCL3,r3 /*r3 = source */
91: bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */
92: tstl r3 /*execute "tstl" */
93: beql error3 /*error if Z = 1 */
94: blss error3 /*error if N = 1 */
95: bvs error3 /*error if V = 1 */
96: bcc error3 /*error if C = 0 */
97: jmp tstlm /* if no error continue */
98: error3: movpsl _actual /* actual = psl it is incorrect */
99: bbs $0,_scoplp,0b /* if set scope loop on error */
100: movl $2,_ercode /* error code flag failure */
101: jmp *badrtn
102:
103: /* */
104: /* Now use memory location(tmloc) instead of r1 */
105: /* */
106: tstlm:
107: bbs $0,_force_lp,0b /* if set loop on last subtest */
108: at4: callf $4,_setjmp /* save context for error return */
109: movab at4,_stpc /* save subtest starting address */
110: movl $4,_subtst /* subtest number */
111: movl $1,_no_opr /* number of operands in use */
112: movl $SRCL1,_opr /* first operand in use */
113: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
114: bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */
115: tstl $SRCL1 /*execute "tstl" immediate data */
116: beql error4 /*error if Z = 1 */
117: bgeq error4 /*error if N = 0 */
118: bvs error4 /*error if V = 1 */
119: bcc error4 /*error if C = 0 */
120: jmp t5 /* if no error continue */
121: error4: movpsl _actual /* actual = psl it is incorrect */
122: bbs $0,_scoplp,0b /* if set scope loop on error */
123: movl $2,_ercode /* error code flag failure */
124: jmp *badrtn
125: /* */
126: /* Now try src = 0 */
127: /* */
128: t5:
129: bbs $0,_force_lp,0b /* if set loop on last subtest */
130: at5: callf $4,_setjmp /* save context for error return */
131: movab at5,_stpc /* save subtest starting address */
132: movl $5,_subtst /* subtest number */
133: movl $1,_no_opr /* number of operands in use */
134: movl $SRCL2,_opr /* first operand in use */
135: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
136: movl $SRCL2,tmloc /*tmloc = source */
137: bispsw $(N|V|C) /*turn neg, overflow, & carry ON */
138: tstl tmloc /*execute "tstl" */
139: bneq error5 /*error if Z = 0 */
140: blss error5 /*error if N = 1 */
141: bvs error5 /*error if V = 1 */
142: bcc error5 /*error if C = 0 */
143: jmp t6 /* if no error continue */
144: error5: movpsl _actual /* actual = psl it is incorrect */
145: bbs $0,_scoplp,0b /* if set scope loop on error */
146: movl $2,_ercode /* error code flag failure */
147: jmp *badrtn
148: /* */
149: /* Now try src > 0 */
150: /* */
151:
152: t6:
153: bbs $0,_force_lp,0b /* if set loop on last subtest */
154: at6: callf $4,_setjmp /* save context for error return */
155: movab at6,_stpc /* save subtest starting address */
156: movl $6,_subtst /* subtest number */
157: movl $1,_no_opr /* number of operands in use */
158: movl $SRCL3,_opr /* first operand in use */
159: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
160: movl $SRCL3,tmloc /*tmloc = source */
161: bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */
162: tstl tmloc /*execute "tstl" */
163: beql error6 /*error if Z = 1 */
164: blss error6 /*error if N = 1 */
165: bvs error6 /*error if V = 1 */
166: bcc error6 /*error if C = 0 */
167: jmp aldn /* if no error continue */
168: error6: movpsl _actual /* actual = psl 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:
173: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
174: jmp *return /* good, return to monitor */
175:
176: /* */
177: /* Variables */
178: /* */
179: .align 2
180: tmloc: .space 4
181:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.