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