|
|
1.1 root 1: /* INCW instruction test */
2: /* Privilege registers */
3:
4: .set IPL,0x8
5: .set MAPEN,0x9
6: .set KSP,0x19
7:
8: /* PSL fields */
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:
16: /* constants */
17: .set DISABLE,0
18: .set ENABLE,1
19: .set MAXPOSL,0x7fffffff
20: .set MAXNEGL,0x80000000
21: .set MAXPOSW,0x7fff
22: .set MAXNEGW,0x8000
23: .set MAXPOSB,0x7f
24: .set MAXNEGB,0x80
25: .set ZERO,0
26: .set ONES,0xffffffff
27: .set HIGH,31 /* highest interrupt priority */
28:
29: .globl _inc_w
30: _inc_w:
31: callf $4,_setjmp /* save context for error return */
32: movab _inc_w,_stpc /* save subtest starting address */
33: movl $1,_subtst /* subtest number */
34: movl $1,_no_opr /* number of operands in use */
35: movl $0xfffffffe,_opr /* first operand */
36: 0: bicpsw $(IV|T) /* disable overflow,trace exceptions */
37: movl $0xfffffffe,r3 /* load r3 with -2 */
38: bispsw $(Z|V|C) /* set z,v,c flags */
39: bicpsw $N /* clear n flag */
40: incw r3 /* increment r8 */
41: jgeq error1 /* error if n flag not set */
42: jeql error1 /* error if z flag still set */
43: jvs error1 /* error if v flag still set */
44: jcs error1 /* error if c flag still set */
45: jmp 1f
46: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */
47: bbs $0,_scoplp,0b /* if set scope loop om error */
48: movl $2,_ercode /* error code flag failure */
49: jmp *badrtn
50: 1: cmpl $0xffffffff,r3 /* is r3 == -1 */
51: jeql step2 /* error if not equal */
52: bbs $0,_scoplp,0b /* if set scope loop om error */
53: movl $1,_ercode /* error code data miscompare */
54: movl r3,_actual /* actual data */
55: movl $0xffffffff,_expected /* expected data */
56: jmp *badrtn
57: step2:
58: bbs $0,_force_lp,0b /* if set loop on last subtest */
59: ai2: callf $4,_setjmp /* save context for error return */
60: movab ai2,_stpc /* save subtest starting address */
61: movl $2,_subtst /* subtest number */
62: movl $1,_no_opr /* number of operands in use */
63: movl $0xffffffff,_opr /* first operand */
64: 0: bispsw $(N|V) /* set n,v flags */
65: bicpsw $(Z|C) /* clear z,c flag */
66: incw r3 /* increment r3 */
67: jlss error2 /* error if n flag still set */
68: jvs error2 /* error if v flag still set */
69: jneq error2 /* error if z flag not set */
70: jcc error2 /* error if c flag not set */
71: jmp 1f
72: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */
73: bbs $0,_scoplp,0b /* if set scope loop om error */
74: movl $2,_ercode /* error code flag failure */
75: jmp *badrtn
76: 1: bicpsw $Z
77: cmpl $0x0,r3 /* is r3 == 0 */
78: jeql ovfl /* error if not equal */
79: bbs $0,_scoplp,0b /* if set scope loop om error */
80: movl $1,_ercode /* error code data miscompare */
81: movl r3,_actual /* actual data */
82: movl $0,_expected /* expected data */
83: jmp *badrtn
84: ovfl: /* To be tested in Phase 2 */
85: bbs $0,_force_lp,0b /* if set loop on last subtest */
86: ai3: callf $4,_setjmp /* save context for error return */
87: movab ai3,_stpc /* save subtest starting address */
88: movl $3,_subtst /* subtest number */
89: movl $1,_no_opr /* number of operands in use */
90: movl $0x7fffffff,_opr /* first operand */
91: 0: movl $0x7fffffff,r3 /* set r3 = 0x7fffffff */
92: bispsw $(Z|C|N) /* set n,z,c flags */
93: bicpsw $V /* clear v flags */
94: incw r3 /* increment r3 */
95: jvs error3 /* error if v flag not set */
96: jlss error3 /* error if n flag still set */
97: jeql error3 /* error if z flag still set */
98: jcs error3 /* error if c flag still set */
99: jmp 1f
100: error3: movpsl _actual /* actual = psl MAYBE it is incorrect */
101: bbs $0,_scoplp,0b /* if set scope loop om error */
102: movl $2,_ercode /* error code flag failure */
103: jmp *badrtn
104: 1: cmpl $MAXNEGL,r3 /* is r3 == 0x80000000 */
105: jeql incml /* error if not equal */
106: bbs $0,_scoplp,0b /* if set scope loop om error */
107: movl $1,_ercode /* error code data miscompare */
108: movl r3,_actual /* actual data */
109: movl $MAXNEGL,_expected /* expected data */
110: jmp *badrtn
111: incml: /* INCREMENT MEMORY */
112:
113: bbs $0,_force_lp,0b /* if set loop on last subtest */
114: ai4: callf $4,_setjmp /* save context for error return */
115: movab ai4,_stpc /* save subtest starting address */
116: movl $4,_subtst /* subtest number */
117: movl $1,_no_opr /* number of operands in use */
118: movl $0xfffeffff,_opr /* first operand */
119: 0: movl $0xfffeffff,tstloc /* load tstloc with -2 (word) */
120: bispsw $(Z|V|C) /* set z,v,c flags */
121: bicpsw $N /* clear n flag */
122: incw tstloc /* increment tstloc */
123: jgeq error4 /* error if n flag not set */
124: jeql error4 /* error if z flag still set */
125: jvs error4 /* error if v flag still set */
126: jcs error4 /* error if c flag still set */
127: jmp 1f
128: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */
129: bbs $0,_scoplp,0b /* if set scope loop om error */
130: movl $2,_ercode /* error code flag failure */
131: jmp *badrtn
132: 1: cmpl $0xffffffff,tstloc /* is tstloc == -1 */
133: jeql stp2 /* error if not equal */
134: bbs $0,_scoplp,0b /* if set scope loop om error */
135: movl $1,_ercode /* error code data miscompare */
136: movl tstloc,_actual /* actual data */
137: movl $0xffffffff,_expected /* expected data */
138: jmp *badrtn
139: stp2:
140: bbs $0,_force_lp,0b /* if set loop on last subtest */
141: ai5: callf $4,_setjmp /* save context for error return */
142: movab ai5,_stpc /* save subtest starting address */
143: movl $5,_subtst /* subtest number */
144: movl $1,_no_opr /* number of operands in use */
145: movl $0xffffffff,_opr /* first operand */
146: 0: bispsw $(N|V) /* set n,v flags */
147: bicpsw $(Z|C) /* clear z,c flag */
148: incw tstloc /* increment tstloc */
149: jlss error5 /* error if n flag still set */
150: jvs error5 /* error if v flag still set */
151: jneq error5 /* error if z flag not set */
152: jcc error5 /* error if c flag not set */
153: jmp 1f
154: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */
155: bbs $0,_scoplp,0b /* if set scope loop om error */
156: movl $2,_ercode /* error code flag failure */
157: jmp *badrtn
158: 1: bicpsw $Z
159: cmpl $0x0000ffff,tstloc /* is tstloc == 0x0000ffff */
160: jeql ovfl1 /* error if not equal */
161: bbs $0,_scoplp,0b /* if set scope loop om error */
162: movl $1,_ercode /* error code data miscompare */
163: movl tstloc,_actual /* actual data */
164: movl $0x0000ffff,_expected /* expected data */
165: jmp *badrtn
166: ovfl1:
167: bbs $0,_force_lp,0b /* if set loop on last subtest */
168: ai6: callf $4,_setjmp /* save context for error return */
169: movab ai6,_stpc /* save subtest starting address */
170: movl $6,_subtst /* subtest number */
171: movl $1,_no_opr /* number of operands in use */
172: movl $0x7fff3333,_opr /* first operand */
173: 0: movl $0x7fff3333,tstloc /* tstloc = 0x7fff3333 */
174: bispsw $(Z|C|N) /* set n,z,c flags */
175: bicpsw $V /* clear v flags */
176: incw tstloc /* increment tstloc */
177: jvc error6 /* error if v flag not set */
178: jlss error6 /* error if n flag still set */
179: jeql error6 /* error if z flag still set */
180: jcs error6 /* error if c flag still set */
181: jmp 1f
182: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */
183: bbs $0,_scoplp,0b /* if set scope loop om error */
184: movl $2,_ercode /* error code flag failure */
185: jmp *badrtn
186: 1: cmpl $0x80003333,tstloc /* is tstloc == 0x80003333 */
187: jeql aldn /* error if not equal */
188: bbs $0,_scoplp,0b /* if set scope loop om error */
189: movl $1,_ercode /* error code data miscompare */
190: movl tstloc,_actual /* actual data */
191: movl $0x0000ffff,_expected /* expected data */
192: jmp *badrtn
193:
194: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
195: jmp *return
196:
197: /* */
198: /* test data */
199: .align 2
200: tstloc: .long 0
201:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.