|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 000009a4 * .text
4 00000000 .align 1
5 00000000 .globl _tstf
6 00000000 _tstf:
7 00011A14 0000 .word L215
8 00011A16 #
9 00011A16 # #include "fpp_defs.h"
10 00011A16 #
11 00011A16 #
12 00011A16 # /*****************************************************************************
13 00011A16 # *
14 00011A16 # * TSTF - SINGLE PRECISION FLOATING POINT TEST ACC. TEST
15 00011A16 # *
16 00011A16 # *****************************************************************************/
17 00011A16 # tstf()
18 00011A16 # {
19 00011A16 11 50 jbr L217
20 00011A18 L218:
21 00011A18 # asm(".globl _tstf_t");
22 00011A18 .globl _tstf_t
23 00011A18 # asm("_tstf_t:"); /* entry address */
24 00011A18 _tstf_t:
25 00011A18 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
26 00011A18 1d effffffff6 01 cmpl _cycle,$1
27 00011A1F 21 15 jneq L219
28 00011A21 5d efffffffed tstl _prt_hdrs
29 00011A27 31 0d jeql L219
30 00011A29 # writes(" TSTF");
31 00011A29 .data 1
32 000009a4 * L221:
33 000009a4 * 205453544600 .ascii " TSTF\0"
34 000009aa * .text
35 00011A29 dd 8f000009a4 pushl $L221
36 00011A2F fe 08 efffffffde callf $8,_writes
37 00011A36 # tstf_1(); /* PSL flags test */
38 00011A36 L219:
39 00011A36 fe 04 ef0000002d callf $4,_tstf_1
40 00011A3D # tstf_2(); /* register stability */
41 00011A3D fe 04 ef00000206 callf $4,_tstf_2
42 00011A44 # tstf_3(); /* accumulator stability */
43 00011A44 fe 04 ef000003fb callf $4,_tstf_3
44 00011A4B # if( !no_fpp_wcs ) {
45 00011A4B 5d efffffffc3 tstl _no_fpp_wcs
46 00011A51 21 0e jneq L225
47 00011A53 # tstf_4(); /* pipelined entry test */
48 00011A53 fe 04 ef0000052e callf $4,_tstf_4
49 00011A5A # tstf_5(); /* pipelined exit test */
50 00011A5A fe 04 ef0000070d callf $4,_tstf_5
51 00011A61 # };
52 00011A61 L225:
53 00011A61 # asm("jmp *return"); /* return to the test monitor */
54 00011A61 71 ffffffffad jmp *return
55 00011A67 # }
56 00011A67 40 ret#2
57 00011A68 .set L215,0x0
58 00011A68 L217:
59 00011A68 11 ae jbr L218
60 00011A6A .data
61 000009a4 * .text
62 00011A6A .align 1
63 00011A6A .globl _tstf_1
64 00011A6A _tstf_1:
65 00011A6A 0000 .word L228
66 00011A6C #
67 00011A6C #
68 00011A6C #
69 00011A6C # /************************************************************************
70 00011A6C # *
71 00011A6C # * SUBTEST 1 - Check for PSL corruption
72 00011A6C # *
73 00011A6C # ************************************************************************/
74 00011A6C # tstf_1()
75 00011A6C # {
76 00011A6C 13 01d8 jbr L230
77 00011A6F L231:
78 00011A6F # force_loop = FALSE; /* clear force_loop flg */
79 00011A6F 4d efffffff9f clrl _force_loop
80 00011A75 # subtest = 1;
81 00011A75 0d 01 efffffff98 movl $1,_subtest
82 00011A7C # for( index = 0; index < max_tstf_1_index; index++ ) {
83 00011A7C 4d efffffff92 clrl _index
84 00011A82 L234:
85 00011A82 1d efffffff8c efffffff87 cmpl _index,_max_tstf_1_index
86 00011A8D 91 03 13 01b4 jgeq L233
87 00011A92 # sgl_ld_acc = tstf_1_data[index].ld; /* get value to load */
88 00011A92 0d efffffff7c 50 movl _index,r0
89 00011A99 48 03 50 50 shll $3,r0,r0
90 00011A9D 0d e000000000 efffffff6c movl _tstf_1_data(r0),_sgl_ld_acc
91 00011AA8 # sgl_expected = tstf_1_data[index].exp; /* get expected flags*/
92 00011AA8 0d efffffff66 50 movl _index,r0
93 00011AAF 48 03 50 50 shll $3,r0,r0
94 00011AB3 0d e000000004 efffffff56 movl _tstf_1_data+4(r0),_sgl_expected
95 00011ABE # for( status_index = 0; status_index < 3; status_index++ ) {
96 00011ABE 4d efffffff50 clrl _status_index
97 00011AC4 L237:
98 00011AC4 1d efffffff4a 03 cmpl _status_index,$3
99 00011ACB 91 03 13 016d jgeq L236
100 00011AD0 # sgl_dummy1 = status_array[status_index]; /* status = +,-,0 */
101 00011AD0 0d efffffff3e 50 movl _status_index,r0
102 00011AD7 0d 40efffffff36 movl _status_array[r0],_sgl_dummy1
efffffff31
103 00011AE3 # /*
104 00011AE3 # * If LOOP ON ERROR is set, this is the loop for this subtest.
105 00011AE3 # * The force loop flag is set after the first error.
106 00011AE3 # */
107 00011AE3 # asm("ldf _sgl_ld_acc"); /* load the initial value */
108 00011AE3 06 efffffff2b ldf _sgl_ld_acc
109 00011AE9 # asm("_tstf_1_lp1:");
110 00011AE9 _tstf_1_lp1:
111 00011AE9 # asm("tstl _sgl_dummy1"); /* set the PSL status */
112 00011AE9 5d efffffff25 tstl _sgl_dummy1
113 00011AEF # asm("movpsl _init_psl"); /* save the initial PSL */
114 00011AEF cd efffffff1f movpsl _init_psl
115 00011AF5 # asm("tstf"); /* test the accmulator */
116 00011AF5 56 tstf
117 00011AF6 # asm("nop");
118 00011AF6 10 nop
119 00011AF7 # asm("movpsl _psl_val"); /* save the final PSL */
120 00011AF7 cd efffffff17 movpsl _psl_val
121 00011AFD # asm("stf _sgl_st_acc"); /* save the final Acc. */
122 00011AFD 26 efffffff11 stf _sgl_st_acc
123 00011B03 # if( force_loop )
124 00011B03 5d efffffff0b tstl _force_loop
125 00011B09 31 02 jeql L238
126 00011B0B # asm("brb _tstf_1_lp1");; /* loop on the error */
127 00011B0B 11 dc brb _tstf_1_lp1
128 00011B0D L238:
129 00011B0D # /*
130 00011B0D # * Now compare the final PSL to the initial PSL -they should be the same
131 00011B0D # */
132 00011B0D # exp_psl = init_psl; /* get the initial PSL */
133 00011B0D 0d efffffff01 effffffefc movl _init_psl,_exp_psl
134 00011B18 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
135 00011B18 ac 88f3 effffffef4 andl2 $-13,_exp_psl
136 00011B20 # if( sgl_expected == ZERO )
137 00011B20 1d effffffeee 04 cmpl _sgl_expected,$4
138 00011B27 21 07 jneq L239
139 00011B29 # exp_psl |= PSL_Z; /* expect the ZERO bit set */
140 00011B29 8c 04 effffffee4 orl2 $4,_exp_psl
141 00011B30 # if( sgl_expected == NEGATIVE )
142 00011B30 L239:
143 00011B30 1d effffffede 08 cmpl _sgl_expected,$8
144 00011B37 21 07 jneq L240
145 00011B39 # exp_psl |= PSL_N; /* expect the NEG bit set */
146 00011B39 8c 08 effffffed4 orl2 $8,_exp_psl
147 00011B40 # if( psl_val != exp_psl ) {
148 00011B40 L240:
149 00011B40 1d effffffece effffffec9 cmpl _psl_val,_exp_psl
150 00011B4B 21 03 13 00e4 jeql L241
151 00011B50 # errcnt++; /* bump the error count */
152 00011B50 6d effffffebe incl _errcnt
153 00011B56 # if( prt_error ) {
154 00011B56 5d effffffeb8 tstl _prt_error
155 00011B5C 21 03 13 00b0 jeql L242
156 00011B61 # writes(" \n"); /* start new print line */
157 00011B61 .data 1
158 000009aa * L243:
159 000009aa * 200A00 .ascii " \12\0"
160 000009ad * .text
161 00011B61 dd 8f000009aa pushl $L243
162 00011B67 fe 08 effffffea6 callf $8,_writes
163 00011B6E # writes("cycle: ");
164 00011B6E .data 1
165 000009ad * L244:
166 000009ad * 6379636C653A2000 .ascii "cycle: \0"
167 000009b5 * .text
168 00011B6E dd 8f000009ad pushl $L244
169 00011B74 fe 08 effffffe99 callf $8,_writes
170 00011B7B # writed( cycle );
171 00011B7B dd effffffe93 pushl _cycle
172 00011B81 fe 08 effffffe8c callf $8,_writed
173 00011B88 # writes(" TSTF test ");
174 00011B88 .data 1
175 000009b5 * L246:
176 000009b5 * 2020545354462074657374200 .ascii " TSTF test \0"
0
177 000009c2 * .text
178 00011B88 dd 8f000009b5 pushl $L246
179 00011B8E fe 08 effffffe7f callf $8,_writes
180 00011B95 # writed( test_no );
181 00011B95 dd effffffe79 pushl _test_no
182 00011B9B fe 08 effffffe72 callf $8,_writed
183 00011BA2 # writes(
184 00011BA2 # ", subtest 1 - BAD FINAL PSL\n");
185 00011BA2 .data 1
186 000009c2 * L247:
187 000009c2 * 2C20737562746573742031202 .ascii ", subtest 1 - BAD FINAL PSL\12\0"
D204241442046494E414C2050
534C0A00
188 000009df * .text
189 00011BA2 dd 8f000009c2 pushl $L247
190 00011BA8 fe 08 effffffe65 callf $8,_writes
191 00011BAF # print_tstf_data(); /* print the operands */
192 00011BAF fe 04 ef000006f8 callf $4,_print_tstf_data
193 00011BB6 # writes("initial PSL = ");
194 00011BB6 .data 1
195 000009df * L249:
196 000009df * 696E697469616C2050534C203 .ascii "initial PSL = \0"
D2000
197 000009ee * .text
198 00011BB6 dd 8f000009df pushl $L249
199 00011BBC fe 08 effffffe51 callf $8,_writes
200 00011BC3 # write32h( init_psl );
201 00011BC3 dd effffffe4b pushl _init_psl
202 00011BC9 fe 08 effffffe44 callf $8,_write32h
203 00011BD0 # writes(", final PSL = ");
204 00011BD0 .data 1
205 000009ee * L251:
206 000009ee * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
207 000009fe * .text
208 00011BD0 dd 8f000009ee pushl $L251
209 00011BD6 fe 08 effffffe37 callf $8,_writes
210 00011BDD # write32h( psl_val );
211 00011BDD dd effffffe31 pushl _psl_val
212 00011BE3 fe 08 effffffe2a callf $8,_write32h
213 00011BEA # writes(", expected PSL = ");
214 00011BEA .data 1
215 000009fe * L252:
216 000009fe * 2C20657870656374656420505 .ascii ", expected PSL = \0"
34C203D2000
217 00000a10 * .text
218 00011BEA dd 8f000009fe pushl $L252
219 00011BF0 fe 08 effffffe1d callf $8,_writes
220 00011BF7 # write32h( exp_psl );
221 00011BF7 dd effffffe17 pushl _exp_psl
222 00011BFD fe 08 effffffe10 callf $8,_write32h
223 00011C04 # writes("\n");
224 00011C04 .data 1
225 00000a10 * L253:
226 00000a10 * 0A00 .ascii "\12\0"
227 00000a12 * .text
228 00011C04 dd 8f00000a10 pushl $L253
229 00011C0A fe 08 effffffe03 callf $8,_writes
230 00011C11 # }
231 00011C11 # if( halt_flg )
232 00011C11 L242:
233 00011C11 5d effffffdfd tstl _halt_flg
234 00011C17 31 09 jeql L254
235 00011C19 # tstf_er_halt( BAD_PSL_HLT ); /* halt on error */
236 00011C19 dd 03 pushl $3
237 00011C1B fe 08 ef000006ea callf $8,_tstf_er_halt
238 00011C22 # if( loop_on_err ) {
239 00011C22 L254:
240 00011C22 5d effffffdec tstl _loop_on_err
241 00011C28 31 0a jeql L256
242 00011C2A # force_loop = TRUE; /* set force loop flag */
243 00011C2A 0d 01 effffffde3 movl $1,_force_loop
244 00011C31 # asm("brw _tstf_1_lp1"); /* loop on the error */
245 00011C31 13 feb5 brw _tstf_1_lp1
246 00011C34 # } /* end of loop on error */
247 00011C34 # } /* end of PSL corruption error */
248 00011C34 L256:
249 00011C34 # } /* end of initial status WHILE loop */
250 00011C34 L241:
251 00011C34 L235:
252 00011C34 6d effffffdda incl _status_index
253 00011C3A 13 fe87 jbr L237
254 00011C3D L236:
255 00011C3D # } /* end of data pattern WHILE loop */
256 00011C3D L232:
257 00011C3D 6d effffffdd1 incl _index
258 00011C43 13 fe3c jbr L234
259 00011C46 L233:
260 00011C46 # } /* end of subtest 1 */
261 00011C46 40 ret#2
262 00011C47 .set L228,0x0
263 00011C47 L230:
264 00011C47 13 fe25 jbr L231
265 00011C4A .data
266 000009a4 * .text
267 00011C4A .align 1
268 00011C4A .globl _tstf_2
269 00011C4A _tstf_2:
270 00011C4A 0000 .word L257
271 00011C4C #
272 00011C4C #
273 00011C4C #
274 00011C4C # /************************************************************************
275 00011C4C # *
276 00011C4C # * SUBTEST 2 - Check for register corruption
277 00011C4C # *
278 00011C4C # ************************************************************************/
279 00011C4C # tstf_2()
280 00011C4C # {
281 00011C4C 13 01f3 jbr L259
282 00011C4F L260:
283 00011C4F # force_loop = FALSE; /* clear force_loop flg */
284 00011C4F 4d effffffdbf clrl _force_loop
285 00011C55 # subtest = 2;
286 00011C55 0d 02 effffffdb8 movl $2,_subtest
287 00011C5C # fill_reg_buf( load_regs ); /* get patterns for regs */
288 00011C5C dd 8f00000000 pushl $_load_regs
289 00011C62 fe 08 effffffdab callf $8,_fill_reg_buf
290 00011C69 # for( index = 0; index < max_tstf_1_index; index++ ) {
291 00011C69 4d effffffda5 clrl _index
292 00011C6F L264:
293 00011C6F 1d effffffd9f effffffd9a cmpl _index,_max_tstf_1_index
294 00011C7A 91 03 13 01c2 jgeq L263
295 00011C7F # sgl_ld_acc = tstf_1_data[index].ld; /* get value to load */
296 00011C7F 0d effffffd8f 50 movl _index,r0
297 00011C86 48 03 50 50 shll $3,r0,r0
298 00011C8A 0d e000000000 effffffd7f movl _tstf_1_data(r0),_sgl_ld_acc
299 00011C95 # sgl_expected = tstf_1_data[index].exp; /* get expected flags*/
300 00011C95 0d effffffd79 50 movl _index,r0
301 00011C9C 48 03 50 50 shll $3,r0,r0
302 00011CA0 0d e000000004 effffffd69 movl _tstf_1_data+4(r0),_sgl_expected
303 00011CAB # for( status_index = 0; status_index < 3; status_index++ ) {
304 00011CAB 4d effffffd63 clrl _status_index
305 00011CB1 L267:
306 00011CB1 1d effffffd5d 03 cmpl _status_index,$3
307 00011CB8 91 03 13 017b jgeq L266
308 00011CBD # sgl_dummy1 = status_array[status_index]; /* status = +,-,0 */
309 00011CBD 0d effffffd51 50 movl _status_index,r0
310 00011CC4 0d 40effffffd49 movl _status_array[r0],_sgl_dummy1
effffffd44
311 00011CD0 # /*
312 00011CD0 # * If LOOP ON ERROR is set, this is the loop for this subtest.
313 00011CD0 # * The force loop flag is set after the first error.
314 00011CD0 # */
315 00011CD0 # asm("_tstf_2_lp1:");
316 00011CD0 _tstf_2_lp1:
317 00011CD0 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
318 00011CD0 ab 891fff effffffd3b loadr $0x1fff,_load_regs
319 00011CD9 # asm("ldf _sgl_ld_acc"); /* load the Acc. */
320 00011CD9 06 effffffd35 ldf _sgl_ld_acc
321 00011CDF # asm("nop");
322 00011CDF 10 nop
323 00011CE0 # asm("tstf"); /* test the acc. */
324 00011CE0 56 tstf
325 00011CE1 # asm("nop");
326 00011CE1 10 nop
327 00011CE2 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
328 00011CE2 bb 891fff effffffd29 storer $0x1fff,_store_regs
329 00011CEB # asm("stf _sgl_st_acc"); /* save the acc. */
330 00011CEB 26 effffffd23 stf _sgl_st_acc
331 00011CF1 # if( force_loop )
332 00011CF1 5d effffffd1d tstl _force_loop
333 00011CF7 31 02 jeql L268
334 00011CF9 # asm("brb _tstf_2_lp1");; /* loop on the error */
335 00011CF9 11 d5 brb _tstf_2_lp1
336 00011CFB L268:
337 00011CFB # /*
338 00011CFB # * Now compare the stored register values to those that were loaded
339 00011CFB # */
340 00011CFB # index2 = 0;
341 00011CFB 4d effffffd13 clrl _index2
342 00011D01 # while( (load_regs[index2] == store_regs[index2]) &&
343 00011D01 # (index2 < 13) )
344 00011D01 L269:
345 00011D01 0d effffffd0d 50 movl _index2,r0
346 00011D08 0d effffffd06 51 movl _index2,r1
347 00011D0F 1d 40effffffcfe cmpl _load_regs[r0],_store_regs[r1]
41effffffcf8
348 00011D1C 21 11 jneq L270
349 00011D1E 1d effffffcf0 0d cmpl _index2,$13
350 00011D25 81 08 jgeq L270
351 00011D27 # index2++; /* check reg values */
352 00011D27 6d effffffce7 incl _index2
353 00011D2D 11 d2 jbr L269
354 00011D2F L270:
355 00011D2F # if( index2 < 13 ) { /* error if index2 < 13 */
356 00011D2F 1d effffffcdf 0d cmpl _index2,$13
357 00011D36 91 03 13 00f4 jgeq L271
358 00011D3B # errcnt++; /* bump the error count */
359 00011D3B 6d effffffcd3 incl _errcnt
360 00011D41 # if( prt_error ) {
361 00011D41 5d effffffccd tstl _prt_error
362 00011D47 21 03 13 00c0 jeql L272
363 00011D4C # writes(" \n"); /* start a new print line */
364 00011D4C .data 1
365 00000a12 * L273:
366 00000a12 * 200A00 .ascii " \12\0"
367 00000a15 * .text
368 00011D4C dd 8f00000a12 pushl $L273
369 00011D52 fe 08 effffffcbb callf $8,_writes
370 00011D59 # writes("cycle: ");
371 00011D59 .data 1
372 00000a15 * L274:
373 00000a15 * 6379636C653A2000 .ascii "cycle: \0"
374 00000a1d * .text
375 00011D59 dd 8f00000a15 pushl $L274
376 00011D5F fe 08 effffffcae callf $8,_writes
377 00011D66 # writed( cycle );
378 00011D66 dd effffffca8 pushl _cycle
379 00011D6C fe 08 effffffca1 callf $8,_writed
380 00011D73 # writes(" TSTF test ");
381 00011D73 .data 1
382 00000a1d * L275:
383 00000a1d * 2020545354462074657374200 .ascii " TSTF test \0"
0
384 00000a2a * .text
385 00011D73 dd 8f00000a1d pushl $L275
386 00011D79 fe 08 effffffc94 callf $8,_writes
387 00011D80 # writed( test_no );
388 00011D80 dd effffffc8e pushl _test_no
389 00011D86 fe 08 effffffc87 callf $8,_writed
390 00011D8D # writes(", subtest 2 - A REGISTER WAS MODIFIED\n");
391 00011D8D .data 1
392 00000a2a * L276:
393 00000a2a * 2C20737562746573742032202 .ascii ", subtest 2 - A REGISTER WAS MODIFIED\12\0"
D204120524547495354455220
574153204D4F4449464945440
A00
394 00000a51 * .text
395 00011D8D dd 8f00000a2a pushl $L276
396 00011D93 fe 08 effffffc7a callf $8,_writes
397 00011D9A # print_tstf_data(); /* print the operands */
398 00011D9A fe 04 ef0000050d callf $4,_print_tstf_data
399 00011DA1 # writes("register "); /* print the information */
400 00011DA1 .data 1
401 00000a51 * L277:
402 00000a51 * 72656769737465722000 .ascii "register \0"
403 00000a5b * .text
404 00011DA1 dd 8f00000a51 pushl $L277
405 00011DA7 fe 08 effffffc66 callf $8,_writes
406 00011DAE # writed( index2 ); /* about the corrupted */
407 00011DAE dd effffffc60 pushl _index2
408 00011DB4 fe 08 effffffc59 callf $8,_writed
409 00011DBB # writes(" = "); /* register */
410 00011DBB .data 1
411 00000a5b * L278:
412 00000a5b * 203D2000 .ascii " = \0"
413 00000a5f * .text
414 00011DBB dd 8f00000a5b pushl $L278
415 00011DC1 fe 08 effffffc4c callf $8,_writes
416 00011DC8 # write32h( store_regs[index2] );
417 00011DC8 0d effffffc46 50 movl _index2,r0
418 00011DCF dd 40effffffc3e pushl _store_regs[r0]
419 00011DD6 fe 08 effffffc37 callf $8,_write32h
420 00011DDD # writes(", should be = ");
421 00011DDD .data 1
422 00000a5f * L279:
423 00000a5f * 2C202073686F756C642062652 .ascii ", should be = \0"
03D2000
424 00000a6f * .text
425 00011DDD dd 8f00000a5f pushl $L279
426 00011DE3 fe 08 effffffc2a callf $8,_writes
427 00011DEA # write32h( load_regs[index2] );
428 00011DEA 0d effffffc24 50 movl _index2,r0
429 00011DF1 dd 40effffffc1c pushl _load_regs[r0]
430 00011DF8 fe 08 effffffc15 callf $8,_write32h
431 00011DFF # writes("\n");
432 00011DFF .data 1
433 00000a6f * L280:
434 00000a6f * 0A00 .ascii "\12\0"
435 00000a71 * .text
436 00011DFF dd 8f00000a6f pushl $L280
437 00011E05 fe 08 effffffc08 callf $8,_writes
438 00011E0C # }
439 00011E0C # if( halt_flg )
440 00011E0C L272:
441 00011E0C 5d effffffc02 tstl _halt_flg
442 00011E12 31 09 jeql L281
443 00011E14 # tstf_er_halt( BAD_REG_HLT ); /* halt on error */
444 00011E14 dd 02 pushl $2
445 00011E16 fe 08 ef000004ef callf $8,_tstf_er_halt
446 00011E1D # if( loop_on_err ) {
447 00011E1D L281:
448 00011E1D 5d effffffbf1 tstl _loop_on_err
449 00011E23 31 0a jeql L282
450 00011E25 # force_loop = TRUE; /* set force loop flag */
451 00011E25 0d 01 effffffbe8 movl $1,_force_loop
452 00011E2C # asm("brw _tstf_2_lp1"); /* loop on the error */
453 00011E2C 13 fea1 brw _tstf_2_lp1
454 00011E2F # } /* end of loop on error */
455 00011E2F # } /* end of register corruption error */
456 00011E2F L282:
457 00011E2F # } /* end of initial PSL WHILE loop */
458 00011E2F L271:
459 00011E2F L265:
460 00011E2F 6d effffffbdf incl _status_index
461 00011E35 13 fe79 jbr L267
462 00011E38 L266:
463 00011E38 # } /* end of tstf data WHILE loop */
464 00011E38 L262:
465 00011E38 6d effffffbd6 incl _index
466 00011E3E 13 fe2e jbr L264
467 00011E41 L263:
468 00011E41 # } /* end of subtest 2 */
469 00011E41 40 ret#2
470 00011E42 .set L257,0x0
471 00011E42 L259:
472 00011E42 13 fe0a jbr L260
473 00011E45 .data
474 000009a4 * .text
475 00011E45 00 .align 1
476 00011E46 .globl _tstf_3
477 00011E46 _tstf_3:
478 00011E46 0000 .word L283
479 00011E48 #
480 00011E48 #
481 00011E48 #
482 00011E48 #
483 00011E48 # /************************************************************************
484 00011E48 # *
485 00011E48 # * SUBTEST 3 - Check for accumulator corruption
486 00011E48 # *
487 00011E48 # ************************************************************************/
488 00011E48 # tstf_3()
489 00011E48 # {
490 00011E48 13 0139 jbr L285
491 00011E4B L286:
492 00011E4B # force_loop = FALSE; /* clear force_loop flg */
493 00011E4B 4d effffffbc3 clrl _force_loop
494 00011E51 # subtest = 3;
495 00011E51 0d 03 effffffbbc movl $3,_subtest
496 00011E58 # for( index = 0; index < max_tstf_1_index; index++ ) {
497 00011E58 4d effffffbb6 clrl _index
498 00011E5E L289:
499 00011E5E 1d effffffbb0 effffffbab cmpl _index,_max_tstf_1_index
500 00011E69 91 03 13 0115 jgeq L288
501 00011E6E # sgl_ld_acc = tstf_1_data[index].ld; /* get value to load */
502 00011E6E 0d effffffba0 50 movl _index,r0
503 00011E75 48 03 50 50 shll $3,r0,r0
504 00011E79 0d e000000000 effffffb90 movl _tstf_1_data(r0),_sgl_ld_acc
505 00011E84 # if( sgl_ld_acc & 0x7f800000 )
506 00011E84 3d 8f7f800000 effffffb85 bitl $2139095040,_sgl_ld_acc
507 00011E8F 31 0d jeql L290
508 00011E91 # sgl_expected = sgl_ld_acc; /* the Acc should not change */
509 00011E91 0d effffffb7d effffffb78 movl _sgl_ld_acc,_sgl_expected
510 00011E9C # else
511 00011E9C 11 06 jbr L291
512 00011E9E L290:
513 00011E9E # sgl_expected = 0; /* expect a '0' final Acc */
514 00011E9E 4d effffffb70 clrl _sgl_expected
515 00011EA4 L291:
516 00011EA4 # /*
517 00011EA4 # * If LOOP ON ERROR is set, this is the loop for this subtest.
518 00011EA4 # * The force loop flag is set after the first error.
519 00011EA4 # */
520 00011EA4 # asm("_tstf_3_lp1:");
521 00011EA4 _tstf_3_lp1:
522 00011EA4 # asm("ldf _sgl_ld_acc");
523 00011EA4 06 effffffb6a ldf _sgl_ld_acc
524 00011EAA # asm("nop");
525 00011EAA 10 nop
526 00011EAB # asm("tstf"); /* test the accumulator */
527 00011EAB 56 tstf
528 00011EAC # asm("nop");
529 00011EAC 10 nop
530 00011EAD # asm("stf _sgl_st_acc"); /* save the accumulator */
531 00011EAD 26 effffffb61 stf _sgl_st_acc
532 00011EB3 # if( force_loop )
533 00011EB3 5d effffffb5b tstl _force_loop
534 00011EB9 31 02 jeql L292
535 00011EBB # asm("brb _tstf_3_lp1");; /* loop on the error */
536 00011EBB 11 e7 brb _tstf_3_lp1
537 00011EBD L292:
538 00011EBD # /*
539 00011EBD # * Now compare the stored accumulator to the value that was loaded
540 00011EBD # */
541 00011EBD # if( sgl_st_acc != sgl_expected ) { /* Acc corrupted? */
542 00011EBD 1d effffffb51 effffffb4c cmpl _sgl_st_acc,_sgl_expected
543 00011EC8 21 03 13 00ad jeql L293
544 00011ECD # errcnt++; /* bump error count */
545 00011ECD 6d effffffb41 incl _errcnt
546 00011ED3 # if( prt_error ) {
547 00011ED3 5d effffffb3b tstl _prt_error
548 00011ED9 31 7c jeql L294
549 00011EDB # writes(" \n"); /* start a new line */
550 00011EDB .data 1
551 00000a71 * L295:
552 00000a71 * 200A00 .ascii " \12\0"
553 00000a74 * .text
554 00011EDB dd 8f00000a71 pushl $L295
555 00011EE1 fe 08 effffffb2c callf $8,_writes
556 00011EE8 # writes("cycle: ");
557 00011EE8 .data 1
558 00000a74 * L296:
559 00000a74 * 6379636C653A2000 .ascii "cycle: \0"
560 00000a7c * .text
561 00011EE8 dd 8f00000a74 pushl $L296
562 00011EEE fe 08 effffffb1f callf $8,_writes
563 00011EF5 # writed( cycle );
564 00011EF5 dd effffffb19 pushl _cycle
565 00011EFB fe 08 effffffb12 callf $8,_writed
566 00011F02 # writes(" TSTF test ");
567 00011F02 .data 1
568 00000a7c * L297:
569 00000a7c * 2020545354462074657374200 .ascii " TSTF test \0"
0
570 00000a89 * .text
571 00011F02 dd 8f00000a7c pushl $L297
572 00011F08 fe 08 effffffb05 callf $8,_writes
573 00011F0F # writed( test_no );
574 00011F0F dd effffffaff pushl _test_no
575 00011F15 fe 08 effffffaf8 callf $8,_writed
576 00011F1C # writes(", subtest 3 (Cache Data) - THE ACC WAS MODIFIED\n");
577 00011F1C .data 1
578 00000a89 * L298:
579 00000a89 * 2C20737562746573742033202 .ascii ", subtest 3 (Cache Data) - THE ACC WAS MODIFIED\12\0"
8436163686520446174612920
2D20544845204143432057415
3204D4F4449464945440A00
580 00000aba * .text
581 00011F1C dd 8f00000a89 pushl $L298
582 00011F22 fe 08 effffffaeb callf $8,_writes
583 00011F29 # print_tstf_data(); /* print the operands */
584 00011F29 fe 04 ef0000037e callf $4,_print_tstf_data
585 00011F30 # writes(" expected Acc = ");
586 00011F30 .data 1
587 00000aba * L299:
588 00000aba * 2020202020202020202020202 .ascii " expected Acc = \0"
0202020202020202020657870
656374656420416363203D200
0
589 00000ae0 * .text
590 00011F30 dd 8f00000aba pushl $L299
591 00011F36 fe 08 effffffad7 callf $8,_writes
592 00011F3D # write32h( sgl_expected );
593 00011F3D dd effffffad1 pushl _sgl_expected
594 00011F43 fe 08 effffffaca callf $8,_write32h
595 00011F4A # writes("\n");
596 00011F4A .data 1
597 00000ae0 * L300:
598 00000ae0 * 0A00 .ascii "\12\0"
599 00000ae2 * .text
600 00011F4A dd 8f00000ae0 pushl $L300
601 00011F50 fe 08 effffffabd callf $8,_writes
602 00011F57 # }
603 00011F57 # if( halt_flg )
604 00011F57 L294:
605 00011F57 5d effffffab7 tstl _halt_flg
606 00011F5D 31 09 jeql L301
607 00011F5F # tstf_er_halt( BAD_ACC_HLT ); /* halt on error */
608 00011F5F dd 01 pushl $1
609 00011F61 fe 08 ef000003a4 callf $8,_tstf_er_halt
610 00011F68 # if( loop_on_err ) {
611 00011F68 L301:
612 00011F68 5d effffffaa6 tstl _loop_on_err
613 00011F6E 31 0a jeql L302
614 00011F70 # force_loop = TRUE; /* set force loop flag */
615 00011F70 0d 01 effffffa9d movl $1,_force_loop
616 00011F77 # asm("brw _tstf_3_lp1"); /* loop on the error */
617 00011F77 13 ff2a brw _tstf_3_lp1
618 00011F7A # } /* end of loop on error */
619 00011F7A # } /* end of register corruption error */
620 00011F7A L302:
621 00011F7A # } /* end of tstf data WHILE loop */
622 00011F7A L293:
623 00011F7A L287:
624 00011F7A 6d effffffa94 incl _index
625 00011F80 13 fedb jbr L289
626 00011F83 L288:
627 00011F83 # } /* end of subtest 3 */
628 00011F83 40 ret#2
629 00011F84 .set L283,0x0
630 00011F84 L285:
631 00011F84 13 fec4 jbr L286
632 00011F87 .data
633 000009a4 * .text
634 00011F87 00 .align 1
635 00011F88 .globl _tstf_4
636 00011F88 _tstf_4:
637 00011F88 0000 .word L303
638 00011F8A #
639 00011F8A #
640 00011F8A #
641 00011F8A # /************************************************************************
642 00011F8A # *
643 00011F8A # * SUBTEST 4 - pipelined entry test
644 00011F8A # *
645 00011F8A # ************************************************************************/
646 00011F8A # tstf_4()
647 00011F8A # {
648 00011F8A 13 01dd jbr L305
649 00011F8D L306:
650 00011F8D # force_loop = FALSE;
651 00011F8D 4d effffffa81 clrl _force_loop
652 00011F93 # subtest = 4;
653 00011F93 0d 04 effffffa7a movl $4,_subtest
654 00011F9A # for( index = 0; index < max_tstf_1_index; index++ ) {
655 00011F9A 4d effffffa74 clrl _index
656 00011FA0 L309:
657 00011FA0 1d effffffa6e effffffa69 cmpl _index,_max_tstf_1_index
658 00011FAB 91 03 13 01b9 jgeq L308
659 00011FB0 # sgl_ld_acc = tstf_1_data[index].ld; /* get value to negate */
660 00011FB0 0d effffffa5e 50 movl _index,r0
661 00011FB7 48 03 50 50 shll $3,r0,r0
662 00011FBB 0d e000000000 effffffa4e movl _tstf_1_data(r0),_sgl_ld_acc
663 00011FC6 # sgl_expected = tstf_1_data[index].exp; /* get expected result */
664 00011FC6 0d effffffa48 50 movl _index,r0
665 00011FCD 48 03 50 50 shll $3,r0,r0
666 00011FD1 0d e000000004 effffffa38 movl _tstf_1_data+4(r0),_sgl_expected
667 00011FDC # for( status_index = 0; status_index < 3; status_index++ ) {
668 00011FDC 4d effffffa32 clrl _status_index
669 00011FE2 L312:
670 00011FE2 1d effffffa2c 03 cmpl _status_index,$3
671 00011FE9 91 03 13 0172 jgeq L311
672 00011FEE # sgl_dummy1 = status_array[status_index]; /* status = +,-,0 */
673 00011FEE 0d effffffa20 50 movl _status_index,r0
674 00011FF5 0d 40effffffa18 movl _status_array[r0],_sgl_dummy1
effffffa13
675 00012001 # /*
676 00012001 # * If LOOP ON ERROR is set, this is the loop for this subtest.
677 00012001 # * The force loop flag is set after the first error.
678 00012001 # */
679 00012001 # asm("_tstf_4_lp1:");
680 00012001 _tstf_4_lp1:
681 00012001 # asm("ldf $0"); /* load Acc. with 0.0 */
682 00012001 06 8f00000000 ldf $0
683 00012007 # asm("tstl _sgl_dummy1"); /* set the PSL status */
684 00012007 5d effffffa07 tstl _sgl_dummy1
685 0001200D # asm("movpsl _init_psl"); /* save initial PSL */
686 0001200D cd effffffa01 movpsl _init_psl
687 00012013 # asm("addf _sgl_ld_acc"); /* add the value */
688 00012013 c6 effffff9fb addf _sgl_ld_acc
689 00012019 # asm("tstf"); /* test accumulator */
690 00012019 56 tstf
691 0001201A # asm("movpsl _psl_val"); /* save final PSL */
692 0001201A cd effffff9f4 movpsl _psl_val
693 00012020 # asm("stf _sgl_st_acc"); /* store the result */
694 00012020 26 effffff9ee stf _sgl_st_acc
695 00012026 # if( force_loop )
696 00012026 5d effffff9e8 tstl _force_loop
697 0001202C 31 02 jeql L313
698 0001202E # asm("brb _tstf_4_lp1");; /* loop on the error */
699 0001202E 11 d1 brb _tstf_4_lp1
700 00012030 L313:
701 00012030 # /*
702 00012030 # * end error loop - test the results
703 00012030 # */
704 00012030 # exp_psl = init_psl; /* get initial PSL */
705 00012030 0d effffff9de effffff9d9 movl _init_psl,_exp_psl
706 0001203B # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
707 0001203B ac 88f3 effffff9d1 andl2 $-13,_exp_psl
708 00012043 # if( sgl_expected == ZERO )
709 00012043 1d effffff9cb 04 cmpl _sgl_expected,$4
710 0001204A 21 07 jneq L314
711 0001204C # exp_psl |= PSL_Z; /* expect ZERO bit set */
712 0001204C 8c 04 effffff9c1 orl2 $4,_exp_psl
713 00012053 # if( sgl_expected == NEGATIVE )
714 00012053 L314:
715 00012053 1d effffff9bb 08 cmpl _sgl_expected,$8
716 0001205A 21 07 jneq L315
717 0001205C # exp_psl |= PSL_N; /* expect NEG bit set */
718 0001205C 8c 08 effffff9b1 orl2 $8,_exp_psl
719 00012063 # if( psl_val != exp_psl ) {
720 00012063 L315:
721 00012063 1d effffff9ab effffff9a6 cmpl _psl_val,_exp_psl
722 0001206E 21 03 13 00e4 jeql L316
723 00012073 # errcnt++; /* bump the error count */
724 00012073 6d effffff99b incl _errcnt
725 00012079 # if( prt_error ) {
726 00012079 5d effffff995 tstl _prt_error
727 0001207F 21 03 13 00b0 jeql L317
728 00012084 # writes(" \n"); /* start new print line */
729 00012084 .data 1
730 00000ae2 * L318:
731 00000ae2 * 200A00 .ascii " \12\0"
732 00000ae5 * .text
733 00012084 dd 8f00000ae2 pushl $L318
734 0001208A fe 08 effffff983 callf $8,_writes
735 00012091 # writes("cycle: ");
736 00012091 .data 1
737 00000ae5 * L319:
738 00000ae5 * 6379636C653A2000 .ascii "cycle: \0"
739 00000aed * .text
740 00012091 dd 8f00000ae5 pushl $L319
741 00012097 fe 08 effffff976 callf $8,_writes
742 0001209E # writed( cycle );
743 0001209E dd effffff970 pushl _cycle
744 000120A4 fe 08 effffff969 callf $8,_writed
745 000120AB # writes(" TSTF test ");
746 000120AB .data 1
747 00000aed * L320:
748 00000aed * 2020545354462074657374200 .ascii " TSTF test \0"
0
749 00000afa * .text
750 000120AB dd 8f00000aed pushl $L320
751 000120B1 fe 08 effffff95c callf $8,_writes
752 000120B8 # writed( test_no );
753 000120B8 dd effffff956 pushl _test_no
754 000120BE fe 08 effffff94f callf $8,_writed
755 000120C5 # writes(
756 000120C5 # ", subtest 4 (Piped Entry) -BAD FINAL PSL\n");
757 000120C5 .data 1
758 00000afa * L321:
759 00000afa * 2C20737562746573742034202 .ascii ", subtest 4 (Piped Entry) -BAD FINAL PSL\12\0"
8506970656420456E74727929
202D4241442046494E414C205
0534C0A00
760 00000b24 * .text
761 000120C5 dd 8f00000afa pushl $L321
762 000120CB fe 08 effffff942 callf $8,_writes
763 000120D2 # print_tstf_data(); /* print operands */
764 000120D2 fe 04 ef000001d5 callf $4,_print_tstf_data
765 000120D9 # writes("initial PSL = ");
766 000120D9 .data 1
767 00000b24 * L322:
768 00000b24 * 696E697469616C2050534C203 .ascii "initial PSL = \0"
D2000
769 00000b33 * .text
770 000120D9 dd 8f00000b24 pushl $L322
771 000120DF fe 08 effffff92e callf $8,_writes
772 000120E6 # write32h( init_psl );
773 000120E6 dd effffff928 pushl _init_psl
774 000120EC fe 08 effffff921 callf $8,_write32h
775 000120F3 # writes(", final PSL = ");
776 000120F3 .data 1
777 00000b33 * L323:
778 00000b33 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
779 00000b43 * .text
780 000120F3 dd 8f00000b33 pushl $L323
781 000120F9 fe 08 effffff914 callf $8,_writes
782 00012100 # write32h( psl_val );
783 00012100 dd effffff90e pushl _psl_val
784 00012106 fe 08 effffff907 callf $8,_write32h
785 0001210D # writes(", expected PSL = ");
786 0001210D .data 1
787 00000b43 * L324:
788 00000b43 * 2C20657870656374656420505 .ascii ", expected PSL = \0"
34C203D2000
789 00000b55 * .text
790 0001210D dd 8f00000b43 pushl $L324
791 00012113 fe 08 effffff8fa callf $8,_writes
792 0001211A # write32h( exp_psl );
793 0001211A dd effffff8f4 pushl _exp_psl
794 00012120 fe 08 effffff8ed callf $8,_write32h
795 00012127 # writes("\n");
796 00012127 .data 1
797 00000b55 * L325:
798 00000b55 * 0A00 .ascii "\12\0"
799 00000b57 * .text
800 00012127 dd 8f00000b55 pushl $L325
801 0001212D fe 08 effffff8e0 callf $8,_writes
802 00012134 # }
803 00012134 # if( halt_flg )
804 00012134 L317:
805 00012134 5d effffff8da tstl _halt_flg
806 0001213A 31 09 jeql L326
807 0001213C # tstf_er_halt( BAD_PSL_HLT ); /* halt on error */
808 0001213C dd 03 pushl $3
809 0001213E fe 08 ef000001c7 callf $8,_tstf_er_halt
810 00012145 # if( loop_on_err ) {
811 00012145 L326:
812 00012145 5d effffff8c9 tstl _loop_on_err
813 0001214B 31 0a jeql L327
814 0001214D # force_loop = TRUE; /* set loop flag */
815 0001214D 0d 01 effffff8c0 movl $1,_force_loop
816 00012154 # asm("brw _tstf_4_lp1"); /* loop on error */
817 00012154 13 feaa brw _tstf_4_lp1
818 00012157 # } /* end of loop on error */
819 00012157 # } /* end of PSL corruption error */
820 00012157 L327:
821 00012157 # } /* end of status WHILE loop */
822 00012157 L316:
823 00012157 L310:
824 00012157 6d effffff8b7 incl _status_index
825 0001215D 13 fe82 jbr L312
826 00012160 L311:
827 00012160 # } /* end of data WHILE loop */
828 00012160 L307:
829 00012160 6d effffff8ae incl _index
830 00012166 13 fe37 jbr L309
831 00012169 L308:
832 00012169 # } /* end of subtest 4 */
833 00012169 40 ret#2
834 0001216A .set L303,0x0
835 0001216A L305:
836 0001216A 13 fe20 jbr L306
837 0001216D .data
838 000009a4 * .text
839 0001216D 00 .align 1
840 0001216E .globl _tstf_5
841 0001216E _tstf_5:
842 0001216E 0000 .word L328
843 00012170 #
844 00012170 #
845 00012170 #
846 00012170 # /************************************************************************
847 00012170 # *
848 00012170 # * SUBTEST 5 - pipelined exit test
849 00012170 # *
850 00012170 # ************************************************************************/
851 00012170 # tstf_5()
852 00012170 # {
853 00012170 13 0138 jbr L330
854 00012173 L331:
855 00012173 # force_loop = FALSE;
856 00012173 4d effffff89b clrl _force_loop
857 00012179 # subtest = 5;
858 00012179 0d 05 effffff894 movl $5,_subtest
859 00012180 # for( index = 0; index < max_tstf_1_index; index++ ) {
860 00012180 4d effffff88e clrl _index
861 00012186 L334:
862 00012186 1d effffff888 effffff883 cmpl _index,_max_tstf_1_index
863 00012191 91 03 13 0114 jgeq L333
864 00012196 # sgl_ld_acc = tstf_1_data[index].ld; /* get value to test */
865 00012196 0d effffff878 50 movl _index,r0
866 0001219D 48 03 50 50 shll $3,r0,r0
867 000121A1 0d e000000000 effffff868 movl _tstf_1_data(r0),_sgl_ld_acc
868 000121AC # if( sgl_ld_acc & 0x7f800000 )
869 000121AC 3d 8f7f800000 effffff85d bitl $2139095040,_sgl_ld_acc
870 000121B7 31 0d jeql L335
871 000121B9 # sgl_expected = sgl_ld_acc; /* the Acc should not change */
872 000121B9 0d effffff855 effffff850 movl _sgl_ld_acc,_sgl_expected
873 000121C4 # else
874 000121C4 11 06 jbr L336
875 000121C6 L335:
876 000121C6 # sgl_expected = 0; /* expect a '0' final Acc */
877 000121C6 4d effffff848 clrl _sgl_expected
878 000121CC L336:
879 000121CC # /*
880 000121CC # * If LOOP ON ERROR is set, this is the loop for this subtest.
881 000121CC # * The force loop flag is set after the first error.
882 000121CC # */
883 000121CC # asm("_tstf_5_lp1:");
884 000121CC _tstf_5_lp1:
885 000121CC # asm("movl $0,r0"); /* clear r0 */
886 000121CC 0d 00 50 movl $0,r0
887 000121CF # asm("ldf _sgl_ld_acc"); /* load the value */
888 000121CF 06 effffff83f ldf _sgl_ld_acc
889 000121D5 # asm("tstf"); /* test the accumulator */
890 000121D5 56 tstf
891 000121D6 # asm("addf r0"); /* add a zero */
892 000121D6 c6 50 addf r0
893 000121D8 # asm("stf _sgl_st_acc"); /* store the result */
894 000121D8 26 effffff836 stf _sgl_st_acc
895 000121DE # if( force_loop )
896 000121DE 5d effffff830 tstl _force_loop
897 000121E4 31 02 jeql L337
898 000121E6 # asm("brb _tstf_5_lp1");; /* loop on the error */
899 000121E6 11 e4 brb _tstf_5_lp1
900 000121E8 L337:
901 000121E8 # /*
902 000121E8 # * end error loop - test the results
903 000121E8 # */
904 000121E8 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
905 000121E8 1d effffff826 effffff821 cmpl _sgl_st_acc,_sgl_expected
906 000121F3 21 03 13 00a9 jeql L338
907 000121F8 # errcnt++; /* bump the error count */
908 000121F8 6d effffff816 incl _errcnt
909 000121FE # if( prt_error ) {
910 000121FE 5d effffff810 tstl _prt_error
911 00012204 31 78 jeql L339
912 00012206 # writes(" \n"); /* start a new print line */
913 00012206 .data 1
914 00000b57 * L340:
915 00000b57 * 200A00 .ascii " \12\0"
916 00000b5a * .text
917 00012206 dd 8f00000b57 pushl $L340
918 0001220C fe 08 effffff801 callf $8,_writes
919 00012213 # writes("cycle: ");
920 00012213 .data 1
921 00000b5a * L341:
922 00000b5a * 6379636C653A2000 .ascii "cycle: \0"
923 00000b62 * .text
924 00012213 dd 8f00000b5a pushl $L341
925 00012219 fe 08 effffff7f4 callf $8,_writes
926 00012220 # writed( cycle );
927 00012220 dd effffff7ee pushl _cycle
928 00012226 fe 08 effffff7e7 callf $8,_writed
929 0001222D # writes(" TSTF test ");
930 0001222D .data 1
931 00000b62 * L342:
932 00000b62 * 2020545354462074657374200 .ascii " TSTF test \0"
0
933 00000b6f * .text
934 0001222D dd 8f00000b62 pushl $L342
935 00012233 fe 08 effffff7da callf $8,_writes
936 0001223A # writed( test_no );
937 0001223A dd effffff7d4 pushl _test_no
938 00012240 fe 08 effffff7cd callf $8,_writed
939 00012247 # writes(
940 00012247 # ", subtest 5 (Piped Exit) - BAD FINAL ACC\n");
941 00012247 .data 1
942 00000b6f * L343:
943 00000b6f * 2C20737562746573742035202 .ascii ", subtest 5 (Piped Exit) - BAD FINAL ACC\12\0"
8506970656420457869742920
2D204241442046494E414C204
143430A00
944 00000b99 * .text
945 00012247 dd 8f00000b6f pushl $L343
946 0001224D fe 08 effffff7c0 callf $8,_writes
947 00012254 # print_tstf_data();
948 00012254 fe 04 ef00000053 callf $4,_print_tstf_data
949 0001225B # writes(" expected Acc = ");
950 0001225B .data 1
951 00000b99 * L344:
952 00000b99 * 2020202020202020202020202 .ascii " expected Acc = \0"
0202020202020202020657870
656374656420416363203D200
0
953 00000bbf * .text
954 0001225B dd 8f00000b99 pushl $L344
955 00012261 fe 08 effffff7ac callf $8,_writes
956 00012268 # write32h( sgl_expected );
957 00012268 dd effffff7a6 pushl _sgl_expected
958 0001226E fe 08 effffff79f callf $8,_write32h
959 00012275 # writec('\n');
960 00012275 dd 0a pushl $10
961 00012277 fe 08 effffff796 callf $8,_writec
962 0001227E # }
963 0001227E # if( halt_flg )
964 0001227E L339:
965 0001227E 5d effffff790 tstl _halt_flg
966 00012284 31 09 jeql L346
967 00012286 # tstf_er_halt( BAD_ACC_HLT ); /* halt on the error */
968 00012286 dd 01 pushl $1
969 00012288 fe 08 ef0000007d callf $8,_tstf_er_halt
970 0001228F # if( loop_on_err ) {
971 0001228F L346:
972 0001228F 5d effffff77f tstl _loop_on_err
973 00012295 31 0a jeql L347
974 00012297 # force_loop = TRUE; /* set the force loop flag */
975 00012297 0d 01 effffff776 movl $1,_force_loop
976 0001229E # asm("brw _tstf_5_lp1"); /* and loop on the error */
977 0001229E 13 ff2b brw _tstf_5_lp1
978 000122A1 # } /* end of loop on error */
979 000122A1 # } /* end of compare error */
980 000122A1 L347:
981 000122A1 # } /* end of WHILE loop */
982 000122A1 L338:
983 000122A1 L332:
984 000122A1 6d effffff76d incl _index
985 000122A7 13 fedc jbr L334
986 000122AA L333:
987 000122AA # } /* end of subtest 5 */
988 000122AA 40 ret#2
989 000122AB .set L328,0x0
990 000122AB L330:
991 000122AB 13 fec5 jbr L331
992 000122AE .data
993 000009a4 * .text
994 000122AE .align 1
995 000122AE .globl _print_tstf_data
996 000122AE _print_tstf_data:
997 000122AE 0000 .word L348
998 000122B0 #
999 000122B0 #
1000 000122B0 #
1001 000122B0 # /**************************************************************************
1002 000122B0 # *
1003 000122B0 # * PRINT THE DATA AND STORE RESULTS
1004 000122B0 # *
1005 000122B0 # * initial Acc = xxxxxxxx, final Acc = xxxxxxxx, data index = xx
1006 000122B0 # **************************************************************************/
1007 000122B0 # print_tstf_data()
1008 000122B0 # {
1009 000122B0 11 58 jbr L350
1010 000122B2 L351:
1011 000122B2 # writes("initial Acc = ");
1012 000122B2 .data 1
1013 00000bbf * L352:
1014 00000bbf * 696E697469616C20416363203 .ascii "initial Acc = \0"
D2000
1015 00000bce * .text
1016 000122B2 dd 8f00000bbf pushl $L352
1017 000122B8 fe 08 effffff755 callf $8,_writes
1018 000122BF # write32h( sgl_ld_acc );
1019 000122BF dd effffff74f pushl _sgl_ld_acc
1020 000122C5 fe 08 effffff748 callf $8,_write32h
1021 000122CC # writes(", final Acc = ");
1022 000122CC .data 1
1023 00000bce * L353:
1024 00000bce * 2C202066696E616C204163632 .ascii ", final Acc = \0"
03D2000
1025 00000bde * .text
1026 000122CC dd 8f00000bce pushl $L353
1027 000122D2 fe 08 effffff73b callf $8,_writes
1028 000122D9 # write32h( sgl_st_acc );
1029 000122D9 dd effffff735 pushl _sgl_st_acc
1030 000122DF fe 08 effffff72e callf $8,_write32h
1031 000122E6 # writes(", data index = ");
1032 000122E6 .data 1
1033 00000bde * L354:
1034 00000bde * 2C2020206461746120696E646 .ascii ", data index = \0"
578203D2000
1035 00000bf0 * .text
1036 000122E6 dd 8f00000bde pushl $L354
1037 000122EC fe 08 effffff721 callf $8,_writes
1038 000122F3 # writed( index );
1039 000122F3 dd effffff71b pushl _index
1040 000122F9 fe 08 effffff714 callf $8,_writed
1041 00012300 # writec('\n');
1042 00012300 dd 0a pushl $10
1043 00012302 fe 08 effffff70b callf $8,_writec
1044 00012309 # }
1045 00012309 40 ret#2
1046 0001230A .set L348,0x0
1047 0001230A L350:
1048 0001230A 11 a6 jbr L351
1049 0001230C .data
1050 000009a4 * .text
1051 0001230C .align 1
1052 0001230C .globl _tstf_er_halt
1053 0001230C _tstf_er_halt:
1054 0001230C 0000 .word L355
1055 0001230E #
1056 0001230E #
1057 0001230E #
1058 0001230E # /**************************************************************************
1059 0001230E # *
1060 0001230E # * HALT ON ERROR ROUTINE
1061 0001230E # *
1062 0001230E # **************************************************************************/
1063 0001230E # tstf_er_halt( halt_code )
1064 0001230E # int halt_code;
1065 0001230E # {
1066 0001230E 13 00a1 jbr L357
1067 00012311 L358:
1068 00012311 # sgl_dummy1 = halt_code; /* get the error type */
1069 00012311 0d ad04 effffff6fb movl 4(fp),_sgl_dummy1
1070 00012319 # asm("movl _test_no,r0"); /* r0 = test number */
1071 00012319 0d effffff6f5 50 movl _test_no,r0
1072 00012320 # asm("movl _subtest,r1"); /* r1 = subtest number */
1073 00012320 0d effffff6ee 51 movl _subtest,r1
1074 00012327 # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1075 00012327 0d effffff6e7 52 movl _sgl_dummy1,r2
1076 0001232E # asm("movl _cycle,r3"); /* r3 = cycle count */
1077 0001232E 0d effffff6e0 53 movl _cycle,r3
1078 00012335 # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */
1079 00012335 0d effffff6d9 54 movl _sgl_ld_acc,r4
1080 0001233C # asm("movl _psl_val,r5"); /* r5 = final PSL */
1081 0001233C 0d effffff6d2 55 movl _psl_val,r5
1082 00012343 # if( halt_code == BAD_ACC_HLT ) {
1083 00012343 1d ad04 01 cmpl 4(fp),$1
1084 00012347 21 10 jneq L359
1085 00012349 # asm("movl _sgl_st_acc,r6"); /* r6 = actual value */
1086 00012349 0d effffff6c5 56 movl _sgl_st_acc,r6
1087 00012350 # asm("movl _sgl_expected,r7"); /* r7 = expected value */
1088 00012350 0d effffff6be 57 movl _sgl_expected,r7
1089 00012357 # } else
1090 00012357 11 57 jbr L360
1091 00012359 L359:
1092 00012359 # if( halt_code == BAD_REG_HLT ) {
1093 00012359 1d ad04 02 cmpl 4(fp),$2
1094 0001235D 21 3d jneq L361
1095 0001235F # sgl_dummy1 = load_regs[index2];
1096 0001235F 0d effffff6af 50 movl _index2,r0
1097 00012366 0d 40effffff6a7 movl _load_regs[r0],_sgl_dummy1
effffff6a2
1098 00012372 # sgl_dummy2 = store_regs[index2];
1099 00012372 0d effffff69c 50 movl _index2,r0
1100 00012379 0d 40effffff694 movl _store_regs[r0],_sgl_dummy2
effffff68f
1101 00012385 # asm("movl _index2,r6"); /* r6 = bad register # */
1102 00012385 0d effffff689 56 movl _index2,r6
1103 0001238C # asm("movl _sgl_dummy2,r7"); /* r7 = actual value */
1104 0001238C 0d effffff682 57 movl _sgl_dummy2,r7
1105 00012393 # asm("movl _sgl_dummy1,r8"); /* r8 = expected value */
1106 00012393 0d effffff67b 58 movl _sgl_dummy1,r8
1107 0001239A # } else
1108 0001239A 11 14 jbr L362
1109 0001239C L361:
1110 0001239C # if( halt_code == BAD_PSL_HLT ) {
1111 0001239C 1d ad04 03 cmpl 4(fp),$3
1112 000123A0 21 0e jneq L363
1113 000123A2 # asm("movl _exp_psl,r6"); /* r6 = expected PSL */
1114 000123A2 0d effffff66c 56 movl _exp_psl,r6
1115 000123A9 # asm("movl _index,r7"); /* r7 = data index */
1116 000123A9 0d effffff665 57 movl _index,r7
1117 000123B0 # };
1118 000123B0 L363:
1119 000123B0 L362:
1120 000123B0 L360:
1121 000123B0 # asm("halt"); /* HALT ... */
1122 000123B0 00 halt
1123 000123B1 # }
1124 000123B1 40 ret#2
1125 000123B2 .set L355,0x0
1126 000123B2 L357:
1127 000123B2 13 ff5c jbr L358
1128 000123B5 .data
1128 00023DC9 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.