|
|
1.1 root 1: /* AOBLEQ istruction test */
2: /* Privilege registers */
3:
4: .set IPL,8
5: .set MAPEN,9
6: .set KSP,19
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 HIGH,31 /* highest interrupt priority */
20: .set LIMIT,0xffffff
21:
22: .globl _aobleq
23: _aobleq:
24: bicpsw $(IV|T) /* disable exceptions */
25: /* */
26: addob: /* INDEX < LIMIT */
27: callf $4,_setjmp /* save context for error return */
28: movab addob,_stpc /* save subtest address */
29: movl $1,_subtst /* subtest number */
30: movl $2,_no_opr /* number of operands */
31: movl $-1,_opr /* first operand */
32: movl $-3,_opr + 4 /* second operand */
33: 0: movl $-1,limit /* set limit = -1 */
34: movl $-3,index /* set index = -3 */
35: bispsw $(Z|V|C) /* set z,v,c flags */
36: bicpsw $N /* clear n flag */
37: aobleq limit,index,loop0 /* memory memory entry point */
38: movl $1,_ercode /* error code data miscompare did not branch */
39: bbs $0,_scoplp,0b /* if set scope loop on error */
40: movl index,_actual /* actual data */
41: movl $-2,_expected /* expected data */
42: jmp *badrtn
43: error1: movpsl _actual /* actual = psl */
44: bbs $0,_scoplp,0b /* if set scope loop on error */
45: movl $2,_ercode /* error code flag miscompare */
46: jmp *badrtn
47: error2: movl $3,_ercode /* error code operand was changed */
48: bbs $0,_scoplp,0b /* if set scope loop on error */
49: movl index,_actual /* actual data */
50: movl $-2,_expected /* expected data */
51: jmp *badrtn
52: .space 100 /* reserve 100 bytes */
53: loop0:
54: jlss error1
55: jcc error1
56: jvs error1
57: jeql error1
58:
59: cmpl $-2,index /* check index value */
60: jneq error2
61: bicpsw $Z
62: cmpl $-1,limit /* make sure limit unchanged */
63: jneq error2
64:
65: /* INDEX = LIMIT */
66: bbs $0,_force_lp,0b /* if set loop on last subtest */
67: a2: callf $4,_setjmp /* save context for error return */
68: movab a2,_stpc /* save subtest address */
69: movl $2,_subtst /* subtest number */
70: movl $2,_no_opr /* number of operands */
71: movl $0,_opr /* first operand */
72: movl $-1,_opr + 4 /* second operand */
73: 0: movl $0,r3 /* set limit in r3 = 0 */
74: movl $-1,r4 /* set index = -1 */
75: bispsw $(N|V|C) /* set n,v,c flags */
76: bicpsw $Z /* clear z flag */
77: aobleq r3,r4,loop1 /* register register entry point */
78: movl $1,_ercode /* error code data miscompare did not branch */
79: bbs $0,_scoplp,0b /* if set scope loop on error */
80: movl r4,_actual /* actual data */
81: movl $0,_expected /* expected data */
82: jmp *badrtn
83: error3: movpsl _actual /* actual = psl */
84: bbs $0,_scoplp,0b /* if set scope loop on error */
85: movl $2,_ercode /* error code flag miscompare */
86: jmp *badrtn
87: error4: movl $3,_ercode /* error code operand was changed */
88: bbs $0,_scoplp,0b /* if set scope loop on error */
89: movl r4,_actual /* actual data */
90: movl $0,_expected /* expected data */
91: jmp *badrtn
92: .space 100 /* reserve 100 bytes */
93: loop1:
94: jneq error3
95: jcs error3
96: jlss error3
97: jvs error3
98: cmpl $0,r4 /* check index value */
99: jneq error4
100: /* INDEX > LIMIT */
101: here:
102: bbs $0,_force_lp,0b /* if set loop on last subtest */
103: a3: callf $4,_setjmp /* save context for error return */
104: movab a3,_stpc /* save subtest address */
105: movl $3,_subtst /* subtest number */
106: movl $2,_no_opr /* number of operands */
107: movl $-1,_opr /* first operand */
108: movl $-1,_opr + 4 /* second operand */
109: 0: movl $-1,r3 /* set limit in r3 = -1 */
110: movl $-1,index /* set index = -1 */
111: bispsw $(N|Z|V|C) /* set all flags */
112: aobleq r3,index,loop2 /* register memory entry point */
113: jgeq error5
114: jeql error5
115: jvs error5
116: jcs error5
117: cmpl $0,index /* check index value */
118: jneq error6
119: jmp nxt
120: .space 90 /* reserve 100 bytes */
121: loop2:
122:
123: movl $1,_ercode /* error code data miscompare did branch */
124: bbs $0,_scoplp,0b /* if set scope loop on error */
125: movl index,_actual /* actual data */
126: movl $0,_expected /* expected data */
127: jmp *badrtn
128: error5: movpsl _actual /* actual = psl */
129: bbs $0,_scoplp,0b /* if set scope loop on error */
130: movl $2,_ercode /* error code flag miscompare */
131: jmp *badrtn
132: error6: movl $3,_ercode /* error code operand was changed */
133: bbs $0,_scoplp,0b /* if set scope loop on error */
134: movl index,_actual /* actual data */
135: movl $0,_expected /* expected data */
136: jmp *badrtn
137: /* CHECK V FLAG */
138: nxt:
139: bbs $0,_force_lp,0b /* if set loop on last subtest */
140: a4: callf $4,_setjmp /* save context for error return */
141: movab a4,_stpc /* save subtest address */
142: movl $4,_subtst /* subtest number */
143: movl $2,_no_opr /* number of operands */
144: movl $5,_opr /* first operand */
145: movl $0x7fffffff,_opr + 4 /* second operand */
146: 0: movl $5,limit /* set limit in limit = 5 */
147: movl $0x7fffffff,r4 /* set r4 to max. positive no */
148: bispsw $(Z|C|N) /* set z,c,n flags */
149: bicpsw $(V|N) /* clear v flags */
150: aobleq limit,r4,loop3 /* memory to register entry point */
151: jvs error7
152: jeql error7
153: jgeq error7
154: jcs error7
155: cmpl $0x80000000,r4 /* check index value */
156: jneq error8
157: bbs $0,_force_lp,0b /* if set loop on last subtest */
158: jmp *return /* stop test */
159:
160: .space 100
161: loop3:
162: movl $1,_ercode /* error code data miscompare did branch */
163: bbs $0,_scoplp,0b /* if set scope loop on error */
164: movl r4,_actual /* actual data */
165: movl $0x80000000,_expected /* expected data */
166: jmp *badrtn
167: error7: movpsl _actual /* actual = psl */
168: bbs $0,_scoplp,0b /* if set scope loop on error */
169: movl $2,_ercode /* error code flag miscompare */
170: jmp *badrtn
171: error8: movl $3,_ercode /* error code operand was changed */
172: bbs $0,_scoplp,0b /* if set scope loop on error */
173: movl r4,_actual /* actual data */
174: movl $0x80000000,_expected /* expected data */
175: jmp *badrtn
176:
177:
178:
179: /* test data */
180: .align 2
181: limit:
182: .long 0
183: index:
184: .long 0
185: add:
186: .long 0
187:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.