|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000c8c * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _cmpf
6: 6 00000000 _cmpf:
7: 7 000123B8 0000 .word L215
8: 8 000123BA # #include "fpp_defs.h"
9: 9 000123BA #
10: 10 000123BA #
11: 11 000123BA #
12: 12 000123BA # /***************************************************************************
13: 13 000123BA # *
14: 14 000123BA # * CMPF -COMPARE SGL ACCUMULATOR TO SGL OPERAND
15: 15 000123BA # *
16: 16 000123BA # *****************************************************************************/
17: 17 000123BA # cmpf()
18: 18 000123BA # {
19: 19 000123BA 11 57 jbr L217
20: 20 000123BC L218:
21: 21 000123BC # asm(".globl _cmpf_t");
22: 22 000123BC .globl _cmpf_t
23: 23 000123BC # asm("_cmpf_t:"); /* entry address */
24: 24 000123BC _cmpf_t:
25: 25 000123BC # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
26: 26 000123BC 1d effffffff6 01 cmpl _cycle,$1
27: 27 000123C3 21 15 jneq L219
28: 28 000123C5 5d efffffffed tstl _prt_hdrs
29: 29 000123CB 31 0d jeql L219
30: 30 000123CD # {
31: 31 000123CD # writes(" CMPF");
32: 32 000123CD .data 1
33: 33 00000c8c * L221:
34: 34 00000c8c * 20434D504600 .ascii " CMPF\0"
35: 35 00000c92 * .text
36: 36 000123CD dd 8f00000c8c pushl $L221
37: 37 000123D3 fe 08 efffffffde callf $8,_writes
38: 38 000123DA # }
39: 39 000123DA # cmpf_1(); /* test via registers */
40: 40 000123DA L219:
41: 41 000123DA fe 04 ef00000035 callf $4,_cmpf_1
42: 42 000123E1 # cmpf_2(); /* test via cache */
43: 43 000123E1 fe 04 ef00000248 callf $4,_cmpf_2
44: 44 000123E8 # cmpf_3(); /* register corruption test */
45: 45 000123E8 fe 04 ef00000455 callf $4,_cmpf_3
46: 46 000123EF # cmpf_4(); /* acc. corruption test */
47: 47 000123EF fe 04 ef00000628 callf $4,_cmpf_4
48: 48 000123F6 # if( !no_fpp_wcs ) {
49: 49 000123F6 5d efffffffbc tstl _no_fpp_wcs
50: 50 000123FC 21 0e jneq L226
51: 51 000123FE # cmpf_5(); /* pipelined entry test */
52: 52 000123FE fe 04 ef000007a3 callf $4,_cmpf_5
53: 53 00012405 # cmpf_6(); /* pipelined exit test */
54: 54 00012405 fe 04 ef000009b6 callf $4,_cmpf_6
55: 55 0001240C # };
56: 56 0001240C L226:
57: 57 0001240C # asm("jmp *return"); /* return to the test monitor */
58: 58 0001240C 71 ffffffffa6 jmp *return
59: 59 00012412 # }
60: 60 00012412 40 ret#2
61: 61 00012413 .set L215,0x0
62: 62 00012413 L217:
63: 63 00012413 11 a7 jbr L218
64: 64 00012415 .data
65: 65 00000c8c * .text
66: 66 00012415 00 .align 1
67: 67 00012416 .globl _cmpf_1
68: 68 00012416 _cmpf_1:
69: 69 00012416 0000 .word L229
70: 70 00012418 #
71: 71 00012418 #
72: 72 00012418 #
73: 73 00012418 # /****************************************************************************
74: 74 00012418 # *
75: 75 00012418 # * SUBTEST 1 - CMPF status test -register data
76: 76 00012418 # *
77: 77 00012418 # ****************************************************************************/
78: 78 00012418 # cmpf_1()
79: 79 00012418 # {
80: 80 00012418 13 0212 jbr L231
81: 81 0001241B L232:
82: 82 0001241B # force_loop = FALSE;
83: 83 0001241B 4d efffffff97 clrl _force_loop
84: 84 00012421 # subtest = 1;
85: 85 00012421 0d 01 efffffff90 movl $1,_subtest
86: 86 00012428 # index = 0;
87: 87 00012428 4d efffffff8a clrl _index
88: 88 0001242E # do
89: 89 0001242E L235:
90: 90 0001242E # {
91: 91 0001242E # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */
92: 92 0001242E 5c 0c efffffff83 50 mull3 $12,_index,r0
93: 93 00012436 0d e000000000 efffffff77 movl _cmpf_1_data(r0),_sgl_value_1
94: 94 00012441 # sgl_value_2 = cmpf_1_data[index].two;
95: 95 00012441 5c 0c efffffff70 50 mull3 $12,_index,r0
96: 96 00012449 0d e000000004 efffffff64 movl _cmpf_1_data+4(r0),_sgl_value_2
97: 97 00012454 # sgl_expected = cmpf_1_data[index].flag; /* get expected results */
98: 98 00012454 5c 0c efffffff5d 50 mull3 $12,_index,r0
99: 99 0001245C 0d e000000008 efffffff51 movl _cmpf_1_data+8(r0),_sgl_expected
100: 100 00012467 # status_index = 0; /* clear the status index */
101: 101 00012467 4d efffffff4b clrl _status_index
102: 102 0001246D # do
103: 103 0001246D L238:
104: 104 0001246D # {
105: 105 0001246D # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */
106: 106 0001246D 0d efffffff45 50 movl _status_index,r0
107: 107 00012474 0d 40efffffff3d movl _status_array[r0],_sgl_dummy1
108: efffffff38
109: 108 00012480 # /*
110: 109 00012480 # * If LOOP ON ERROR is set, this is the loop for this subtest.
111: 110 00012480 # * The force loop flag is set after the first error.
112: 111 00012480 # */
113: 112 00012480 # asm("_cmpf_1_lp1:");
114: 113 00012480 _cmpf_1_lp1:
115: 114 00012480 # asm("movl _sgl_value_1,r4"); /* move operand #1 to r4 */
116: 115 00012480 0d efffffff32 54 movl _sgl_value_1,r4
117: 116 00012487 # asm("movl _sgl_value_2,r5"); /* move operand #2 to r5 */
118: 117 00012487 0d efffffff2b 55 movl _sgl_value_2,r5
119: 118 0001248E # asm("ldf r4"); /* load the 1st operand */
120: 119 0001248E 06 54 ldf r4
121: 120 00012490 # asm("tstl _sgl_dummy1"); /* generate initial status */
122: 121 00012490 5d efffffff22 tstl _sgl_dummy1
123: 122 00012496 # asm("movpsl _init_psl"); /* save the initial status */
124: 123 00012496 cd efffffff1c movpsl _init_psl
125: 124 0001249C # asm("cmpf r5"); /* compare the operands */
126: 125 0001249C 36 55 cmpf r5
127: 126 0001249E # asm("movpsl _psl_val"); /* save the final status */
128: 127 0001249E cd efffffff14 movpsl _psl_val
129: 128 000124A4 # asm("stf _sgl_st_acc"); /* save the final acc */
130: 129 000124A4 26 efffffff0e stf _sgl_st_acc
131: 130 000124AA # if( force_loop ) /* loop? */
132: 131 000124AA 5d efffffff08 tstl _force_loop
133: 132 000124B0 31 02 jeql L239
134: 133 000124B2 # asm("brb _cmpf_1_lp1");; /* run the loop again */
135: 134 000124B2 11 cc brb _cmpf_1_lp1
136: 135 000124B4 L239:
137: 136 000124B4 # exp_psl = init_psl; /* get the initial PSL */
138: 137 000124B4 0d effffffefe effffffef9 movl _init_psl,_exp_psl
139: 138 000124BF # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
140: 139 000124BF ac 88f3 effffffef1 andl2 $-13,_exp_psl
141: 140 000124C7 # if( sgl_expected == ZERO )
142: 141 000124C7 1d effffffeeb 04 cmpl _sgl_expected,$4
143: 142 000124CE 21 07 jneq L240
144: 143 000124D0 # exp_psl |= PSL_Z; /* expect the ZERO bit set */
145: 144 000124D0 8c 04 effffffee1 orl2 $4,_exp_psl
146: 145 000124D7 # if( sgl_expected == NEGATIVE )
147: 146 000124D7 L240:
148: 147 000124D7 1d effffffedb 08 cmpl _sgl_expected,$8
149: 148 000124DE 21 07 jneq L241
150: 149 000124E0 # exp_psl |= PSL_N; /* expect the NEG bit set */
151: 150 000124E0 8c 08 effffffed1 orl2 $8,_exp_psl
152: 151 000124E7 # if( psl_val != exp_psl ) { /* COMPARE the values */
153: 152 000124E7 L241:
154: 153 000124E7 1d effffffecb effffffec6 cmpl _psl_val,_exp_psl
155: 154 000124F2 21 03 13 0107 jeql L242
156: 155 000124F7 # errcnt++; /* bump the error count */
157: 156 000124F7 6d effffffebb incl _errcnt
158: 157 000124FD # if ( prt_error ) {
159: 158 000124FD 5d effffffeb5 tstl _prt_error
160: 159 00012503 21 03 13 00d3 jeql L243
161: 160 00012508 # writes(" \n"); /* start a new print line */
162: 161 00012508 .data 1
163: 162 00000c92 * L244:
164: 163 00000c92 * 200A00 .ascii " \12\0"
165: 164 00000c95 * .text
166: 165 00012508 dd 8f00000c92 pushl $L244
167: 166 0001250E fe 08 effffffea3 callf $8,_writes
168: 167 00012515 # writes("cycle: ");
169: 168 00012515 .data 1
170: 169 00000c95 * L245:
171: 170 00000c95 * 6379636C653A2000 .ascii "cycle: \0"
172: 171 00000c9d * .text
173: 172 00012515 dd 8f00000c95 pushl $L245
174: 173 0001251B fe 08 effffffe96 callf $8,_writes
175: 174 00012522 # writed( cycle );
176: 175 00012522 dd effffffe90 pushl _cycle
177: 176 00012528 fe 08 effffffe89 callf $8,_writed
178: 177 0001252F # writes(" CMPF test ");
179: 178 0001252F .data 1
180: 179 00000c9d * L247:
181: 180 00000c9d * 2020434D50462074657374200 .ascii " CMPF test \0"
182: 0
183: 181 00000caa * .text
184: 182 0001252F dd 8f00000c9d pushl $L247
185: 183 00012535 fe 08 effffffe7c callf $8,_writes
186: 184 0001253C # writed( test_no );
187: 185 0001253C dd effffffe76 pushl _test_no
188: 186 00012542 fe 08 effffffe6f callf $8,_writed
189: 187 00012549 # writes(", subtest 1 (Reg. Data) - BAD FINAL PSL\n");
190: 188 00012549 .data 1
191: 189 00000caa * L248:
192: 190 00000caa * 2C20737562746573742031202 .ascii ", subtest 1 (Reg. Data) - BAD FINAL PSL\12\0"
193: 85265672E204461746129202D
194: 204241442046494E414C20505
195: 34C0A00
196: 191 00000cd3 * .text
197: 192 00012549 dd 8f00000caa pushl $L248
198: 193 0001254F fe 08 effffffe62 callf $8,_writes
199: 194 00012556 # print_cmpf_data();
200: 195 00012556 fe 04 ef000009fb callf $4,_print_cmpf_data
201: 196 0001255D # writes(", data index = ");
202: 197 0001255D .data 1
203: 198 00000cd3 * L250:
204: 199 00000cd3 * 2C20206461746120696E64657 .ascii ", data index = \0"
205: 8203D2000
206: 200 00000ce4 * .text
207: 201 0001255D dd 8f00000cd3 pushl $L250
208: 202 00012563 fe 08 effffffe4e callf $8,_writes
209: 203 0001256A # writed( index );
210: 204 0001256A dd effffffe48 pushl _index
211: 205 00012570 fe 08 effffffe41 callf $8,_writed
212: 206 00012577 # writec('\n');
213: 207 00012577 dd 0a pushl $10
214: 208 00012579 fe 08 effffffe38 callf $8,_writec
215: 209 00012580 # writes("initial PSL = ");
216: 210 00012580 .data 1
217: 211 00000ce4 * L252:
218: 212 00000ce4 * 696E697469616C2050534C203 .ascii "initial PSL = \0"
219: D2000
220: 213 00000cf3 * .text
221: 214 00012580 dd 8f00000ce4 pushl $L252
222: 215 00012586 fe 08 effffffe2b callf $8,_writes
223: 216 0001258D # write32h( init_psl );
224: 217 0001258D dd effffffe25 pushl _init_psl
225: 218 00012593 fe 08 effffffe1e callf $8,_write32h
226: 219 0001259A # writes(", final PSL = ");
227: 220 0001259A .data 1
228: 221 00000cf3 * L254:
229: 222 00000cf3 * 2C2066696E616C2050534C203 .ascii ", final PSL = \0"
230: D2000
231: 223 00000d02 * .text
232: 224 0001259A dd 8f00000cf3 pushl $L254
233: 225 000125A0 fe 08 effffffe11 callf $8,_writes
234: 226 000125A7 # write32h( psl_val );
235: 227 000125A7 dd effffffe0b pushl _psl_val
236: 228 000125AD fe 08 effffffe04 callf $8,_write32h
237: 229 000125B4 # writes(", expected PSL = ");
238: 230 000125B4 .data 1
239: 231 00000d02 * L255:
240: 232 00000d02 * 2C20657870656374656420505 .ascii ", expected PSL = \0"
241: 34C203D2000
242: 233 00000d14 * .text
243: 234 000125B4 dd 8f00000d02 pushl $L255
244: 235 000125BA fe 08 effffffdf7 callf $8,_writes
245: 236 000125C1 # write32h( exp_psl );
246: 237 000125C1 dd effffffdf1 pushl _exp_psl
247: 238 000125C7 fe 08 effffffdea callf $8,_write32h
248: 239 000125CE # writes("\n");
249: 240 000125CE .data 1
250: 241 00000d14 * L256:
251: 242 00000d14 * 0A00 .ascii "\12\0"
252: 243 00000d16 * .text
253: 244 000125CE dd 8f00000d14 pushl $L256
254: 245 000125D4 fe 08 effffffddd callf $8,_writes
255: 246 000125DB # }
256: 247 000125DB # if ( halt_flg )
257: 248 000125DB L243:
258: 249 000125DB 5d effffffdd7 tstl _halt_flg
259: 250 000125E1 31 09 jeql L257
260: 251 000125E3 # cmpf_er_halt( BAD_PSL_HLT ); /* halt on the error */
261: 252 000125E3 dd 03 pushl $3
262: 253 000125E5 fe 08 ef000009a8 callf $8,_cmpf_er_halt
263: 254 000125EC # if ( loop_on_err ) {
264: 255 000125EC L257:
265: 256 000125EC 5d effffffdc6 tstl _loop_on_err
266: 257 000125F2 31 0a jeql L259
267: 258 000125F4 # force_loop = TRUE; /* set the force loop flag */
268: 259 000125F4 0d 01 effffffdbd movl $1,_force_loop
269: 260 000125FB # asm("brw _cmpf_1_lp1"); /* and loop on the error */
270: 261 000125FB 13 fe82 brw _cmpf_1_lp1
271: 262 000125FE # } /* end of loop on error */
272: 263 000125FE # } /* end of compare error */
273: 264 000125FE L259:
274: 265 000125FE # } while ( ++status_index < 3 ); /* end of PSL WHILE loop */
275: 266 000125FE L242:
276: 267 000125FE L237:
277: 268 000125FE 6d effffffdb4 incl _status_index
278: 269 00012604 0d effffffdae 50 movl _status_index,r0
279: 270 0001260B 1d 50 03 cmpl r0,$3
280: 271 0001260E 81 03 13 fe5a jlss L238
281: 272 00012613 L236:
282: 273 00012613 # } while( index++ < max_cmpf_1_index);/* end of data loop */
283: 274 00012613 L234:
284: 275 00012613 0d effffffd9f 50 movl _index,r0
285: 276 0001261A 6d effffffd98 incl _index
286: 277 00012620 1d 50 effffffd91 cmpl r0,_max_cmpf_1_index
287: 278 00012627 81 03 13 fe02 jlss L235
288: 279 0001262C L233:
289: 280 0001262C # } /* end of subtest 1 */
290: 281 0001262C 40 ret#2
291: 282 0001262D .set L229,0x0
292: 283 0001262D L231:
293: 284 0001262D 13 fdeb jbr L232
294: 285 00012630 .data
295: 286 00000c8c * .text
296: 287 00012630 .align 1
297: 288 00012630 .globl _cmpf_2
298: 289 00012630 _cmpf_2:
299: 290 00012630 0000 .word L260
300: 291 00012632 #
301: 292 00012632 #
302: 293 00012632 #
303: 294 00012632 # /****************************************************************************
304: 295 00012632 # *
305: 296 00012632 # * SUBTEST 2 - CMPF status test -cache data
306: 297 00012632 # *
307: 298 00012632 # ****************************************************************************/
308: 299 00012632 # cmpf_2()
309: 300 00012632 # {
310: 301 00012632 13 020c jbr L262
311: 302 00012635 L263:
312: 303 00012635 # force_loop = FALSE;
313: 304 00012635 4d effffffd7d clrl _force_loop
314: 305 0001263B # subtest = 2;
315: 306 0001263B 0d 02 effffffd76 movl $2,_subtest
316: 307 00012642 # index = 0;
317: 308 00012642 4d effffffd70 clrl _index
318: 309 00012648 # do
319: 310 00012648 L266:
320: 311 00012648 # {
321: 312 00012648 # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */
322: 313 00012648 5c 0c effffffd69 50 mull3 $12,_index,r0
323: 314 00012650 0d e000000000 effffffd5d movl _cmpf_1_data(r0),_sgl_value_1
324: 315 0001265B # sgl_value_2 = cmpf_1_data[index].two;
325: 316 0001265B 5c 0c effffffd56 50 mull3 $12,_index,r0
326: 317 00012663 0d e000000004 effffffd4a movl _cmpf_1_data+4(r0),_sgl_value_2
327: 318 0001266E # sgl_expected = cmpf_1_data[index].flag;/* get expected results */
328: 319 0001266E 5c 0c effffffd43 50 mull3 $12,_index,r0
329: 320 00012676 0d e000000008 effffffd37 movl _cmpf_1_data+8(r0),_sgl_expected
330: 321 00012681 # status_index = 0; /* clear the status index */
331: 322 00012681 4d effffffd31 clrl _status_index
332: 323 00012687 # do
333: 324 00012687 L269:
334: 325 00012687 # {
335: 326 00012687 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */
336: 327 00012687 0d effffffd2b 50 movl _status_index,r0
337: 328 0001268E 0d 40effffffd23 movl _status_array[r0],_sgl_dummy1
338: effffffd1e
339: 329 0001269A # /*
340: 330 0001269A # * If LOOP ON ERROR is set, this is the loop for this subtest.
341: 331 0001269A # * The force loop flag is set after the first error.
342: 332 0001269A # */
343: 333 0001269A # asm("_cmpf_2_lp1:");
344: 334 0001269A _cmpf_2_lp1:
345: 335 0001269A # asm("ldf _sgl_value_1"); /* load the 1st operand */
346: 336 0001269A 06 effffffd18 ldf _sgl_value_1
347: 337 000126A0 # asm("tstl _sgl_dummy1"); /* generate initial status */
348: 338 000126A0 5d effffffd12 tstl _sgl_dummy1
349: 339 000126A6 # asm("movpsl _init_psl"); /* save the initial status */
350: 340 000126A6 cd effffffd0c movpsl _init_psl
351: 341 000126AC # asm("cmpf _sgl_value_2"); /* compare the operands */
352: 342 000126AC 36 effffffd06 cmpf _sgl_value_2
353: 343 000126B2 # asm("movpsl _psl_val"); /* save the final status */
354: 344 000126B2 cd effffffd00 movpsl _psl_val
355: 345 000126B8 # asm("stf _sgl_st_acc"); /* save the final acc */
356: 346 000126B8 26 effffffcfa stf _sgl_st_acc
357: 347 000126BE # if( force_loop ) /* loop? */
358: 348 000126BE 5d effffffcf4 tstl _force_loop
359: 349 000126C4 31 02 jeql L270
360: 350 000126C6 # asm("brb _cmpf_2_lp1");; /* run the loop again */
361: 351 000126C6 11 d2 brb _cmpf_2_lp1
362: 352 000126C8 L270:
363: 353 000126C8 # exp_psl = init_psl; /* get the initial PSL */
364: 354 000126C8 0d effffffcea effffffce5 movl _init_psl,_exp_psl
365: 355 000126D3 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
366: 356 000126D3 ac 88f3 effffffcdd andl2 $-13,_exp_psl
367: 357 000126DB # if( sgl_expected == ZERO )
368: 358 000126DB 1d effffffcd7 04 cmpl _sgl_expected,$4
369: 359 000126E2 21 07 jneq L271
370: 360 000126E4 # exp_psl |= PSL_Z; /* expect the ZERO bit set */
371: 361 000126E4 8c 04 effffffccd orl2 $4,_exp_psl
372: 362 000126EB # if( sgl_expected == NEGATIVE )
373: 363 000126EB L271:
374: 364 000126EB 1d effffffcc7 08 cmpl _sgl_expected,$8
375: 365 000126F2 21 07 jneq L272
376: 366 000126F4 # exp_psl |= PSL_N; /* expect the NEG bit set */
377: 367 000126F4 8c 08 effffffcbd orl2 $8,_exp_psl
378: 368 000126FB # if( psl_val != exp_psl ) { /* COMPARE the values */
379: 369 000126FB L272:
380: 370 000126FB 1d effffffcb7 effffffcb2 cmpl _psl_val,_exp_psl
381: 371 00012706 21 03 13 0107 jeql L273
382: 372 0001270B # errcnt++; /* bump the error count */
383: 373 0001270B 6d effffffca7 incl _errcnt
384: 374 00012711 # if ( prt_error ) {
385: 375 00012711 5d effffffca1 tstl _prt_error
386: 376 00012717 21 03 13 00d3 jeql L274
387: 377 0001271C # writes(" \n"); /* start a new print line */
388: 378 0001271C .data 1
389: 379 00000d16 * L275:
390: 380 00000d16 * 200A00 .ascii " \12\0"
391: 381 00000d19 * .text
392: 382 0001271C dd 8f00000d16 pushl $L275
393: 383 00012722 fe 08 effffffc8f callf $8,_writes
394: 384 00012729 # writes("cycle: ");
395: 385 00012729 .data 1
396: 386 00000d19 * L276:
397: 387 00000d19 * 6379636C653A2000 .ascii "cycle: \0"
398: 388 00000d21 * .text
399: 389 00012729 dd 8f00000d19 pushl $L276
400: 390 0001272F fe 08 effffffc82 callf $8,_writes
401: 391 00012736 # writed( cycle );
402: 392 00012736 dd effffffc7c pushl _cycle
403: 393 0001273C fe 08 effffffc75 callf $8,_writed
404: 394 00012743 # writes(" CMPF test ");
405: 395 00012743 .data 1
406: 396 00000d21 * L277:
407: 397 00000d21 * 2020434D50462074657374200 .ascii " CMPF test \0"
408: 0
409: 398 00000d2e * .text
410: 399 00012743 dd 8f00000d21 pushl $L277
411: 400 00012749 fe 08 effffffc68 callf $8,_writes
412: 401 00012750 # writed( test_no );
413: 402 00012750 dd effffffc62 pushl _test_no
414: 403 00012756 fe 08 effffffc5b callf $8,_writed
415: 404 0001275D # writes(", subtest 2 (Cache Data) - BAD FINAL PSL\n");
416: 405 0001275D .data 1
417: 406 00000d2e * L278:
418: 407 00000d2e * 2C20737562746573742032202 .ascii ", subtest 2 (Cache Data) - BAD FINAL PSL\12\0"
419: 8436163686520446174612920
420: 2D204241442046494E414C205
421: 0534C0A00
422: 408 00000d58 * .text
423: 409 0001275D dd 8f00000d2e pushl $L278
424: 410 00012763 fe 08 effffffc4e callf $8,_writes
425: 411 0001276A # print_cmpf_data();
426: 412 0001276A fe 04 ef000007e7 callf $4,_print_cmpf_data
427: 413 00012771 # writes(", data index = ");
428: 414 00012771 .data 1
429: 415 00000d58 * L279:
430: 416 00000d58 * 2C20206461746120696E64657 .ascii ", data index = \0"
431: 8203D2000
432: 417 00000d69 * .text
433: 418 00012771 dd 8f00000d58 pushl $L279
434: 419 00012777 fe 08 effffffc3a callf $8,_writes
435: 420 0001277E # writed( index );
436: 421 0001277E dd effffffc34 pushl _index
437: 422 00012784 fe 08 effffffc2d callf $8,_writed
438: 423 0001278B # writec('\n');
439: 424 0001278B dd 0a pushl $10
440: 425 0001278D fe 08 effffffc24 callf $8,_writec
441: 426 00012794 # writes("initial PSL = ");
442: 427 00012794 .data 1
443: 428 00000d69 * L280:
444: 429 00000d69 * 696E697469616C2050534C203 .ascii "initial PSL = \0"
445: D2000
446: 430 00000d78 * .text
447: 431 00012794 dd 8f00000d69 pushl $L280
448: 432 0001279A fe 08 effffffc17 callf $8,_writes
449: 433 000127A1 # write32h( init_psl );
450: 434 000127A1 dd effffffc11 pushl _init_psl
451: 435 000127A7 fe 08 effffffc0a callf $8,_write32h
452: 436 000127AE # writes(", final PSL = ");
453: 437 000127AE .data 1
454: 438 00000d78 * L281:
455: 439 00000d78 * 2C2066696E616C2050534C203 .ascii ", final PSL = \0"
456: D2000
457: 440 00000d87 * .text
458: 441 000127AE dd 8f00000d78 pushl $L281
459: 442 000127B4 fe 08 effffffbfd callf $8,_writes
460: 443 000127BB # write32h( psl_val );
461: 444 000127BB dd effffffbf7 pushl _psl_val
462: 445 000127C1 fe 08 effffffbf0 callf $8,_write32h
463: 446 000127C8 # writes(", expected PSL = ");
464: 447 000127C8 .data 1
465: 448 00000d87 * L282:
466: 449 00000d87 * 2C20657870656374656420505 .ascii ", expected PSL = \0"
467: 34C203D2000
468: 450 00000d99 * .text
469: 451 000127C8 dd 8f00000d87 pushl $L282
470: 452 000127CE fe 08 effffffbe3 callf $8,_writes
471: 453 000127D5 # write32h( exp_psl );
472: 454 000127D5 dd effffffbdd pushl _exp_psl
473: 455 000127DB fe 08 effffffbd6 callf $8,_write32h
474: 456 000127E2 # writes("\n");
475: 457 000127E2 .data 1
476: 458 00000d99 * L283:
477: 459 00000d99 * 0A00 .ascii "\12\0"
478: 460 00000d9b * .text
479: 461 000127E2 dd 8f00000d99 pushl $L283
480: 462 000127E8 fe 08 effffffbc9 callf $8,_writes
481: 463 000127EF # }
482: 464 000127EF # if ( halt_flg )
483: 465 000127EF L274:
484: 466 000127EF 5d effffffbc3 tstl _halt_flg
485: 467 000127F5 31 09 jeql L284
486: 468 000127F7 # cmpf_er_halt( BAD_PSL_HLT ); /* halt on the error */
487: 469 000127F7 dd 03 pushl $3
488: 470 000127F9 fe 08 ef00000794 callf $8,_cmpf_er_halt
489: 471 00012800 # if ( loop_on_err ) {
490: 472 00012800 L284:
491: 473 00012800 5d effffffbb2 tstl _loop_on_err
492: 474 00012806 31 0a jeql L285
493: 475 00012808 # force_loop = TRUE; /* set the force loop flag */
494: 476 00012808 0d 01 effffffba9 movl $1,_force_loop
495: 477 0001280F # asm("brw _cmpf_2_lp1"); /* and loop on the error */
496: 478 0001280F 13 fe88 brw _cmpf_2_lp1
497: 479 00012812 # } /* end of loop on error */
498: 480 00012812 # } /* end of compare error */
499: 481 00012812 L285:
500: 482 00012812 # } while ( ++status_index < 3 ); /* end of PSL WHILE loop */
501: 483 00012812 L273:
502: 484 00012812 L268:
503: 485 00012812 6d effffffba0 incl _status_index
504: 486 00012818 0d effffffb9a 50 movl _status_index,r0
505: 487 0001281F 1d 50 03 cmpl r0,$3
506: 488 00012822 81 03 13 fe60 jlss L269
507: 489 00012827 L267:
508: 490 00012827 # } while( index++ < max_cmpf_1_index);/* end of data loop */
509: 491 00012827 L265:
510: 492 00012827 0d effffffb8b 50 movl _index,r0
511: 493 0001282E 6d effffffb84 incl _index
512: 494 00012834 1d 50 effffffb7d cmpl r0,_max_cmpf_1_index
513: 495 0001283B 81 03 13 fe08 jlss L266
514: 496 00012840 L264:
515: 497 00012840 # } /* end of subtest 2 */
516: 498 00012840 40 ret#2
517: 499 00012841 .set L260,0x0
518: 500 00012841 L262:
519: 501 00012841 13 fdf1 jbr L263
520: 502 00012844 .data
521: 503 00000c8c * .text
522: 504 00012844 .align 1
523: 505 00012844 .globl _cmpf_3
524: 506 00012844 _cmpf_3:
525: 507 00012844 0000 .word L286
526: 508 00012846 #
527: 509 00012846 #
528: 510 00012846 #
529: 511 00012846 # /************************************************************************
530: 512 00012846 # *
531: 513 00012846 # * SUBTEST 3 - Check for register corruption
532: 514 00012846 # *
533: 515 00012846 # ************************************************************************/
534: 516 00012846 # cmpf_3()
535: 517 00012846 # {
536: 518 00012846 13 01d2 jbr L288
537: 519 00012849 L289:
538: 520 00012849 # force_loop = FALSE; /* clear force_loop flg */
539: 521 00012849 4d effffffb69 clrl _force_loop
540: 522 0001284F # subtest = 3;
541: 523 0001284F 0d 03 effffffb62 movl $3,_subtest
542: 524 00012856 # fill_reg_buf( load_regs ); /* get pattern for regs */
543: 525 00012856 dd 8f00000000 pushl $_load_regs
544: 526 0001285C fe 08 effffffb55 callf $8,_fill_reg_buf
545: 527 00012863 # index = 0;
546: 528 00012863 4d effffffb4f clrl _index
547: 529 00012869 # do
548: 530 00012869 L293:
549: 531 00012869 # {
550: 532 00012869 # sgl_value_1 = cmpf_1_data[index].one; /* data to load */
551: 533 00012869 5c 0c effffffb48 50 mull3 $12,_index,r0
552: 534 00012871 0d e000000000 effffffb3c movl _cmpf_1_data(r0),_sgl_value_1
553: 535 0001287C # sgl_value_2 = cmpf_1_data[index].two; /* data to compare */
554: 536 0001287C 5c 0c effffffb35 50 mull3 $12,_index,r0
555: 537 00012884 0d e000000004 effffffb29 movl _cmpf_1_data+4(r0),_sgl_value_2
556: 538 0001288F # /*
557: 539 0001288F # * If LOOP ON ERROR is set, this is the loop for this subtest.
558: 540 0001288F # * The force loop flag is set after the first error.
559: 541 0001288F # */
560: 542 0001288F # asm("_cmpf_3_lp1:");
561: 543 0001288F _cmpf_3_lp1:
562: 544 0001288F # asm("ldf _sgl_value_1"); /* LOAD the accumulator */
563: 545 0001288F 06 effffffb23 ldf _sgl_value_1
564: 546 00012895 # asm("nop");
565: 547 00012895 10 nop
566: 548 00012896 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
567: 549 00012896 ab 891fff effffffb19 loadr $0x1fff,_load_regs
568: 550 0001289F # asm("nop");
569: 551 0001289F 10 nop
570: 552 000128A0 # asm("cmpf _sgl_value_2"); /* test the values */
571: 553 000128A0 36 effffffb12 cmpf _sgl_value_2
572: 554 000128A6 # asm("nop");
573: 555 000128A6 10 nop
574: 556 000128A7 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
575: 557 000128A7 bb 891fff effffffb08 storer $0x1fff,_store_regs
576: 558 000128B0 # asm("stf _sgl_st_acc"); /* save the final acc */
577: 559 000128B0 26 effffffb02 stf _sgl_st_acc
578: 560 000128B6 # if( force_loop ) /* loop? */
579: 561 000128B6 5d effffffafc tstl _force_loop
580: 562 000128BC 31 02 jeql L294
581: 563 000128BE # asm("brb _cmpf_3_lp1");; /* run the loop again */
582: 564 000128BE 11 cf brb _cmpf_3_lp1
583: 565 000128C0 L294:
584: 566 000128C0 # /*
585: 567 000128C0 # * Now compare the stored register values to those that were loaded
586: 568 000128C0 # */
587: 569 000128C0 # index2 = 0;
588: 570 000128C0 4d effffffaf2 clrl _index2
589: 571 000128C6 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
590: 572 000128C6 L295:
591: 573 000128C6 0d effffffaec 50 movl _index2,r0
592: 574 000128CD 0d effffffae5 51 movl _index2,r1
593: 575 000128D4 1d 40effffffadd cmpl _load_regs[r0],_store_regs[r1]
594: 41effffffad7
595: 576 000128E1 21 11 jneq L296
596: 577 000128E3 1d effffffacf 0d cmpl _index2,$13
597: 578 000128EA 81 08 jgeq L296
598: 579 000128EC # index2++; /* check reg values */
599: 580 000128EC 6d effffffac6 incl _index2
600: 581 000128F2 11 d2 jbr L295
601: 582 000128F4 L296:
602: 583 000128F4 # if( index2 < 13 ) { /* error if index2 < 13 */
603: 584 000128F4 1d effffffabe 0d cmpl _index2,$13
604: 585 000128FB 91 03 13 0101 jgeq L297
605: 586 00012900 # errcnt++; /* bump the error count */
606: 587 00012900 6d effffffab2 incl _errcnt
607: 588 00012906 # if ( prt_error ) {
608: 589 00012906 5d effffffaac tstl _prt_error
609: 590 0001290C 21 03 13 00cd jeql L298
610: 591 00012911 # writes(" \n"); /* start a new print line */
611: 592 00012911 .data 1
612: 593 00000d9b * L299:
613: 594 00000d9b * 200A00 .ascii " \12\0"
614: 595 00000d9e * .text
615: 596 00012911 dd 8f00000d9b pushl $L299
616: 597 00012917 fe 08 effffffa9a callf $8,_writes
617: 598 0001291E # writes("cycle: ");
618: 599 0001291E .data 1
619: 600 00000d9e * L300:
620: 601 00000d9e * 6379636C653A2000 .ascii "cycle: \0"
621: 602 00000da6 * .text
622: 603 0001291E dd 8f00000d9e pushl $L300
623: 604 00012924 fe 08 effffffa8d callf $8,_writes
624: 605 0001292B # writed( cycle );
625: 606 0001292B dd effffffa87 pushl _cycle
626: 607 00012931 fe 08 effffffa80 callf $8,_writed
627: 608 00012938 # writes(", CMPF test ");
628: 609 00012938 .data 1
629: 610 00000da6 * L301:
630: 611 00000da6 * 2C20434D50462074657374200 .ascii ", CMPF test \0"
631: 0
632: 612 00000db3 * .text
633: 613 00012938 dd 8f00000da6 pushl $L301
634: 614 0001293E fe 08 effffffa73 callf $8,_writes
635: 615 00012945 # writed( test_no );
636: 616 00012945 dd effffffa6d pushl _test_no
637: 617 0001294B fe 08 effffffa66 callf $8,_writed
638: 618 00012952 # writes(", subtest 3 - A REGISTER WAS MODIFIED\n");
639: 619 00012952 .data 1
640: 620 00000db3 * L302:
641: 621 00000db3 * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS MODIFIED\12\0"
642: D204120524547495354455220
643: 574153204D4F4449464945440
644: A00
645: 622 00000dda * .text
646: 623 00012952 dd 8f00000db3 pushl $L302
647: 624 00012958 fe 08 effffffa59 callf $8,_writes
648: 625 0001295F # print_cmpf_data(); /* print the operands */
649: 626 0001295F fe 04 ef000005f2 callf $4,_print_cmpf_data
650: 627 00012966 # writes("\n");
651: 628 00012966 .data 1
652: 629 00000dda * L303:
653: 630 00000dda * 0A00 .ascii "\12\0"
654: 631 00000ddc * .text
655: 632 00012966 dd 8f00000dda pushl $L303
656: 633 0001296C fe 08 effffffa45 callf $8,_writes
657: 634 00012973 # writes("register "); /* print the information */
658: 635 00012973 .data 1
659: 636 00000ddc * L304:
660: 637 00000ddc * 72656769737465722000 .ascii "register \0"
661: 638 00000de6 * .text
662: 639 00012973 dd 8f00000ddc pushl $L304
663: 640 00012979 fe 08 effffffa38 callf $8,_writes
664: 641 00012980 # writed( index2 ); /* about the corrupted */
665: 642 00012980 dd effffffa32 pushl _index2
666: 643 00012986 fe 08 effffffa2b callf $8,_writed
667: 644 0001298D # writes(" = "); /* register */
668: 645 0001298D .data 1
669: 646 00000de6 * L305:
670: 647 00000de6 * 203D2000 .ascii " = \0"
671: 648 00000dea * .text
672: 649 0001298D dd 8f00000de6 pushl $L305
673: 650 00012993 fe 08 effffffa1e callf $8,_writes
674: 651 0001299A # write32h( store_regs[index2] );
675: 652 0001299A 0d effffffa18 50 movl _index2,r0
676: 653 000129A1 dd 40effffffa10 pushl _store_regs[r0]
677: 654 000129A8 fe 08 effffffa09 callf $8,_write32h
678: 655 000129AF # writes(", should be = ");
679: 656 000129AF .data 1
680: 657 00000dea * L306:
681: 658 00000dea * 2C202073686F756C642062652 .ascii ", should be = \0"
682: 03D2000
683: 659 00000dfa * .text
684: 660 000129AF dd 8f00000dea pushl $L306
685: 661 000129B5 fe 08 effffff9fc callf $8,_writes
686: 662 000129BC # write32h( load_regs[index2] );
687: 663 000129BC 0d effffff9f6 50 movl _index2,r0
688: 664 000129C3 dd 40effffff9ee pushl _load_regs[r0]
689: 665 000129CA fe 08 effffff9e7 callf $8,_write32h
690: 666 000129D1 # writes("\n");
691: 667 000129D1 .data 1
692: 668 00000dfa * L307:
693: 669 00000dfa * 0A00 .ascii "\12\0"
694: 670 00000dfc * .text
695: 671 000129D1 dd 8f00000dfa pushl $L307
696: 672 000129D7 fe 08 effffff9da callf $8,_writes
697: 673 000129DE # }
698: 674 000129DE # if ( halt_flg ) /* halt on error? */
699: 675 000129DE L298:
700: 676 000129DE 5d effffff9d4 tstl _halt_flg
701: 677 000129E4 31 09 jeql L308
702: 678 000129E6 # cmpf_er_halt( BAD_REG_HLT ); /* PC after the halt */
703: 679 000129E6 dd 02 pushl $2
704: 680 000129E8 fe 08 ef000005a5 callf $8,_cmpf_er_halt
705: 681 000129EF # if ( loop_on_err ) {
706: 682 000129EF L308:
707: 683 000129EF 5d effffff9c3 tstl _loop_on_err
708: 684 000129F5 31 0a jeql L309
709: 685 000129F7 # force_loop = TRUE; /* set the force loop flag */
710: 686 000129F7 0d 01 effffff9ba movl $1,_force_loop
711: 687 000129FE # asm("brw _cmpf_3_lp1"); /* and loop on the error */
712: 688 000129FE 13 fe8e brw _cmpf_3_lp1
713: 689 00012A01 # } /* end of loop on error */
714: 690 00012A01 # } /* end of register corruption error */
715: 691 00012A01 L309:
716: 692 00012A01 # } while( index++ < max_cmpf_1_index);/* end of data loop */
717: 693 00012A01 L297:
718: 694 00012A01 L292:
719: 695 00012A01 0d effffff9b1 50 movl _index,r0
720: 696 00012A08 6d effffff9aa incl _index
721: 697 00012A0E 1d 50 effffff9a3 cmpl r0,_max_cmpf_1_index
722: 698 00012A15 81 03 13 fe4f jlss L293
723: 699 00012A1A L291:
724: 700 00012A1A # } /* end of subtest 3 */
725: 701 00012A1A 40 ret#2
726: 702 00012A1B .set L286,0x0
727: 703 00012A1B L288:
728: 704 00012A1B 13 fe2b jbr L289
729: 705 00012A1E .data
730: 706 00000c8c * .text
731: 707 00012A1E .align 1
732: 708 00012A1E .globl _cmpf_4
733: 709 00012A1E _cmpf_4:
734: 710 00012A1E 0000 .word L310
735: 711 00012A20 #
736: 712 00012A20 #
737: 713 00012A20 #
738: 714 00012A20 # /************************************************************************
739: 715 00012A20 # *
740: 716 00012A20 # * SUBTEST 4 - Check for accumulator corruption
741: 717 00012A20 # *
742: 718 00012A20 # ************************************************************************/
743: 719 00012A20 # cmpf_4()
744: 720 00012A20 # {
745: 721 00012A20 13 0181 jbr L312
746: 722 00012A23 L313:
747: 723 00012A23 # force_loop = FALSE; /* clear force_loop flg */
748: 724 00012A23 4d effffff98f clrl _force_loop
749: 725 00012A29 # index = 0;
750: 726 00012A29 4d effffff989 clrl _index
751: 727 00012A2F # do
752: 728 00012A2F L316:
753: 729 00012A2F # {
754: 730 00012A2F # sgl_value_1 = cmpf_1_data[index].one; /* data to load */
755: 731 00012A2F 5c 0c effffff982 50 mull3 $12,_index,r0
756: 732 00012A37 0d e000000000 effffff976 movl _cmpf_1_data(r0),_sgl_value_1
757: 733 00012A42 # sgl_value_2 = cmpf_1_data[index].two;
758: 734 00012A42 5c 0c effffff96f 50 mull3 $12,_index,r0
759: 735 00012A4A 0d e000000004 effffff963 movl _cmpf_1_data+4(r0),_sgl_value_2
760: 736 00012A55 # if( sgl_value_1 & 0x7f800000 )
761: 737 00012A55 3d 8f7f800000 effffff958 bitl $2139095040,_sgl_value_1
762: 738 00012A60 31 0d jeql L317
763: 739 00012A62 # sgl_expected = sgl_value_1; /* expected = loaded */
764: 740 00012A62 0d effffff950 effffff94b movl _sgl_value_1,_sgl_expected
765: 741 00012A6D # else
766: 742 00012A6D 11 06 jbr L318
767: 743 00012A6F L317:
768: 744 00012A6F # sgl_expected = 0; /* expect a '0' stored */
769: 745 00012A6F 4d effffff943 clrl _sgl_expected
770: 746 00012A75 L318:
771: 747 00012A75 # /*
772: 748 00012A75 # * If LOOP ON ERROR is set, this is the loop for this subtest.
773: 749 00012A75 # * The force loop flag is set after the first error.
774: 750 00012A75 # */
775: 751 00012A75 # asm("_cmpf_4_lp1:");
776: 752 00012A75 _cmpf_4_lp1:
777: 753 00012A75 # asm("ldf _sgl_value_1"); /* LOAD the accumulator */
778: 754 00012A75 06 effffff93d ldf _sgl_value_1
779: 755 00012A7B # asm("cmpf _sgl_value_2"); /* test the values */
780: 756 00012A7B 36 effffff937 cmpf _sgl_value_2
781: 757 00012A81 # asm("stf _sgl_st_acc"); /* store the accumulator */
782: 758 00012A81 26 effffff931 stf _sgl_st_acc
783: 759 00012A87 # if( force_loop ) /* loop? */
784: 760 00012A87 5d effffff92b tstl _force_loop
785: 761 00012A8D 31 02 jeql L319
786: 762 00012A8F # asm("brb _cmpf_4_lp1");; /* run the loop again */
787: 763 00012A8F 11 e4 brb _cmpf_4_lp1
788: 764 00012A91 L319:
789: 765 00012A91 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
790: 766 00012A91 1d effffff921 effffff91c cmpl _sgl_st_acc,_sgl_expected
791: 767 00012A9C 21 03 13 00e9 jeql L320
792: 768 00012AA1 # {
793: 769 00012AA1 # errcnt++; /* bump the error count */
794: 770 00012AA1 6d effffff911 incl _errcnt
795: 771 00012AA7 # if ( prt_error ) {
796: 772 00012AA7 5d effffff90b tstl _prt_error
797: 773 00012AAD 21 03 13 00b5 jeql L321
798: 774 00012AB2 # writes(" \n"); /* start a new print line */
799: 775 00012AB2 .data 1
800: 776 00000dfc * L322:
801: 777 00000dfc * 200A00 .ascii " \12\0"
802: 778 00000dff * .text
803: 779 00012AB2 dd 8f00000dfc pushl $L322
804: 780 00012AB8 fe 08 effffff8f9 callf $8,_writes
805: 781 00012ABF # writes("cycle: ");
806: 782 00012ABF .data 1
807: 783 00000dff * L323:
808: 784 00000dff * 6379636C653A2000 .ascii "cycle: \0"
809: 785 00000e07 * .text
810: 786 00012ABF dd 8f00000dff pushl $L323
811: 787 00012AC5 fe 08 effffff8ec callf $8,_writes
812: 788 00012ACC # writed( cycle );
813: 789 00012ACC dd effffff8e6 pushl _cycle
814: 790 00012AD2 fe 08 effffff8df callf $8,_writed
815: 791 00012AD9 # writes(" CMPF test ");
816: 792 00012AD9 .data 1
817: 793 00000e07 * L324:
818: 794 00000e07 * 2020434D50462074657374200 .ascii " CMPF test \0"
819: 0
820: 795 00000e14 * .text
821: 796 00012AD9 dd 8f00000e07 pushl $L324
822: 797 00012ADF fe 08 effffff8d2 callf $8,_writes
823: 798 00012AE6 # writed( test_no );
824: 799 00012AE6 dd effffff8cc pushl _test_no
825: 800 00012AEC fe 08 effffff8c5 callf $8,_writed
826: 801 00012AF3 # writes(", subtest 4 (Cache Data) - THE ACC WAS MODIFIED\n");
827: 802 00012AF3 .data 1
828: 803 00000e14 * L325:
829: 804 00000e14 * 2C20737562746573742034202 .ascii ", subtest 4 (Cache Data) - THE ACC WAS MODIFIED\12\0"
830: 8436163686520446174612920
831: 2D20544845204143432057415
832: 3204D4F4449464945440A00
833: 805 00000e45 * .text
834: 806 00012AF3 dd 8f00000e14 pushl $L325
835: 807 00012AF9 fe 08 effffff8b8 callf $8,_writes
836: 808 00012B00 # print_cmpf_data();
837: 809 00012B00 fe 04 ef00000451 callf $4,_print_cmpf_data
838: 810 00012B07 # writes(", data index = ");
839: 811 00012B07 .data 1
840: 812 00000e45 * L326:
841: 813 00000e45 * 2C20206461746120696E64657 .ascii ", data index = \0"
842: 8203D2000
843: 814 00000e56 * .text
844: 815 00012B07 dd 8f00000e45 pushl $L326
845: 816 00012B0D fe 08 effffff8a4 callf $8,_writes
846: 817 00012B14 # writed( index );
847: 818 00012B14 dd effffff89e pushl _index
848: 819 00012B1A fe 08 effffff897 callf $8,_writed
849: 820 00012B21 # writec('\n');
850: 821 00012B21 dd 0a pushl $10
851: 822 00012B23 fe 08 effffff88e callf $8,_writec
852: 823 00012B2A # writes(" final Acc = ");
853: 824 00012B2A .data 1
854: 825 00000e56 * L327:
855: 826 00000e56 * 202066696E616C20416363203 .ascii " final Acc = \0"
856: D2000
857: 827 00000e65 * .text
858: 828 00012B2A dd 8f00000e56 pushl $L327
859: 829 00012B30 fe 08 effffff881 callf $8,_writes
860: 830 00012B37 # write32h( sgl_st_acc );
861: 831 00012B37 dd effffff87b pushl _sgl_st_acc
862: 832 00012B3D fe 08 effffff874 callf $8,_write32h
863: 833 00012B44 # writes(", Acc expected = ");
864: 834 00012B44 .data 1
865: 835 00000e65 * L328:
866: 836 00000e65 * 2C20204163632065787065637 .ascii ", Acc expected = \0"
867: 46564203D2000
868: 837 00000e78 * .text
869: 838 00012B44 dd 8f00000e65 pushl $L328
870: 839 00012B4A fe 08 effffff867 callf $8,_writes
871: 840 00012B51 # write32h( sgl_expected );
872: 841 00012B51 dd effffff861 pushl _sgl_expected
873: 842 00012B57 fe 08 effffff85a callf $8,_write32h
874: 843 00012B5E # writec('\n');
875: 844 00012B5E dd 0a pushl $10
876: 845 00012B60 fe 08 effffff851 callf $8,_writec
877: 846 00012B67 # }
878: 847 00012B67 # if ( halt_flg ) /* halt on error? */
879: 848 00012B67 L321:
880: 849 00012B67 5d effffff84b tstl _halt_flg
881: 850 00012B6D 31 09 jeql L329
882: 851 00012B6F # cmpf_er_halt( BAD_ACC_HLT ); /* halt on the error */
883: 852 00012B6F dd 01 pushl $1
884: 853 00012B71 fe 08 ef0000041c callf $8,_cmpf_er_halt
885: 854 00012B78 # if ( loop_on_err ) {
886: 855 00012B78 L329:
887: 856 00012B78 5d effffff83a tstl _loop_on_err
888: 857 00012B7E 31 0a jeql L330
889: 858 00012B80 # force_loop = TRUE; /* set the force loop flag */
890: 859 00012B80 0d 01 effffff831 movl $1,_force_loop
891: 860 00012B87 # asm("brw _cmpf_4_lp1"); /* and loop on the error */
892: 861 00012B87 13 feeb brw _cmpf_4_lp1
893: 862 00012B8A # } /* end of loop on error */
894: 863 00012B8A # } /* end of compare error */
895: 864 00012B8A L330:
896: 865 00012B8A # } while( index++ < max_cmpf_1_index);/* end of data loop */
897: 866 00012B8A L320:
898: 867 00012B8A L315:
899: 868 00012B8A 0d effffff828 50 movl _index,r0
900: 869 00012B91 6d effffff821 incl _index
901: 870 00012B97 1d 50 effffff81a cmpl r0,_max_cmpf_1_index
902: 871 00012B9E 81 03 13 fe8c jlss L316
903: 872 00012BA3 L314:
904: 873 00012BA3 # } /* end of subtest 4 */
905: 874 00012BA3 40 ret#2
906: 875 00012BA4 .set L310,0x0
907: 876 00012BA4 L312:
908: 877 00012BA4 13 fe7c jbr L313
909: 878 00012BA7 .data
910: 879 00000c8c * .text
911: 880 00012BA7 00 .align 1
912: 881 00012BA8 .globl _cmpf_5
913: 882 00012BA8 _cmpf_5:
914: 883 00012BA8 0000 .word L331
915: 884 00012BAA #
916: 885 00012BAA #
917: 886 00012BAA #
918: 887 00012BAA # /****************************************************************************
919: 888 00012BAA # *
920: 889 00012BAA # * SUBTEST 5 - CMPF status test - piped entry
921: 890 00012BAA # *
922: 891 00012BAA # ****************************************************************************/
923: 892 00012BAA # cmpf_5()
924: 893 00012BAA # {
925: 894 00012BAA 13 0211 jbr L333
926: 895 00012BAD L334:
927: 896 00012BAD # force_loop = FALSE;
928: 897 00012BAD 4d effffff805 clrl _force_loop
929: 898 00012BB3 # subtest = 5;
930: 899 00012BB3 0d 05 effffff7fe movl $5,_subtest
931: 900 00012BBA # index = 0;
932: 901 00012BBA 4d effffff7f8 clrl _index
933: 902 00012BC0 # do
934: 903 00012BC0 L337:
935: 904 00012BC0 # {
936: 905 00012BC0 # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */
937: 906 00012BC0 5c 0c effffff7f1 50 mull3 $12,_index,r0
938: 907 00012BC8 0d e000000000 effffff7e5 movl _cmpf_1_data(r0),_sgl_value_1
939: 908 00012BD3 # sgl_value_2 = cmpf_1_data[index].two;
940: 909 00012BD3 5c 0c effffff7de 50 mull3 $12,_index,r0
941: 910 00012BDB 0d e000000004 effffff7d2 movl _cmpf_1_data+4(r0),_sgl_value_2
942: 911 00012BE6 # sgl_expected = cmpf_1_data[index].flag;/* get expected results */
943: 912 00012BE6 5c 0c effffff7cb 50 mull3 $12,_index,r0
944: 913 00012BEE 0d e000000008 effffff7bf movl _cmpf_1_data+8(r0),_sgl_expected
945: 914 00012BF9 # status_index = 0; /* clear the status index */
946: 915 00012BF9 4d effffff7b9 clrl _status_index
947: 916 00012BFF # do
948: 917 00012BFF L340:
949: 918 00012BFF # {
950: 919 00012BFF # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */
951: 920 00012BFF 0d effffff7b3 50 movl _status_index,r0
952: 921 00012C06 0d 40effffff7ab movl _status_array[r0],_sgl_dummy1
953: effffff7a6
954: 922 00012C12 # /*
955: 923 00012C12 # * If LOOP ON ERROR is set, this is the loop for this subtest.
956: 924 00012C12 # * The force loop flag is set after the first error.
957: 925 00012C12 # */
958: 926 00012C12 # asm("_cmpf_5_lp1:");
959: 927 00012C12 _cmpf_5_lp1:
960: 928 00012C12 # asm("movl $0,r0"); /* clear r0 */
961: 929 00012C12 0d 00 50 movl $0,r0
962: 930 00012C15 # asm("ldf r0"); /* load the accumulator */
963: 931 00012C15 06 50 ldf r0
964: 932 00012C17 # asm("addf _sgl_value_1"); /* add the 1st operand */
965: 933 00012C17 c6 effffff79b addf _sgl_value_1
966: 934 00012C1D # asm("tstl _sgl_dummy1"); /* generate initial status */
967: 935 00012C1D 5d effffff795 tstl _sgl_dummy1
968: 936 00012C23 # asm("movpsl _init_psl"); /* save the initial status */
969: 937 00012C23 cd effffff78f movpsl _init_psl
970: 938 00012C29 # asm("cmpf _sgl_value_2"); /* compare the operands */
971: 939 00012C29 36 effffff789 cmpf _sgl_value_2
972: 940 00012C2F # asm("movpsl _psl_val"); /* save the final status */
973: 941 00012C2F cd effffff783 movpsl _psl_val
974: 942 00012C35 # asm("stf _sgl_st_acc"); /* save the final acc */
975: 943 00012C35 26 effffff77d stf _sgl_st_acc
976: 944 00012C3B # if( force_loop ) /* loop? */
977: 945 00012C3B 5d effffff777 tstl _force_loop
978: 946 00012C41 31 02 jeql L341
979: 947 00012C43 # asm("brb _cmpf_5_lp1");; /* run the loop again */
980: 948 00012C43 11 cd brb _cmpf_5_lp1
981: 949 00012C45 L341:
982: 950 00012C45 # exp_psl = init_psl; /* get the initial PSL */
983: 951 00012C45 0d effffff76d effffff768 movl _init_psl,_exp_psl
984: 952 00012C50 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
985: 953 00012C50 ac 88f3 effffff760 andl2 $-13,_exp_psl
986: 954 00012C58 # if( sgl_expected == ZERO )
987: 955 00012C58 1d effffff75a 04 cmpl _sgl_expected,$4
988: 956 00012C5F 21 07 jneq L342
989: 957 00012C61 # exp_psl |= PSL_Z; /* expect the ZERO bit set */
990: 958 00012C61 8c 04 effffff750 orl2 $4,_exp_psl
991: 959 00012C68 # if( sgl_expected == NEGATIVE )
992: 960 00012C68 L342:
993: 961 00012C68 1d effffff74a 08 cmpl _sgl_expected,$8
994: 962 00012C6F 21 07 jneq L343
995: 963 00012C71 # exp_psl |= PSL_N; /* expect the NEG bit set */
996: 964 00012C71 8c 08 effffff740 orl2 $8,_exp_psl
997: 965 00012C78 # if( psl_val != exp_psl ) { /* COMPARE the values */
998: 966 00012C78 L343:
999: 967 00012C78 1d effffff73a effffff735 cmpl _psl_val,_exp_psl
1000: 968 00012C83 21 03 13 0107 jeql L344
1001: 969 00012C88 # errcnt++; /* bump the error count */
1002: 970 00012C88 6d effffff72a incl _errcnt
1003: 971 00012C8E # if ( prt_error ) {
1004: 972 00012C8E 5d effffff724 tstl _prt_error
1005: 973 00012C94 21 03 13 00d3 jeql L345
1006: 974 00012C99 # writes(" \n"); /* start a new print line */
1007: 975 00012C99 .data 1
1008: 976 00000e78 * L346:
1009: 977 00000e78 * 200A00 .ascii " \12\0"
1010: 978 00000e7b * .text
1011: 979 00012C99 dd 8f00000e78 pushl $L346
1012: 980 00012C9F fe 08 effffff712 callf $8,_writes
1013: 981 00012CA6 # writes("cycle: ");
1014: 982 00012CA6 .data 1
1015: 983 00000e7b * L347:
1016: 984 00000e7b * 6379636C653A2000 .ascii "cycle: \0"
1017: 985 00000e83 * .text
1018: 986 00012CA6 dd 8f00000e7b pushl $L347
1019: 987 00012CAC fe 08 effffff705 callf $8,_writes
1020: 988 00012CB3 # writed( cycle );
1021: 989 00012CB3 dd effffff6ff pushl _cycle
1022: 990 00012CB9 fe 08 effffff6f8 callf $8,_writed
1023: 991 00012CC0 # writes(" CMPF test ");
1024: 992 00012CC0 .data 1
1025: 993 00000e83 * L348:
1026: 994 00000e83 * 2020434D50462074657374200 .ascii " CMPF test \0"
1027: 0
1028: 995 00000e90 * .text
1029: 996 00012CC0 dd 8f00000e83 pushl $L348
1030: 997 00012CC6 fe 08 effffff6eb callf $8,_writes
1031: 998 00012CCD # writed( test_no );
1032: 999 00012CCD dd effffff6e5 pushl _test_no
1033: 1000 00012CD3 fe 08 effffff6de callf $8,_writed
1034: 1001 00012CDA # writes(", subtest 5 (Piped Entry) - BAD FINAL PSL\n");
1035: 1002 00012CDA .data 1
1036: 1003 00000e90 * L349:
1037: 1004 00000e90 * 2C20737562746573742035202 .ascii ", subtest 5 (Piped Entry) - BAD FINAL PSL\12\0"
1038: 8506970656420456E74727929
1039: 202D204241442046494E414C2
1040: 050534C0A00
1041: 1005 00000ebb * .text
1042: 1006 00012CDA dd 8f00000e90 pushl $L349
1043: 1007 00012CE0 fe 08 effffff6d1 callf $8,_writes
1044: 1008 00012CE7 # print_cmpf_data();
1045: 1009 00012CE7 fe 04 ef0000026a callf $4,_print_cmpf_data
1046: 1010 00012CEE # writes(", data index = ");
1047: 1011 00012CEE .data 1
1048: 1012 00000ebb * L350:
1049: 1013 00000ebb * 2C20206461746120696E64657 .ascii ", data index = \0"
1050: 8203D2000
1051: 1014 00000ecc * .text
1052: 1015 00012CEE dd 8f00000ebb pushl $L350
1053: 1016 00012CF4 fe 08 effffff6bd callf $8,_writes
1054: 1017 00012CFB # writed( index );
1055: 1018 00012CFB dd effffff6b7 pushl _index
1056: 1019 00012D01 fe 08 effffff6b0 callf $8,_writed
1057: 1020 00012D08 # writec('\n');
1058: 1021 00012D08 dd 0a pushl $10
1059: 1022 00012D0A fe 08 effffff6a7 callf $8,_writec
1060: 1023 00012D11 # writes("initial PSL = ");
1061: 1024 00012D11 .data 1
1062: 1025 00000ecc * L351:
1063: 1026 00000ecc * 696E697469616C2050534C203 .ascii "initial PSL = \0"
1064: D2000
1065: 1027 00000edb * .text
1066: 1028 00012D11 dd 8f00000ecc pushl $L351
1067: 1029 00012D17 fe 08 effffff69a callf $8,_writes
1068: 1030 00012D1E # write32h( init_psl );
1069: 1031 00012D1E dd effffff694 pushl _init_psl
1070: 1032 00012D24 fe 08 effffff68d callf $8,_write32h
1071: 1033 00012D2B # writes(", final PSL = ");
1072: 1034 00012D2B .data 1
1073: 1035 00000edb * L352:
1074: 1036 00000edb * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
1075: 03D2000
1076: 1037 00000eeb * .text
1077: 1038 00012D2B dd 8f00000edb pushl $L352
1078: 1039 00012D31 fe 08 effffff680 callf $8,_writes
1079: 1040 00012D38 # write32h( psl_val );
1080: 1041 00012D38 dd effffff67a pushl _psl_val
1081: 1042 00012D3E fe 08 effffff673 callf $8,_write32h
1082: 1043 00012D45 # writes(", expected PSL = ");
1083: 1044 00012D45 .data 1
1084: 1045 00000eeb * L353:
1085: 1046 00000eeb * 2C20206578706563746564205 .ascii ", expected PSL = \0"
1086: 0534C203D2000
1087: 1047 00000efe * .text
1088: 1048 00012D45 dd 8f00000eeb pushl $L353
1089: 1049 00012D4B fe 08 effffff666 callf $8,_writes
1090: 1050 00012D52 # write32h( exp_psl );
1091: 1051 00012D52 dd effffff660 pushl _exp_psl
1092: 1052 00012D58 fe 08 effffff659 callf $8,_write32h
1093: 1053 00012D5F # writes("\n");
1094: 1054 00012D5F .data 1
1095: 1055 00000efe * L354:
1096: 1056 00000efe * 0A00 .ascii "\12\0"
1097: 1057 00000f00 * .text
1098: 1058 00012D5F dd 8f00000efe pushl $L354
1099: 1059 00012D65 fe 08 effffff64c callf $8,_writes
1100: 1060 00012D6C # }
1101: 1061 00012D6C # if ( halt_flg )
1102: 1062 00012D6C L345:
1103: 1063 00012D6C 5d effffff646 tstl _halt_flg
1104: 1064 00012D72 31 09 jeql L355
1105: 1065 00012D74 # cmpf_er_halt( BAD_PSL_HLT ); /* halt on the error */
1106: 1066 00012D74 dd 03 pushl $3
1107: 1067 00012D76 fe 08 ef00000217 callf $8,_cmpf_er_halt
1108: 1068 00012D7D # if ( loop_on_err ) {
1109: 1069 00012D7D L355:
1110: 1070 00012D7D 5d effffff635 tstl _loop_on_err
1111: 1071 00012D83 31 0a jeql L356
1112: 1072 00012D85 # force_loop = TRUE; /* set the force loop flag */
1113: 1073 00012D85 0d 01 effffff62c movl $1,_force_loop
1114: 1074 00012D8C # asm("brw _cmpf_5_lp1"); /* and loop on the error */
1115: 1075 00012D8C 13 fe83 brw _cmpf_5_lp1
1116: 1076 00012D8F # } /* end of loop on error */
1117: 1077 00012D8F # } /* end of compare error */
1118: 1078 00012D8F L356:
1119: 1079 00012D8F # } while ( ++status_index < 3 ); /* end of PSL WHILE loop */
1120: 1080 00012D8F L344:
1121: 1081 00012D8F L339:
1122: 1082 00012D8F 6d effffff623 incl _status_index
1123: 1083 00012D95 0d effffff61d 50 movl _status_index,r0
1124: 1084 00012D9C 1d 50 03 cmpl r0,$3
1125: 1085 00012D9F 81 03 13 fe5b jlss L340
1126: 1086 00012DA4 L338:
1127: 1087 00012DA4 # } while( index++ < max_cmpf_1_index);/* end of data loop */
1128: 1088 00012DA4 L336:
1129: 1089 00012DA4 0d effffff60e 50 movl _index,r0
1130: 1090 00012DAB 6d effffff607 incl _index
1131: 1091 00012DB1 1d 50 effffff600 cmpl r0,_max_cmpf_1_index
1132: 1092 00012DB8 81 03 13 fe03 jlss L337
1133: 1093 00012DBD L335:
1134: 1094 00012DBD # } /* end of subtest 5 */
1135: 1095 00012DBD 40 ret#2
1136: 1096 00012DBE .set L331,0x0
1137: 1097 00012DBE L333:
1138: 1098 00012DBE 13 fdec jbr L334
1139: 1099 00012DC1 .data
1140: 1100 00000c8c * .text
1141: 1101 00012DC1 00 .align 1
1142: 1102 00012DC2 .globl _cmpf_6
1143: 1103 00012DC2 _cmpf_6:
1144: 1104 00012DC2 0000 .word L357
1145: 1105 00012DC4 #
1146: 1106 00012DC4 #
1147: 1107 00012DC4 #
1148: 1108 00012DC4 # /****************************************************************************
1149: 1109 00012DC4 # *
1150: 1110 00012DC4 # * SUBTEST 6 - CMPF status test -piped exit
1151: 1111 00012DC4 # *
1152: 1112 00012DC4 # ****************************************************************************/
1153: 1113 00012DC4 # cmpf_6()
1154: 1114 00012DC4 # {
1155: 1115 00012DC4 13 018d jbr L359
1156: 1116 00012DC7 L360:
1157: 1117 00012DC7 # force_loop = FALSE;
1158: 1118 00012DC7 4d effffff5eb clrl _force_loop
1159: 1119 00012DCD # subtest = 2;
1160: 1120 00012DCD 0d 02 effffff5e4 movl $2,_subtest
1161: 1121 00012DD4 # index = 0;
1162: 1122 00012DD4 4d effffff5de clrl _index
1163: 1123 00012DDA # do
1164: 1124 00012DDA L363:
1165: 1125 00012DDA # {
1166: 1126 00012DDA # sgl_value_1 = cmpf_1_data[index].one; /* data to load */
1167: 1127 00012DDA 5c 0c effffff5d7 50 mull3 $12,_index,r0
1168: 1128 00012DE2 0d e000000000 effffff5cb movl _cmpf_1_data(r0),_sgl_value_1
1169: 1129 00012DED # sgl_value_2 = cmpf_1_data[index].two;
1170: 1130 00012DED 5c 0c effffff5c4 50 mull3 $12,_index,r0
1171: 1131 00012DF5 0d e000000004 effffff5b8 movl _cmpf_1_data+4(r0),_sgl_value_2
1172: 1132 00012E00 # if( sgl_value_1 & 0x7f800000 )
1173: 1133 00012E00 3d 8f7f800000 effffff5ad bitl $2139095040,_sgl_value_1
1174: 1134 00012E0B 31 0d jeql L364
1175: 1135 00012E0D # sgl_expected = sgl_value_1; /* expected = loaded */
1176: 1136 00012E0D 0d effffff5a5 effffff5a0 movl _sgl_value_1,_sgl_expected
1177: 1137 00012E18 # else
1178: 1138 00012E18 11 06 jbr L365
1179: 1139 00012E1A L364:
1180: 1140 00012E1A # sgl_expected = 0; /* expect a '0' stored */
1181: 1141 00012E1A 4d effffff598 clrl _sgl_expected
1182: 1142 00012E20 L365:
1183: 1143 00012E20 # /*
1184: 1144 00012E20 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1185: 1145 00012E20 # * The force loop flag is set after the first error.
1186: 1146 00012E20 # */
1187: 1147 00012E20 # asm("_cmpf_6_lp1:");
1188: 1148 00012E20 _cmpf_6_lp1:
1189: 1149 00012E20 # asm("movl $0,r0"); /* clear r0 */
1190: 1150 00012E20 0d 00 50 movl $0,r0
1191: 1151 00012E23 # asm("ldf _sgl_value_1"); /* load the 1st operand */
1192: 1152 00012E23 06 effffff58f ldf _sgl_value_1
1193: 1153 00012E29 # asm("cmpf _sgl_value_2"); /* compare the value */
1194: 1154 00012E29 36 effffff589 cmpf _sgl_value_2
1195: 1155 00012E2F # asm("addf r0"); /* add a zero to the acc */
1196: 1156 00012E2F c6 50 addf r0
1197: 1157 00012E31 # asm("stf _sgl_st_acc"); /* save the accumulator */
1198: 1158 00012E31 26 effffff581 stf _sgl_st_acc
1199: 1159 00012E37 # if( force_loop ) /* loop? */
1200: 1160 00012E37 5d effffff57b tstl _force_loop
1201: 1161 00012E3D 31 02 jeql L366
1202: 1162 00012E3F # asm("brb _cmpf_6_lp1");; /* run the loop again */
1203: 1163 00012E3F 11 df brb _cmpf_6_lp1
1204: 1164 00012E41 L366:
1205: 1165 00012E41 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
1206: 1166 00012E41 1d effffff571 effffff56c cmpl _sgl_st_acc,_sgl_expected
1207: 1167 00012E4C 21 03 13 00e9 jeql L367
1208: 1168 00012E51 # errcnt++; /* bump the error count */
1209: 1169 00012E51 6d effffff561 incl _errcnt
1210: 1170 00012E57 # if ( prt_error ) {
1211: 1171 00012E57 5d effffff55b tstl _prt_error
1212: 1172 00012E5D 21 03 13 00b5 jeql L368
1213: 1173 00012E62 # writes(" \n"); /* start a new print line */
1214: 1174 00012E62 .data 1
1215: 1175 00000f00 * L369:
1216: 1176 00000f00 * 200A00 .ascii " \12\0"
1217: 1177 00000f03 * .text
1218: 1178 00012E62 dd 8f00000f00 pushl $L369
1219: 1179 00012E68 fe 08 effffff549 callf $8,_writes
1220: 1180 00012E6F # writes("cycle: ");
1221: 1181 00012E6F .data 1
1222: 1182 00000f03 * L370:
1223: 1183 00000f03 * 6379636C653A2000 .ascii "cycle: \0"
1224: 1184 00000f0b * .text
1225: 1185 00012E6F dd 8f00000f03 pushl $L370
1226: 1186 00012E75 fe 08 effffff53c callf $8,_writes
1227: 1187 00012E7C # writed( cycle );
1228: 1188 00012E7C dd effffff536 pushl _cycle
1229: 1189 00012E82 fe 08 effffff52f callf $8,_writed
1230: 1190 00012E89 # writes(" CMPF test ");
1231: 1191 00012E89 .data 1
1232: 1192 00000f0b * L371:
1233: 1193 00000f0b * 2020434D50462074657374200 .ascii " CMPF test \0"
1234: 0
1235: 1194 00000f18 * .text
1236: 1195 00012E89 dd 8f00000f0b pushl $L371
1237: 1196 00012E8F fe 08 effffff522 callf $8,_writes
1238: 1197 00012E96 # writed( test_no );
1239: 1198 00012E96 dd effffff51c pushl _test_no
1240: 1199 00012E9C fe 08 effffff515 callf $8,_writed
1241: 1200 00012EA3 # writes(", subtest 6 (Piped Exit) - THE ACC WAS MODIFIED\n");
1242: 1201 00012EA3 .data 1
1243: 1202 00000f18 * L372:
1244: 1203 00000f18 * 2C20737562746573742036202 .ascii ", subtest 6 (Piped Exit) - THE ACC WAS MODIFIED\12\0"
1245: 8506970656420457869742920
1246: 2D20544845204143432057415
1247: 3204D4F4449464945440A00
1248: 1204 00000f49 * .text
1249: 1205 00012EA3 dd 8f00000f18 pushl $L372
1250: 1206 00012EA9 fe 08 effffff508 callf $8,_writes
1251: 1207 00012EB0 # print_cmpf_data();
1252: 1208 00012EB0 fe 04 ef000000a1 callf $4,_print_cmpf_data
1253: 1209 00012EB7 # writes(", data index = ");
1254: 1210 00012EB7 .data 1
1255: 1211 00000f49 * L373:
1256: 1212 00000f49 * 2C20206461746120696E64657 .ascii ", data index = \0"
1257: 8203D2000
1258: 1213 00000f5a * .text
1259: 1214 00012EB7 dd 8f00000f49 pushl $L373
1260: 1215 00012EBD fe 08 effffff4f4 callf $8,_writes
1261: 1216 00012EC4 # writed( index );
1262: 1217 00012EC4 dd effffff4ee pushl _index
1263: 1218 00012ECA fe 08 effffff4e7 callf $8,_writed
1264: 1219 00012ED1 # writec('\n');
1265: 1220 00012ED1 dd 0a pushl $10
1266: 1221 00012ED3 fe 08 effffff4de callf $8,_writec
1267: 1222 00012EDA # writes(" final Acc = ");
1268: 1223 00012EDA .data 1
1269: 1224 00000f5a * L374:
1270: 1225 00000f5a * 202066696E616C20416363203 .ascii " final Acc = \0"
1271: D2000
1272: 1226 00000f69 * .text
1273: 1227 00012EDA dd 8f00000f5a pushl $L374
1274: 1228 00012EE0 fe 08 effffff4d1 callf $8,_writes
1275: 1229 00012EE7 # write32h( sgl_st_acc );
1276: 1230 00012EE7 dd effffff4cb pushl _sgl_st_acc
1277: 1231 00012EED fe 08 effffff4c4 callf $8,_write32h
1278: 1232 00012EF4 # writes(", Acc expected = ");
1279: 1233 00012EF4 .data 1
1280: 1234 00000f69 * L375:
1281: 1235 00000f69 * 2C20204163632065787065637 .ascii ", Acc expected = \0"
1282: 46564203D2000
1283: 1236 00000f7c * .text
1284: 1237 00012EF4 dd 8f00000f69 pushl $L375
1285: 1238 00012EFA fe 08 effffff4b7 callf $8,_writes
1286: 1239 00012F01 # write32h( sgl_expected );
1287: 1240 00012F01 dd effffff4b1 pushl _sgl_expected
1288: 1241 00012F07 fe 08 effffff4aa callf $8,_write32h
1289: 1242 00012F0E # writec('\n');
1290: 1243 00012F0E dd 0a pushl $10
1291: 1244 00012F10 fe 08 effffff4a1 callf $8,_writec
1292: 1245 00012F17 # }
1293: 1246 00012F17 # if ( halt_flg )
1294: 1247 00012F17 L368:
1295: 1248 00012F17 5d effffff49b tstl _halt_flg
1296: 1249 00012F1D 31 09 jeql L376
1297: 1250 00012F1F # cmpf_er_halt( BAD_ACC_HLT ); /* halt on the error */
1298: 1251 00012F1F dd 01 pushl $1
1299: 1252 00012F21 fe 08 ef0000006c callf $8,_cmpf_er_halt
1300: 1253 00012F28 # if ( loop_on_err ) {
1301: 1254 00012F28 L376:
1302: 1255 00012F28 5d effffff48a tstl _loop_on_err
1303: 1256 00012F2E 31 0a jeql L377
1304: 1257 00012F30 # force_loop = TRUE; /* set the force loop flag */
1305: 1258 00012F30 0d 01 effffff481 movl $1,_force_loop
1306: 1259 00012F37 # asm("brw _cmpf_6_lp1"); /* and loop on the error */
1307: 1260 00012F37 13 fee6 brw _cmpf_6_lp1
1308: 1261 00012F3A # } /* end of loop on error */
1309: 1262 00012F3A # } /* end of compare error */
1310: 1263 00012F3A L377:
1311: 1264 00012F3A # } while( index++ < max_cmpf_1_index); /* end of data loop */
1312: 1265 00012F3A L367:
1313: 1266 00012F3A L362:
1314: 1267 00012F3A 0d effffff478 50 movl _index,r0
1315: 1268 00012F41 6d effffff471 incl _index
1316: 1269 00012F47 1d 50 effffff46a cmpl r0,_max_cmpf_1_index
1317: 1270 00012F4E 81 03 13 fe87 jlss L363
1318: 1271 00012F53 L361:
1319: 1272 00012F53 # } /* end of subtest 6 */
1320: 1273 00012F53 40 ret#2
1321: 1274 00012F54 .set L357,0x0
1322: 1275 00012F54 L359:
1323: 1276 00012F54 13 fe70 jbr L360
1324: 1277 00012F57 .data
1325: 1278 00000c8c * .text
1326: 1279 00012F57 00 .align 1
1327: 1280 00012F58 .globl _print_cmpf_data
1328: 1281 00012F58 _print_cmpf_data:
1329: 1282 00012F58 0000 .word L378
1330: 1283 00012F5A #
1331: 1284 00012F5A #
1332: 1285 00012F5A #
1333: 1286 00012F5A # /**************************************************************************
1334: 1287 00012F5A # *
1335: 1288 00012F5A # * PRINT THE DATA AND STORE RESULTS
1336: 1289 00012F5A # *
1337: 1290 00012F5A # * initial Acc = xxxxxxxx, stored = xxxxxxxx, data index = xx
1338: 1291 00012F5A # * operand = xxxxxxxx, expected = xxxxxxxx
1339: 1292 00012F5A # **************************************************************************/
1340: 1293 00012F5A # print_cmpf_data()
1341: 1294 00012F5A # {
1342: 1295 00012F5A 11 35 jbr L380
1343: 1296 00012F5C L381:
1344: 1297 00012F5C # writes("initial Acc = ");
1345: 1298 00012F5C .data 1
1346: 1299 00000f7c * L382:
1347: 1300 00000f7c * 696E697469616C20416363203 .ascii "initial Acc = \0"
1348: D2000
1349: 1301 00000f8b * .text
1350: 1302 00012F5C dd 8f00000f7c pushl $L382
1351: 1303 00012F62 fe 08 effffff44f callf $8,_writes
1352: 1304 00012F69 # write32h( sgl_value_1 );
1353: 1305 00012F69 dd effffff449 pushl _sgl_value_1
1354: 1306 00012F6F fe 08 effffff442 callf $8,_write32h
1355: 1307 00012F76 # writes(", operand = ");
1356: 1308 00012F76 .data 1
1357: 1309 00000f8b * L383:
1358: 1310 00000f8b * 2C2020206F706572616E64203 .ascii ", operand = \0"
1359: D2000
1360: 1311 00000f9a * .text
1361: 1312 00012F76 dd 8f00000f8b pushl $L383
1362: 1313 00012F7C fe 08 effffff435 callf $8,_writes
1363: 1314 00012F83 # write32h( sgl_value_2 );
1364: 1315 00012F83 dd effffff42f pushl _sgl_value_2
1365: 1316 00012F89 fe 08 effffff428 callf $8,_write32h
1366: 1317 00012F90 # }
1367: 1318 00012F90 40 ret#2
1368: 1319 00012F91 .set L378,0x0
1369: 1320 00012F91 L380:
1370: 1321 00012F91 11 c9 jbr L381
1371: 1322 00012F93 .data
1372: 1323 00000c8c * .text
1373: 1324 00012F93 00 .align 1
1374: 1325 00012F94 .globl _cmpf_er_halt
1375: 1326 00012F94 _cmpf_er_halt:
1376: 1327 00012F94 0000 .word L384
1377: 1328 00012F96 #
1378: 1329 00012F96 #
1379: 1330 00012F96 #
1380: 1331 00012F96 # /**************************************************************************
1381: 1332 00012F96 # *
1382: 1333 00012F96 # * HALT ON ERROR ROUTINE
1383: 1334 00012F96 # *
1384: 1335 00012F96 # **************************************************************************/
1385: 1336 00012F96 # cmpf_er_halt( halt_code )
1386: 1337 00012F96 # int halt_code;
1387: 1338 00012F96 # {
1388: 1339 00012F96 13 00a8 jbr L386
1389: 1340 00012F99 L387:
1390: 1341 00012F99 # sgl_dummy1 = halt_code; /* get the error type */
1391: 1342 00012F99 0d ad04 effffff417 movl 4(fp),_sgl_dummy1
1392: 1343 00012FA1 # asm("movl _test_no,r0"); /* r0 = test number */
1393: 1344 00012FA1 0d effffff411 50 movl _test_no,r0
1394: 1345 00012FA8 # asm("movl _subtest,r1"); /* r1 = subtest number */
1395: 1346 00012FA8 0d effffff40a 51 movl _subtest,r1
1396: 1347 00012FAF # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1397: 1348 00012FAF 0d effffff403 52 movl _sgl_dummy1,r2
1398: 1349 00012FB6 # asm("movl _cycle,r3"); /* r3 = cycle count */
1399: 1350 00012FB6 0d effffff3fc 53 movl _cycle,r3
1400: 1351 00012FBD # asm("movl _sgl_value_1,r4"); /* r4 = initial acc */
1401: 1352 00012FBD 0d effffff3f5 54 movl _sgl_value_1,r4
1402: 1353 00012FC4 # asm("movl _sgl_value_2,r5"); /* r5 = data compared */
1403: 1354 00012FC4 0d effffff3ee 55 movl _sgl_value_2,r5
1404: 1355 00012FCB # asm("movl _psl_val,r6"); /* r6 = final PSL */
1405: 1356 00012FCB 0d effffff3e7 56 movl _psl_val,r6
1406: 1357 00012FD2 # if( halt_code == BAD_ACC_HLT ) {
1407: 1358 00012FD2 1d ad04 01 cmpl 4(fp),$1
1408: 1359 00012FD6 21 10 jneq L388
1409: 1360 00012FD8 # asm("movl _sgl_st_acc,r7"); /* r7 = actual value */
1410: 1361 00012FD8 0d effffff3da 57 movl _sgl_st_acc,r7
1411: 1362 00012FDF # asm("movl _sgl_expected,r8"); /* r8 = expected value */
1412: 1363 00012FDF 0d effffff3d3 58 movl _sgl_expected,r8
1413: 1364 00012FE6 # } else
1414: 1365 00012FE6 11 57 jbr L389
1415: 1366 00012FE8 L388:
1416: 1367 00012FE8 # if( halt_code == BAD_REG_HLT ) {
1417: 1368 00012FE8 1d ad04 02 cmpl 4(fp),$2
1418: 1369 00012FEC 21 3d jneq L390
1419: 1370 00012FEE # sgl_dummy1 = load_regs[index2];
1420: 1371 00012FEE 0d effffff3c4 50 movl _index2,r0
1421: 1372 00012FF5 0d 40effffff3bc movl _load_regs[r0],_sgl_dummy1
1422: effffff3b7
1423: 1373 00013001 # sgl_dummy2 = store_regs[index2];
1424: 1374 00013001 0d effffff3b1 50 movl _index2,r0
1425: 1375 00013008 0d 40effffff3a9 movl _store_regs[r0],_sgl_dummy2
1426: effffff3a4
1427: 1376 00013014 # asm("movl _index2,r7"); /* r7 = bad register # */
1428: 1377 00013014 0d effffff39e 57 movl _index2,r7
1429: 1378 0001301B # asm("movl _sgl_dummy2,r8"); /* r8 = actual value */
1430: 1379 0001301B 0d effffff397 58 movl _sgl_dummy2,r8
1431: 1380 00013022 # asm("movl _sgl_dummy1,r9"); /* r9 = expected value */
1432: 1381 00013022 0d effffff390 59 movl _sgl_dummy1,r9
1433: 1382 00013029 # } else
1434: 1383 00013029 11 14 jbr L391
1435: 1384 0001302B L390:
1436: 1385 0001302B # if( halt_code == BAD_PSL_HLT ) {
1437: 1386 0001302B 1d ad04 03 cmpl 4(fp),$3
1438: 1387 0001302F 21 0e jneq L392
1439: 1388 00013031 # asm("movl _exp_psl,r7"); /* r7 = expected PSL */
1440: 1389 00013031 0d effffff381 57 movl _exp_psl,r7
1441: 1390 00013038 # asm("movl _index,r7"); /* r8 = data index */
1442: 1391 00013038 0d effffff37a 57 movl _index,r7
1443: 1392 0001303F # };
1444: 1393 0001303F L392:
1445: 1394 0001303F L391:
1446: 1395 0001303F L389:
1447: 1396 0001303F # asm("halt"); /* HALT ... */
1448: 1397 0001303F 00 halt
1449: 1398 00013040 # }
1450: 1399 00013040 40 ret#2
1451: 1400 00013041 .set L384,0x0
1452: 1401 00013041 L386:
1453: 1402 00013041 13 ff55 jbr L387
1454: 1403 00000c8c * .data
1455: 1403 00000c8c * .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.