|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 00000a60 * .text
4 00000000 .align 1
5 00000000 .globl _logf
6 00000000 _logf:
7 000215BC 0000 .word L215
8 000215BE # #include "fpp_defs.h"
9 000215BE #
10 000215BE #
11 000215BE #
12 000215BE # /***************************************************************************
13 000215BE # *
14 000215BE # * LOGF - SINGLE PRECISION FLOATING POINT LOGF FUNCTION TEST
15 000215BE # *
16 000215BE # * LOGF TEST MONITOR
17 000215BE # *
18 000215BE # *****************************************************************************/
19 000215BE # logf()
20 000215BE # {
21 000215BE 11 4f jbr L217
22 000215C0 L218:
23 000215C0 # asm(".globl _logf_t");
24 000215C0 .globl _logf_t
25 000215C0 # asm("_logf_t:"); /* entry address */
26 000215C0 _logf_t:
27 000215C0 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
28 000215C0 1d effffffff6 01 cmpl _cycle,$1
29 000215C7 21 15 jneq L219
30 000215C9 5d efffffffed tstl _prt_hdrs
31 000215CF 31 0d jeql L219
32 000215D1 # {
33 000215D1 # writes(" LOGF");
34 000215D1 .data 1
35 00000a60 * L221:
36 00000a60 * 204C4F474600 .ascii " LOGF\0"
37 00000a66 * .text
38 000215D1 dd 8f00000a60 pushl $L221
39 000215D7 fe 08 efffffffde callf $8,_writes
40 000215DE # }
41 000215DE # logf_1(); /* test log function w/ delay */
42 000215DE L219:
43 000215DE fe 04 ef0000002d callf $4,_logf_1
44 000215E5 # logf_2(); /* test log function */
45 000215E5 fe 04 ef00000198 callf $4,_logf_2
46 000215EC # logf_3(); /* register corruption */
47 000215EC fe 04 ef000002f1 callf $4,_logf_3
48 000215F3 # logf_4(); /* test the PSL */
49 000215F3 fe 04 ef000004d4 callf $4,_logf_4
50 000215FA # logf_5(); /* pipelined entry */
51 000215FA fe 04 ef0000067d callf $4,_logf_5
52 00021601 # logf_6(); /* pipelined exit */
53 00021601 fe 04 ef000007d2 callf $4,_logf_6
54 00021608 # asm("jmp *return"); /* return to the test monitor */
55 00021608 71 ffffffffae jmp *return
56 0002160E # }
57 0002160E 40 ret#2
58 0002160F .set L215,0x0
59 0002160F L217:
60 0002160F 11 af jbr L218
61 00021611 .data
62 00000a60 * .text
63 00021611 00 .align 1
64 00021612 .globl _logf_1
65 00021612 _logf_1:
66 00021612 0000 .word L228
67 00021614 #
68 00021614 # /***************************************************************************
69 00021614 # *
70 00021614 # * SUBTEST 1 - LOGF FUNCTION
71 00021614 # *
72 00021614 # ***************************************************************************/
73 00021614 # logf_1()
74 00021614 # {
75 00021614 13 016a jbr L230
76 00021617 L231:
77 00021617 # #define DELAY 15 /* delay 30 ticks between LOGF & STF */
78 00021617 # force_loop = FALSE; /* clear the LOOP flag */
79 00021617 4d efffffff9f clrl _force_loop
80 0002161D # subtest = 1;
81 0002161D 0d 01 efffffff98 movl $1,_subtest
82 00021624 # index = 0;
83 00021624 4d efffffff92 clrl _index
84 0002162A # do
85 0002162A L234:
86 0002162A # {
87 0002162A # sgl_ld_acc = logf_1_data[index].ld; /* get the operand */
88 0002162A 0d efffffff8c 50 movl _index,r0
89 00021631 48 03 50 50 shll $3,r0,r0
90 00021635 0d e000000000 efffffff7c movl _logf_1_data(r0),_sgl_ld_acc
91 00021640 # sgl_expected = logf_1_data[index].exp; /* get expected results */
92 00021640 0d efffffff76 50 movl _index,r0
93 00021647 48 03 50 50 shll $3,r0,r0
94 0002164B 0d e000000004 efffffff66 movl _logf_1_data+4(r0),_sgl_expected
95 00021656 # sgl_dummy1 = DELAY;
96 00021656 0d 0f efffffff5f movl $15,_sgl_dummy1
97 0002165D # /*
98 0002165D # * If LOOP ON ERROR is set, this is the loop for this subtest.
99 0002165D # * The force loop flag is set after the first error.
100 0002165D # */
101 0002165D # asm("_logf_1_lp1:");
102 0002165D _logf_1_lp1:
103 0002165D # asm("movl _sgl_ld_acc,r4"); /* set the data to load */
104 0002165D 0d efffffff59 54 movl _sgl_ld_acc,r4
105 00021664 # asm("ldf r4"); /* load the accumulator */
106 00021664 06 54 ldf r4
107 00021666 # asm("movl _sgl_dummy1,r0"); /* get the delay factor */
108 00021666 0d efffffff50 50 movl _sgl_dummy1,r0
109 0002166D # asm("logf"); /* get ACC.'s log */
110 0002166D 35 logf
111 0002166E # asm("1:");
112 0002166E 1:
113 0002166E # asm("decl r0"); /* delay to let the LOGF */
114 0002166E 7d 50 decl r0
115 00021670 # asm("bgtr 1b"); /* instruction finish */
116 00021670 41 fc bgtr 1b
117 00021672 # asm("stf r5"); /* store the result */
118 00021672 26 55 stf r5
119 00021674 # if( force_loop )
120 00021674 5d efffffff42 tstl _force_loop
121 0002167A 31 02 jeql L235
122 0002167C # asm("brb _logf_1_lp1");; /* loop on the error */
123 0002167C 11 df brb _logf_1_lp1
124 0002167E L235:
125 0002167E # /*
126 0002167E # * end error loop
127 0002167E # */
128 0002167E # asm("movl r5,_sgl_st_acc"); /* save the result */
129 0002167E 0d 55 efffffff37 movl r5,_sgl_st_acc
130 00021685 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
131 00021685 1d efffffff31 efffffff2c cmpl _sgl_st_acc,_sgl_expected
132 00021690 21 03 13 00d2 jeql L236
133 00021695 # errcnt++; /* bump the error count */
134 00021695 6d efffffff21 incl _errcnt
135 0002169B # if ( prt_error ) {
136 0002169B 5d efffffff1b tstl _prt_error
137 000216A1 21 03 13 009b jeql L237
138 000216A6 # writes(" \n"); /* start a new print line */
139 000216A6 .data 1
140 00000a66 * L238:
141 00000a66 * 200A00 .ascii " \12\0"
142 00000a69 * .text
143 000216A6 dd 8f00000a66 pushl $L238
144 000216AC fe 08 efffffff09 callf $8,_writes
145 000216B3 # writes("cycle: ");
146 000216B3 .data 1
147 00000a69 * L239:
148 00000a69 * 6379636C653A2000 .ascii "cycle: \0"
149 00000a71 * .text
150 000216B3 dd 8f00000a69 pushl $L239
151 000216B9 fe 08 effffffefc callf $8,_writes
152 000216C0 # writed( cycle );
153 000216C0 dd effffffef6 pushl _cycle
154 000216C6 fe 08 effffffeef callf $8,_writed
155 000216CD # writes(" LOGF test ");
156 000216CD .data 1
157 00000a71 * L241:
158 00000a71 * 2020204C4F474620746573742 .ascii " LOGF test \0"
000
159 00000a7f * .text
160 000216CD dd 8f00000a71 pushl $L241
161 000216D3 fe 08 effffffee2 callf $8,_writes
162 000216DA # writed( test_no );
163 000216DA dd effffffedc pushl _test_no
164 000216E0 fe 08 effffffed5 callf $8,_writed
165 000216E7 # writes(", subtest 1 (delayed store) - BAD FINAL ACC\n");
166 000216E7 .data 1
167 00000a7f * L242:
168 00000a7f * 2C20737562746573742031202 .ascii ", subtest 1 (delayed store) - BAD FINAL ACC\12\0"
864656C617965642073746F72
6529202D204241442046494E4
14C204143430A00
169 00000aac * .text
170 000216E7 dd 8f00000a7f pushl $L242
171 000216ED fe 08 effffffec8 callf $8,_writes
172 000216F4 # print_logf_data();
173 000216F4 fe 04 ef0000083b callf $4,_print_logf_data
174 000216FB # writes(", data index = ");
175 000216FB .data 1
176 00000aac * L244:
177 00000aac * 2C20206461746120696E64657 .ascii ", data index = \0"
8203D2000
178 00000abd * .text
179 000216FB dd 8f00000aac pushl $L244
180 00021701 fe 08 effffffeb4 callf $8,_writes
181 00021708 # writed( index );
182 00021708 dd effffffeae pushl _index
183 0002170E fe 08 effffffea7 callf $8,_writed
184 00021715 # writec('\n');
185 00021715 dd 0a pushl $10
186 00021717 fe 08 effffffe9e callf $8,_writec
187 0002171E # writes(" expected = ");
188 0002171E .data 1
189 00000abd * L246:
190 00000abd * 2020202020202020202020202 .ascii " expected = \0"
0202020202020202020202020
206578706563746564203D200
0
191 00000ae3 * .text
192 0002171E dd 8f00000abd pushl $L246
193 00021724 fe 08 effffffe91 callf $8,_writes
194 0002172B # write32h( sgl_expected );
195 0002172B dd effffffe8b pushl _sgl_expected
196 00021731 fe 08 effffffe84 callf $8,_write32h
197 00021738 # writec('\n');
198 00021738 dd 0a pushl $10
199 0002173A fe 08 effffffe7b callf $8,_writec
200 00021741 # }
201 00021741 # if ( halt_flg ) /* halt on error? */
202 00021741 L237:
203 00021741 5d effffffe75 tstl _halt_flg
204 00021747 31 09 jeql L248
205 00021749 # logf_er_halt( BAD_ACC_HLT );
206 00021749 dd 01 pushl $1
207 0002174B fe 08 ef00000820 callf $8,_logf_er_halt
208 00021752 # if ( loop_on_err )
209 00021752 L248:
210 00021752 5d effffffe64 tstl _loop_on_err
211 00021758 31 0d jeql L250
212 0002175A # {
213 0002175A # force_loop = TRUE; /* set the force loop flag */
214 0002175A 0d 01 effffffe5b movl $1,_force_loop
215 00021761 # asm("jmp _logf_1_lp1"); /* and loop */
216 00021761 71 effffffef6 jmp _logf_1_lp1
217 00021767 # }
218 00021767 # } /* end of compare error */
219 00021767 L250:
220 00021767 # } while( index++ < max_logf_1_index );
221 00021767 L236:
222 00021767 L233:
223 00021767 0d effffffe4f 50 movl _index,r0
224 0002176E 6d effffffe48 incl _index
225 00021774 1d 50 effffffe41 cmpl r0,_max_logf_1_index
226 0002177B 81 03 13 feaa jlss L234
227 00021780 L232:
228 00021780 # } /* end of subtest 1 */
229 00021780 40 ret#2
230 00021781 .set L228,0x0
231 00021781 L230:
232 00021781 13 fe93 jbr L231
233 00021784 .data
234 00000a60 * .text
235 00021784 .align 1
236 00021784 .globl _logf_2
237 00021784 _logf_2:
238 00021784 0000 .word L251
239 00021786 #
240 00021786 #
241 00021786 #
242 00021786 # /***************************************************************************
243 00021786 # *
244 00021786 # * SUBTEST 2 - LOGF FUNCTION
245 00021786 # *
246 00021786 # ***************************************************************************/
247 00021786 # logf_2()
248 00021786 # {
249 00021786 13 0158 jbr L253
250 00021789 L254:
251 00021789 # force_loop = FALSE; /* clear the LOOP flag */
252 00021789 4d effffffe2d clrl _force_loop
253 0002178F # subtest = 2;
254 0002178F 0d 02 effffffe26 movl $2,_subtest
255 00021796 # index = 0;
256 00021796 4d effffffe20 clrl _index
257 0002179C # do
258 0002179C L257:
259 0002179C # {
260 0002179C # sgl_ld_acc = logf_1_data[index].ld; /* get the operand */
261 0002179C 0d effffffe1a 50 movl _index,r0
262 000217A3 48 03 50 50 shll $3,r0,r0
263 000217A7 0d e000000000 effffffe0a movl _logf_1_data(r0),_sgl_ld_acc
264 000217B2 # sgl_expected = logf_1_data[index].exp; /* get expected results */
265 000217B2 0d effffffe04 50 movl _index,r0
266 000217B9 48 03 50 50 shll $3,r0,r0
267 000217BD 0d e000000004 effffffdf4 movl _logf_1_data+4(r0),_sgl_expected
268 000217C8 # /*
269 000217C8 # * If LOOP ON ERROR is set, this is the loop for this subtest.
270 000217C8 # * The force loop flag is set after the first error.
271 000217C8 # */
272 000217C8 # asm("_logf_2_lp1:");
273 000217C8 _logf_2_lp1:
274 000217C8 # asm("movl _sgl_ld_acc,r4"); /* set the data to load */
275 000217C8 0d effffffdee 54 movl _sgl_ld_acc,r4
276 000217CF # asm("ldf r4"); /* load the accumulator */
277 000217CF 06 54 ldf r4
278 000217D1 # asm("logf"); /* get ACC.'s log */
279 000217D1 35 logf
280 000217D2 # asm("stf r5"); /* store the result */
281 000217D2 26 55 stf r5
282 000217D4 # if( force_loop )
283 000217D4 5d effffffde2 tstl _force_loop
284 000217DA 31 02 jeql L258
285 000217DC # asm("brb _logf_2_lp1");; /* loop on the error */
286 000217DC 11 ea brb _logf_2_lp1
287 000217DE L258:
288 000217DE # /*
289 000217DE # * end error loop
290 000217DE # */
291 000217DE # asm("movl r5,_sgl_st_acc"); /* save the result */
292 000217DE 0d 55 effffffdd7 movl r5,_sgl_st_acc
293 000217E5 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
294 000217E5 1d effffffdd1 effffffdcc cmpl _sgl_st_acc,_sgl_expected
295 000217F0 21 03 13 00d2 jeql L259
296 000217F5 # errcnt++; /* bump the error count */
297 000217F5 6d effffffdc1 incl _errcnt
298 000217FB # if ( prt_error ) {
299 000217FB 5d effffffdbb tstl _prt_error
300 00021801 21 03 13 009b jeql L260
301 00021806 # writes(" \n"); /* start a new print line */
302 00021806 .data 1
303 00000ae3 * L261:
304 00000ae3 * 200A00 .ascii " \12\0"
305 00000ae6 * .text
306 00021806 dd 8f00000ae3 pushl $L261
307 0002180C fe 08 effffffda9 callf $8,_writes
308 00021813 # writes("cycle: ");
309 00021813 .data 1
310 00000ae6 * L262:
311 00000ae6 * 6379636C653A2000 .ascii "cycle: \0"
312 00000aee * .text
313 00021813 dd 8f00000ae6 pushl $L262
314 00021819 fe 08 effffffd9c callf $8,_writes
315 00021820 # writed( cycle );
316 00021820 dd effffffd96 pushl _cycle
317 00021826 fe 08 effffffd8f callf $8,_writed
318 0002182D # writes(" LOGF test ");
319 0002182D .data 1
320 00000aee * L263:
321 00000aee * 2020204C4F474620746573742 .ascii " LOGF test \0"
000
322 00000afc * .text
323 0002182D dd 8f00000aee pushl $L263
324 00021833 fe 08 effffffd82 callf $8,_writes
325 0002183A # writed( test_no );
326 0002183A dd effffffd7c pushl _test_no
327 00021840 fe 08 effffffd75 callf $8,_writed
328 00021847 # writes(", subtest 2 (immediate store) - BAD FINAL ACC\n");
329 00021847 .data 1
330 00000afc * L264:
331 00000afc * 2C20737562746573742032202 .ascii ", subtest 2 (immediate store) - BAD FINAL ACC\12\0"
8696D6D656469617465207374
6F726529202D2042414420464
94E414C204143430A00
332 00000b2b * .text
333 00021847 dd 8f00000afc pushl $L264
334 0002184D fe 08 effffffd68 callf $8,_writes
335 00021854 # print_logf_data();
336 00021854 fe 04 ef000006db callf $4,_print_logf_data
337 0002185B # writes(", data index = ");
338 0002185B .data 1
339 00000b2b * L265:
340 00000b2b * 2C20206461746120696E64657 .ascii ", data index = \0"
8203D2000
341 00000b3c * .text
342 0002185B dd 8f00000b2b pushl $L265
343 00021861 fe 08 effffffd54 callf $8,_writes
344 00021868 # writed( index );
345 00021868 dd effffffd4e pushl _index
346 0002186E fe 08 effffffd47 callf $8,_writed
347 00021875 # writec('\n');
348 00021875 dd 0a pushl $10
349 00021877 fe 08 effffffd3e callf $8,_writec
350 0002187E # writes(" expected = ");
351 0002187E .data 1
352 00000b3c * L266:
353 00000b3c * 2020202020202020202020202 .ascii " expected = \0"
0202020202020202020202020
206578706563746564203D200
0
354 00000b62 * .text
355 0002187E dd 8f00000b3c pushl $L266
356 00021884 fe 08 effffffd31 callf $8,_writes
357 0002188B # write32h( sgl_expected );
358 0002188B dd effffffd2b pushl _sgl_expected
359 00021891 fe 08 effffffd24 callf $8,_write32h
360 00021898 # writec('\n');
361 00021898 dd 0a pushl $10
362 0002189A fe 08 effffffd1b callf $8,_writec
363 000218A1 # }
364 000218A1 # if ( halt_flg ) /* halt on error? */
365 000218A1 L260:
366 000218A1 5d effffffd15 tstl _halt_flg
367 000218A7 31 09 jeql L267
368 000218A9 # logf_er_halt( BAD_ACC_HLT );
369 000218A9 dd 01 pushl $1
370 000218AB fe 08 ef000006c0 callf $8,_logf_er_halt
371 000218B2 # if ( loop_on_err )
372 000218B2 L267:
373 000218B2 5d effffffd04 tstl _loop_on_err
374 000218B8 31 0d jeql L268
375 000218BA # {
376 000218BA # force_loop = TRUE; /* set the force loop flag */
377 000218BA 0d 01 effffffcfb movl $1,_force_loop
378 000218C1 # asm("jmp _logf_2_lp1"); /* and loop */
379 000218C1 71 efffffff01 jmp _logf_2_lp1
380 000218C7 # }
381 000218C7 # } /* end of compare error */
382 000218C7 L268:
383 000218C7 # } while( index++ < max_logf_1_index );
384 000218C7 L259:
385 000218C7 L256:
386 000218C7 0d effffffcef 50 movl _index,r0
387 000218CE 6d effffffce8 incl _index
388 000218D4 1d 50 effffffce1 cmpl r0,_max_logf_1_index
389 000218DB 81 03 13 febc jlss L257
390 000218E0 L255:
391 000218E0 # } /* end of subtest 2 */
392 000218E0 40 ret#2
393 000218E1 .set L251,0x0
394 000218E1 L253:
395 000218E1 13 fea5 jbr L254
396 000218E4 .data
397 00000a60 * .text
398 000218E4 .align 1
399 000218E4 .globl _logf_3
400 000218E4 _logf_3:
401 000218E4 0000 .word L269
402 000218E6 #
403 000218E6 #
404 000218E6 #
405 000218E6 # /***************************************************************************
406 000218E6 # *
407 000218E6 # * SUBTEST 3 - REGISTER INTEGRITY WITH THE LOGF FUNCTION
408 000218E6 # *
409 000218E6 # ***************************************************************************/
410 000218E6 # logf_3()
411 000218E6 # {
412 000218E6 13 01e1 jbr L271
413 000218E9 L272:
414 000218E9 # fill_reg_buf( load_regs ); /* set reg values to load */
415 000218E9 dd 8f00000000 pushl $_load_regs
416 000218EF fe 08 effffffcc6 callf $8,_fill_reg_buf
417 000218F6 # force_loop = FALSE; /* clear the LOOP flag */
418 000218F6 4d effffffcc0 clrl _force_loop
419 000218FC # subtest = 3;
420 000218FC 0d 03 effffffcb9 movl $3,_subtest
421 00021903 # index = 0;
422 00021903 4d effffffcb3 clrl _index
423 00021909 # do
424 00021909 L276:
425 00021909 # {
426 00021909 # sgl_ld_acc = logf_1_data[index].ld; /* get the operand */
427 00021909 0d effffffcad 50 movl _index,r0
428 00021910 48 03 50 50 shll $3,r0,r0
429 00021914 0d e000000000 effffffc9d movl _logf_1_data(r0),_sgl_ld_acc
430 0002191F # sgl_expected = logf_1_data[index].exp; /* get expected results */
431 0002191F 0d effffffc97 50 movl _index,r0
432 00021926 48 03 50 50 shll $3,r0,r0
433 0002192A 0d e000000004 effffffc87 movl _logf_1_data+4(r0),_sgl_expected
434 00021935 # /*
435 00021935 # * If LOOP ON ERROR is set, this is the loop for this subtest.
436 00021935 # * The force loop flag is set after the first error.
437 00021935 # */
438 00021935 # asm("_logf_3_lp1:");
439 00021935 _logf_3_lp1:
440 00021935 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
441 00021935 ab 891fff effffffc7e loadr $0x1fff,_load_regs
442 0002193E # asm("ldf _sgl_ld_acc"); /* load the accumulator */
443 0002193E 06 effffffc78 ldf _sgl_ld_acc
444 00021944 # asm("logf"); /* get ACC.'s log */
445 00021944 35 logf
446 00021945 # asm("stf _sgl_st_acc"); /* store the result */
447 00021945 26 effffffc71 stf _sgl_st_acc
448 0002194B # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
449 0002194B bb 891fff effffffc68 storer $0x1fff,_store_regs
450 00021954 # if( force_loop )
451 00021954 5d effffffc62 tstl _force_loop
452 0002195A 31 02 jeql L277
453 0002195C # asm("brb _logf_3_lp1");; /* loop on the error */
454 0002195C 11 d7 brb _logf_3_lp1
455 0002195E L277:
456 0002195E # /*
457 0002195E # * end error loop
458 0002195E # */
459 0002195E # reg_no = 0;
460 0002195E 4d effffffc58 clrl _reg_no
461 00021964 # regs_ok = TRUE;
462 00021964 0d 01 effffffc51 movl $1,_regs_ok
463 0002196B # while( (reg_no < 13) && (regs_ok) ) /* check 1st 12 regs */
464 0002196B L278:
465 0002196B 1d effffffc4b 0d cmpl _reg_no,$13
466 00021972 81 35 jgeq L279
467 00021974 5d effffffc42 tstl _regs_ok
468 0002197A 31 2d jeql L279
469 0002197C # if( store_regs[ reg_no ] == load_regs[ reg_no ] )
470 0002197C 0d effffffc3a 50 movl _reg_no,r0
471 00021983 0d effffffc33 51 movl _reg_no,r1
472 0002198A 1d 40effffffc2b cmpl _store_regs[r0],_load_regs[r1]
41effffffc25
473 00021997 21 08 jneq L280
474 00021999 # reg_no++;
475 00021999 6d effffffc1d incl _reg_no
476 0002199F # else
477 0002199F 11 06 jbr L281
478 000219A1 L280:
479 000219A1 # regs_ok = FALSE;
480 000219A1 4d effffffc15 clrl _regs_ok
481 000219A7 L281:
482 000219A7 11 c2 jbr L278
483 000219A9 L279:
484 000219A9 # if( !regs_ok ) {
485 000219A9 5d effffffc0d tstl _regs_ok
486 000219AF 31 03 13 00fc jneq L282
487 000219B4 # errcnt++; /* bump the error count */
488 000219B4 6d effffffc02 incl _errcnt
489 000219BA # if ( prt_error ) {
490 000219BA 5d effffffbfc tstl _prt_error
491 000219C0 21 03 13 00eb jeql L283
492 000219C5 # writes(" \n"); /* start a new print line */
493 000219C5 .data 1
494 00000b62 * L284:
495 00000b62 * 200A00 .ascii " \12\0"
496 00000b65 * .text
497 000219C5 dd 8f00000b62 pushl $L284
498 000219CB fe 08 effffffbea callf $8,_writes
499 000219D2 # writes("cycle: ");
500 000219D2 .data 1
501 00000b65 * L285:
502 00000b65 * 6379636C653A2000 .ascii "cycle: \0"
503 00000b6d * .text
504 000219D2 dd 8f00000b65 pushl $L285
505 000219D8 fe 08 effffffbdd callf $8,_writes
506 000219DF # writed( cycle );
507 000219DF dd effffffbd7 pushl _cycle
508 000219E5 fe 08 effffffbd0 callf $8,_writed
509 000219EC # writes(" LOGF test ");
510 000219EC .data 1
511 00000b6d * L286:
512 00000b6d * 2020204C4F474620746573742 .ascii " LOGF test \0"
000
513 00000b7b * .text
514 000219EC dd 8f00000b6d pushl $L286
515 000219F2 fe 08 effffffbc3 callf $8,_writes
516 000219F9 # writed( test_no );
517 000219F9 dd effffffbbd pushl _test_no
518 000219FF fe 08 effffffbb6 callf $8,_writed
519 00021A06 # writes(", subtest 3 - A REGISTER WAS MODIFIED\n"); {
520 00021A06 .data 1
521 00000b7b * L287:
522 00000b7b * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS MODIFIED\12\0"
D204120524547495354455220
574153204D4F4449464945440
A00
523 00000ba2 * .text
524 00021A06 dd 8f00000b7b pushl $L287
525 00021A0C fe 08 effffffba9 callf $8,_writes
526 00021A13 # print_logf_data();
527 00021A13 fe 04 ef0000051c callf $4,_print_logf_data
528 00021A1A # writec('\n');
529 00021A1A dd 0a pushl $10
530 00021A1C fe 08 effffffb99 callf $8,_writec
531 00021A23 # writes("register ");
532 00021A23 .data 1
533 00000ba2 * L288:
534 00000ba2 * 72656769737465722000 .ascii "register \0"
535 00000bac * .text
536 00021A23 dd 8f00000ba2 pushl $L288
537 00021A29 fe 08 effffffb8c callf $8,_writes
538 00021A30 # writed( reg_no );
539 00021A30 dd effffffb86 pushl _reg_no
540 00021A36 fe 08 effffffb7f callf $8,_writed
541 00021A3D # writes(" = ");
542 00021A3D .data 1
543 00000bac * L289:
544 00000bac * 203D2000 .ascii " = \0"
545 00000bb0 * .text
546 00021A3D dd 8f00000bac pushl $L289
547 00021A43 fe 08 effffffb72 callf $8,_writes
548 00021A4A # write32h( load_regs[reg_no] );
549 00021A4A 0d effffffb6c 50 movl _reg_no,r0
550 00021A51 dd 40effffffb64 pushl _load_regs[r0]
551 00021A58 fe 08 effffffb5d callf $8,_write32h
552 00021A5F # writes(", should be = ");
553 00021A5F .data 1
554 00000bb0 * L290:
555 00000bb0 * 2C202073686F756C642062652 .ascii ", should be = \0"
03D2000
556 00000bc0 * .text
557 00021A5F dd 8f00000bb0 pushl $L290
558 00021A65 fe 08 effffffb50 callf $8,_writes
559 00021A6C # write32h( store_regs[reg_no] );
560 00021A6C 0d effffffb4a 50 movl _reg_no,r0
561 00021A73 dd 40effffffb42 pushl _store_regs[r0]
562 00021A7A fe 08 effffffb3b callf $8,_write32h
563 00021A81 # writec('\n');
564 00021A81 dd 0a pushl $10
565 00021A83 fe 08 effffffb32 callf $8,_writec
566 00021A8A # }
567 00021A8A # if ( halt_flg ) /* halt on error? */
568 00021A8A 5d effffffb2c tstl _halt_flg
569 00021A90 31 09 jeql L291
570 00021A92 # logf_er_halt( BAD_REG_HLT );
571 00021A92 dd 02 pushl $2
572 00021A94 fe 08 ef000004d7 callf $8,_logf_er_halt
573 00021A9B # if ( loop_on_err )
574 00021A9B L291:
575 00021A9B 5d effffffb1b tstl _loop_on_err
576 00021AA1 31 0d jeql L292
577 00021AA3 # {
578 00021AA3 # force_loop = TRUE; /* get the force loop flag */
579 00021AA3 0d 01 effffffb12 movl $1,_force_loop
580 00021AAA # asm("jmp _logf_3_lp1"); /* and loop */
581 00021AAA 71 effffffe85 jmp _logf_3_lp1
582 00021AB0 # }
583 00021AB0 # } /* end of compare error */
584 00021AB0 L292:
585 00021AB0 # } /* end of while loop */
586 00021AB0 L283:
587 00021AB0 # } while( index++ < max_logf_1_index );
588 00021AB0 L282:
589 00021AB0 L275:
590 00021AB0 0d effffffb06 50 movl _index,r0
591 00021AB7 6d effffffaff incl _index
592 00021ABD 1d 50 effffffaf8 cmpl r0,_max_logf_1_index
593 00021AC4 81 03 13 fe40 jlss L276
594 00021AC9 L274:
595 00021AC9 # } /* end of subtest 3 */
596 00021AC9 40 ret#2
597 00021ACA .set L269,0x0
598 00021ACA L271:
599 00021ACA 13 fe1c jbr L272
600 00021ACD .data
601 00000a60 * .text
602 00021ACD 00 .align 1
603 00021ACE .globl _logf_4
604 00021ACE _logf_4:
605 00021ACE 0000 .word L293
606 00021AD0 #
607 00021AD0 #
608 00021AD0 #
609 00021AD0 # /************************************************************************
610 00021AD0 # *
611 00021AD0 # * SUBTEST 4 - Check for PSL corruption
612 00021AD0 # *
613 00021AD0 # ************************************************************************/
614 00021AD0 # logf_4()
615 00021AD0 # {
616 00021AD0 13 01a8 jbr L295
617 00021AD3 L296:
618 00021AD3 # force_loop = FALSE; /* clear force_loop flg */
619 00021AD3 4d effffffae3 clrl _force_loop
620 00021AD9 # subtest = 4;
621 00021AD9 0d 04 effffffadc movl $4,_subtest
622 00021AE0 # fill_reg_buf( load_regs ); /* get patterns for regs */
623 00021AE0 dd 8f00000000 pushl $_load_regs
624 00021AE6 fe 08 effffffacf callf $8,_fill_reg_buf
625 00021AED # for( index = 0; index < 3; index++ ) {
626 00021AED 4d effffffac9 clrl _index
627 00021AF3 L299:
628 00021AF3 1d effffffac3 03 cmpl _index,$3
629 00021AFA 91 03 13 017b jgeq L298
630 00021AFF # sgl_ld_acc = logf_1_data[index].ld; /* get operand 1 */
631 00021AFF 0d effffffab7 50 movl _index,r0
632 00021B06 48 03 50 50 shll $3,r0,r0
633 00021B0A 0d e000000000 effffffaa7 movl _logf_1_data(r0),_sgl_ld_acc
634 00021B15 # sgl_expected = logf_1_data[index].exp; /* get expected */
635 00021B15 0d effffffaa1 50 movl _index,r0
636 00021B1C 48 03 50 50 shll $3,r0,r0
637 00021B20 0d e000000004 effffffa91 movl _logf_1_data+4(r0),_sgl_expected
638 00021B2B # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */
639 00021B2B 0d effffffa8b 50 movl _status_index,r0
640 00021B32 0d 40effffffa83 movl _status_array[r0],_sgl_dummy1
effffffa7e
641 00021B3E # /*
642 00021B3E # * If LOOP ON ERROR is set, this is the loop for this subtest.
643 00021B3E # * The force loop flag is set after the first error.
644 00021B3E # */
645 00021B3E # asm("_logf_4_lp1:");
646 00021B3E _logf_4_lp1:
647 00021B3E # asm("ldf _sgl_ld_acc"); /* LOAD the accumulator */
648 00021B3E 06 effffffa78 ldf _sgl_ld_acc
649 00021B44 # asm("nop");
650 00021B44 10 nop
651 00021B45 # asm("tstl _sgl_dummy1"); /* set the PSL status */
652 00021B45 5d effffffa71 tstl _sgl_dummy1
653 00021B4B # asm("movpsl _init_psl"); /* save the initial PSL */
654 00021B4B cd effffffa6b movpsl _init_psl
655 00021B51 # asm("logf"); /* do the log */
656 00021B51 35 logf
657 00021B52 # asm("nop");
658 00021B52 10 nop
659 00021B53 # asm("movpsl _psl_val"); /* save the final PSL */
660 00021B53 cd effffffa63 movpsl _psl_val
661 00021B59 # asm("stf _sgl_st_acc"); /* save the accumulator */
662 00021B59 26 effffffa5d stf _sgl_st_acc
663 00021B5F # if( force_loop )
664 00021B5F 5d effffffa57 tstl _force_loop
665 00021B65 31 02 jeql L300
666 00021B67 # asm("brb _logf_4_lp1");; /* loop on the error */
667 00021B67 11 d5 brb _logf_4_lp1
668 00021B69 L300:
669 00021B69 # /*
670 00021B69 # * Now compare the final PSL to the initial PSL -they should be the same
671 00021B69 # */
672 00021B69 # exp_psl = init_psl;
673 00021B69 0d effffffa4d effffffa48 movl _init_psl,_exp_psl
674 00021B74 # if( psl_val != exp_psl ) {
675 00021B74 1d effffffa42 effffffa3d cmpl _psl_val,_exp_psl
676 00021B7F 21 03 13 00ed jeql L301
677 00021B84 # errcnt++; /* bump the error count */
678 00021B84 6d effffffa32 incl _errcnt
679 00021B8A # if( prt_error ) {
680 00021B8A 5d effffffa2c tstl _prt_error
681 00021B90 21 03 13 00b9 jeql L302
682 00021B95 # writes(" \n"); /* start a new print line */
683 00021B95 .data 1
684 00000bc0 * L303:
685 00000bc0 * 200A00 .ascii " \12\0"
686 00000bc3 * .text
687 00021B95 dd 8f00000bc0 pushl $L303
688 00021B9B fe 08 effffffa1a callf $8,_writes
689 00021BA2 # writes("cycle: ");
690 00021BA2 .data 1
691 00000bc3 * L304:
692 00000bc3 * 6379636C653A2000 .ascii "cycle: \0"
693 00000bcb * .text
694 00021BA2 dd 8f00000bc3 pushl $L304
695 00021BA8 fe 08 effffffa0d callf $8,_writes
696 00021BAF # writed( cycle );
697 00021BAF dd effffffa07 pushl _cycle
698 00021BB5 fe 08 effffffa00 callf $8,_writed
699 00021BBC # writes(" LOGF test ");
700 00021BBC .data 1
701 00000bcb * L305:
702 00000bcb * 2020204C4F474620746573742 .ascii " LOGF test \0"
000
703 00000bd9 * .text
704 00021BBC dd 8f00000bcb pushl $L305
705 00021BC2 fe 08 effffff9f3 callf $8,_writes
706 00021BC9 # writed( test_no );
707 00021BC9 dd effffff9ed pushl _test_no
708 00021BCF fe 08 effffff9e6 callf $8,_writed
709 00021BD6 # writes(", subtest 4 - INCORRECT FINAL PSL\n");
710 00021BD6 .data 1
711 00000bd9 * L306:
712 00000bd9 * 2C20737562746573742034202 .ascii ", subtest 4 - INCORRECT FINAL PSL\12\0"
D20494E434F52524543542046
494E414C2050534C0A00
713 00000bfc * .text
714 00021BD6 dd 8f00000bd9 pushl $L306
715 00021BDC fe 08 effffff9d9 callf $8,_writes
716 00021BE3 # print_logf_data(); /* print the operands */
717 00021BE3 fe 04 ef0000034c callf $4,_print_logf_data
718 00021BEA # writec('\n');
719 00021BEA dd 0a pushl $10
720 00021BEC fe 08 effffff9c9 callf $8,_writec
721 00021BF3 # writes("initial PSL = ");
722 00021BF3 .data 1
723 00000bfc * L307:
724 00000bfc * 696E697469616C2050534C203 .ascii "initial PSL = \0"
D2000
725 00000c0b * .text
726 00021BF3 dd 8f00000bfc pushl $L307
727 00021BF9 fe 08 effffff9bc callf $8,_writes
728 00021C00 # write32h( init_psl );
729 00021C00 dd effffff9b6 pushl _init_psl
730 00021C06 fe 08 effffff9af callf $8,_write32h
731 00021C0D # writes(", final PSL = ");
732 00021C0D .data 1
733 00000c0b * L308:
734 00000c0b * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
735 00000c1b * .text
736 00021C0D dd 8f00000c0b pushl $L308
737 00021C13 fe 08 effffff9a2 callf $8,_writes
738 00021C1A # write32h( psl_val );
739 00021C1A dd effffff99c pushl _psl_val
740 00021C20 fe 08 effffff995 callf $8,_write32h
741 00021C27 # writes(", expected PSL = ");
742 00021C27 .data 1
743 00000c1b * L309:
744 00000c1b * 2C20206578706563746564205 .ascii ", expected PSL = \0"
0534C203D2000
745 00000c2e * .text
746 00021C27 dd 8f00000c1b pushl $L309
747 00021C2D fe 08 effffff988 callf $8,_writes
748 00021C34 # write32h( exp_psl );
749 00021C34 dd effffff982 pushl _exp_psl
750 00021C3A fe 08 effffff97b callf $8,_write32h
751 00021C41 # writes("\n");
752 00021C41 .data 1
753 00000c2e * L310:
754 00000c2e * 0A00 .ascii "\12\0"
755 00000c30 * .text
756 00021C41 dd 8f00000c2e pushl $L310
757 00021C47 fe 08 effffff96e callf $8,_writes
758 00021C4E # }
759 00021C4E # if( halt_flg )
760 00021C4E L302:
761 00021C4E 5d effffff968 tstl _halt_flg
762 00021C54 31 09 jeql L311
763 00021C56 # logf_er_halt( BAD_PSL_HLT ); /* halt on the error */
764 00021C56 dd 03 pushl $3
765 00021C58 fe 08 ef00000313 callf $8,_logf_er_halt
766 00021C5F # if( loop_on_err ) {
767 00021C5F L311:
768 00021C5F 5d effffff957 tstl _loop_on_err
769 00021C65 31 0a jeql L312
770 00021C67 # force_loop = TRUE; /* set the force loop flag */
771 00021C67 0d 01 effffff94e movl $1,_force_loop
772 00021C6E # asm("brw _logf_4_lp1");; /* and loop on the error */
773 00021C6E 13 fecd brw _logf_4_lp1
774 00021C71 # } /* end of loop on error */
775 00021C71 # } /* end of PSL corruption error */
776 00021C71 L312:
777 00021C71 # } /* end of WHILE loop */
778 00021C71 L301:
779 00021C71 L297:
780 00021C71 6d effffff945 incl _index
781 00021C77 13 fe79 jbr L299
782 00021C7A L298:
783 00021C7A # } /* end of subtest 4 */
784 00021C7A 40 ret#2
785 00021C7B .set L293,0x0
786 00021C7B L295:
787 00021C7B 13 fe55 jbr L296
788 00021C7E .data
789 00000a60 * .text
790 00021C7E .align 1
791 00021C7E .globl _logf_5
792 00021C7E _logf_5:
793 00021C7E 0000 .word L313
794 00021C80 #
795 00021C80 #
796 00021C80 #
797 00021C80 # /************************************************************************
798 00021C80 # *
799 00021C80 # * SUBTEST 5 - pipelined entry test
800 00021C80 # *
801 00021C80 # ************************************************************************/
802 00021C80 # logf_5()
803 00021C80 # {
804 00021C80 13 0154 jbr L315
805 00021C83 L316:
806 00021C83 # force_loop = FALSE;
807 00021C83 4d effffff933 clrl _force_loop
808 00021C89 # subtest = 8;
809 00021C89 0d 08 effffff92c movl $8,_subtest
810 00021C90 # for( index = 0; index < max_logf_1_index; index++ ) {
811 00021C90 4d effffff926 clrl _index
812 00021C96 L319:
813 00021C96 1d effffff920 effffff91b cmpl _index,_max_logf_1_index
814 00021CA1 91 03 13 0130 jgeq L318
815 00021CA6 # sgl_ld_acc = logf_1_data[index].ld; /* get operand 1 */
816 00021CA6 0d effffff910 50 movl _index,r0
817 00021CAD 48 03 50 50 shll $3,r0,r0
818 00021CB1 0d e000000000 effffff900 movl _logf_1_data(r0),_sgl_ld_acc
819 00021CBC # sgl_expected = logf_1_data[index].exp; /* get expected result */
820 00021CBC 0d effffff8fa 50 movl _index,r0
821 00021CC3 48 03 50 50 shll $3,r0,r0
822 00021CC7 0d e000000004 effffff8ea movl _logf_1_data+4(r0),_sgl_expected
823 00021CD2 # /*
824 00021CD2 # * If LOOP ON ERROR is set, this is the loop for this subtest.
825 00021CD2 # * The force loop flag is set after the first error.
826 00021CD2 # */
827 00021CD2 # asm("_logf_5_lp1:");
828 00021CD2 _logf_5_lp1:
829 00021CD2 # asm("movl $0,r0"); /* clear r0 */
830 00021CD2 0d 00 50 movl $0,r0
831 00021CD5 # asm("ldf r0"); /* load the Acc. with 0.0 */
832 00021CD5 06 50 ldf r0
833 00021CD7 # asm("addf _sgl_ld_acc"); /* add the 1st operand */
834 00021CD7 c6 effffff8df addf _sgl_ld_acc
835 00021CDD # asm("logf"); /* get the log */
836 00021CDD 35 logf
837 00021CDE # asm("stf _sgl_st_acc"); /* store the result */
838 00021CDE 26 effffff8d8 stf _sgl_st_acc
839 00021CE4 # if( force_loop )
840 00021CE4 5d effffff8d2 tstl _force_loop
841 00021CEA 31 02 jeql L320
842 00021CEC # asm("brb _logf_5_lp1");; /* loop on the error */
843 00021CEC 11 e4 brb _logf_5_lp1
844 00021CEE L320:
845 00021CEE # /*
846 00021CEE # * end error loop - test the results
847 00021CEE # */
848 00021CEE # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
849 00021CEE 1d effffff8c8 effffff8c3 cmpl _sgl_st_acc,_sgl_expected
850 00021CF9 21 03 13 00cf jeql L321
851 00021CFE # errcnt++; /* bump the error count */
852 00021CFE 6d effffff8b8 incl _errcnt
853 00021D04 # if( prt_error ) {
854 00021D04 5d effffff8b2 tstl _prt_error
855 00021D0A 21 03 13 009b jeql L322
856 00021D0F # writes(" \n"); /* start a new print line */
857 00021D0F .data 1
858 00000c30 * L323:
859 00000c30 * 200A00 .ascii " \12\0"
860 00000c33 * .text
861 00021D0F dd 8f00000c30 pushl $L323
862 00021D15 fe 08 effffff8a0 callf $8,_writes
863 00021D1C # writes("cycle: ");
864 00021D1C .data 1
865 00000c33 * L324:
866 00000c33 * 6379636C653A2000 .ascii "cycle: \0"
867 00000c3b * .text
868 00021D1C dd 8f00000c33 pushl $L324
869 00021D22 fe 08 effffff893 callf $8,_writes
870 00021D29 # writed( cycle );
871 00021D29 dd effffff88d pushl _cycle
872 00021D2F fe 08 effffff886 callf $8,_writed
873 00021D36 # writes(" LOGF test ");
874 00021D36 .data 1
875 00000c3b * L325:
876 00000c3b * 2020204C4F474620746573742 .ascii " LOGF test \0"
000
877 00000c49 * .text
878 00021D36 dd 8f00000c3b pushl $L325
879 00021D3C fe 08 effffff879 callf $8,_writes
880 00021D43 # writed( test_no );
881 00021D43 dd effffff873 pushl _test_no
882 00021D49 fe 08 effffff86c callf $8,_writed
883 00021D50 # writes(", subtest 5 (Piped Entry) - BAD FINAL ACC\n");
884 00021D50 .data 1
885 00000c49 * L326:
886 00000c49 * 2C20737562746573742035202 .ascii ", subtest 5 (Piped Entry) - BAD FINAL ACC\12\0"
8506970656420456E74727929
202D204241442046494E414C2
04143430A00
887 00000c74 * .text
888 00021D50 dd 8f00000c49 pushl $L326
889 00021D56 fe 08 effffff85f callf $8,_writes
890 00021D5D # print_logf_data();
891 00021D5D fe 04 ef000001d2 callf $4,_print_logf_data
892 00021D64 # writes(", data index = ");
893 00021D64 .data 1
894 00000c74 * L327:
895 00000c74 * 2C20206461746120696E64657 .ascii ", data index = \0"
8203D2000
896 00000c85 * .text
897 00021D64 dd 8f00000c74 pushl $L327
898 00021D6A fe 08 effffff84b callf $8,_writes
899 00021D71 # writed( index );
900 00021D71 dd effffff845 pushl _index
901 00021D77 fe 08 effffff83e callf $8,_writed
902 00021D7E # writec('\n');
903 00021D7E dd 0a pushl $10
904 00021D80 fe 08 effffff835 callf $8,_writec
905 00021D87 # writes(" expected = ");
906 00021D87 .data 1
907 00000c85 * L328:
908 00000c85 * 2020202020202020202020202 .ascii " expected = \0"
0202020202020202020202020
206578706563746564203D200
0
909 00000cab * .text
910 00021D87 dd 8f00000c85 pushl $L328
911 00021D8D fe 08 effffff828 callf $8,_writes
912 00021D94 # write32h( sgl_expected );
913 00021D94 dd effffff822 pushl _sgl_expected
914 00021D9A fe 08 effffff81b callf $8,_write32h
915 00021DA1 # writec('\n');
916 00021DA1 dd 0a pushl $10
917 00021DA3 fe 08 effffff812 callf $8,_writec
918 00021DAA # }
919 00021DAA # if( halt_flg )
920 00021DAA L322:
921 00021DAA 5d effffff80c tstl _halt_flg
922 00021DB0 31 09 jeql L329
923 00021DB2 # logf_er_halt( BAD_ACC_HLT ); /* halt on the error */
924 00021DB2 dd 01 pushl $1
925 00021DB4 fe 08 ef000001b7 callf $8,_logf_er_halt
926 00021DBB # if( loop_on_err ) {
927 00021DBB L329:
928 00021DBB 5d effffff7fb tstl _loop_on_err
929 00021DC1 31 0a jeql L330
930 00021DC3 # force_loop = TRUE; /* set the force loop flag */
931 00021DC3 0d 01 effffff7f2 movl $1,_force_loop
932 00021DCA # asm("brw _logf_5_lp1");; /* and loop on the error */
933 00021DCA 13 ff05 brw _logf_5_lp1
934 00021DCD # } /* end of loop on error */
935 00021DCD # } /* end of compare error */
936 00021DCD L330:
937 00021DCD # } /* end of WHILE loop */
938 00021DCD L321:
939 00021DCD L317:
940 00021DCD 6d effffff7e9 incl _index
941 00021DD3 13 fec0 jbr L319
942 00021DD6 L318:
943 00021DD6 # } /* end of subtest 5 */
944 00021DD6 40 ret#2
945 00021DD7 .set L313,0x0
946 00021DD7 L315:
947 00021DD7 13 fea9 jbr L316
948 00021DDA .data
949 00000a60 * .text
950 00021DDA .align 1
951 00021DDA .globl _logf_6
952 00021DDA _logf_6:
953 00021DDA 0000 .word L331
954 00021DDC #
955 00021DDC #
956 00021DDC #
957 00021DDC # /************************************************************************
958 00021DDC # *
959 00021DDC # * SUBTEST 6 - pipelined exit test
960 00021DDC # *
961 00021DDC # ************************************************************************/
962 00021DDC # logf_6()
963 00021DDC # {
964 00021DDC 13 0154 jbr L333
965 00021DDF L334:
966 00021DDF # force_loop = FALSE;
967 00021DDF 4d effffff7d7 clrl _force_loop
968 00021DE5 # subtest = 8;
969 00021DE5 0d 08 effffff7d0 movl $8,_subtest
970 00021DEC # for( index = 0; index < max_logf_1_index; index++ ) {
971 00021DEC 4d effffff7ca clrl _index
972 00021DF2 L337:
973 00021DF2 1d effffff7c4 effffff7bf cmpl _index,_max_logf_1_index
974 00021DFD 91 03 13 0130 jgeq L336
975 00021E02 # sgl_ld_acc = logf_1_data[index].ld; /* get operand 1 */
976 00021E02 0d effffff7b4 50 movl _index,r0
977 00021E09 48 03 50 50 shll $3,r0,r0
978 00021E0D 0d e000000000 effffff7a4 movl _logf_1_data(r0),_sgl_ld_acc
979 00021E18 # sgl_expected = logf_1_data[index].exp; /* get expected result */
980 00021E18 0d effffff79e 50 movl _index,r0
981 00021E1F 48 03 50 50 shll $3,r0,r0
982 00021E23 0d e000000004 effffff78e movl _logf_1_data+4(r0),_sgl_expected
983 00021E2E # /*
984 00021E2E # * If LOOP ON ERROR is set, this is the loop for this subtest.
985 00021E2E # * The force loop flag is set after the first error.
986 00021E2E # */
987 00021E2E # asm("_logf_6_lp1:");
988 00021E2E _logf_6_lp1:
989 00021E2E # asm("movl $0,r0"); /* clear r0 */
990 00021E2E 0d 00 50 movl $0,r0
991 00021E31 # asm("ldf _sgl_ld_acc"); /* load the Acc. */
992 00021E31 06 effffff785 ldf _sgl_ld_acc
993 00021E37 # asm("logf"); /* get the log */
994 00021E37 35 logf
995 00021E38 # asm("addf r0"); /* add a zero to the acc */
996 00021E38 c6 50 addf r0
997 00021E3A # asm("stf _sgl_st_acc"); /* store the result */
998 00021E3A 26 effffff77c stf _sgl_st_acc
999 00021E40 # if( force_loop )
1000 00021E40 5d effffff776 tstl _force_loop
1001 00021E46 31 02 jeql L338
1002 00021E48 # asm("brb _logf_6_lp1");; /* loop on the error */
1003 00021E48 11 e4 brb _logf_6_lp1
1004 00021E4A L338:
1005 00021E4A # /*
1006 00021E4A # * end error loop - test the results
1007 00021E4A # */
1008 00021E4A # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
1009 00021E4A 1d effffff76c effffff767 cmpl _sgl_st_acc,_sgl_expected
1010 00021E55 21 03 13 00cf jeql L339
1011 00021E5A # errcnt++; /* bump the error count */
1012 00021E5A 6d effffff75c incl _errcnt
1013 00021E60 # if( prt_error ) {
1014 00021E60 5d effffff756 tstl _prt_error
1015 00021E66 21 03 13 009b jeql L340
1016 00021E6B # writes(" \n"); /* start a new print line */
1017 00021E6B .data 1
1018 00000cab * L341:
1019 00000cab * 200A00 .ascii " \12\0"
1020 00000cae * .text
1021 00021E6B dd 8f00000cab pushl $L341
1022 00021E71 fe 08 effffff744 callf $8,_writes
1023 00021E78 # writes("cycle: ");
1024 00021E78 .data 1
1025 00000cae * L342:
1026 00000cae * 6379636C653A2000 .ascii "cycle: \0"
1027 00000cb6 * .text
1028 00021E78 dd 8f00000cae pushl $L342
1029 00021E7E fe 08 effffff737 callf $8,_writes
1030 00021E85 # writed( cycle );
1031 00021E85 dd effffff731 pushl _cycle
1032 00021E8B fe 08 effffff72a callf $8,_writed
1033 00021E92 # writes(" LOGF test ");
1034 00021E92 .data 1
1035 00000cb6 * L343:
1036 00000cb6 * 2020204C4F474620746573742 .ascii " LOGF test \0"
000
1037 00000cc4 * .text
1038 00021E92 dd 8f00000cb6 pushl $L343
1039 00021E98 fe 08 effffff71d callf $8,_writes
1040 00021E9F # writed( test_no );
1041 00021E9F dd effffff717 pushl _test_no
1042 00021EA5 fe 08 effffff710 callf $8,_writed
1043 00021EAC # writes(", subtest 6 (Piped Exit) - BAD FINAL ACC\n");
1044 00021EAC .data 1
1045 00000cc4 * L344:
1046 00000cc4 * 2C20737562746573742036202 .ascii ", subtest 6 (Piped Exit) - BAD FINAL ACC\12\0"
8506970656420457869742920
2D204241442046494E414C204
143430A00
1047 00000cee * .text
1048 00021EAC dd 8f00000cc4 pushl $L344
1049 00021EB2 fe 08 effffff703 callf $8,_writes
1050 00021EB9 # print_logf_data();
1051 00021EB9 fe 04 ef00000076 callf $4,_print_logf_data
1052 00021EC0 # writes(", data index = ");
1053 00021EC0 .data 1
1054 00000cee * L345:
1055 00000cee * 2C20206461746120696E64657 .ascii ", data index = \0"
8203D2000
1056 00000cff * .text
1057 00021EC0 dd 8f00000cee pushl $L345
1058 00021EC6 fe 08 effffff6ef callf $8,_writes
1059 00021ECD # writed( index );
1060 00021ECD dd effffff6e9 pushl _index
1061 00021ED3 fe 08 effffff6e2 callf $8,_writed
1062 00021EDA # writec('\n');
1063 00021EDA dd 0a pushl $10
1064 00021EDC fe 08 effffff6d9 callf $8,_writec
1065 00021EE3 # writes(" expected = ");
1066 00021EE3 .data 1
1067 00000cff * L346:
1068 00000cff * 2020202020202020202020202 .ascii " expected = \0"
0202020202020202020202020
206578706563746564203D200
0
1069 00000d25 * .text
1070 00021EE3 dd 8f00000cff pushl $L346
1071 00021EE9 fe 08 effffff6cc callf $8,_writes
1072 00021EF0 # write32h( sgl_expected );
1073 00021EF0 dd effffff6c6 pushl _sgl_expected
1074 00021EF6 fe 08 effffff6bf callf $8,_write32h
1075 00021EFD # writec('\n');
1076 00021EFD dd 0a pushl $10
1077 00021EFF fe 08 effffff6b6 callf $8,_writec
1078 00021F06 # }
1079 00021F06 # if( halt_flg )
1080 00021F06 L340:
1081 00021F06 5d effffff6b0 tstl _halt_flg
1082 00021F0C 31 09 jeql L347
1083 00021F0E # logf_er_halt( BAD_ACC_HLT ); /* halt on the error */
1084 00021F0E dd 01 pushl $1
1085 00021F10 fe 08 ef0000005b callf $8,_logf_er_halt
1086 00021F17 # if( loop_on_err ) {
1087 00021F17 L347:
1088 00021F17 5d effffff69f tstl _loop_on_err
1089 00021F1D 31 0a jeql L348
1090 00021F1F # force_loop = TRUE; /* set the force loop flag */
1091 00021F1F 0d 01 effffff696 movl $1,_force_loop
1092 00021F26 # asm("brw _logf_6_lp1");; /* and loop on the error */
1093 00021F26 13 ff05 brw _logf_6_lp1
1094 00021F29 # } /* end of loop on error */
1095 00021F29 # } /* end of compare error */
1096 00021F29 L348:
1097 00021F29 # } /* end of WHILE loop */
1098 00021F29 L339:
1099 00021F29 L335:
1100 00021F29 6d effffff68d incl _index
1101 00021F2F 13 fec0 jbr L337
1102 00021F32 L336:
1103 00021F32 # } /* end of subtest 6 */
1104 00021F32 40 ret#2
1105 00021F33 .set L331,0x0
1106 00021F33 L333:
1107 00021F33 13 fea9 jbr L334
1108 00021F36 .data
1109 00000a60 * .text
1110 00021F36 .align 1
1111 00021F36 .globl _print_logf_data
1112 00021F36 _print_logf_data:
1113 00021F36 0000 .word L349
1114 00021F38 #
1115 00021F38 #
1116 00021F38 # /**************************************************************************
1117 00021F38 # *
1118 00021F38 # * PRINT THE DATA AND STORE RESULTS
1119 00021F38 # *
1120 00021F38 # * initial Acc = xxxxxxxx, stored = xxxxxxxx, data index = xx
1121 00021F38 # * Acc expected = xxxxxxxx
1122 00021F38 # **************************************************************************/
1123 00021F38 # print_logf_data()
1124 00021F38 # {
1125 00021F38 11 35 jbr L351
1126 00021F3A L352:
1127 00021F3A # writes("initial Acc = ");
1128 00021F3A .data 1
1129 00000d25 * L353:
1130 00000d25 * 696E697469616C20416363203 .ascii "initial Acc = \0"
D2000
1131 00000d34 * .text
1132 00021F3A dd 8f00000d25 pushl $L353
1133 00021F40 fe 08 effffff675 callf $8,_writes
1134 00021F47 # write32h( sgl_ld_acc );
1135 00021F47 dd effffff66f pushl _sgl_ld_acc
1136 00021F4D fe 08 effffff668 callf $8,_write32h
1137 00021F54 # writes(", final Acc = ");
1138 00021F54 .data 1
1139 00000d34 * L354:
1140 00000d34 * 2C202066696E616C204163632 .ascii ", final Acc = \0"
03D2000
1141 00000d44 * .text
1142 00021F54 dd 8f00000d34 pushl $L354
1143 00021F5A fe 08 effffff65b callf $8,_writes
1144 00021F61 # write32h( sgl_st_acc );
1145 00021F61 dd effffff655 pushl _sgl_st_acc
1146 00021F67 fe 08 effffff64e callf $8,_write32h
1147 00021F6E # }
1148 00021F6E 40 ret#2
1149 00021F6F .set L349,0x0
1150 00021F6F L351:
1151 00021F6F 11 c9 jbr L352
1152 00021F71 .data
1153 00000a60 * .text
1154 00021F71 00 .align 1
1155 00021F72 .globl _logf_er_halt
1156 00021F72 _logf_er_halt:
1157 00021F72 0000 .word L355
1158 00021F74 #
1159 00021F74 #
1160 00021F74 #
1161 00021F74 # /**************************************************************************
1162 00021F74 # *
1163 00021F74 # * HALT ON ERROR ROUTINE
1164 00021F74 # *
1165 00021F74 # **************************************************************************/
1166 00021F74 # logf_er_halt( halt_code )
1167 00021F74 # int halt_code;
1168 00021F74 # {
1169 00021F74 13 00a0 jbr L357
1170 00021F77 L358:
1171 00021F77 # sgl_dummy1 = halt_code; /* get the error type */
1172 00021F77 0d ad04 effffff63d movl 4(fp),_sgl_dummy1
1173 00021F7F # asm("movl _test_no,r0"); /* r0 = test number */
1174 00021F7F 0d effffff637 50 movl _test_no,r0
1175 00021F86 # asm("movl _subtest,r1"); /* r1 = subtest number */
1176 00021F86 0d effffff630 51 movl _subtest,r1
1177 00021F8D # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1178 00021F8D 0d effffff629 52 movl _sgl_dummy1,r2
1179 00021F94 # asm("movl _cycle,r3"); /* r3 = cycle count */
1180 00021F94 0d effffff622 53 movl _cycle,r3
1181 00021F9B # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */
1182 00021F9B 0d effffff61b 54 movl _sgl_ld_acc,r4
1183 00021FA2 # asm("movl _sgl_st_acc,r5"); /* r5 = data stored */
1184 00021FA2 0d effffff614 55 movl _sgl_st_acc,r5
1185 00021FA9 # asm("movl _sgl_expected,r6"); /* r6 = data expected */
1186 00021FA9 0d effffff60d 56 movl _sgl_expected,r6
1187 00021FB0 # asm("movl _index,r7"); /* r7 = data index */
1188 00021FB0 0d effffff606 57 movl _index,r7
1189 00021FB7 # if( halt_code == BAD_REG_HLT ) {
1190 00021FB7 1d ad04 02 cmpl 4(fp),$2
1191 00021FBB 21 3d jneq L359
1192 00021FBD # sgl_dummy1 = load_regs[index2];
1193 00021FBD 0d effffff5f9 50 movl _index2,r0
1194 00021FC4 0d 40effffff5f1 movl _load_regs[r0],_sgl_dummy1
effffff5ec
1195 00021FD0 # sgl_dummy2 = store_regs[index2];
1196 00021FD0 0d effffff5e6 50 movl _index2,r0
1197 00021FD7 0d 40effffff5de movl _store_regs[r0],_sgl_dummy2
effffff5d9
1198 00021FE3 # asm("movl _index2,r6"); /* r6 = bad register # */
1199 00021FE3 0d effffff5d3 56 movl _index2,r6
1200 00021FEA # asm("movl _sgl_dummy2,r7"); /* r7 = actual value */
1201 00021FEA 0d effffff5cc 57 movl _sgl_dummy2,r7
1202 00021FF1 # asm("movl _sgl_dummy1,r8"); /* r8 = expected value */
1203 00021FF1 0d effffff5c5 58 movl _sgl_dummy1,r8
1204 00021FF8 # } else
1205 00021FF8 11 1b jbr L360
1206 00021FFA L359:
1207 00021FFA # if( halt_code == BAD_PSL_HLT ) {
1208 00021FFA 1d ad04 03 cmpl 4(fp),$3
1209 00021FFE 21 15 jneq L361
1210 00022000 # asm("movl _init_psl,r6"); /* r6 = initial PSL */
1211 00022000 0d effffff5b6 56 movl _init_psl,r6
1212 00022007 # asm("movl _psl_val,r7"); /* r7 = final PSL */
1213 00022007 0d effffff5af 57 movl _psl_val,r7
1214 0002200E # asm("movl _exp_psl,r8"); /* r8 = expected PSL */
1215 0002200E 0d effffff5a8 58 movl _exp_psl,r8
1216 00022015 # };
1217 00022015 L361:
1218 00022015 L360:
1219 00022015 # asm("halt"); /* HALT ... */
1220 00022015 00 halt
1221 00022016 # }
1222 00022016 40 ret#2
1223 00022017 .set L355,0x0
1224 00022017 L357:
1225 00022017 13 ff5d jbr L358
1226 0002201A .data
1226 000435D6 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.