|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 00000b04 * .text
4 00000000 .align 1
5 00000000 .globl _cvlf
6 00000000 _cvlf:
7 0001449C 0000 .word L215
8 0001449E #
9 0001449E # #include "fpp_defs.h"
10 0001449E #
11 0001449E #
12 0001449E # /*****************************************************************************
13 0001449E # *
14 0001449E # * CVLF - SINGLE PRECISION FLOATING POINT CONVERT LONG TO FLOAT TEST
15 0001449E # *
16 0001449E # *****************************************************************************/
17 0001449E # cvlf()
18 0001449E # {
19 0001449E 11 4f jbr L217
20 000144A0 L218:
21 000144A0 # asm(".globl _cvlf_t");
22 000144A0 .globl _cvlf_t
23 000144A0 # asm("_cvlf_t:"); /* entry address */
24 000144A0 _cvlf_t:
25 000144A0 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
26 000144A0 1d effffffff6 01 cmpl _cycle,$1
27 000144A7 21 15 jneq L219
28 000144A9 5d efffffffed tstl _prt_hdrs
29 000144AF 31 0d jeql L219
30 000144B1 # writes(" CVLF");
31 000144B1 .data 1
32 00000b04 * L221:
33 00000b04 * 2043564C4600 .ascii " CVLF\0"
34 00000b0a * .text
35 000144B1 dd 8f00000b04 pushl $L221
36 000144B7 fe 08 efffffffde callf $8,_writes
37 000144BE # cvlf_1(); /* load through a register */
38 000144BE L219:
39 000144BE fe 04 ef0000002d callf $4,_cvlf_1
40 000144C5 # cvlf_2(); /* load through the cache */
41 000144C5 fe 04 ef000001ae callf $4,_cvlf_2
42 000144CC # cvlf_3(); /* register stability */
43 000144CC fe 04 ef00000329 callf $4,_cvlf_3
44 000144D3 # cvlf_4(); /* PSL stability test */
45 000144D3 fe 04 ef000004fc callf $4,_cvlf_4
46 000144DA # cvlf_5(); /* pipelined entry test */
47 000144DA fe 04 ef000006cb callf $4,_cvlf_5
48 000144E1 # cvlf_6(); /* pipelined exit test */
49 000144E1 fe 04 ef00000850 callf $4,_cvlf_6
50 000144E8 # asm("jmp *return"); /* return to the test monitor */
51 000144E8 71 ffffffffae jmp *return
52 000144EE # }
53 000144EE 40 ret#2
54 000144EF .set L215,0x0
55 000144EF L217:
56 000144EF 11 af jbr L218
57 000144F1 .data
58 00000b04 * .text
59 000144F1 00 .align 1
60 000144F2 .globl _cvlf_1
61 000144F2 _cvlf_1:
62 000144F2 0000 .word L228
63 000144F4 #
64 000144F4 #
65 000144F4 #
66 000144F4 # /************************************************************************
67 000144F4 # *
68 000144F4 # * SUBTEST 1 - convert through a register
69 000144F4 # *
70 000144F4 # ************************************************************************/
71 000144F4 # cvlf_1()
72 000144F4 # {
73 000144F4 13 017f jbr L230
74 000144F7 L231:
75 000144F7 # force_loop = FALSE;
76 000144F7 4d efffffff9f clrl _force_loop
77 000144FD # subtest = 1;
78 000144FD 0d 01 efffffff98 movl $1,_subtest
79 00014504 # for( index = 0; index < max_cvlf_1_index; index++ ) {
80 00014504 4d efffffff92 clrl _index
81 0001450A L234:
82 0001450A 1d efffffff8c efffffff87 cmpl _index,_max_cvlf_1_index
83 00014515 91 03 13 015b jgeq L233
84 0001451A # sgl_ld_acc = 0x12345678; /* get base value */
85 0001451A 0d 8f12345678 efffffff77 movl $305419896,_sgl_ld_acc
86 00014525 # sgl_value_1 = cvlf_1_data[index].ld; /* get value to negate */
87 00014525 0d efffffff71 50 movl _index,r0
88 0001452C 48 03 50 50 shll $3,r0,r0
89 00014530 0d e000000000 efffffff61 movl _cvlf_1_data(r0),_sgl_value_1
90 0001453B # sgl_expected = cvlf_1_data[index].exp; /* get expected result */
91 0001453B 0d efffffff5b 50 movl _index,r0
92 00014542 48 03 50 50 shll $3,r0,r0
93 00014546 0d e000000004 efffffff4b movl _cvlf_1_data+4(r0),_sgl_expected
94 00014551 # /*
95 00014551 # * If LOOP ON ERROR is set, this is the loop for this subtest.
96 00014551 # * The force loop flag is set after the first error.
97 00014551 # */
98 00014551 # asm("_cvlf_1_lp1:");
99 00014551 _cvlf_1_lp1:
100 00014551 # asm("ldf _sgl_ld_acc");
101 00014551 06 efffffff45 ldf _sgl_ld_acc
102 00014557 # asm("movl _sgl_value_1,r4"); /* get the value to convert */
103 00014557 0d efffffff3f 54 movl _sgl_value_1,r4
104 0001455E # asm("cvlf r4"); /* convert the value */
105 0001455E 76 54 cvlf r4
106 00014560 # asm("stf r5"); /* store the result in R5 */
107 00014560 26 55 stf r5
108 00014562 # if( force_loop )
109 00014562 5d efffffff34 tstl _force_loop
110 00014568 31 02 jeql L235
111 0001456A # asm("brb _cvlf_1_lp1");; /* loop on the error */
112 0001456A 11 e5 brb _cvlf_1_lp1
113 0001456C L235:
114 0001456C # /*
115 0001456C # * end error loop - test the results
116 0001456C # */
117 0001456C # asm("movl r5,_sgl_st_acc"); /* move R5 data to cache */
118 0001456C 0d 55 efffffff29 movl r5,_sgl_st_acc
119 00014573 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
120 00014573 1d efffffff23 efffffff1e cmpl _sgl_st_acc,_sgl_expected
121 0001457E 21 03 13 00e9 jeql L236
122 00014583 # errcnt++; /* bump the error count */
123 00014583 6d efffffff13 incl _errcnt
124 00014589 # if( prt_error ) {
125 00014589 5d efffffff0d tstl _prt_error
126 0001458F 21 03 13 00b5 jeql L237
127 00014594 # writes(" \n"); /* start a new print line */
128 00014594 .data 1
129 00000b0a * L238:
130 00000b0a * 200A00 .ascii " \12\0"
131 00000b0d * .text
132 00014594 dd 8f00000b0a pushl $L238
133 0001459A fe 08 effffffefb callf $8,_writes
134 000145A1 # writes("cycle: ");
135 000145A1 .data 1
136 00000b0d * L239:
137 00000b0d * 6379636C653A2000 .ascii "cycle: \0"
138 00000b15 * .text
139 000145A1 dd 8f00000b0d pushl $L239
140 000145A7 fe 08 effffffeee callf $8,_writes
141 000145AE # writed( cycle );
142 000145AE dd effffffee8 pushl _cycle
143 000145B4 fe 08 effffffee1 callf $8,_writed
144 000145BB # writes(" CVLF test ");
145 000145BB .data 1
146 00000b15 * L241:
147 00000b15 * 202043564C462074657374200 .ascii " CVLF test \0"
0
148 00000b22 * .text
149 000145BB dd 8f00000b15 pushl $L241
150 000145C1 fe 08 effffffed4 callf $8,_writes
151 000145C8 # writed( test_no );
152 000145C8 dd effffffece pushl _test_no
153 000145CE fe 08 effffffec7 callf $8,_writed
154 000145D5 # writes(", subtest 1 (Reg. Data) - BAD FINAL ACC\n");
155 000145D5 .data 1
156 00000b22 * L242:
157 00000b22 * 2C20737562746573742031202 .ascii ", subtest 1 (Reg. Data) - BAD FINAL ACC\12\0"
85265672E204461746129202D
204241442046494E414C20414
3430A00
158 00000b4b * .text
159 000145D5 dd 8f00000b22 pushl $L242
160 000145DB fe 08 effffffeba callf $8,_writes
161 000145E2 # print_cvlf_data();
162 000145E2 fe 04 ef000008cb callf $4,_print_cvlf_data
163 000145E9 # writes(", data index = ");
164 000145E9 .data 1
165 00000b4b * L244:
166 00000b4b * 2C2020206461746120696E646 .ascii ", data index = \0"
578203D2000
167 00000b5d * .text
168 000145E9 dd 8f00000b4b pushl $L244
169 000145EF fe 08 effffffea6 callf $8,_writes
170 000145F6 # writed( index );
171 000145F6 dd effffffea0 pushl _index
172 000145FC fe 08 effffffe99 callf $8,_writed
173 00014603 # writec('\n');
174 00014603 dd 0a pushl $10
175 00014605 fe 08 effffffe90 callf $8,_writec
176 0001460C # writes(" operand = ");
177 0001460C .data 1
178 00000b5d * L246:
179 00000b5d * 202020206F706572616E64203 .ascii " operand = \0"
D2000
180 00000b6c * .text
181 0001460C dd 8f00000b5d pushl $L246
182 00014612 fe 08 effffffe83 callf $8,_writes
183 00014619 # write32h( sgl_value_1 );
184 00014619 dd effffffe7d pushl _sgl_value_1
185 0001461F fe 08 effffffe76 callf $8,_write32h
186 00014626 # writes(", expected Acc = ");
187 00014626 .data 1
188 00000b6c * L248:
189 00000b6c * 2C20206578706563746564204 .ascii ", expected Acc = \0"
16363203D2000
190 00000b7f * .text
191 00014626 dd 8f00000b6c pushl $L248
192 0001462C fe 08 effffffe69 callf $8,_writes
193 00014633 # write32h( sgl_expected );
194 00014633 dd effffffe63 pushl _sgl_expected
195 00014639 fe 08 effffffe5c callf $8,_write32h
196 00014640 # writec('\n');
197 00014640 dd 0a pushl $10
198 00014642 fe 08 effffffe53 callf $8,_writec
199 00014649 # }
200 00014649 # if( halt_flg )
201 00014649 L237:
202 00014649 5d effffffe4d tstl _halt_flg
203 0001464F 31 09 jeql L249
204 00014651 # cvlf_er_halt( BAD_ACC_HLT ); /* halt on the error */
205 00014651 dd 01 pushl $1
206 00014653 fe 08 ef00000896 callf $8,_cvlf_er_halt
207 0001465A # if( loop_on_err ) {
208 0001465A L249:
209 0001465A 5d effffffe3c tstl _loop_on_err
210 00014660 31 0a jeql L251
211 00014662 # force_loop = TRUE; /* set the force loop flag */
212 00014662 0d 01 effffffe33 movl $1,_force_loop
213 00014669 # asm("brw _cvlf_1_lp1");; /* and loop on the error */
214 00014669 13 fee5 brw _cvlf_1_lp1
215 0001466C # } /* end of loop on error */
216 0001466C # } /* end of compare error */
217 0001466C L251:
218 0001466C # } /* end of WHILE loop */
219 0001466C L236:
220 0001466C L232:
221 0001466C 6d effffffe2a incl _index
222 00014672 13 fe95 jbr L234
223 00014675 L233:
224 00014675 # } /* end of subtest 1 */
225 00014675 40 ret#2
226 00014676 .set L228,0x0
227 00014676 L230:
228 00014676 13 fe7e jbr L231
229 00014679 .data
230 00000b04 * .text
231 00014679 00 .align 1
232 0001467A .globl _cvlf_2
233 0001467A _cvlf_2:
234 0001467A 0000 .word L252
235 0001467C #
236 0001467C #
237 0001467C #
238 0001467C # /************************************************************************
239 0001467C # *
240 0001467C # * SUBTEST 2 - convert through memory
241 0001467C # *
242 0001467C # ************************************************************************/
243 0001467C # cvlf_2()
244 0001467C # {
245 0001467C 13 0179 jbr L254
246 0001467F L255:
247 0001467F # force_loop = FALSE;
248 0001467F 4d effffffe17 clrl _force_loop
249 00014685 # subtest = 2;
250 00014685 0d 02 effffffe10 movl $2,_subtest
251 0001468C # for( index = 0; index < max_cvlf_1_index; index++ ) {
252 0001468C 4d effffffe0a clrl _index
253 00014692 L258:
254 00014692 1d effffffe04 effffffdff cmpl _index,_max_cvlf_1_index
255 0001469D 91 03 13 0155 jgeq L257
256 000146A2 # sgl_ld_acc = 0x7fffffff; /* get value to negate */
257 000146A2 0d 8f7fffffff effffffdef movl $2147483647,_sgl_ld_acc
258 000146AD # sgl_value_1 = cvlf_1_data[index].ld; /* get value to negate */
259 000146AD 0d effffffde9 50 movl _index,r0
260 000146B4 48 03 50 50 shll $3,r0,r0
261 000146B8 0d e000000000 effffffdd9 movl _cvlf_1_data(r0),_sgl_value_1
262 000146C3 # sgl_expected = cvlf_1_data[index].exp; /* get expected result */
263 000146C3 0d effffffdd3 50 movl _index,r0
264 000146CA 48 03 50 50 shll $3,r0,r0
265 000146CE 0d e000000004 effffffdc3 movl _cvlf_1_data+4(r0),_sgl_expected
266 000146D9 # /*
267 000146D9 # * If LOOP ON ERROR is set, this is the loop for this subtest.
268 000146D9 # * The force loop flag is set after the first error.
269 000146D9 # */
270 000146D9 # asm("_cvlf_2_lp1:");
271 000146D9 _cvlf_2_lp1:
272 000146D9 # asm("ldf _sgl_ld_acc"); /* load the base value */
273 000146D9 06 effffffdbd ldf _sgl_ld_acc
274 000146DF # asm("cvlf _sgl_value_1"); /* convert the value */
275 000146DF 76 effffffdb7 cvlf _sgl_value_1
276 000146E5 # asm("stf _sgl_st_acc"); /* store the result */
277 000146E5 26 effffffdb1 stf _sgl_st_acc
278 000146EB # if( force_loop )
279 000146EB 5d effffffdab tstl _force_loop
280 000146F1 31 02 jeql L259
281 000146F3 # asm("brb _cvlf_2_lp1");; /* loop on the error */
282 000146F3 11 e4 brb _cvlf_2_lp1
283 000146F5 L259:
284 000146F5 # /*
285 000146F5 # * end error loop - test the results
286 000146F5 # */
287 000146F5 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
288 000146F5 1d effffffda1 effffffd9c cmpl _sgl_st_acc,_sgl_expected
289 00014700 21 03 13 00e9 jeql L260
290 00014705 # errcnt++; /* bump the error count */
291 00014705 6d effffffd91 incl _errcnt
292 0001470B # if( prt_error ) {
293 0001470B 5d effffffd8b tstl _prt_error
294 00014711 21 03 13 00b5 jeql L261
295 00014716 # writes(" \n"); /* start a new print line */
296 00014716 .data 1
297 00000b7f * L262:
298 00000b7f * 200A00 .ascii " \12\0"
299 00000b82 * .text
300 00014716 dd 8f00000b7f pushl $L262
301 0001471C fe 08 effffffd79 callf $8,_writes
302 00014723 # writes("cycle: ");
303 00014723 .data 1
304 00000b82 * L263:
305 00000b82 * 6379636C653A2000 .ascii "cycle: \0"
306 00000b8a * .text
307 00014723 dd 8f00000b82 pushl $L263
308 00014729 fe 08 effffffd6c callf $8,_writes
309 00014730 # writed( cycle );
310 00014730 dd effffffd66 pushl _cycle
311 00014736 fe 08 effffffd5f callf $8,_writed
312 0001473D # writes(" CVLF test ");
313 0001473D .data 1
314 00000b8a * L264:
315 00000b8a * 202043564C462074657374200 .ascii " CVLF test \0"
0
316 00000b97 * .text
317 0001473D dd 8f00000b8a pushl $L264
318 00014743 fe 08 effffffd52 callf $8,_writes
319 0001474A # writed( test_no );
320 0001474A dd effffffd4c pushl _test_no
321 00014750 fe 08 effffffd45 callf $8,_writed
322 00014757 # writes(", subtest 2 (Cache Data) - BAD FINAL ACC\n");
323 00014757 .data 1
324 00000b97 * L265:
325 00000b97 * 2C20737562746573742032202 .ascii ", subtest 2 (Cache Data) - BAD FINAL ACC\12\0"
8436163686520446174612920
2D204241442046494E414C204
143430A00
326 00000bc1 * .text
327 00014757 dd 8f00000b97 pushl $L265
328 0001475D fe 08 effffffd38 callf $8,_writes
329 00014764 # print_cvlf_data();
330 00014764 fe 04 ef00000749 callf $4,_print_cvlf_data
331 0001476B # writes(", data index = ");
332 0001476B .data 1
333 00000bc1 * L266:
334 00000bc1 * 2C2020206461746120696E646 .ascii ", data index = \0"
578203D2000
335 00000bd3 * .text
336 0001476B dd 8f00000bc1 pushl $L266
337 00014771 fe 08 effffffd24 callf $8,_writes
338 00014778 # writed( index );
339 00014778 dd effffffd1e pushl _index
340 0001477E fe 08 effffffd17 callf $8,_writed
341 00014785 # writec('\n');
342 00014785 dd 0a pushl $10
343 00014787 fe 08 effffffd0e callf $8,_writec
344 0001478E # writes(" operand = ");
345 0001478E .data 1
346 00000bd3 * L267:
347 00000bd3 * 202020206F706572616E64203 .ascii " operand = \0"
D2000
348 00000be2 * .text
349 0001478E dd 8f00000bd3 pushl $L267
350 00014794 fe 08 effffffd01 callf $8,_writes
351 0001479B # write32h( sgl_value_1 );
352 0001479B dd effffffcfb pushl _sgl_value_1
353 000147A1 fe 08 effffffcf4 callf $8,_write32h
354 000147A8 # writes(", expected Acc = ");
355 000147A8 .data 1
356 00000be2 * L268:
357 00000be2 * 2C20206578706563746564204 .ascii ", expected Acc = \0"
16363203D2000
358 00000bf5 * .text
359 000147A8 dd 8f00000be2 pushl $L268
360 000147AE fe 08 effffffce7 callf $8,_writes
361 000147B5 # write32h( sgl_expected );
362 000147B5 dd effffffce1 pushl _sgl_expected
363 000147BB fe 08 effffffcda callf $8,_write32h
364 000147C2 # writec('\n');
365 000147C2 dd 0a pushl $10
366 000147C4 fe 08 effffffcd1 callf $8,_writec
367 000147CB # }
368 000147CB # if( halt_flg )
369 000147CB L261:
370 000147CB 5d effffffccb tstl _halt_flg
371 000147D1 31 09 jeql L269
372 000147D3 # cvlf_er_halt( BAD_ACC_HLT ); /* halt on the error */
373 000147D3 dd 01 pushl $1
374 000147D5 fe 08 ef00000714 callf $8,_cvlf_er_halt
375 000147DC # if( loop_on_err ) {
376 000147DC L269:
377 000147DC 5d effffffcba tstl _loop_on_err
378 000147E2 31 0a jeql L270
379 000147E4 # force_loop = TRUE; /* set the force loop flag */
380 000147E4 0d 01 effffffcb1 movl $1,_force_loop
381 000147EB # asm("brw _cvlf_2_lp1");; /* and loop on the error */
382 000147EB 13 feeb brw _cvlf_2_lp1
383 000147EE # } /* end of loop on error */
384 000147EE # } /* end of compare error */
385 000147EE L270:
386 000147EE # } /* end of WHILE loop */
387 000147EE L260:
388 000147EE L256:
389 000147EE 6d effffffca8 incl _index
390 000147F4 13 fe9b jbr L258
391 000147F7 L257:
392 000147F7 # } /* end of subtest 2 */
393 000147F7 40 ret#2
394 000147F8 .set L252,0x0
395 000147F8 L254:
396 000147F8 13 fe84 jbr L255
397 000147FB .data
398 00000b04 * .text
399 000147FB 00 .align 1
400 000147FC .globl _cvlf_3
401 000147FC _cvlf_3:
402 000147FC 0000 .word L271
403 000147FE #
404 000147FE #
405 000147FE #
406 000147FE # /************************************************************************
407 000147FE # *
408 000147FE # * SUBTEST 3 - Check for register corruption
409 000147FE # *
410 000147FE # ************************************************************************/
411 000147FE # cvlf_3()
412 000147FE # {
413 000147FE 13 01d2 jbr L273
414 00014801 L274:
415 00014801 # force_loop = FALSE; /* clear force_loop flg */
416 00014801 4d effffffc95 clrl _force_loop
417 00014807 # subtest = 3;
418 00014807 0d 03 effffffc8e movl $3,_subtest
419 0001480E # fill_reg_buf( load_regs ); /* get patterns for regs */
420 0001480E dd 8f00000000 pushl $_load_regs
421 00014814 fe 08 effffffc81 callf $8,_fill_reg_buf
422 0001481B # index = 0;
423 0001481B 4d effffffc7b clrl _index
424 00014821 # sgl_ld_acc = 0x7fffffff; /* get value to negate */
425 00014821 0d 8f7fffffff effffffc70 movl $2147483647,_sgl_ld_acc
426 0001482C # sgl_value_1 = cvlf_1_data[0].ld; /* get value to negate */
427 0001482C 0d effffffc6a effffffc65 movl _cvlf_1_data,_sgl_value_1
428 00014837 # sgl_expected = cvlf_1_data[0].exp; /* get expected result */
429 00014837 0d effffffc63 effffffc5a movl _cvlf_1_data+4,_sgl_expected
430 00014842 # /*
431 00014842 # * If LOOP ON ERROR is set, this is the loop for this subtest.
432 00014842 # * The force loop flag is set after the first error.
433 00014842 # */
434 00014842 # asm("_cvlf_3_lp1:");
435 00014842 _cvlf_3_lp1:
436 00014842 # asm("ldf _sgl_ld_acc"); /* load base value */
437 00014842 06 effffffc54 ldf _sgl_ld_acc
438 00014848 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
439 00014848 ab 891fff effffffc4b loadr $0x1fff,_load_regs
440 00014851 # asm("nop");
441 00014851 10 nop
442 00014852 # asm("cvlf _sgl_value_1"); /* convert the value */
443 00014852 76 effffffc44 cvlf _sgl_value_1
444 00014858 # asm("nop");
445 00014858 10 nop
446 00014859 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
447 00014859 bb 891fff effffffc3a storer $0x1fff,_store_regs
448 00014862 # asm("stf _sgl_st_acc"); /* save the accumulator */
449 00014862 26 effffffc34 stf _sgl_st_acc
450 00014868 # if( force_loop )
451 00014868 5d effffffc2e tstl _force_loop
452 0001486E 31 02 jeql L276
453 00014870 # asm("brb _cvlf_3_lp1");; /* loop on the error */
454 00014870 11 d0 brb _cvlf_3_lp1
455 00014872 L276:
456 00014872 # /*
457 00014872 # * Now compare the stored register values to those that were loaded
458 00014872 # */
459 00014872 # index2 = 0;
460 00014872 4d effffffc24 clrl _index2
461 00014878 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
462 00014878 L277:
463 00014878 0d effffffc1e 50 movl _index2,r0
464 0001487F 0d effffffc17 51 movl _index2,r1
465 00014886 1d 40effffffc0f cmpl _load_regs[r0],_store_regs[r1]
41effffffc09
466 00014893 21 11 jneq L278
467 00014895 1d effffffc01 0d cmpl _index2,$13
468 0001489C 81 08 jgeq L278
469 0001489E # index2++; /* check reg values */
470 0001489E 6d effffffbf8 incl _index2
471 000148A4 11 d2 jbr L277
472 000148A6 L278:
473 000148A6 # if( index2 < 13 ) { /* error if index2 < 13 */
474 000148A6 1d effffffbf0 0d cmpl _index2,$13
475 000148AD 91 03 13 0120 jgeq L279
476 000148B2 # errcnt++; /* bump the error count */
477 000148B2 6d effffffbe4 incl _errcnt
478 000148B8 # if( prt_error ) {
479 000148B8 5d effffffbde tstl _prt_error
480 000148BE 21 03 13 00ec jeql L280
481 000148C3 # writes(" \n"); /* start a new print line */
482 000148C3 .data 1
483 00000bf5 * L281:
484 00000bf5 * 200A00 .ascii " \12\0"
485 00000bf8 * .text
486 000148C3 dd 8f00000bf5 pushl $L281
487 000148C9 fe 08 effffffbcc callf $8,_writes
488 000148D0 # writes("cycle: ");
489 000148D0 .data 1
490 00000bf8 * L282:
491 00000bf8 * 6379636C653A2000 .ascii "cycle: \0"
492 00000c00 * .text
493 000148D0 dd 8f00000bf8 pushl $L282
494 000148D6 fe 08 effffffbbf callf $8,_writes
495 000148DD # writed( cycle );
496 000148DD dd effffffbb9 pushl _cycle
497 000148E3 fe 08 effffffbb2 callf $8,_writed
498 000148EA # writes(" CVLF test ");
499 000148EA .data 1
500 00000c00 * L283:
501 00000c00 * 202043564C462074657374200 .ascii " CVLF test \0"
0
502 00000c0d * .text
503 000148EA dd 8f00000c00 pushl $L283
504 000148F0 fe 08 effffffba5 callf $8,_writes
505 000148F7 # writed( test_no );
506 000148F7 dd effffffb9f pushl _test_no
507 000148FD fe 08 effffffb98 callf $8,_writed
508 00014904 # writes(", subtest 3 (Reg. Corr.) - A REGISTER WAS MODIFIED\n");
509 00014904 .data 1
510 00000c0d * L284:
511 00000c0d * 2C20737562746573742033202 .ascii ", subtest 3 (Reg. Corr.) - A REGISTER WAS MODIFIED\12\0"
85265672E20436F72722E2920
2D20412052454749535445522
0574153204D4F444946494544
0A00
512 00000c41 * .text
513 00014904 dd 8f00000c0d pushl $L284
514 0001490A fe 08 effffffb8b callf $8,_writes
515 00014911 # print_cvlf_data();
516 00014911 fe 04 ef0000059c callf $4,_print_cvlf_data
517 00014918 # writec('\n');
518 00014918 dd 0a pushl $10
519 0001491A fe 08 effffffb7b callf $8,_writec
520 00014921 # writes(" operand = ");
521 00014921 .data 1
522 00000c41 * L285:
523 00000c41 * 202020206F706572616E64203 .ascii " operand = \0"
D2000
524 00000c50 * .text
525 00014921 dd 8f00000c41 pushl $L285
526 00014927 fe 08 effffffb6e callf $8,_writes
527 0001492E # write32h( sgl_value_1 );
528 0001492E dd effffffb68 pushl _sgl_value_1
529 00014934 fe 08 effffffb61 callf $8,_write32h
530 0001493B # writec('\n');
531 0001493B dd 0a pushl $10
532 0001493D fe 08 effffffb58 callf $8,_writec
533 00014944 # writes("register "); /* print the information */
534 00014944 .data 1
535 00000c50 * L286:
536 00000c50 * 72656769737465722000 .ascii "register \0"
537 00000c5a * .text
538 00014944 dd 8f00000c50 pushl $L286
539 0001494A fe 08 effffffb4b callf $8,_writes
540 00014951 # writed( index2 ); /* about the corrupted */
541 00014951 dd effffffb45 pushl _index2
542 00014957 fe 08 effffffb3e callf $8,_writed
543 0001495E # writes(" = "); /* register */
544 0001495E .data 1
545 00000c5a * L287:
546 00000c5a * 203D2000 .ascii " = \0"
547 00000c5e * .text
548 0001495E dd 8f00000c5a pushl $L287
549 00014964 fe 08 effffffb31 callf $8,_writes
550 0001496B # write32h( store_regs[index2] );
551 0001496B 0d effffffb2b 50 movl _index2,r0
552 00014972 dd 40effffffb23 pushl _store_regs[r0]
553 00014979 fe 08 effffffb1c callf $8,_write32h
554 00014980 # writes(", should be = ");
555 00014980 .data 1
556 00000c5e * L288:
557 00000c5e * 2C202073686F756C642062652 .ascii ", should be = \0"
03D2000
558 00000c6e * .text
559 00014980 dd 8f00000c5e pushl $L288
560 00014986 fe 08 effffffb0f callf $8,_writes
561 0001498D # write32h( load_regs[index2] );
562 0001498D 0d effffffb09 50 movl _index2,r0
563 00014994 dd 40effffffb01 pushl _load_regs[r0]
564 0001499B fe 08 effffffafa callf $8,_write32h
565 000149A2 # writes("\n");
566 000149A2 .data 1
567 00000c6e * L289:
568 00000c6e * 0A00 .ascii "\12\0"
569 00000c70 * .text
570 000149A2 dd 8f00000c6e pushl $L289
571 000149A8 fe 08 effffffaed callf $8,_writes
572 000149AF # }
573 000149AF # if( halt_flg )
574 000149AF L280:
575 000149AF 5d effffffae7 tstl _halt_flg
576 000149B5 31 09 jeql L290
577 000149B7 # cvlf_er_halt( BAD_REG_HLT ); /* halt on the error */
578 000149B7 dd 02 pushl $2
579 000149B9 fe 08 ef00000530 callf $8,_cvlf_er_halt
580 000149C0 # if( loop_on_err ) {
581 000149C0 L290:
582 000149C0 5d effffffad6 tstl _loop_on_err
583 000149C6 31 0a jeql L291
584 000149C8 # force_loop = TRUE; /* set the force loop flag */
585 000149C8 0d 01 effffffacd movl $1,_force_loop
586 000149CF # asm("brw _cvlf_3_lp1");; /* and loop on the error */
587 000149CF 13 fe70 brw _cvlf_3_lp1
588 000149D2 # } /* end of loop on error */
589 000149D2 # } /* end of register corruption error */
590 000149D2 L291:
591 000149D2 # } /* end of subtest 3 */
592 000149D2 L279:
593 000149D2 40 ret#2
594 000149D3 .set L271,0x0
595 000149D3 L273:
596 000149D3 13 fe2b jbr L274
597 000149D6 .data
598 00000b04 * .text
599 000149D6 .align 1
600 000149D6 .globl _cvlf_4
601 000149D6 _cvlf_4:
602 000149D6 0000 .word L292
603 000149D8 #
604 000149D8 #
605 000149D8 #
606 000149D8 # /************************************************************************
607 000149D8 # *
608 000149D8 # * SUBTEST 4 - Check for PSL corruption
609 000149D8 # *
610 000149D8 # ************************************************************************/
611 000149D8 # cvlf_4()
612 000149D8 # {
613 000149D8 13 01ce jbr L294
614 000149DB L295:
615 000149DB # force_loop = FALSE; /* clear force_loop flg */
616 000149DB 4d effffffabb clrl _force_loop
617 000149E1 # subtest = 4;
618 000149E1 0d 04 effffffab4 movl $4,_subtest
619 000149E8 # for( index = 0; index < 3; index++ ) {
620 000149E8 4d effffffaae clrl _index
621 000149EE L298:
622 000149EE 1d effffffaa8 03 cmpl _index,$3
623 000149F5 91 03 13 01ae jgeq L297
624 000149FA # sgl_ld_acc = 0x7fffffff; /* get value to negate */
625 000149FA 0d 8f7fffffff effffffa97 movl $2147483647,_sgl_ld_acc
626 00014A05 # sgl_value_1 = cvlf_1_data[index].ld; /* get value to negate */
627 00014A05 0d effffffa91 50 movl _index,r0
628 00014A0C 48 03 50 50 shll $3,r0,r0
629 00014A10 0d e000000000 effffffa81 movl _cvlf_1_data(r0),_sgl_value_1
630 00014A1B # sgl_expected = cvlf_1_data[index].exp; /* get expected */
631 00014A1B 0d effffffa7b 50 movl _index,r0
632 00014A22 48 03 50 50 shll $3,r0,r0
633 00014A26 0d e000000004 effffffa6b movl _cvlf_1_data+4(r0),_sgl_expected
634 00014A31 # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */
635 00014A31 0d effffffa65 50 movl _status_index,r0
636 00014A38 0d 40effffffa5d movl _status_array[r0],_sgl_dummy1
effffffa58
637 00014A44 # /*
638 00014A44 # * If LOOP ON ERROR is set, this is the loop for this subtest.
639 00014A44 # * The force loop flag is set after the first error.
640 00014A44 # */
641 00014A44 # asm("_cvlf_4_lp1:");
642 00014A44 _cvlf_4_lp1:
643 00014A44 # asm("ldf _sgl_ld_acc"); /* load the base value */
644 00014A44 06 effffffa52 ldf _sgl_ld_acc
645 00014A4A # asm("tstl _sgl_dummy1"); /* set the PSL status */
646 00014A4A 5d effffffa4c tstl _sgl_dummy1
647 00014A50 # asm("movpsl _init_psl"); /* save the initial PSL */
648 00014A50 cd effffffa46 movpsl _init_psl
649 00014A56 # asm("nop");
650 00014A56 10 nop
651 00014A57 # asm("cvlf _sgl_value_1"); /* convert the value */
652 00014A57 76 effffffa3f cvlf _sgl_value_1
653 00014A5D # asm("nop");
654 00014A5D 10 nop
655 00014A5E # asm("movpsl _psl_val"); /* save the final PSL */
656 00014A5E cd effffffa38 movpsl _psl_val
657 00014A64 # asm("stf _sgl_st_acc"); /* save the accumulator */
658 00014A64 26 effffffa32 stf _sgl_st_acc
659 00014A6A # if( force_loop )
660 00014A6A 5d effffffa2c tstl _force_loop
661 00014A70 31 02 jeql L299
662 00014A72 # asm("brb _cvlf_4_lp1");; /* loop on the error */
663 00014A72 11 d0 brb _cvlf_4_lp1
664 00014A74 L299:
665 00014A74 # /*
666 00014A74 # * Now compare the final PSL to the initial PSL -they should be the same
667 00014A74 # */
668 00014A74 # exp_psl = init_psl;
669 00014A74 0d effffffa22 effffffa1d movl _init_psl,_exp_psl
670 00014A7F # if( psl_val != exp_psl ) {
671 00014A7F 1d effffffa17 effffffa12 cmpl _psl_val,_exp_psl
672 00014A8A 21 03 13 0110 jeql L300
673 00014A8F # errcnt++; /* bump the error count */
674 00014A8F 6d effffffa07 incl _errcnt
675 00014A95 # if( prt_error ) {
676 00014A95 5d effffffa01 tstl _prt_error
677 00014A9B 21 03 13 00dc jeql L301
678 00014AA0 # writes(" \n"); /* start a new print line */
679 00014AA0 .data 1
680 00000c70 * L302:
681 00000c70 * 200A00 .ascii " \12\0"
682 00000c73 * .text
683 00014AA0 dd 8f00000c70 pushl $L302
684 00014AA6 fe 08 effffff9ef callf $8,_writes
685 00014AAD # writes("cycle: ");
686 00014AAD .data 1
687 00000c73 * L303:
688 00000c73 * 6379636C653A2000 .ascii "cycle: \0"
689 00000c7b * .text
690 00014AAD dd 8f00000c73 pushl $L303
691 00014AB3 fe 08 effffff9e2 callf $8,_writes
692 00014ABA # writed( cycle );
693 00014ABA dd effffff9dc pushl _cycle
694 00014AC0 fe 08 effffff9d5 callf $8,_writed
695 00014AC7 # writes(" CVLF test ");
696 00014AC7 .data 1
697 00000c7b * L304:
698 00000c7b * 202043564C462074657374200 .ascii " CVLF test \0"
0
699 00000c88 * .text
700 00014AC7 dd 8f00000c7b pushl $L304
701 00014ACD fe 08 effffff9c8 callf $8,_writes
702 00014AD4 # writed( test_no );
703 00014AD4 dd effffff9c2 pushl _test_no
704 00014ADA fe 08 effffff9bb callf $8,_writed
705 00014AE1 # writes(", subtest 4 - INCORRECT FINAL PSL\n");
706 00014AE1 .data 1
707 00000c88 * L305:
708 00000c88 * 2C20737562746573742034202 .ascii ", subtest 4 - INCORRECT FINAL PSL\12\0"
D20494E434F52524543542046
494E414C2050534C0A00
709 00000cab * .text
710 00014AE1 dd 8f00000c88 pushl $L305
711 00014AE7 fe 08 effffff9ae callf $8,_writes
712 00014AEE # print_cvlf_data();
713 00014AEE fe 04 ef000003bf callf $4,_print_cvlf_data
714 00014AF5 # writec('\n');
715 00014AF5 dd 0a pushl $10
716 00014AF7 fe 08 effffff99e callf $8,_writec
717 00014AFE # writes(" operand = ");
718 00014AFE .data 1
719 00000cab * L306:
720 00000cab * 202020206F706572616E64203 .ascii " operand = \0"
D2000
721 00000cba * .text
722 00014AFE dd 8f00000cab pushl $L306
723 00014B04 fe 08 effffff991 callf $8,_writes
724 00014B0B # write32h( sgl_value_1 );
725 00014B0B dd effffff98b pushl _sgl_value_1
726 00014B11 fe 08 effffff984 callf $8,_write32h
727 00014B18 # writec('\n');
728 00014B18 dd 0a pushl $10
729 00014B1A fe 08 effffff97b callf $8,_writec
730 00014B21 # writes("initial PSL = ");
731 00014B21 .data 1
732 00000cba * L307:
733 00000cba * 696E697469616C2050534C203 .ascii "initial PSL = \0"
D2000
734 00000cc9 * .text
735 00014B21 dd 8f00000cba pushl $L307
736 00014B27 fe 08 effffff96e callf $8,_writes
737 00014B2E # write32h( init_psl );
738 00014B2E dd effffff968 pushl _init_psl
739 00014B34 fe 08 effffff961 callf $8,_write32h
740 00014B3B # writes(", final PSL = ");
741 00014B3B .data 1
742 00000cc9 * L308:
743 00000cc9 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
744 00000cd9 * .text
745 00014B3B dd 8f00000cc9 pushl $L308
746 00014B41 fe 08 effffff954 callf $8,_writes
747 00014B48 # write32h( psl_val );
748 00014B48 dd effffff94e pushl _psl_val
749 00014B4E fe 08 effffff947 callf $8,_write32h
750 00014B55 # writes(", expected PSL = ");
751 00014B55 .data 1
752 00000cd9 * L309:
753 00000cd9 * 2C20206578706563746564205 .ascii ", expected PSL = \0"
0534C203D2000
754 00000cec * .text
755 00014B55 dd 8f00000cd9 pushl $L309
756 00014B5B fe 08 effffff93a callf $8,_writes
757 00014B62 # write32h( exp_psl );
758 00014B62 dd effffff934 pushl _exp_psl
759 00014B68 fe 08 effffff92d callf $8,_write32h
760 00014B6F # writes("\n");
761 00014B6F .data 1
762 00000cec * L310:
763 00000cec * 0A00 .ascii "\12\0"
764 00000cee * .text
765 00014B6F dd 8f00000cec pushl $L310
766 00014B75 fe 08 effffff920 callf $8,_writes
767 00014B7C # }
768 00014B7C # if( halt_flg )
769 00014B7C L301:
770 00014B7C 5d effffff91a tstl _halt_flg
771 00014B82 31 09 jeql L311
772 00014B84 # cvlf_er_halt( BAD_PSL_HLT ); /* halt on the error */
773 00014B84 dd 03 pushl $3
774 00014B86 fe 08 ef00000363 callf $8,_cvlf_er_halt
775 00014B8D # if( loop_on_err ) {
776 00014B8D L311:
777 00014B8D 5d effffff909 tstl _loop_on_err
778 00014B93 31 0a jeql L312
779 00014B95 # force_loop = TRUE; /* set the force loop flag */
780 00014B95 0d 01 effffff900 movl $1,_force_loop
781 00014B9C # asm("brw _cvlf_4_lp1");; /* and loop on the error */
782 00014B9C 13 fea5 brw _cvlf_4_lp1
783 00014B9F # } /* end of loop on error */
784 00014B9F # } /* end of PSL corruption error */
785 00014B9F L312:
786 00014B9F # } /* end of WHILE loop */
787 00014B9F L300:
788 00014B9F L296:
789 00014B9F 6d effffff8f7 incl _index
790 00014BA5 13 fe46 jbr L298
791 00014BA8 L297:
792 00014BA8 # } /* end of subtest 4 */
793 00014BA8 40 ret#2
794 00014BA9 .set L292,0x0
795 00014BA9 L294:
796 00014BA9 13 fe2f jbr L295
797 00014BAC .data
798 00000b04 * .text
799 00014BAC .align 1
800 00014BAC .globl _cvlf_5
801 00014BAC _cvlf_5:
802 00014BAC 0000 .word L313
803 00014BAE #
804 00014BAE #
805 00014BAE #
806 00014BAE # /************************************************************************
807 00014BAE # *
808 00014BAE # * SUBTEST 5 - pipelined entry test
809 00014BAE # *
810 00014BAE # ************************************************************************/
811 00014BAE # cvlf_5()
812 00014BAE # {
813 00014BAE 13 0184 jbr L315
814 00014BB1 L316:
815 00014BB1 # force_loop = FALSE;
816 00014BB1 4d effffff8e5 clrl _force_loop
817 00014BB7 # subtest = 5;
818 00014BB7 0d 05 effffff8de movl $5,_subtest
819 00014BBE # for( index = 0; index < max_cvlf_1_index; index++ ) {
820 00014BBE 4d effffff8d8 clrl _index
821 00014BC4 L319:
822 00014BC4 1d effffff8d2 effffff8cd cmpl _index,_max_cvlf_1_index
823 00014BCF 91 03 13 0160 jgeq L318
824 00014BD4 # sgl_ld_acc = 0x7fffffff; /* get the base value */
825 00014BD4 0d 8f7fffffff effffff8bd movl $2147483647,_sgl_ld_acc
826 00014BDF # sgl_value_1 = cvlf_1_data[index].ld; /* get value to negate */
827 00014BDF 0d effffff8b7 50 movl _index,r0
828 00014BE6 48 03 50 50 shll $3,r0,r0
829 00014BEA 0d e000000000 effffff8a7 movl _cvlf_1_data(r0),_sgl_value_1
830 00014BF5 # sgl_expected = cvlf_1_data[index].exp; /* get expected result */
831 00014BF5 0d effffff8a1 50 movl _index,r0
832 00014BFC 48 03 50 50 shll $3,r0,r0
833 00014C00 0d e000000004 effffff891 movl _cvlf_1_data+4(r0),_sgl_expected
834 00014C0B # /*
835 00014C0B # * If LOOP ON ERROR is set, this is the loop for this subtest.
836 00014C0B # * The force loop flag is set after the first error.
837 00014C0B # */
838 00014C0B # asm("_cvlf_5_lp1:");
839 00014C0B _cvlf_5_lp1:
840 00014C0B # asm("movl $0,r0"); /* clear r0 */
841 00014C0B 0d 00 50 movl $0,r0
842 00014C0E # asm("ldf r0"); /* load the Acc. with 0.0 */
843 00014C0E 06 50 ldf r0
844 00014C10 # asm("addf _sgl_ld_acc"); /* add the value */
845 00014C10 c6 effffff886 addf _sgl_ld_acc
846 00014C16 # asm("stf _sgl_st_acc"); /* store the result */
847 00014C16 26 effffff880 stf _sgl_st_acc
848 00014C1C # asm("cvlf _sgl_value_1"); /* convert the value */
849 00014C1C 76 effffff87a cvlf _sgl_value_1
850 00014C22 # asm("stf _sgl_st_acc"); /* store the result */
851 00014C22 26 effffff874 stf _sgl_st_acc
852 00014C28 # if( force_loop )
853 00014C28 5d effffff86e tstl _force_loop
854 00014C2E 31 02 jeql L320
855 00014C30 # asm("brb _cvlf_5_lp1");; /* loop on the error */
856 00014C30 11 d9 brb _cvlf_5_lp1
857 00014C32 L320:
858 00014C32 # /*
859 00014C32 # * end error loop - test the results
860 00014C32 # */
861 00014C32 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
862 00014C32 1d effffff864 effffff85f cmpl _sgl_st_acc,_sgl_expected
863 00014C3D 21 03 13 00e9 jeql L321
864 00014C42 # errcnt++; /* bump the error count */
865 00014C42 6d effffff854 incl _errcnt
866 00014C48 # if( prt_error ) {
867 00014C48 5d effffff84e tstl _prt_error
868 00014C4E 21 03 13 00b5 jeql L322
869 00014C53 # writes(" \n"); /* start a new print line */
870 00014C53 .data 1
871 00000cee * L323:
872 00000cee * 200A00 .ascii " \12\0"
873 00000cf1 * .text
874 00014C53 dd 8f00000cee pushl $L323
875 00014C59 fe 08 effffff83c callf $8,_writes
876 00014C60 # writes("cycle: ");
877 00014C60 .data 1
878 00000cf1 * L324:
879 00000cf1 * 6379636C653A2000 .ascii "cycle: \0"
880 00000cf9 * .text
881 00014C60 dd 8f00000cf1 pushl $L324
882 00014C66 fe 08 effffff82f callf $8,_writes
883 00014C6D # writed( cycle );
884 00014C6D dd effffff829 pushl _cycle
885 00014C73 fe 08 effffff822 callf $8,_writed
886 00014C7A # writes(" CVLF test ");
887 00014C7A .data 1
888 00000cf9 * L325:
889 00000cf9 * 202043564C462074657374200 .ascii " CVLF test \0"
0
890 00000d06 * .text
891 00014C7A dd 8f00000cf9 pushl $L325
892 00014C80 fe 08 effffff815 callf $8,_writes
893 00014C87 # writed( test_no );
894 00014C87 dd effffff80f pushl _test_no
895 00014C8D fe 08 effffff808 callf $8,_writed
896 00014C94 # writes(", subtest 5 (Piped Entry) - BAD FINAL ACC\n");
897 00014C94 .data 1
898 00000d06 * L326:
899 00000d06 * 2C20737562746573742035202 .ascii ", subtest 5 (Piped Entry) - BAD FINAL ACC\12\0"
8506970656420456E74727929
202D204241442046494E414C2
04143430A00
900 00000d31 * .text
901 00014C94 dd 8f00000d06 pushl $L326
902 00014C9A fe 08 effffff7fb callf $8,_writes
903 00014CA1 # print_cvlf_data();
904 00014CA1 fe 04 ef0000020c callf $4,_print_cvlf_data
905 00014CA8 # writes(", data index = ");
906 00014CA8 .data 1
907 00000d31 * L327:
908 00000d31 * 2C2020206461746120696E646 .ascii ", data index = \0"
578203D2000
909 00000d43 * .text
910 00014CA8 dd 8f00000d31 pushl $L327
911 00014CAE fe 08 effffff7e7 callf $8,_writes
912 00014CB5 # writed( index );
913 00014CB5 dd effffff7e1 pushl _index
914 00014CBB fe 08 effffff7da callf $8,_writed
915 00014CC2 # writec('\n');
916 00014CC2 dd 0a pushl $10
917 00014CC4 fe 08 effffff7d1 callf $8,_writec
918 00014CCB # writes(" operand = ");
919 00014CCB .data 1
920 00000d43 * L328:
921 00000d43 * 202020206F706572616E64203 .ascii " operand = \0"
D2000
922 00000d52 * .text
923 00014CCB dd 8f00000d43 pushl $L328
924 00014CD1 fe 08 effffff7c4 callf $8,_writes
925 00014CD8 # write32h( sgl_value_1 );
926 00014CD8 dd effffff7be pushl _sgl_value_1
927 00014CDE fe 08 effffff7b7 callf $8,_write32h
928 00014CE5 # writes(", expected Acc = ");
929 00014CE5 .data 1
930 00000d52 * L329:
931 00000d52 * 2C20206578706563746564204 .ascii ", expected Acc = \0"
16363203D2000
932 00000d65 * .text
933 00014CE5 dd 8f00000d52 pushl $L329
934 00014CEB fe 08 effffff7aa callf $8,_writes
935 00014CF2 # write32h( sgl_expected );
936 00014CF2 dd effffff7a4 pushl _sgl_expected
937 00014CF8 fe 08 effffff79d callf $8,_write32h
938 00014CFF # writec('\n');
939 00014CFF dd 0a pushl $10
940 00014D01 fe 08 effffff794 callf $8,_writec
941 00014D08 # }
942 00014D08 # if( halt_flg )
943 00014D08 L322:
944 00014D08 5d effffff78e tstl _halt_flg
945 00014D0E 31 09 jeql L330
946 00014D10 # cvlf_er_halt( BAD_ACC_HLT ); /* halt on the error */
947 00014D10 dd 01 pushl $1
948 00014D12 fe 08 ef000001d7 callf $8,_cvlf_er_halt
949 00014D19 # if( loop_on_err ) {
950 00014D19 L330:
951 00014D19 5d effffff77d tstl _loop_on_err
952 00014D1F 31 0a jeql L331
953 00014D21 # force_loop = TRUE; /* set the force loop flag */
954 00014D21 0d 01 effffff774 movl $1,_force_loop
955 00014D28 # asm("brw _cvlf_5_lp1");; /* and loop on the error */
956 00014D28 13 fee0 brw _cvlf_5_lp1
957 00014D2B # } /* end of loop on error */
958 00014D2B # } /* end of compare error */
959 00014D2B L331:
960 00014D2B # } /* end of WHILE loop */
961 00014D2B L321:
962 00014D2B L317:
963 00014D2B 6d effffff76b incl _index
964 00014D31 13 fe90 jbr L319
965 00014D34 L318:
966 00014D34 # } /* end of subtest 5 */
967 00014D34 40 ret#2
968 00014D35 .set L313,0x0
969 00014D35 L315:
970 00014D35 13 fe79 jbr L316
971 00014D38 .data
972 00000b04 * .text
973 00014D38 .align 1
974 00014D38 .globl _cvlf_6
975 00014D38 _cvlf_6:
976 00014D38 0000 .word L332
977 00014D3A #
978 00014D3A #
979 00014D3A #
980 00014D3A # /************************************************************************
981 00014D3A # *
982 00014D3A # * SUBTEST 6 - pipelined exit test
983 00014D3A # *
984 00014D3A # ************************************************************************/
985 00014D3A # cvlf_6()
986 00014D3A # {
987 00014D3A 13 0173 jbr L334
988 00014D3D L335:
989 00014D3D # force_loop = FALSE;
990 00014D3D 4d effffff759 clrl _force_loop
991 00014D43 # subtest = 6;
992 00014D43 0d 06 effffff752 movl $6,_subtest
993 00014D4A # for( index = 0; index < max_cvlf_1_index; index++ ) {
994 00014D4A 4d effffff74c clrl _index
995 00014D50 L338:
996 00014D50 1d effffff746 effffff741 cmpl _index,_max_cvlf_1_index
997 00014D5B 91 03 13 014f jgeq L337
998 00014D60 # sgl_ld_acc = cvlf_1_data[index].ld; /* get initial acc val */
999 00014D60 0d effffff736 50 movl _index,r0
1000 00014D67 48 03 50 50 shll $3,r0,r0
1001 00014D6B 0d e000000000 effffff726 movl _cvlf_1_data(r0),_sgl_ld_acc
1002 00014D76 # sgl_expected = cvlf_1_data[index].exp; /* get expected result */
1003 00014D76 0d effffff720 50 movl _index,r0
1004 00014D7D 48 03 50 50 shll $3,r0,r0
1005 00014D81 0d e000000004 effffff710 movl _cvlf_1_data+4(r0),_sgl_expected
1006 00014D8C # /*
1007 00014D8C # * If LOOP ON ERROR is set, this is the loop for this subtest.
1008 00014D8C # * The force loop flag is set after the first error.
1009 00014D8C # */
1010 00014D8C # asm("_cvlf_6_lp1:");
1011 00014D8C _cvlf_6_lp1:
1012 00014D8C # asm("movl $0,r0"); /* clear r0 */
1013 00014D8C 0d 00 50 movl $0,r0
1014 00014D8F # asm("ldf _sgl_ld_acc"); /* load the value */
1015 00014D8F 06 effffff707 ldf _sgl_ld_acc
1016 00014D95 # asm("cvlf _sgl_ld_acc"); /* convert the value */
1017 00014D95 76 effffff701 cvlf _sgl_ld_acc
1018 00014D9B # asm("addf r0"); /* add a zero to the acc */
1019 00014D9B c6 50 addf r0
1020 00014D9D # asm("stf _sgl_st_acc"); /* store the result */
1021 00014D9D 26 effffff6f9 stf _sgl_st_acc
1022 00014DA3 # if( force_loop )
1023 00014DA3 5d effffff6f3 tstl _force_loop
1024 00014DA9 31 02 jeql L339
1025 00014DAB # asm("brb _cvlf_6_lp1");; /* loop on the error */
1026 00014DAB 11 df brb _cvlf_6_lp1
1027 00014DAD L339:
1028 00014DAD # /*
1029 00014DAD # * end error loop - test the results
1030 00014DAD # */
1031 00014DAD # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
1032 00014DAD 1d effffff6e9 effffff6e4 cmpl _sgl_st_acc,_sgl_expected
1033 00014DB8 21 03 13 00e9 jeql L340
1034 00014DBD # errcnt++; /* bump the error count */
1035 00014DBD 6d effffff6d9 incl _errcnt
1036 00014DC3 # if( prt_error ) {
1037 00014DC3 5d effffff6d3 tstl _prt_error
1038 00014DC9 21 03 13 00b5 jeql L341
1039 00014DCE # writes(" \n"); /* start a new print line */
1040 00014DCE .data 1
1041 00000d65 * L342:
1042 00000d65 * 200A00 .ascii " \12\0"
1043 00000d68 * .text
1044 00014DCE dd 8f00000d65 pushl $L342
1045 00014DD4 fe 08 effffff6c1 callf $8,_writes
1046 00014DDB # writes("cycle: ");
1047 00014DDB .data 1
1048 00000d68 * L343:
1049 00000d68 * 6379636C653A2000 .ascii "cycle: \0"
1050 00000d70 * .text
1051 00014DDB dd 8f00000d68 pushl $L343
1052 00014DE1 fe 08 effffff6b4 callf $8,_writes
1053 00014DE8 # writed( cycle );
1054 00014DE8 dd effffff6ae pushl _cycle
1055 00014DEE fe 08 effffff6a7 callf $8,_writed
1056 00014DF5 # writes(" CVLF test ");
1057 00014DF5 .data 1
1058 00000d70 * L344:
1059 00000d70 * 202043564C462074657374200 .ascii " CVLF test \0"
0
1060 00000d7d * .text
1061 00014DF5 dd 8f00000d70 pushl $L344
1062 00014DFB fe 08 effffff69a callf $8,_writes
1063 00014E02 # writed( test_no );
1064 00014E02 dd effffff694 pushl _test_no
1065 00014E08 fe 08 effffff68d callf $8,_writed
1066 00014E0F # writes(", subtest 6 (Piped Exit) - BAD FINAL ACC\n");
1067 00014E0F .data 1
1068 00000d7d * L345:
1069 00000d7d * 2C20737562746573742036202 .ascii ", subtest 6 (Piped Exit) - BAD FINAL ACC\12\0"
8506970656420457869742920
2D204241442046494E414C204
143430A00
1070 00000da7 * .text
1071 00014E0F dd 8f00000d7d pushl $L345
1072 00014E15 fe 08 effffff680 callf $8,_writes
1073 00014E1C # print_cvlf_data();
1074 00014E1C fe 04 ef00000091 callf $4,_print_cvlf_data
1075 00014E23 # writes(", data index = ");
1076 00014E23 .data 1
1077 00000da7 * L346:
1078 00000da7 * 2C2020206461746120696E646 .ascii ", data index = \0"
578203D2000
1079 00000db9 * .text
1080 00014E23 dd 8f00000da7 pushl $L346
1081 00014E29 fe 08 effffff66c callf $8,_writes
1082 00014E30 # writed( index );
1083 00014E30 dd effffff666 pushl _index
1084 00014E36 fe 08 effffff65f callf $8,_writed
1085 00014E3D # writec('\n');
1086 00014E3D dd 0a pushl $10
1087 00014E3F fe 08 effffff656 callf $8,_writec
1088 00014E46 # writes(" operand = ");
1089 00014E46 .data 1
1090 00000db9 * L347:
1091 00000db9 * 202020206F706572616E64203 .ascii " operand = \0"
D2000
1092 00000dc8 * .text
1093 00014E46 dd 8f00000db9 pushl $L347
1094 00014E4C fe 08 effffff649 callf $8,_writes
1095 00014E53 # write32h( sgl_value_1 );
1096 00014E53 dd effffff643 pushl _sgl_value_1
1097 00014E59 fe 08 effffff63c callf $8,_write32h
1098 00014E60 # writes(", expected Acc = ");
1099 00014E60 .data 1
1100 00000dc8 * L348:
1101 00000dc8 * 2C20206578706563746564204 .ascii ", expected Acc = \0"
16363203D2000
1102 00000ddb * .text
1103 00014E60 dd 8f00000dc8 pushl $L348
1104 00014E66 fe 08 effffff62f callf $8,_writes
1105 00014E6D # write32h( sgl_expected );
1106 00014E6D dd effffff629 pushl _sgl_expected
1107 00014E73 fe 08 effffff622 callf $8,_write32h
1108 00014E7A # writec('\n');
1109 00014E7A dd 0a pushl $10
1110 00014E7C fe 08 effffff619 callf $8,_writec
1111 00014E83 # }
1112 00014E83 # if( halt_flg )
1113 00014E83 L341:
1114 00014E83 5d effffff613 tstl _halt_flg
1115 00014E89 31 09 jeql L349
1116 00014E8B # cvlf_er_halt( BAD_ACC_HLT ); /* halt on the error */
1117 00014E8B dd 01 pushl $1
1118 00014E8D fe 08 ef0000005c callf $8,_cvlf_er_halt
1119 00014E94 # if( loop_on_err ) {
1120 00014E94 L349:
1121 00014E94 5d effffff602 tstl _loop_on_err
1122 00014E9A 31 0a jeql L350
1123 00014E9C # force_loop = TRUE; /* set the force loop flag */
1124 00014E9C 0d 01 effffff5f9 movl $1,_force_loop
1125 00014EA3 # asm("brw _cvlf_6_lp1");; /* and loop on the error */
1126 00014EA3 13 fee6 brw _cvlf_6_lp1
1127 00014EA6 # } /* end of loop on error */
1128 00014EA6 # } /* end of compare error */
1129 00014EA6 L350:
1130 00014EA6 # } /* end of WHILE loop */
1131 00014EA6 L340:
1132 00014EA6 L336:
1133 00014EA6 6d effffff5f0 incl _index
1134 00014EAC 13 fea1 jbr L338
1135 00014EAF L337:
1136 00014EAF # } /* end of subtest 6 */
1137 00014EAF 40 ret#2
1138 00014EB0 .set L332,0x0
1139 00014EB0 L334:
1140 00014EB0 13 fe8a jbr L335
1141 00014EB3 .data
1142 00000b04 * .text
1143 00014EB3 00 .align 1
1144 00014EB4 .globl _print_cvlf_data
1145 00014EB4 _print_cvlf_data:
1146 00014EB4 0000 .word L351
1147 00014EB6 #
1148 00014EB6 #
1149 00014EB6 #
1150 00014EB6 # /**************************************************************************
1151 00014EB6 # *
1152 00014EB6 # * PRINT THE DATA AND STORE RESULTS
1153 00014EB6 # *
1154 00014EB6 # * initial Acc = xxxxxxxx, stored = xxxxxxxx, data index = xx
1155 00014EB6 # * operand = xxxxxxxx, expected = xxxxxxxx
1156 00014EB6 # **************************************************************************/
1157 00014EB6 # print_cvlf_data()
1158 00014EB6 # {
1159 00014EB6 11 35 jbr L353
1160 00014EB8 L354:
1161 00014EB8 # writes("initial Acc = ");
1162 00014EB8 .data 1
1163 00000ddb * L355:
1164 00000ddb * 696E697469616C20416363203 .ascii "initial Acc = \0"
D2000
1165 00000dea * .text
1166 00014EB8 dd 8f00000ddb pushl $L355
1167 00014EBE fe 08 effffff5d7 callf $8,_writes
1168 00014EC5 # write32h( sgl_ld_acc );
1169 00014EC5 dd effffff5d1 pushl _sgl_ld_acc
1170 00014ECB fe 08 effffff5ca callf $8,_write32h
1171 00014ED2 # writes(", final Acc = ");
1172 00014ED2 .data 1
1173 00000dea * L356:
1174 00000dea * 2C202020202066696E616C204 .ascii ", final Acc = \0"
16363203D2000
1175 00000dfd * .text
1176 00014ED2 dd 8f00000dea pushl $L356
1177 00014ED8 fe 08 effffff5bd callf $8,_writes
1178 00014EDF # write32h( sgl_st_acc );
1179 00014EDF dd effffff5b7 pushl _sgl_st_acc
1180 00014EE5 fe 08 effffff5b0 callf $8,_write32h
1181 00014EEC # }
1182 00014EEC 40 ret#2
1183 00014EED .set L351,0x0
1184 00014EED L353:
1185 00014EED 11 c9 jbr L354
1186 00014EEF .data
1187 00000b04 * .text
1188 00014EEF 00 .align 1
1189 00014EF0 .globl _cvlf_er_halt
1190 00014EF0 _cvlf_er_halt:
1191 00014EF0 0000 .word L357
1192 00014EF2 #
1193 00014EF2 #
1194 00014EF2 #
1195 00014EF2 # /**************************************************************************
1196 00014EF2 # *
1197 00014EF2 # * HALT ON ERROR ROUTINE
1198 00014EF2 # *
1199 00014EF2 # **************************************************************************/
1200 00014EF2 # cvlf_er_halt( halt_code )
1201 00014EF2 # int halt_code;
1202 00014EF2 # {
1203 00014EF2 13 00a8 jbr L359
1204 00014EF5 L360:
1205 00014EF5 # sgl_dummy1 = halt_code; /* get the error type */
1206 00014EF5 0d ad04 effffff59f movl 4(fp),_sgl_dummy1
1207 00014EFD # asm("movl _test_no,r0"); /* r0 = test number */
1208 00014EFD 0d effffff599 50 movl _test_no,r0
1209 00014F04 # asm("movl _subtest,r1"); /* r1 = subtest number */
1210 00014F04 0d effffff592 51 movl _subtest,r1
1211 00014F0B # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1212 00014F0B 0d effffff58b 52 movl _sgl_dummy1,r2
1213 00014F12 # asm("movl _cycle,r3"); /* r3 = cycle count */
1214 00014F12 0d effffff584 53 movl _cycle,r3
1215 00014F19 # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */
1216 00014F19 0d effffff57d 54 movl _sgl_ld_acc,r4
1217 00014F20 # /* asm("movl _sgl_value_1,r5"); /* r5 = data loaded */
1218 00014F20 # asm("movl _sgl_st_acc,r6"); /* r6 = data stored */
1219 00014F20 0d effffff576 56 movl _sgl_st_acc,r6
1220 00014F27 # if( halt_code == BAD_ACC_HLT ) {
1221 00014F27 1d ad04 01 cmpl 4(fp),$1
1222 00014F2B 21 10 jneq L361
1223 00014F2D # asm("movl _sgl_expected,r7"); /* r7 = data expected */
1224 00014F2D 0d effffff569 57 movl _sgl_expected,r7
1225 00014F34 # asm("movl _index,r8"); /* r8 = data expected */
1226 00014F34 0d effffff562 58 movl _index,r8
1227 00014F3B # } else
1228 00014F3B 11 5e jbr L362
1229 00014F3D L361:
1230 00014F3D # if( halt_code == BAD_REG_HLT ) {
1231 00014F3D 1d ad04 02 cmpl 4(fp),$2
1232 00014F41 21 3d jneq L363
1233 00014F43 # sgl_dummy1 = load_regs[index2];
1234 00014F43 0d effffff553 50 movl _index2,r0
1235 00014F4A 0d 40effffff54b movl _load_regs[r0],_sgl_dummy1
effffff546
1236 00014F56 # sgl_dummy2 = store_regs[index2];
1237 00014F56 0d effffff540 50 movl _index2,r0
1238 00014F5D 0d 40effffff538 movl _store_regs[r0],_sgl_dummy2
effffff533
1239 00014F69 # asm("movl _index2,r7"); /* r7 = bad register # */
1240 00014F69 0d effffff52d 57 movl _index2,r7
1241 00014F70 # asm("movl _sgl_dummy2,r8"); /* r8 = final reg value */
1242 00014F70 0d effffff526 58 movl _sgl_dummy2,r8
1243 00014F77 # asm("movl _sgl_dummy1,r9"); /* r9 = init reg value */
1244 00014F77 0d effffff51f 59 movl _sgl_dummy1,r9
1245 00014F7E # } else
1246 00014F7E 11 1b jbr L364
1247 00014F80 L363:
1248 00014F80 # if( halt_code == BAD_PSL_HLT ) {
1249 00014F80 1d ad04 03 cmpl 4(fp),$3
1250 00014F84 21 15 jneq L365
1251 00014F86 # asm("movl _init_psl,r7"); /* r7 = initial PSL */
1252 00014F86 0d effffff510 57 movl _init_psl,r7
1253 00014F8D # asm("movl _psl_val,r8"); /* r8 = final PSL */
1254 00014F8D 0d effffff509 58 movl _psl_val,r8
1255 00014F94 # asm("movl _exp_psl,r9"); /* r9 = expected PSL */
1256 00014F94 0d effffff502 59 movl _exp_psl,r9
1257 00014F9B # };
1258 00014F9B L365:
1259 00014F9B L364:
1260 00014F9B L362:
1261 00014F9B # asm("halt"); /* HALT ... */
1262 00014F9B 00 halt
1263 00014F9C # }
1264 00014F9C 40 ret#2
1265 00014F9D .set L357,0x0
1266 00014F9D L359:
1267 00014F9D 13 ff55 jbr L360
1268 00000b04 * .data
1268 00000b04 * .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.