|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 00001398 * .text
4 00000000 .align 1
5 00000000 .globl _cmpd2
6 00000000 _cmpd2:
7 0001BDF0 0000 .word L215
8 0001BDF2 # #include "fpp_defs.h"
9 0001BDF2 #
10 0001BDF2 #
11 0001BDF2 #
12 0001BDF2 # /***************************************************************************
13 0001BDF2 # *
14 0001BDF2 # * CMPD2 -COMPARE 2 DBL OPERANDS TO EACH OTHER -IGNORE THE ACCUMULATOR
15 0001BDF2 # *
16 0001BDF2 # *****************************************************************************/
17 0001BDF2 # cmpd2()
18 0001BDF2 # {
19 0001BDF2 11 4f jbr L217
20 0001BDF4 L218:
21 0001BDF4 # asm(".globl _cmpd2_t");
22 0001BDF4 .globl _cmpd2_t
23 0001BDF4 # asm("_cmpd2_t:"); /* entry address */
24 0001BDF4 _cmpd2_t:
25 0001BDF4 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
26 0001BDF4 1d effffffff6 01 cmpl _cycle,$1
27 0001BDFB 21 15 jneq L219
28 0001BDFD 5d efffffffed tstl _prt_hdrs
29 0001BE03 31 0d jeql L219
30 0001BE05 # writes(" CMPD2");
31 0001BE05 .data 1
32 00001398 * L221:
33 00001398 * 20434D50443200 .ascii " CMPD2\0"
34 0000139f * .text
35 0001BE05 dd 8f00001398 pushl $L221
36 0001BE0B fe 08 efffffffde callf $8,_writes
37 0001BE12 # cmpd2_1(); /* register / register data */
38 0001BE12 L219:
39 0001BE12 fe 04 ef0000002d callf $4,_cmpd2_1
40 0001BE19 # cmpd2_2(); /* cache / cache data */
41 0001BE19 fe 04 ef00000342 callf $4,_cmpd2_2
42 0001BE20 # cmpd2_3(); /* cache / register data */
43 0001BE20 fe 04 ef00000645 callf $4,_cmpd2_3
44 0001BE27 # cmpd2_4(); /* register / cache data */
45 0001BE27 fe 04 ef00000952 callf $4,_cmpd2_4
46 0001BE2E # cmpd2_5(); /* acc. corruption test */
47 0001BE2E fe 04 ef00000c61 callf $4,_cmpd2_5
48 0001BE35 # cmpd2_6(); /* register corruption test */
49 0001BE35 fe 04 ef00000ef8 callf $4,_cmpd2_6
50 0001BE3C # asm("jmp *return"); /* return to the test monitor */
51 0001BE3C 71 ffffffffae jmp *return
52 0001BE42 # }
53 0001BE42 40 ret#2
54 0001BE43 .set L215,0x0
55 0001BE43 L217:
56 0001BE43 11 af jbr L218
57 0001BE45 .data
58 00001398 * .text
59 0001BE45 00 .align 1
60 0001BE46 .globl _cmpd2_1
61 0001BE46 _cmpd2_1:
62 0001BE46 0000 .word L228
63 0001BE48 #
64 0001BE48 #
65 0001BE48 #
66 0001BE48 # /****************************************************************************
67 0001BE48 # *
68 0001BE48 # * SUBTEST 1 - CMPD2 test -register / register data
69 0001BE48 # *
70 0001BE48 # ****************************************************************************/
71 0001BE48 # cmpd2_1()
72 0001BE48 # {
73 0001BE48 13 0314 jbr L230
74 0001BE4B L231:
75 0001BE4B # force_loop = FALSE;
76 0001BE4B 4d efffffff9f clrl _force_loop
77 0001BE51 # subtest = 1;
78 0001BE51 0d 01 efffffff98 movl $1,_subtest
79 0001BE58 # index = 0;
80 0001BE58 4d efffffff92 clrl _index
81 0001BE5E # do
82 0001BE5E L234:
83 0001BE5E # {
84 0001BE5E # dbl_value_1 = cmpd_1_data[index].one; /* get the data operands */
85 0001BE5E 5c 14 efffffff8b 50 mull3 $20,_index,r0
86 0001BE66 0c 8f00000000 50 addl2 $_cmpd_1_data,r0
87 0001BE6D 0d a004 efffffff7f movl 4(r0),_dbl_value_1+4
88 0001BE75 0d 60 efffffff74 movl (r0),_dbl_value_1
89 0001BE7C # dbl_value_2 = cmpd_1_data[index].two;
90 0001BE7C 5c 14 efffffff6d 50 mull3 $20,_index,r0
91 0001BE84 0c 8f00000008 50 addl2 $_cmpd_1_data+8,r0
92 0001BE8B 0d a004 efffffff61 movl 4(r0),_dbl_value_2+4
93 0001BE93 0d 60 efffffff56 movl (r0),_dbl_value_2
94 0001BE9A # sgl_expected = cmpd_1_data[index].flag; /* get expected results */
95 0001BE9A 5c 14 efffffff4f 50 mull3 $20,_index,r0
96 0001BEA2 0d e000000010 efffffff43 movl _cmpd_1_data+16(r0),_sgl_expected
97 0001BEAD # sgl_value_1 = dbl_value_1.m;
98 0001BEAD 0d efffffff3d efffffff38 movl _dbl_value_1,_sgl_value_1
99 0001BEB8 # sgl_value_2 = dbl_value_1.l;
100 0001BEB8 0d efffffff36 efffffff2d movl _dbl_value_1+4,_sgl_value_2
101 0001BEC3 # sgl_value_3 = dbl_value_2.m;
102 0001BEC3 0d efffffff27 efffffff22 movl _dbl_value_2,_sgl_value_3
103 0001BECE # sgl_value_4 = dbl_value_2.l;
104 0001BECE 0d efffffff20 efffffff17 movl _dbl_value_2+4,_sgl_value_4
105 0001BED9 # index2 = 0; /* clear Acc. data index */
106 0001BED9 4d efffffff11 clrl _index2
107 0001BEDF # do
108 0001BEDF L237:
109 0001BEDF # {
110 0001BEDF # dbl_ld_acc = ldd_1_data[index2].ld; /* get the Accumulator data */
111 0001BEDF 48 04 efffffff0a 50 shll $4,_index2,r0
112 0001BEE7 0c 8f00000000 50 addl2 $_ldd_1_data,r0
113 0001BEEE 0d a004 effffffefe movl 4(r0),_dbl_ld_acc+4
114 0001BEF6 0d 60 effffffef3 movl (r0),_dbl_ld_acc
115 0001BEFD # asm("ldd _dbl_ld_acc"); /* load the accumulator */
116 0001BEFD 07 effffffeed ldd _dbl_ld_acc
117 0001BF03 # status_index = 0; /* clear the status index */
118 0001BF03 4d effffffee7 clrl _status_index
119 0001BF09 # do
120 0001BF09 L240:
121 0001BF09 # {
122 0001BF09 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */
123 0001BF09 0d effffffee1 50 movl _status_index,r0
124 0001BF10 0d 40effffffed9 movl _status_array[r0],_sgl_dummy1
effffffed4
125 0001BF1C # /*
126 0001BF1C # * If LOOP ON ERROR is set, this is the loop for this subtest.
127 0001BF1C # * The force loop flag is set after the first error.
128 0001BF1C # */
129 0001BF1C # asm("_cmpd2_1_lp1:");
130 0001BF1C _cmpd2_1_lp1:
131 0001BF1C # asm("movl _sgl_value_1,r4"); /* r4 = operand #1's MSW */
132 0001BF1C 0d effffffece 54 movl _sgl_value_1,r4
133 0001BF23 # asm("movl _sgl_value_2,r5"); /* r5 = operand #1's LSW */
134 0001BF23 0d effffffec7 55 movl _sgl_value_2,r5
135 0001BF2A # asm("movl _sgl_value_3,r6"); /* r6 = operand #2's MSW */
136 0001BF2A 0d effffffec0 56 movl _sgl_value_3,r6
137 0001BF31 # asm("movl _sgl_value_4,r7"); /* r7 = operand #2's LSW */
138 0001BF31 0d effffffeb9 57 movl _sgl_value_4,r7
139 0001BF38 # asm("nop");
140 0001BF38 10 nop
141 0001BF39 # asm("tstl _sgl_dummy1"); /* generate initial status */
142 0001BF39 5d effffffeb1 tstl _sgl_dummy1
143 0001BF3F # asm("movpsl _init_psl"); /* save the initial status */
144 0001BF3F cd effffffeab movpsl _init_psl
145 0001BF45 # asm("cmpd2 r4,r6"); /* compare the operands */
146 0001BF45 47 54 56 cmpd2 r4,r6
147 0001BF48 # asm("movpsl _psl_val"); /* save the final status */
148 0001BF48 cd effffffea2 movpsl _psl_val
149 0001BF4E # asm("std _dbl_st_acc"); /* save the acc */
150 0001BF4E 27 effffffe9c std _dbl_st_acc
151 0001BF54 # if( force_loop ) /* loop? */
152 0001BF54 5d effffffe96 tstl _force_loop
153 0001BF5A 31 02 jeql L241
154 0001BF5C # asm("brb _cmpd2_1_lp1");; /* run the loop again */
155 0001BF5C 11 be brb _cmpd2_1_lp1
156 0001BF5E L241:
157 0001BF5E # exp_psl = init_psl; /* get the initial PSL */
158 0001BF5E 0d effffffe8c effffffe87 movl _init_psl,_exp_psl
159 0001BF69 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
160 0001BF69 ac 88f3 effffffe7f andl2 $-13,_exp_psl
161 0001BF71 # if( sgl_expected == ZERO )
162 0001BF71 1d effffffe79 04 cmpl _sgl_expected,$4
163 0001BF78 21 07 jneq L242
164 0001BF7A # exp_psl |= PSL_Z; /* expect the ZERO bit set */
165 0001BF7A 8c 04 effffffe6f orl2 $4,_exp_psl
166 0001BF81 # if( sgl_expected == NEGATIVE )
167 0001BF81 L242:
168 0001BF81 1d effffffe69 08 cmpl _sgl_expected,$8
169 0001BF88 21 07 jneq L243
170 0001BF8A # exp_psl |= PSL_N; /* expect the NEG bit set */
171 0001BF8A 8c 08 effffffe5f orl2 $8,_exp_psl
172 0001BF91 # if( psl_val != exp_psl ) { /* COMPARE the values */
173 0001BF91 L243:
174 0001BF91 1d effffffe59 effffffe54 cmpl _psl_val,_exp_psl
175 0001BF9C 21 03 13 0170 jeql L244
176 0001BFA1 # errcnt++; /* bump the error count */
177 0001BFA1 6d effffffe49 incl _errcnt
178 0001BFA7 # if ( prt_error ) {
179 0001BFA7 5d effffffe43 tstl _prt_error
180 0001BFAD 21 03 13 013c jeql L245
181 0001BFB2 # writes(" \n"); /* start a new print line */
182 0001BFB2 .data 1
183 0000139f * L246:
184 0000139f * 200A00 .ascii " \12\0"
185 000013a2 * .text
186 0001BFB2 dd 8f0000139f pushl $L246
187 0001BFB8 fe 08 effffffe31 callf $8,_writes
188 0001BFBF # writes("cycle: ");
189 0001BFBF .data 1
190 000013a2 * L247:
191 000013a2 * 6379636C653A2000 .ascii "cycle: \0"
192 000013aa * .text
193 0001BFBF dd 8f000013a2 pushl $L247
194 0001BFC5 fe 08 effffffe24 callf $8,_writes
195 0001BFCC # writed( cycle );
196 0001BFCC dd effffffe1e pushl _cycle
197 0001BFD2 fe 08 effffffe17 callf $8,_writed
198 0001BFD9 # writes(" CMPD2 test ");
199 0001BFD9 .data 1
200 000013aa * L249:
201 000013aa * 2020434D50443220746573742 .ascii " CMPD2 test \0"
000
202 000013b8 * .text
203 0001BFD9 dd 8f000013aa pushl $L249
204 0001BFDF fe 08 effffffe0a callf $8,_writes
205 0001BFE6 # writed( test_no );
206 0001BFE6 dd effffffe04 pushl _test_no
207 0001BFEC fe 08 effffffdfd callf $8,_writed
208 0001BFF3 # writes(", subtest 1 (Reg./Reg. Data) - BAD FINAL PSL\n");
209 0001BFF3 .data 1
210 000013b8 * L250:
211 000013b8 * 2C20737562746573742031202 .ascii ", subtest 1 (Reg./Reg. Data) - BAD FINAL PSL\12\0"
85265672E2F5265672E204461
746129202D204241442046494
E414C2050534C0A00
212 000013e6 * .text
213 0001BFF3 dd 8f000013b8 pushl $L250
214 0001BFF9 fe 08 effffffdf0 callf $8,_writes
215 0001C000 # print_cmpd2_data();
216 0001C000 fe 04 ef00000fcf callf $4,_print_cmpd2_data
217 0001C007 # writes(", index = ");
218 0001C007 .data 1
219 000013e6 * L252:
220 000013e6 * 2C202020696E646578203D200 .ascii ", index = \0"
0
221 000013f3 * .text
222 0001C007 dd 8f000013e6 pushl $L252
223 0001C00D fe 08 effffffddc callf $8,_writes
224 0001C014 # writed( index );
225 0001C014 dd effffffdd6 pushl _index
226 0001C01A fe 08 effffffdcf callf $8,_writed
227 0001C021 # writec('\n');
228 0001C021 dd 0a pushl $10
229 0001C023 fe 08 effffffdc6 callf $8,_writec
230 0001C02A # writes(" final Acc = ");
231 0001C02A .data 1
232 000013f3 * L254:
233 000013f3 * 20202066696E616C204163632 .ascii " final Acc = \0"
03D2000
234 00001403 * .text
235 0001C02A dd 8f000013f3 pushl $L254
236 0001C030 fe 08 effffffdb9 callf $8,_writes
237 0001C037 # write32h( dbl_st_acc.m );
238 0001C037 dd effffffdb3 pushl _dbl_st_acc
239 0001C03D fe 08 effffffdac callf $8,_write32h
240 0001C044 # writec(' ');
241 0001C044 dd 20 pushl $32
242 0001C046 fe 08 effffffda3 callf $8,_writec
243 0001C04D # write32h( dbl_st_acc.l );
244 0001C04D dd effffffda1 pushl _dbl_st_acc+4
245 0001C053 fe 08 effffffd96 callf $8,_write32h
246 0001C05A # writes(", operand 2 = ");
247 0001C05A .data 1
248 00001403 * L256:
249 00001403 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0"
03D2000
250 00001413 * .text
251 0001C05A dd 8f00001403 pushl $L256
252 0001C060 fe 08 effffffd89 callf $8,_writes
253 0001C067 # write32h( sgl_value_3);
254 0001C067 dd effffffd83 pushl _sgl_value_3
255 0001C06D fe 08 effffffd7c callf $8,_write32h
256 0001C074 # writec(' ');
257 0001C074 dd 20 pushl $32
258 0001C076 fe 08 effffffd73 callf $8,_writec
259 0001C07D # write32h( sgl_value_4);
260 0001C07D dd effffffd6d pushl _sgl_value_4
261 0001C083 fe 08 effffffd66 callf $8,_write32h
262 0001C08A # writec('\n');
263 0001C08A dd 0a pushl $10
264 0001C08C fe 08 effffffd5d callf $8,_writec
265 0001C093 # writes(" initial PSL = ");
266 0001C093 .data 1
267 00001413 * L257:
268 00001413 * 2020696E697469616C2050534 .ascii " initial PSL = \0"
C203D2000
269 00001424 * .text
270 0001C093 dd 8f00001413 pushl $L257
271 0001C099 fe 08 effffffd50 callf $8,_writes
272 0001C0A0 # write32h( init_psl );
273 0001C0A0 dd effffffd4a pushl _init_psl
274 0001C0A6 fe 08 effffffd43 callf $8,_write32h
275 0001C0AD # writes(", final PSL = ");
276 0001C0AD .data 1
277 00001424 * L258:
278 00001424 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
279 00001434 * .text
280 0001C0AD dd 8f00001424 pushl $L258
281 0001C0B3 fe 08 effffffd36 callf $8,_writes
282 0001C0BA # write32h( psl_val );
283 0001C0BA dd effffffd30 pushl _psl_val
284 0001C0C0 fe 08 effffffd29 callf $8,_write32h
285 0001C0C7 # writes(", expected PSL = ");
286 0001C0C7 .data 1
287 00001434 * L259:
288 00001434 * 2C20206578706563746564205 .ascii ", expected PSL = \0"
0534C203D2000
289 00001447 * .text
290 0001C0C7 dd 8f00001434 pushl $L259
291 0001C0CD fe 08 effffffd1c callf $8,_writes
292 0001C0D4 # write32h( exp_psl );
293 0001C0D4 dd effffffd16 pushl _exp_psl
294 0001C0DA fe 08 effffffd0f callf $8,_write32h
295 0001C0E1 # writes(" \n");
296 0001C0E1 .data 1
297 00001447 * L260:
298 00001447 * 200A00 .ascii " \12\0"
299 0000144a * .text
300 0001C0E1 dd 8f00001447 pushl $L260
301 0001C0E7 fe 08 effffffd02 callf $8,_writes
302 0001C0EE # }
303 0001C0EE # if ( halt_flg )
304 0001C0EE L245:
305 0001C0EE 5d effffffcfc tstl _halt_flg
306 0001C0F4 31 09 jeql L261
307 0001C0F6 # cmpd2_er_halt( BAD_PSL_HLT ); /* halt on the error */
308 0001C0F6 dd 03 pushl $3
309 0001C0F8 fe 08 ef00000f3f callf $8,_cmpd2_er_halt
310 0001C0FF # if ( loop_on_err ) {
311 0001C0FF L261:
312 0001C0FF 5d effffffceb tstl _loop_on_err
313 0001C105 31 0a jeql L263
314 0001C107 # force_loop = TRUE; /* set the force loop flag */
315 0001C107 0d 01 effffffce2 movl $1,_force_loop
316 0001C10E # asm("brw _cmpd2_1_lp1"); /* and loop */
317 0001C10E 13 fe0b brw _cmpd2_1_lp1
318 0001C111 # }; /* end of loop-on-error */
319 0001C111 L263:
320 0001C111 # } /* end of compare error */
321 0001C111 # } while( ++status_index < 3 );
322 0001C111 L244:
323 0001C111 L239:
324 0001C111 6d effffffcd9 incl _status_index
325 0001C117 0d effffffcd3 50 movl _status_index,r0
326 0001C11E 1d 50 03 cmpl r0,$3
327 0001C121 81 03 13 fde3 jlss L240
328 0001C126 L238:
329 0001C126 # index2++;
330 0001C126 6d effffffcc4 incl _index2
331 0001C12C # } while( (index2 < 10) && (index2 < max_ldf_1_index) );
332 0001C12C L236:
333 0001C12C 1d effffffcbe 0a cmpl _index2,$10
334 0001C133 81 10 jgeq L9999
335 0001C135 1d effffffcb5 effffffcb0 cmpl _index2,_max_ldf_1_index
336 0001C140 81 03 13 fd9a jlss L237
337 0001C145 L9999:
338 0001C145 L235:
339 0001C145 # } while( index++ < max_cmpd_1_index );
340 0001C145 L233:
341 0001C145 0d effffffca5 50 movl _index,r0
342 0001C14C 6d effffffc9e incl _index
343 0001C152 1d 50 effffffc97 cmpl r0,_max_cmpd_1_index
344 0001C159 81 03 13 fd00 jlss L234
345 0001C15E L232:
346 0001C15E # } /* end of subtest 1 */
347 0001C15E 40 ret#2
348 0001C15F .set L228,0x0
349 0001C15F L230:
350 0001C15F 13 fce9 jbr L231
351 0001C162 .data
352 00001398 * .text
353 0001C162 .align 1
354 0001C162 .globl _cmpd2_2
355 0001C162 _cmpd2_2:
356 0001C162 0000 .word L264
357 0001C164 #
358 0001C164 #
359 0001C164 #
360 0001C164 # /****************************************************************************
361 0001C164 # *
362 0001C164 # * SUBTEST 2 - CMPD2 test - cache / cache data
363 0001C164 # *
364 0001C164 # ****************************************************************************/
365 0001C164 # cmpd2_2()
366 0001C164 # {
367 0001C164 13 0301 jbr L266
368 0001C167 L267:
369 0001C167 # force_loop = FALSE;
370 0001C167 4d effffffc83 clrl _force_loop
371 0001C16D # subtest = 2;
372 0001C16D 0d 02 effffffc7c movl $2,_subtest
373 0001C174 # index = 0;
374 0001C174 4d effffffc76 clrl _index
375 0001C17A # do
376 0001C17A L270:
377 0001C17A # {
378 0001C17A # dbl_value_1 = cmpd_1_data[index].one; /* get the data operands */
379 0001C17A 5c 14 effffffc6f 50 mull3 $20,_index,r0
380 0001C182 0c 8f00000000 50 addl2 $_cmpd_1_data,r0
381 0001C189 0d a004 effffffc63 movl 4(r0),_dbl_value_1+4
382 0001C191 0d 60 effffffc58 movl (r0),_dbl_value_1
383 0001C198 # dbl_value_2 = cmpd_1_data[index].two;
384 0001C198 5c 14 effffffc51 50 mull3 $20,_index,r0
385 0001C1A0 0c 8f00000008 50 addl2 $_cmpd_1_data+8,r0
386 0001C1A7 0d a004 effffffc45 movl 4(r0),_dbl_value_2+4
387 0001C1AF 0d 60 effffffc3a movl (r0),_dbl_value_2
388 0001C1B6 # sgl_value_1 = dbl_value_1.m;
389 0001C1B6 0d effffffc34 effffffc2f movl _dbl_value_1,_sgl_value_1
390 0001C1C1 # sgl_value_2 = dbl_value_1.l;
391 0001C1C1 0d effffffc2d effffffc24 movl _dbl_value_1+4,_sgl_value_2
392 0001C1CC # sgl_value_3 = dbl_value_2.m;
393 0001C1CC 0d effffffc1e effffffc19 movl _dbl_value_2,_sgl_value_3
394 0001C1D7 # sgl_value_4 = dbl_value_2.l;
395 0001C1D7 0d effffffc17 effffffc0e movl _dbl_value_2+4,_sgl_value_4
396 0001C1E2 # sgl_expected = cmpd_1_data[index].flag; /* get expected results */
397 0001C1E2 5c 14 effffffc07 50 mull3 $20,_index,r0
398 0001C1EA 0d e000000010 effffffbfb movl _cmpd_1_data+16(r0),_sgl_expected
399 0001C1F5 # index2 = 0; /* clear Acc. data index */
400 0001C1F5 4d effffffbf5 clrl _index2
401 0001C1FB # do
402 0001C1FB L273:
403 0001C1FB # {
404 0001C1FB # dbl_ld_acc = ldd_1_data[index2].ld; /* get the Accumulator data */
405 0001C1FB 48 04 effffffbee 50 shll $4,_index2,r0
406 0001C203 0c 8f00000000 50 addl2 $_ldd_1_data,r0
407 0001C20A 0d a004 effffffbe2 movl 4(r0),_dbl_ld_acc+4
408 0001C212 0d 60 effffffbd7 movl (r0),_dbl_ld_acc
409 0001C219 # asm("ldd _dbl_ld_acc"); /* load the accumulator */
410 0001C219 07 effffffbd1 ldd _dbl_ld_acc
411 0001C21F # status_index = 0; /* clear the status index */
412 0001C21F 4d effffffbcb clrl _status_index
413 0001C225 # do
414 0001C225 L276:
415 0001C225 # {
416 0001C225 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */
417 0001C225 0d effffffbc5 50 movl _status_index,r0
418 0001C22C 0d 40effffffbbd movl _status_array[r0],_sgl_dummy1
effffffbb8
419 0001C238 # /*
420 0001C238 # * If LOOP ON ERROR is set, this is the loop for this subtest.
421 0001C238 # * The force loop flag is set after the first error.
422 0001C238 # */
423 0001C238 # asm("_cmpd2_2_lp1:");
424 0001C238 _cmpd2_2_lp1:
425 0001C238 # asm("tstl _sgl_dummy1"); /* generate initial status */
426 0001C238 5d effffffbb2 tstl _sgl_dummy1
427 0001C23E # asm("movpsl _init_psl"); /* save the initial status */
428 0001C23E cd effffffbac movpsl _init_psl
429 0001C244 # asm("nop");
430 0001C244 10 nop
431 0001C245 # asm("cmpd2 _dbl_value_1,_dbl_value_2"); /* compare the data */
432 0001C245 47 effffffba5 effffffba0 cmpd2 _dbl_value_1,_dbl_value_2
433 0001C250 # asm("nop");
434 0001C250 10 nop
435 0001C251 # asm("movpsl _psl_val"); /* save the final status */
436 0001C251 cd effffffb99 movpsl _psl_val
437 0001C257 # asm("std _dbl_st_acc"); /* save the acc */
438 0001C257 27 effffffb93 std _dbl_st_acc
439 0001C25D # if( force_loop ) /* loop? */
440 0001C25D 5d effffffb8d tstl _force_loop
441 0001C263 31 02 jeql L277
442 0001C265 # asm("brb _cmpd2_2_lp1");; /* run the loop again */
443 0001C265 11 d1 brb _cmpd2_2_lp1
444 0001C267 L277:
445 0001C267 # exp_psl = init_psl; /* get the initial PSL */
446 0001C267 0d effffffb83 effffffb7e movl _init_psl,_exp_psl
447 0001C272 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
448 0001C272 ac 88f3 effffffb76 andl2 $-13,_exp_psl
449 0001C27A # if( sgl_expected == ZERO )
450 0001C27A 1d effffffb70 04 cmpl _sgl_expected,$4
451 0001C281 21 07 jneq L278
452 0001C283 # exp_psl |= PSL_Z; /* expect the ZERO bit set */
453 0001C283 8c 04 effffffb66 orl2 $4,_exp_psl
454 0001C28A # if( sgl_expected == NEGATIVE )
455 0001C28A L278:
456 0001C28A 1d effffffb60 08 cmpl _sgl_expected,$8
457 0001C291 21 07 jneq L279
458 0001C293 # exp_psl |= PSL_N; /* expect the NEG bit set */
459 0001C293 8c 08 effffffb56 orl2 $8,_exp_psl
460 0001C29A # if( psl_val != exp_psl ) { /* COMPARE the values */
461 0001C29A L279:
462 0001C29A 1d effffffb50 effffffb4b cmpl _psl_val,_exp_psl
463 0001C2A5 21 03 13 0170 jeql L280
464 0001C2AA # errcnt++; /* bump the error count */
465 0001C2AA 6d effffffb40 incl _errcnt
466 0001C2B0 # if ( prt_error ) {
467 0001C2B0 5d effffffb3a tstl _prt_error
468 0001C2B6 21 03 13 013c jeql L281
469 0001C2BB # writes(" \n"); /* start a new print line */
470 0001C2BB .data 1
471 0000144a * L282:
472 0000144a * 200A00 .ascii " \12\0"
473 0000144d * .text
474 0001C2BB dd 8f0000144a pushl $L282
475 0001C2C1 fe 08 effffffb28 callf $8,_writes
476 0001C2C8 # writes("cycle: ");
477 0001C2C8 .data 1
478 0000144d * L283:
479 0000144d * 6379636C653A2000 .ascii "cycle: \0"
480 00001455 * .text
481 0001C2C8 dd 8f0000144d pushl $L283
482 0001C2CE fe 08 effffffb1b callf $8,_writes
483 0001C2D5 # writed( cycle );
484 0001C2D5 dd effffffb15 pushl _cycle
485 0001C2DB fe 08 effffffb0e callf $8,_writed
486 0001C2E2 # writes(" CMPD2 test ");
487 0001C2E2 .data 1
488 00001455 * L284:
489 00001455 * 2020434D50443220746573742 .ascii " CMPD2 test \0"
000
490 00001463 * .text
491 0001C2E2 dd 8f00001455 pushl $L284
492 0001C2E8 fe 08 effffffb01 callf $8,_writes
493 0001C2EF # writed( test_no );
494 0001C2EF dd effffffafb pushl _test_no
495 0001C2F5 fe 08 effffffaf4 callf $8,_writed
496 0001C2FC # writes(", subtest 2 (Cache/Cache Data) - BAD FINAL PSL\n");
497 0001C2FC .data 1
498 00001463 * L285:
499 00001463 * 2C20737562746573742032202 .ascii ", subtest 2 (Cache/Cache Data) - BAD FINAL PSL\12\0"
843616368652F436163686520
4461746129202D20424144204
6494E414C2050534C0A00
500 00001493 * .text
501 0001C2FC dd 8f00001463 pushl $L285
502 0001C302 fe 08 effffffae7 callf $8,_writes
503 0001C309 # print_cmpd2_data();
504 0001C309 fe 04 ef00000cc6 callf $4,_print_cmpd2_data
505 0001C310 # writes(", index = ");
506 0001C310 .data 1
507 00001493 * L286:
508 00001493 * 2C202020696E646578203D200 .ascii ", index = \0"
0
509 000014a0 * .text
510 0001C310 dd 8f00001493 pushl $L286
511 0001C316 fe 08 effffffad3 callf $8,_writes
512 0001C31D # writed( index );
513 0001C31D dd effffffacd pushl _index
514 0001C323 fe 08 effffffac6 callf $8,_writed
515 0001C32A # writec('\n');
516 0001C32A dd 0a pushl $10
517 0001C32C fe 08 effffffabd callf $8,_writec
518 0001C333 # writes(" final Acc = ");
519 0001C333 .data 1
520 000014a0 * L287:
521 000014a0 * 20202066696E616C204163632 .ascii " final Acc = \0"
03D2000
522 000014b0 * .text
523 0001C333 dd 8f000014a0 pushl $L287
524 0001C339 fe 08 effffffab0 callf $8,_writes
525 0001C340 # write32h( dbl_st_acc.m );
526 0001C340 dd effffffaaa pushl _dbl_st_acc
527 0001C346 fe 08 effffffaa3 callf $8,_write32h
528 0001C34D # writec(' ');
529 0001C34D dd 20 pushl $32
530 0001C34F fe 08 effffffa9a callf $8,_writec
531 0001C356 # write32h( dbl_st_acc.l );
532 0001C356 dd effffffa98 pushl _dbl_st_acc+4
533 0001C35C fe 08 effffffa8d callf $8,_write32h
534 0001C363 # writes(", operand 2 = ");
535 0001C363 .data 1
536 000014b0 * L288:
537 000014b0 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0"
03D2000
538 000014c0 * .text
539 0001C363 dd 8f000014b0 pushl $L288
540 0001C369 fe 08 effffffa80 callf $8,_writes
541 0001C370 # write32h( sgl_value_3);
542 0001C370 dd effffffa7a pushl _sgl_value_3
543 0001C376 fe 08 effffffa73 callf $8,_write32h
544 0001C37D # writec(' ');
545 0001C37D dd 20 pushl $32
546 0001C37F fe 08 effffffa6a callf $8,_writec
547 0001C386 # write32h( sgl_value_4);
548 0001C386 dd effffffa64 pushl _sgl_value_4
549 0001C38C fe 08 effffffa5d callf $8,_write32h
550 0001C393 # writec('\n');
551 0001C393 dd 0a pushl $10
552 0001C395 fe 08 effffffa54 callf $8,_writec
553 0001C39C # writes(" initial PSL = ");
554 0001C39C .data 1
555 000014c0 * L289:
556 000014c0 * 2020696E697469616C2050534 .ascii " initial PSL = \0"
C203D2000
557 000014d1 * .text
558 0001C39C dd 8f000014c0 pushl $L289
559 0001C3A2 fe 08 effffffa47 callf $8,_writes
560 0001C3A9 # write32h( init_psl );
561 0001C3A9 dd effffffa41 pushl _init_psl
562 0001C3AF fe 08 effffffa3a callf $8,_write32h
563 0001C3B6 # writes(", final PSL = ");
564 0001C3B6 .data 1
565 000014d1 * L290:
566 000014d1 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
567 000014e1 * .text
568 0001C3B6 dd 8f000014d1 pushl $L290
569 0001C3BC fe 08 effffffa2d callf $8,_writes
570 0001C3C3 # write32h( psl_val );
571 0001C3C3 dd effffffa27 pushl _psl_val
572 0001C3C9 fe 08 effffffa20 callf $8,_write32h
573 0001C3D0 # writes(", expected PSL = ");
574 0001C3D0 .data 1
575 000014e1 * L291:
576 000014e1 * 2C20206578706563746564205 .ascii ", expected PSL = \0"
0534C203D2000
577 000014f4 * .text
578 0001C3D0 dd 8f000014e1 pushl $L291
579 0001C3D6 fe 08 effffffa13 callf $8,_writes
580 0001C3DD # write32h( exp_psl );
581 0001C3DD dd effffffa0d pushl _exp_psl
582 0001C3E3 fe 08 effffffa06 callf $8,_write32h
583 0001C3EA # writes(" \n");
584 0001C3EA .data 1
585 000014f4 * L292:
586 000014f4 * 200A00 .ascii " \12\0"
587 000014f7 * .text
588 0001C3EA dd 8f000014f4 pushl $L292
589 0001C3F0 fe 08 effffff9f9 callf $8,_writes
590 0001C3F7 # }
591 0001C3F7 # if ( halt_flg )
592 0001C3F7 L281:
593 0001C3F7 5d effffff9f3 tstl _halt_flg
594 0001C3FD 31 09 jeql L293
595 0001C3FF # cmpd2_er_halt( BAD_PSL_HLT ); /* halt on the error */
596 0001C3FF dd 03 pushl $3
597 0001C401 fe 08 ef00000c36 callf $8,_cmpd2_er_halt
598 0001C408 # if ( loop_on_err )
599 0001C408 L293:
600 0001C408 5d effffff9e2 tstl _loop_on_err
601 0001C40E 31 0a jeql L294
602 0001C410 # {
603 0001C410 # force_loop = TRUE; /* set the force loop flag */
604 0001C410 0d 01 effffff9d9 movl $1,_force_loop
605 0001C417 # asm("brw _cmpd2_2_lp1"); /* and loop */
606 0001C417 13 fe1e brw _cmpd2_2_lp1
607 0001C41A # }; /* end of loop-on-error */
608 0001C41A L294:
609 0001C41A # } /* end of compare error */
610 0001C41A # } while( ++status_index < 3 );
611 0001C41A L280:
612 0001C41A L275:
613 0001C41A 6d effffff9d0 incl _status_index
614 0001C420 0d effffff9ca 50 movl _status_index,r0
615 0001C427 1d 50 03 cmpl r0,$3
616 0001C42A 81 03 13 fdf6 jlss L276
617 0001C42F L274:
618 0001C42F # index2++;
619 0001C42F 6d effffff9bb incl _index2
620 0001C435 # } while( (index2 < 10) && (index2 < max_ldf_1_index) );
621 0001C435 L272:
622 0001C435 1d effffff9b5 0a cmpl _index2,$10
623 0001C43C 81 10 jgeq L9998
624 0001C43E 1d effffff9ac effffff9a7 cmpl _index2,_max_ldf_1_index
625 0001C449 81 03 13 fdad jlss L273
626 0001C44E L9998:
627 0001C44E L271:
628 0001C44E # } while( index++ < max_cmpd_1_index );
629 0001C44E L269:
630 0001C44E 0d effffff99c 50 movl _index,r0
631 0001C455 6d effffff995 incl _index
632 0001C45B 1d 50 effffff98e cmpl r0,_max_cmpd_1_index
633 0001C462 81 03 13 fd13 jlss L270
634 0001C467 L268:
635 0001C467 # } /* end of subtest 2 */
636 0001C467 40 ret#2
637 0001C468 .set L264,0x0
638 0001C468 L266:
639 0001C468 13 fcfc jbr L267
640 0001C46B .data
641 00001398 * .text
642 0001C46B 00 .align 1
643 0001C46C .globl _cmpd2_3
644 0001C46C _cmpd2_3:
645 0001C46C 0000 .word L295
646 0001C46E #
647 0001C46E #
648 0001C46E #
649 0001C46E # /****************************************************************************
650 0001C46E # *
651 0001C46E # * SUBTEST 3 - CMPD2 test - cache / register data
652 0001C46E # *
653 0001C46E # ****************************************************************************/
654 0001C46E # cmpd2_3()
655 0001C46E # {
656 0001C46E 13 030b jbr L297
657 0001C471 L298:
658 0001C471 # force_loop = FALSE;
659 0001C471 4d effffff979 clrl _force_loop
660 0001C477 # subtest = 3;
661 0001C477 0d 03 effffff972 movl $3,_subtest
662 0001C47E # index = 0;
663 0001C47E 4d effffff96c clrl _index
664 0001C484 # do
665 0001C484 L301:
666 0001C484 # {
667 0001C484 # dbl_value_1 = cmpd_1_data[index].one; /* get the data operands */
668 0001C484 5c 14 effffff965 50 mull3 $20,_index,r0
669 0001C48C 0c 8f00000000 50 addl2 $_cmpd_1_data,r0
670 0001C493 0d a004 effffff959 movl 4(r0),_dbl_value_1+4
671 0001C49B 0d 60 effffff94e movl (r0),_dbl_value_1
672 0001C4A2 # dbl_value_2 = cmpd_1_data[index].two;
673 0001C4A2 5c 14 effffff947 50 mull3 $20,_index,r0
674 0001C4AA 0c 8f00000008 50 addl2 $_cmpd_1_data+8,r0
675 0001C4B1 0d a004 effffff93b movl 4(r0),_dbl_value_2+4
676 0001C4B9 0d 60 effffff930 movl (r0),_dbl_value_2
677 0001C4C0 # sgl_value_1 = dbl_value_1.m;
678 0001C4C0 0d effffff92a effffff925 movl _dbl_value_1,_sgl_value_1
679 0001C4CB # sgl_value_2 = dbl_value_1.l;
680 0001C4CB 0d effffff923 effffff91a movl _dbl_value_1+4,_sgl_value_2
681 0001C4D6 # sgl_value_3 = dbl_value_2.m;
682 0001C4D6 0d effffff914 effffff90f movl _dbl_value_2,_sgl_value_3
683 0001C4E1 # sgl_value_4 = dbl_value_2.l;
684 0001C4E1 0d effffff90d effffff904 movl _dbl_value_2+4,_sgl_value_4
685 0001C4EC # sgl_expected = cmpd_1_data[index].flag; /* get expected results */
686 0001C4EC 5c 14 effffff8fd 50 mull3 $20,_index,r0
687 0001C4F4 0d e000000010 effffff8f1 movl _cmpd_1_data+16(r0),_sgl_expected
688 0001C4FF # index2 = 0; /* clear Acc. data index */
689 0001C4FF 4d effffff8eb clrl _index2
690 0001C505 # do
691 0001C505 L304:
692 0001C505 # {
693 0001C505 # dbl_ld_acc = ldd_1_data[index2].ld; /* get the Accumulator data */
694 0001C505 48 04 effffff8e4 50 shll $4,_index2,r0
695 0001C50D 0c 8f00000000 50 addl2 $_ldd_1_data,r0
696 0001C514 0d a004 effffff8d8 movl 4(r0),_dbl_ld_acc+4
697 0001C51C 0d 60 effffff8cd movl (r0),_dbl_ld_acc
698 0001C523 # asm("ldd _dbl_ld_acc"); /* load the accumulator */
699 0001C523 07 effffff8c7 ldd _dbl_ld_acc
700 0001C529 # status_index = 0; /* clear the status index */
701 0001C529 4d effffff8c1 clrl _status_index
702 0001C52F # do
703 0001C52F L307:
704 0001C52F # {
705 0001C52F # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */
706 0001C52F 0d effffff8bb 50 movl _status_index,r0
707 0001C536 0d 40effffff8b3 movl _status_array[r0],_sgl_dummy1
effffff8ae
708 0001C542 # /*
709 0001C542 # * If LOOP ON ERROR is set, this is the loop for this subtest.
710 0001C542 # * The force loop flag is set after the first error.
711 0001C542 # */
712 0001C542 # asm("_cmpd2_3_lp1:");
713 0001C542 _cmpd2_3_lp1:
714 0001C542 # asm("movl _sgl_value_3,r4"); /* move operand #2's MSW,r4 */
715 0001C542 0d effffff8a8 54 movl _sgl_value_3,r4
716 0001C549 # asm("movl _sgl_value_4,r5"); /* move operand #2's LSW,r5 */
717 0001C549 0d effffff8a1 55 movl _sgl_value_4,r5
718 0001C550 # asm("tstl _sgl_dummy1"); /* generate initial status */
719 0001C550 5d effffff89a tstl _sgl_dummy1
720 0001C556 # asm("movpsl _init_psl"); /* save the initial status */
721 0001C556 cd effffff894 movpsl _init_psl
722 0001C55C # asm("nop");
723 0001C55C 10 nop
724 0001C55D # asm("cmpd2 _dbl_value_1,r4"); /* compare the data */
725 0001C55D 47 effffff88d 54 cmpd2 _dbl_value_1,r4
726 0001C564 # asm("nop");
727 0001C564 10 nop
728 0001C565 # asm("movpsl _psl_val"); /* save the final status */
729 0001C565 cd effffff885 movpsl _psl_val
730 0001C56B # asm("std _sgl_st_acc"); /* save the acc */
731 0001C56B 27 effffff87f std _sgl_st_acc
732 0001C571 # if( force_loop ) /* loop? */
733 0001C571 5d effffff879 tstl _force_loop
734 0001C577 31 02 jeql L308
735 0001C579 # asm("brb _cmpd2_3_lp1");; /* run the loop again */
736 0001C579 11 c7 brb _cmpd2_3_lp1
737 0001C57B L308:
738 0001C57B # exp_psl = init_psl; /* get the initial PSL */
739 0001C57B 0d effffff86f effffff86a movl _init_psl,_exp_psl
740 0001C586 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
741 0001C586 ac 88f3 effffff862 andl2 $-13,_exp_psl
742 0001C58E # if( sgl_expected == ZERO )
743 0001C58E 1d effffff85c 04 cmpl _sgl_expected,$4
744 0001C595 21 07 jneq L309
745 0001C597 # exp_psl |= PSL_Z; /* expect the ZERO bit set */
746 0001C597 8c 04 effffff852 orl2 $4,_exp_psl
747 0001C59E # if( sgl_expected == NEGATIVE )
748 0001C59E L309:
749 0001C59E 1d effffff84c 08 cmpl _sgl_expected,$8
750 0001C5A5 21 07 jneq L310
751 0001C5A7 # exp_psl |= PSL_N; /* expect the NEG bit set */
752 0001C5A7 8c 08 effffff842 orl2 $8,_exp_psl
753 0001C5AE # if( psl_val != exp_psl ) { /* COMPARE the values */
754 0001C5AE L310:
755 0001C5AE 1d effffff83c effffff837 cmpl _psl_val,_exp_psl
756 0001C5B9 21 03 13 0170 jeql L311
757 0001C5BE # errcnt++; /* bump the error count */
758 0001C5BE 6d effffff82c incl _errcnt
759 0001C5C4 # if ( prt_error ) {
760 0001C5C4 5d effffff826 tstl _prt_error
761 0001C5CA 21 03 13 013c jeql L312
762 0001C5CF # writes(" \n"); /* start a new print line */
763 0001C5CF .data 1
764 000014f7 * L313:
765 000014f7 * 200A00 .ascii " \12\0"
766 000014fa * .text
767 0001C5CF dd 8f000014f7 pushl $L313
768 0001C5D5 fe 08 effffff814 callf $8,_writes
769 0001C5DC # writes("cycle: ");
770 0001C5DC .data 1
771 000014fa * L314:
772 000014fa * 6379636C653A2000 .ascii "cycle: \0"
773 00001502 * .text
774 0001C5DC dd 8f000014fa pushl $L314
775 0001C5E2 fe 08 effffff807 callf $8,_writes
776 0001C5E9 # writed( cycle );
777 0001C5E9 dd effffff801 pushl _cycle
778 0001C5EF fe 08 effffff7fa callf $8,_writed
779 0001C5F6 # writes(" CMPD2 test ");
780 0001C5F6 .data 1
781 00001502 * L315:
782 00001502 * 2020434D50443220746573742 .ascii " CMPD2 test \0"
000
783 00001510 * .text
784 0001C5F6 dd 8f00001502 pushl $L315
785 0001C5FC fe 08 effffff7ed callf $8,_writes
786 0001C603 # writed( test_no );
787 0001C603 dd effffff7e7 pushl _test_no
788 0001C609 fe 08 effffff7e0 callf $8,_writed
789 0001C610 # writes(", subtest 3 (Cache/Reg. Data) - BAD FINAL PSL\n");
790 0001C610 .data 1
791 00001510 * L316:
792 00001510 * 2C20737562746573742033202 .ascii ", subtest 3 (Cache/Reg. Data) - BAD FINAL PSL\12\0"
843616368652F5265672E2044
61746129202D2042414420464
94E414C2050534C0A00
793 0000153f * .text
794 0001C610 dd 8f00001510 pushl $L316
795 0001C616 fe 08 effffff7d3 callf $8,_writes
796 0001C61D # print_cmpd2_data();
797 0001C61D fe 04 ef000009b2 callf $4,_print_cmpd2_data
798 0001C624 # writes(", index = ");
799 0001C624 .data 1
800 0000153f * L317:
801 0000153f * 2C202020696E646578203D200 .ascii ", index = \0"
0
802 0000154c * .text
803 0001C624 dd 8f0000153f pushl $L317
804 0001C62A fe 08 effffff7bf callf $8,_writes
805 0001C631 # writed( index );
806 0001C631 dd effffff7b9 pushl _index
807 0001C637 fe 08 effffff7b2 callf $8,_writed
808 0001C63E # writec('\n');
809 0001C63E dd 0a pushl $10
810 0001C640 fe 08 effffff7a9 callf $8,_writec
811 0001C647 # writes(" final Acc = ");
812 0001C647 .data 1
813 0000154c * L318:
814 0000154c * 20202066696E616C204163632 .ascii " final Acc = \0"
03D2000
815 0000155c * .text
816 0001C647 dd 8f0000154c pushl $L318
817 0001C64D fe 08 effffff79c callf $8,_writes
818 0001C654 # write32h( dbl_st_acc.m );
819 0001C654 dd effffff796 pushl _dbl_st_acc
820 0001C65A fe 08 effffff78f callf $8,_write32h
821 0001C661 # writec(' ');
822 0001C661 dd 20 pushl $32
823 0001C663 fe 08 effffff786 callf $8,_writec
824 0001C66A # write32h( dbl_st_acc.l );
825 0001C66A dd effffff784 pushl _dbl_st_acc+4
826 0001C670 fe 08 effffff779 callf $8,_write32h
827 0001C677 # writes(", operand 2 = ");
828 0001C677 .data 1
829 0000155c * L319:
830 0000155c * 2C20206F706572616E6420322 .ascii ", operand 2 = \0"
03D2000
831 0000156c * .text
832 0001C677 dd 8f0000155c pushl $L319
833 0001C67D fe 08 effffff76c callf $8,_writes
834 0001C684 # write32h( sgl_value_3);
835 0001C684 dd effffff766 pushl _sgl_value_3
836 0001C68A fe 08 effffff75f callf $8,_write32h
837 0001C691 # writec(' ');
838 0001C691 dd 20 pushl $32
839 0001C693 fe 08 effffff756 callf $8,_writec
840 0001C69A # write32h( sgl_value_4);
841 0001C69A dd effffff750 pushl _sgl_value_4
842 0001C6A0 fe 08 effffff749 callf $8,_write32h
843 0001C6A7 # writec('\n');
844 0001C6A7 dd 0a pushl $10
845 0001C6A9 fe 08 effffff740 callf $8,_writec
846 0001C6B0 # writes(" initial PSL = ");
847 0001C6B0 .data 1
848 0000156c * L320:
849 0000156c * 2020696E697469616C2050534 .ascii " initial PSL = \0"
C203D2000
850 0000157d * .text
851 0001C6B0 dd 8f0000156c pushl $L320
852 0001C6B6 fe 08 effffff733 callf $8,_writes
853 0001C6BD # write32h( init_psl );
854 0001C6BD dd effffff72d pushl _init_psl
855 0001C6C3 fe 08 effffff726 callf $8,_write32h
856 0001C6CA # writes(", final PSL = ");
857 0001C6CA .data 1
858 0000157d * L321:
859 0000157d * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
860 0000158d * .text
861 0001C6CA dd 8f0000157d pushl $L321
862 0001C6D0 fe 08 effffff719 callf $8,_writes
863 0001C6D7 # write32h( psl_val );
864 0001C6D7 dd effffff713 pushl _psl_val
865 0001C6DD fe 08 effffff70c callf $8,_write32h
866 0001C6E4 # writes(", expected PSL = ");
867 0001C6E4 .data 1
868 0000158d * L322:
869 0000158d * 2C20206578706563746564205 .ascii ", expected PSL = \0"
0534C203D2000
870 000015a0 * .text
871 0001C6E4 dd 8f0000158d pushl $L322
872 0001C6EA fe 08 effffff6ff callf $8,_writes
873 0001C6F1 # write32h( exp_psl );
874 0001C6F1 dd effffff6f9 pushl _exp_psl
875 0001C6F7 fe 08 effffff6f2 callf $8,_write32h
876 0001C6FE # writes(" \n");
877 0001C6FE .data 1
878 000015a0 * L323:
879 000015a0 * 200A00 .ascii " \12\0"
880 000015a3 * .text
881 0001C6FE dd 8f000015a0 pushl $L323
882 0001C704 fe 08 effffff6e5 callf $8,_writes
883 0001C70B # }
884 0001C70B # if ( halt_flg )
885 0001C70B L312:
886 0001C70B 5d effffff6df tstl _halt_flg
887 0001C711 31 09 jeql L324
888 0001C713 # cmpd2_er_halt( BAD_PSL_HLT ); /* halt on the error */
889 0001C713 dd 03 pushl $3
890 0001C715 fe 08 ef00000922 callf $8,_cmpd2_er_halt
891 0001C71C # if ( loop_on_err )
892 0001C71C L324:
893 0001C71C 5d effffff6ce tstl _loop_on_err
894 0001C722 31 0a jeql L325
895 0001C724 # {
896 0001C724 # force_loop = TRUE; /* set the force loop flag */
897 0001C724 0d 01 effffff6c5 movl $1,_force_loop
898 0001C72B # asm("brw _cmpd2_3_lp1"); /* and loop */
899 0001C72B 13 fe14 brw _cmpd2_3_lp1
900 0001C72E # }; /* end of loop-on-error */
901 0001C72E L325:
902 0001C72E # } /* end of compare error */
903 0001C72E # } while( ++status_index < 3 );
904 0001C72E L311:
905 0001C72E L306:
906 0001C72E 6d effffff6bc incl _status_index
907 0001C734 0d effffff6b6 50 movl _status_index,r0
908 0001C73B 1d 50 03 cmpl r0,$3
909 0001C73E 81 03 13 fdec jlss L307
910 0001C743 L305:
911 0001C743 # index2++;
912 0001C743 6d effffff6a7 incl _index2
913 0001C749 # } while( (index2 < 10) && (index2 < max_ldf_1_index) );
914 0001C749 L303:
915 0001C749 1d effffff6a1 0a cmpl _index2,$10
916 0001C750 81 10 jgeq L9997
917 0001C752 1d effffff698 effffff693 cmpl _index2,_max_ldf_1_index
918 0001C75D 81 03 13 fda3 jlss L304
919 0001C762 L9997:
920 0001C762 L302:
921 0001C762 # } while( index++ < max_cmpd_1_index );
922 0001C762 L300:
923 0001C762 0d effffff688 50 movl _index,r0
924 0001C769 6d effffff681 incl _index
925 0001C76F 1d 50 effffff67a cmpl r0,_max_cmpd_1_index
926 0001C776 81 03 13 fd09 jlss L301
927 0001C77B L299:
928 0001C77B # } /* end of subtest 3 */
929 0001C77B 40 ret#2
930 0001C77C .set L295,0x0
931 0001C77C L297:
932 0001C77C 13 fcf2 jbr L298
933 0001C77F .data
934 00001398 * .text
935 0001C77F 00 .align 1
936 0001C780 .globl _cmpd2_4
937 0001C780 _cmpd2_4:
938 0001C780 0000 .word L326
939 0001C782 #
940 0001C782 #
941 0001C782 #
942 0001C782 # /****************************************************************************
943 0001C782 # *
944 0001C782 # * SUBTEST 4 - CMPD2 test - register / cache data
945 0001C782 # *
946 0001C782 # ****************************************************************************/
947 0001C782 # cmpd2_4()
948 0001C782 # {
949 0001C782 13 030e jbr L328
950 0001C785 L329:
951 0001C785 # force_loop = FALSE;
952 0001C785 4d effffff665 clrl _force_loop
953 0001C78B # subtest = 4;
954 0001C78B 0d 04 effffff65e movl $4,_subtest
955 0001C792 # index = 0;
956 0001C792 4d effffff658 clrl _index
957 0001C798 # do
958 0001C798 L332:
959 0001C798 # {
960 0001C798 # dbl_value_1 = cmpd_1_data[index].one; /* get the data operands */
961 0001C798 5c 14 effffff651 50 mull3 $20,_index,r0
962 0001C7A0 0c 8f00000000 50 addl2 $_cmpd_1_data,r0
963 0001C7A7 0d a004 effffff645 movl 4(r0),_dbl_value_1+4
964 0001C7AF 0d 60 effffff63a movl (r0),_dbl_value_1
965 0001C7B6 # dbl_value_2 = cmpd_1_data[index].two;
966 0001C7B6 5c 14 effffff633 50 mull3 $20,_index,r0
967 0001C7BE 0c 8f00000008 50 addl2 $_cmpd_1_data+8,r0
968 0001C7C5 0d a004 effffff627 movl 4(r0),_dbl_value_2+4
969 0001C7CD 0d 60 effffff61c movl (r0),_dbl_value_2
970 0001C7D4 # sgl_value_1 = dbl_value_1.m;
971 0001C7D4 0d effffff616 effffff611 movl _dbl_value_1,_sgl_value_1
972 0001C7DF # sgl_value_2 = dbl_value_1.l;
973 0001C7DF 0d effffff60f effffff606 movl _dbl_value_1+4,_sgl_value_2
974 0001C7EA # sgl_value_3 = dbl_value_2.m;
975 0001C7EA 0d effffff600 effffff5fb movl _dbl_value_2,_sgl_value_3
976 0001C7F5 # sgl_value_4 = dbl_value_2.l;
977 0001C7F5 0d effffff5f9 effffff5f0 movl _dbl_value_2+4,_sgl_value_4
978 0001C800 # sgl_expected = cmpd_1_data[index].flag; /* get expected results */
979 0001C800 5c 14 effffff5e9 50 mull3 $20,_index,r0
980 0001C808 0d e000000010 effffff5dd movl _cmpd_1_data+16(r0),_sgl_expected
981 0001C813 # index2 = 0; /* clear Acc. data index */
982 0001C813 4d effffff5d7 clrl _index2
983 0001C819 # do
984 0001C819 L335:
985 0001C819 # {
986 0001C819 # dbl_ld_acc = ldd_1_data[index2].ld; /* get the Accumulator data */
987 0001C819 48 04 effffff5d0 50 shll $4,_index2,r0
988 0001C821 0c 8f00000000 50 addl2 $_ldd_1_data,r0
989 0001C828 0d a004 effffff5c4 movl 4(r0),_dbl_ld_acc+4
990 0001C830 0d 60 effffff5b9 movl (r0),_dbl_ld_acc
991 0001C837 # asm("ldd _dbl_ld_acc"); /* load the accumulator */
992 0001C837 07 effffff5b3 ldd _dbl_ld_acc
993 0001C83D # status_index = 0; /* clear the status index */
994 0001C83D 4d effffff5ad clrl _status_index
995 0001C843 # do
996 0001C843 L338:
997 0001C843 # {
998 0001C843 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */
999 0001C843 0d effffff5a7 50 movl _status_index,r0
1000 0001C84A 0d 40effffff59f movl _status_array[r0],_sgl_dummy1
effffff59a
1001 0001C856 # /*
1002 0001C856 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1003 0001C856 # * The force loop flag is set after the first error.
1004 0001C856 # */
1005 0001C856 # asm("_cmpd2_4_lp1:");
1006 0001C856 _cmpd2_4_lp1:
1007 0001C856 # asm("movl _sgl_value_1,r2"); /* move operand #1,s MSW,r2 */
1008 0001C856 0d effffff594 52 movl _sgl_value_1,r2
1009 0001C85D # asm("movl _sgl_value_2,r3"); /* move operand #1's LSW,r3 */
1010 0001C85D 0d effffff58d 53 movl _sgl_value_2,r3
1011 0001C864 # asm("tstl _sgl_dummy1"); /* generate initial status */
1012 0001C864 5d effffff586 tstl _sgl_dummy1
1013 0001C86A # asm("movpsl _init_psl"); /* save the initial status */
1014 0001C86A cd effffff580 movpsl _init_psl
1015 0001C870 # asm("nop");
1016 0001C870 10 nop
1017 0001C871 # asm("cmpd2 r2,_dbl_value_2"); /* compare the data */
1018 0001C871 47 52 effffff578 cmpd2 r2,_dbl_value_2
1019 0001C878 # asm("nop");
1020 0001C878 10 nop
1021 0001C879 # asm("movpsl _psl_val"); /* save the final status */
1022 0001C879 cd effffff571 movpsl _psl_val
1023 0001C87F # asm("std _dbl_st_acc"); /* save the acc */
1024 0001C87F 27 effffff56b std _dbl_st_acc
1025 0001C885 # if( force_loop ) /* loop? */
1026 0001C885 5d effffff565 tstl _force_loop
1027 0001C88B 31 02 jeql L339
1028 0001C88D # asm("brb _cmpd2_4_lp1");; /* run the loop again */
1029 0001C88D 11 c7 brb _cmpd2_4_lp1
1030 0001C88F L339:
1031 0001C88F # exp_psl = init_psl; /* get the initial PSL */
1032 0001C88F 0d effffff55b effffff556 movl _init_psl,_exp_psl
1033 0001C89A # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */
1034 0001C89A ac 88f3 effffff54e andl2 $-13,_exp_psl
1035 0001C8A2 # if( sgl_expected == ZERO )
1036 0001C8A2 1d effffff548 04 cmpl _sgl_expected,$4
1037 0001C8A9 21 07 jneq L340
1038 0001C8AB # exp_psl |= PSL_Z; /* expect the ZERO bit set */
1039 0001C8AB 8c 04 effffff53e orl2 $4,_exp_psl
1040 0001C8B2 # if( sgl_expected == NEGATIVE )
1041 0001C8B2 L340:
1042 0001C8B2 1d effffff538 08 cmpl _sgl_expected,$8
1043 0001C8B9 21 07 jneq L341
1044 0001C8BB # exp_psl |= PSL_N; /* expect the NEG bit set */
1045 0001C8BB 8c 08 effffff52e orl2 $8,_exp_psl
1046 0001C8C2 # if( psl_val != exp_psl ) { /* COMPARE the values */
1047 0001C8C2 L341:
1048 0001C8C2 1d effffff528 effffff523 cmpl _psl_val,_exp_psl
1049 0001C8CD 21 03 13 0173 jeql L342
1050 0001C8D2 # errcnt++; /* bump the error count */
1051 0001C8D2 6d effffff518 incl _errcnt
1052 0001C8D8 # if ( prt_error ) {
1053 0001C8D8 5d effffff512 tstl _prt_error
1054 0001C8DE 21 03 13 013c jeql L343
1055 0001C8E3 # writes(" \n"); /* start a new print line */
1056 0001C8E3 .data 1
1057 000015a3 * L344:
1058 000015a3 * 200A00 .ascii " \12\0"
1059 000015a6 * .text
1060 0001C8E3 dd 8f000015a3 pushl $L344
1061 0001C8E9 fe 08 effffff500 callf $8,_writes
1062 0001C8F0 # writes("cycle: ");
1063 0001C8F0 .data 1
1064 000015a6 * L345:
1065 000015a6 * 6379636C653A2000 .ascii "cycle: \0"
1066 000015ae * .text
1067 0001C8F0 dd 8f000015a6 pushl $L345
1068 0001C8F6 fe 08 effffff4f3 callf $8,_writes
1069 0001C8FD # writed( cycle );
1070 0001C8FD dd effffff4ed pushl _cycle
1071 0001C903 fe 08 effffff4e6 callf $8,_writed
1072 0001C90A # writes(" CMPD2 test ");
1073 0001C90A .data 1
1074 000015ae * L346:
1075 000015ae * 2020434D50443220746573742 .ascii " CMPD2 test \0"
000
1076 000015bc * .text
1077 0001C90A dd 8f000015ae pushl $L346
1078 0001C910 fe 08 effffff4d9 callf $8,_writes
1079 0001C917 # writed( test_no );
1080 0001C917 dd effffff4d3 pushl _test_no
1081 0001C91D fe 08 effffff4cc callf $8,_writed
1082 0001C924 # writes(", subtest 4 (Reg./Cache Data) - BAD FINAL PSL\n");
1083 0001C924 .data 1
1084 000015bc * L347:
1085 000015bc * 2C20737562746573742034202 .ascii ", subtest 4 (Reg./Cache Data) - BAD FINAL PSL\12\0"
85265672E2F43616368652044
61746129202D2042414420464
94E414C2050534C0A00
1086 000015eb * .text
1087 0001C924 dd 8f000015bc pushl $L347
1088 0001C92A fe 08 effffff4bf callf $8,_writes
1089 0001C931 # print_cmpd2_data();
1090 0001C931 fe 04 ef0000069e callf $4,_print_cmpd2_data
1091 0001C938 # writes(", index = ");
1092 0001C938 .data 1
1093 000015eb * L348:
1094 000015eb * 2C202020696E646578203D200 .ascii ", index = \0"
0
1095 000015f8 * .text
1096 0001C938 dd 8f000015eb pushl $L348
1097 0001C93E fe 08 effffff4ab callf $8,_writes
1098 0001C945 # writed( index );
1099 0001C945 dd effffff4a5 pushl _index
1100 0001C94B fe 08 effffff49e callf $8,_writed
1101 0001C952 # writec('\n');
1102 0001C952 dd 0a pushl $10
1103 0001C954 fe 08 effffff495 callf $8,_writec
1104 0001C95B # writes(" final Acc = ");
1105 0001C95B .data 1
1106 000015f8 * L349:
1107 000015f8 * 20202066696E616C204163632 .ascii " final Acc = \0"
03D2000
1108 00001608 * .text
1109 0001C95B dd 8f000015f8 pushl $L349
1110 0001C961 fe 08 effffff488 callf $8,_writes
1111 0001C968 # write32h( dbl_st_acc.m );
1112 0001C968 dd effffff482 pushl _dbl_st_acc
1113 0001C96E fe 08 effffff47b callf $8,_write32h
1114 0001C975 # writec(' ');
1115 0001C975 dd 20 pushl $32
1116 0001C977 fe 08 effffff472 callf $8,_writec
1117 0001C97E # write32h( dbl_st_acc.l );
1118 0001C97E dd effffff470 pushl _dbl_st_acc+4
1119 0001C984 fe 08 effffff465 callf $8,_write32h
1120 0001C98B # writes(", operand 2 = ");
1121 0001C98B .data 1
1122 00001608 * L350:
1123 00001608 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0"
03D2000
1124 00001618 * .text
1125 0001C98B dd 8f00001608 pushl $L350
1126 0001C991 fe 08 effffff458 callf $8,_writes
1127 0001C998 # write32h( sgl_value_3);
1128 0001C998 dd effffff452 pushl _sgl_value_3
1129 0001C99E fe 08 effffff44b callf $8,_write32h
1130 0001C9A5 # writec(' ');
1131 0001C9A5 dd 20 pushl $32
1132 0001C9A7 fe 08 effffff442 callf $8,_writec
1133 0001C9AE # write32h( sgl_value_4);
1134 0001C9AE dd effffff43c pushl _sgl_value_4
1135 0001C9B4 fe 08 effffff435 callf $8,_write32h
1136 0001C9BB # writec('\n');
1137 0001C9BB dd 0a pushl $10
1138 0001C9BD fe 08 effffff42c callf $8,_writec
1139 0001C9C4 # writes(" initial PSL = ");
1140 0001C9C4 .data 1
1141 00001618 * L351:
1142 00001618 * 2020696E697469616C2050534 .ascii " initial PSL = \0"
C203D2000
1143 00001629 * .text
1144 0001C9C4 dd 8f00001618 pushl $L351
1145 0001C9CA fe 08 effffff41f callf $8,_writes
1146 0001C9D1 # write32h( init_psl );
1147 0001C9D1 dd effffff419 pushl _init_psl
1148 0001C9D7 fe 08 effffff412 callf $8,_write32h
1149 0001C9DE # writes(", final PSL = ");
1150 0001C9DE .data 1
1151 00001629 * L352:
1152 00001629 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
1153 00001639 * .text
1154 0001C9DE dd 8f00001629 pushl $L352
1155 0001C9E4 fe 08 effffff405 callf $8,_writes
1156 0001C9EB # write32h( psl_val );
1157 0001C9EB dd effffff3ff pushl _psl_val
1158 0001C9F1 fe 08 effffff3f8 callf $8,_write32h
1159 0001C9F8 # writes(", expected PSL = ");
1160 0001C9F8 .data 1
1161 00001639 * L353:
1162 00001639 * 2C20206578706563746564205 .ascii ", expected PSL = \0"
0534C203D2000
1163 0000164c * .text
1164 0001C9F8 dd 8f00001639 pushl $L353
1165 0001C9FE fe 08 effffff3eb callf $8,_writes
1166 0001CA05 # write32h( exp_psl );
1167 0001CA05 dd effffff3e5 pushl _exp_psl
1168 0001CA0B fe 08 effffff3de callf $8,_write32h
1169 0001CA12 # writes(" \n");
1170 0001CA12 .data 1
1171 0000164c * L354:
1172 0000164c * 200A00 .ascii " \12\0"
1173 0000164f * .text
1174 0001CA12 dd 8f0000164c pushl $L354
1175 0001CA18 fe 08 effffff3d1 callf $8,_writes
1176 0001CA1F # }
1177 0001CA1F # if ( halt_flg )
1178 0001CA1F L343:
1179 0001CA1F 5d effffff3cb tstl _halt_flg
1180 0001CA25 31 09 jeql L355
1181 0001CA27 # cmpd2_er_halt( BAD_PSL_HLT ); /* halt on the error */
1182 0001CA27 dd 03 pushl $3
1183 0001CA29 fe 08 ef0000060e callf $8,_cmpd2_er_halt
1184 0001CA30 # if ( loop_on_err )
1185 0001CA30 L355:
1186 0001CA30 5d effffff3ba tstl _loop_on_err
1187 0001CA36 31 0d jeql L356
1188 0001CA38 # {
1189 0001CA38 # force_loop = TRUE; /* set the force loop flag */
1190 0001CA38 0d 01 effffff3b1 movl $1,_force_loop
1191 0001CA3F # asm("jmp _cmpd2_4_lp1"); /* and loop */
1192 0001CA3F 71 effffffe11 jmp _cmpd2_4_lp1
1193 0001CA45 # } /* end of loop-on-error */
1194 0001CA45 # } /* end of compare error */
1195 0001CA45 L356:
1196 0001CA45 # } while( ++status_index < 3 ); /* end of status loop */
1197 0001CA45 L342:
1198 0001CA45 L337:
1199 0001CA45 6d effffff3a5 incl _status_index
1200 0001CA4B 0d effffff39f 50 movl _status_index,r0
1201 0001CA52 1d 50 03 cmpl r0,$3
1202 0001CA55 81 03 13 fde9 jlss L338
1203 0001CA5A L336:
1204 0001CA5A # index2++;
1205 0001CA5A 6d effffff390 incl _index2
1206 0001CA60 # } while( (index2 < 10) && (index2 < max_ldf_1_index) );
1207 0001CA60 L334:
1208 0001CA60 1d effffff38a 0a cmpl _index2,$10
1209 0001CA67 81 10 jgeq L9996
1210 0001CA69 1d effffff381 effffff37c cmpl _index2,_max_ldf_1_index
1211 0001CA74 81 03 13 fda0 jlss L335
1212 0001CA79 L9996:
1213 0001CA79 L333:
1214 0001CA79 # } while( index++ < max_cmpd_1_index );
1215 0001CA79 L331:
1216 0001CA79 0d effffff371 50 movl _index,r0
1217 0001CA80 6d effffff36a incl _index
1218 0001CA86 1d 50 effffff363 cmpl r0,_max_cmpd_1_index
1219 0001CA8D 81 03 13 fd06 jlss L332
1220 0001CA92 L330:
1221 0001CA92 # } /* end of subtest 4 */
1222 0001CA92 40 ret#2
1223 0001CA93 .set L326,0x0
1224 0001CA93 L328:
1225 0001CA93 13 fcef jbr L329
1226 0001CA96 .data
1227 00001398 * .text
1228 0001CA96 .align 1
1229 0001CA96 .globl _cmpd2_5
1230 0001CA96 _cmpd2_5:
1231 0001CA96 0000 .word L357
1232 0001CA98 #
1233 0001CA98 #
1234 0001CA98 #
1235 0001CA98 # /************************************************************************
1236 0001CA98 # *
1237 0001CA98 # * SUBTEST 5 - Check for register corruption
1238 0001CA98 # *
1239 0001CA98 # ************************************************************************/
1240 0001CA98 # cmpd2_5()
1241 0001CA98 # {
1242 0001CA98 13 0296 jbr L359
1243 0001CA9B L360:
1244 0001CA9B # force_loop = FALSE; /* clear force_loop flg */
1245 0001CA9B 4d effffff34f clrl _force_loop
1246 0001CAA1 # subtest = 5;
1247 0001CAA1 0d 05 effffff348 movl $5,_subtest
1248 0001CAA8 # fill_reg_buf( load_regs ); /* get pattern for regs */
1249 0001CAA8 dd 8f00000000 pushl $_load_regs
1250 0001CAAE fe 08 effffff33b callf $8,_fill_reg_buf
1251 0001CAB5 # index = 0;
1252 0001CAB5 4d effffff335 clrl _index
1253 0001CABB # do
1254 0001CABB L364:
1255 0001CABB # {
1256 0001CABB # dbl_value_1 = cmpd_1_data[index].one; /* data to load */
1257 0001CABB 5c 14 effffff32e 50 mull3 $20,_index,r0
1258 0001CAC3 0c 8f00000000 50 addl2 $_cmpd_1_data,r0
1259 0001CACA 0d a004 effffff322 movl 4(r0),_dbl_value_1+4
1260 0001CAD2 0d 60 effffff317 movl (r0),_dbl_value_1
1261 0001CAD9 # dbl_value_2 = cmpd_1_data[index].two; /* data to compare */
1262 0001CAD9 5c 14 effffff310 50 mull3 $20,_index,r0
1263 0001CAE1 0c 8f00000008 50 addl2 $_cmpd_1_data+8,r0
1264 0001CAE8 0d a004 effffff304 movl 4(r0),_dbl_value_2+4
1265 0001CAF0 0d 60 effffff2f9 movl (r0),_dbl_value_2
1266 0001CAF7 # dbl_ld_acc.m = 0x40800000; /* get acc data */
1267 0001CAF7 0d 8f40800000 effffff2ee movl $1082130432,_dbl_ld_acc
1268 0001CB02 # dbl_ld_acc.l = 0x10101010; /* get acc data */
1269 0001CB02 0d 8f10101010 effffff2e7 movl $269488144,_dbl_ld_acc+4
1270 0001CB0D # sgl_value_1 = dbl_value_1.m;
1271 0001CB0D 0d effffff2dd effffff2d8 movl _dbl_value_1,_sgl_value_1
1272 0001CB18 # sgl_value_2 = dbl_value_1.l;
1273 0001CB18 0d effffff2d6 effffff2cd movl _dbl_value_1+4,_sgl_value_2
1274 0001CB23 # sgl_value_3 = dbl_value_2.m;
1275 0001CB23 0d effffff2c7 effffff2c2 movl _dbl_value_2,_sgl_value_3
1276 0001CB2E # sgl_value_4 = dbl_value_2.l;
1277 0001CB2E 0d effffff2c0 effffff2b7 movl _dbl_value_2+4,_sgl_value_4
1278 0001CB39 # asm("ldd _dbl_ld_acc"); /* load the acc */
1279 0001CB39 07 effffff2b1 ldd _dbl_ld_acc
1280 0001CB3F # /*
1281 0001CB3F # * If LOOP ON ERROR is set, this is the loop for this subtest.
1282 0001CB3F # * The force loop flag is set after the first error.
1283 0001CB3F # */
1284 0001CB3F # asm("_cmpd2_5_lp1:");
1285 0001CB3F _cmpd2_5_lp1:
1286 0001CB3F # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
1287 0001CB3F ab 891fff effffff2a8 loadr $0x1fff,_load_regs
1288 0001CB48 # asm("nop");
1289 0001CB48 10 nop
1290 0001CB49 # asm("cmpd2 _dbl_value_1,_dbl_value_2"); /* compare the data */
1291 0001CB49 47 effffff2a1 effffff29c cmpd2 _dbl_value_1,_dbl_value_2
1292 0001CB54 # asm("nop");
1293 0001CB54 10 nop
1294 0001CB55 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
1295 0001CB55 bb 891fff effffff292 storer $0x1fff,_store_regs
1296 0001CB5E # asm("std _dbl_st_acc"); /* save the acc */
1297 0001CB5E 27 effffff28c std _dbl_st_acc
1298 0001CB64 # if( force_loop ) /* loop? */
1299 0001CB64 5d effffff286 tstl _force_loop
1300 0001CB6A 31 02 jeql L365
1301 0001CB6C # asm("brb _cmpd2_5_lp1");; /* run the loop again */
1302 0001CB6C 11 d1 brb _cmpd2_5_lp1
1303 0001CB6E L365:
1304 0001CB6E # /*
1305 0001CB6E # * Now compare the stored register values to those that were loaded
1306 0001CB6E # */
1307 0001CB6E # index2 = 0;
1308 0001CB6E 4d effffff27c clrl _index2
1309 0001CB74 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
1310 0001CB74 L366:
1311 0001CB74 0d effffff276 50 movl _index2,r0
1312 0001CB7B 0d effffff26f 51 movl _index2,r1
1313 0001CB82 1d 40effffff267 cmpl _load_regs[r0],_store_regs[r1]
41effffff261
1314 0001CB8F 21 11 jneq L367
1315 0001CB91 1d effffff259 0d cmpl _index2,$13
1316 0001CB98 81 08 jgeq L367
1317 0001CB9A # index2++; /* check reg values */
1318 0001CB9A 6d effffff250 incl _index2
1319 0001CBA0 11 d2 jbr L366
1320 0001CBA2 L367:
1321 0001CBA2 # if( index2 < 13 ) { /* error if index2 < 13 */
1322 0001CBA2 1d effffff248 0d cmpl _index2,$13
1323 0001CBA9 91 03 13 0169 jgeq L368
1324 0001CBAE # errcnt++; /* bump the error count */
1325 0001CBAE 6d effffff23c incl _errcnt
1326 0001CBB4 # if ( prt_error ) {
1327 0001CBB4 5d effffff236 tstl _prt_error
1328 0001CBBA 21 03 13 0132 jeql L369
1329 0001CBBF # writes(" \n"); /* start a new print line */
1330 0001CBBF .data 1
1331 0000164f * L370:
1332 0000164f * 200A00 .ascii " \12\0"
1333 00001652 * .text
1334 0001CBBF dd 8f0000164f pushl $L370
1335 0001CBC5 fe 08 effffff224 callf $8,_writes
1336 0001CBCC # writes("cycle: ");
1337 0001CBCC .data 1
1338 00001652 * L371:
1339 00001652 * 6379636C653A2000 .ascii "cycle: \0"
1340 0000165a * .text
1341 0001CBCC dd 8f00001652 pushl $L371
1342 0001CBD2 fe 08 effffff217 callf $8,_writes
1343 0001CBD9 # writed( cycle );
1344 0001CBD9 dd effffff211 pushl _cycle
1345 0001CBDF fe 08 effffff20a callf $8,_writed
1346 0001CBE6 # writes(", CMPD2 test ");
1347 0001CBE6 .data 1
1348 0000165a * L372:
1349 0000165a * 2C20434D50443220746573742 .ascii ", CMPD2 test \0"
000
1350 00001668 * .text
1351 0001CBE6 dd 8f0000165a pushl $L372
1352 0001CBEC fe 08 effffff1fd callf $8,_writes
1353 0001CBF3 # writed( test_no );
1354 0001CBF3 dd effffff1f7 pushl _test_no
1355 0001CBF9 fe 08 effffff1f0 callf $8,_writed
1356 0001CC00 # writes(", subtest 5 - A REGISTER WAS MODIFIED\n");
1357 0001CC00 .data 1
1358 00001668 * L373:
1359 00001668 * 2C20737562746573742035202 .ascii ", subtest 5 - A REGISTER WAS MODIFIED\12\0"
D204120524547495354455220
574153204D4F4449464945440
A00
1360 0000168f * .text
1361 0001CC00 dd 8f00001668 pushl $L373
1362 0001CC06 fe 08 effffff1e3 callf $8,_writes
1363 0001CC0D # print_cmpd2_data();
1364 0001CC0D fe 04 ef000003c2 callf $4,_print_cmpd2_data
1365 0001CC14 # writec('\n');
1366 0001CC14 dd 0a pushl $10
1367 0001CC16 fe 08 effffff1d3 callf $8,_writec
1368 0001CC1D # writes(" final Acc = ");
1369 0001CC1D .data 1
1370 0000168f * L374:
1371 0000168f * 20202066696E616C204163632 .ascii " final Acc = \0"
03D2000
1372 0000169f * .text
1373 0001CC1D dd 8f0000168f pushl $L374
1374 0001CC23 fe 08 effffff1c6 callf $8,_writes
1375 0001CC2A # write32h( dbl_st_acc.m );
1376 0001CC2A dd effffff1c0 pushl _dbl_st_acc
1377 0001CC30 fe 08 effffff1b9 callf $8,_write32h
1378 0001CC37 # writec(' ');
1379 0001CC37 dd 20 pushl $32
1380 0001CC39 fe 08 effffff1b0 callf $8,_writec
1381 0001CC40 # write32h( dbl_st_acc.l );
1382 0001CC40 dd effffff1ae pushl _dbl_st_acc+4
1383 0001CC46 fe 08 effffff1a3 callf $8,_write32h
1384 0001CC4D # writes(", operand 2 = ");
1385 0001CC4D .data 1
1386 0000169f * L375:
1387 0000169f * 2C20206F706572616E6420322 .ascii ", operand 2 = \0"
03D2000
1388 000016af * .text
1389 0001CC4D dd 8f0000169f pushl $L375
1390 0001CC53 fe 08 effffff196 callf $8,_writes
1391 0001CC5A # write32h( sgl_value_3);
1392 0001CC5A dd effffff190 pushl _sgl_value_3
1393 0001CC60 fe 08 effffff189 callf $8,_write32h
1394 0001CC67 # writec(' ');
1395 0001CC67 dd 20 pushl $32
1396 0001CC69 fe 08 effffff180 callf $8,_writec
1397 0001CC70 # write32h( sgl_value_4);
1398 0001CC70 dd effffff17a pushl _sgl_value_4
1399 0001CC76 fe 08 effffff173 callf $8,_write32h
1400 0001CC7D # writec('\n');
1401 0001CC7D dd 0a pushl $10
1402 0001CC7F fe 08 effffff16a callf $8,_writec
1403 0001CC86 # writes("register ");
1404 0001CC86 .data 1
1405 000016af * L376:
1406 000016af * 72656769737465722000 .ascii "register \0"
1407 000016b9 * .text
1408 0001CC86 dd 8f000016af pushl $L376
1409 0001CC8C fe 08 effffff15d callf $8,_writes
1410 0001CC93 # writed( index2 );
1411 0001CC93 dd effffff157 pushl _index2
1412 0001CC99 fe 08 effffff150 callf $8,_writed
1413 0001CCA0 # writes(" = ");
1414 0001CCA0 .data 1
1415 000016b9 * L377:
1416 000016b9 * 203D2000 .ascii " = \0"
1417 000016bd * .text
1418 0001CCA0 dd 8f000016b9 pushl $L377
1419 0001CCA6 fe 08 effffff143 callf $8,_writes
1420 0001CCAD # write32h( store_regs[ index2 ] );
1421 0001CCAD 0d effffff13d 50 movl _index2,r0
1422 0001CCB4 dd 40effffff135 pushl _store_regs[r0]
1423 0001CCBB fe 08 effffff12e callf $8,_write32h
1424 0001CCC2 # writes(", should be = ");
1425 0001CCC2 .data 1
1426 000016bd * L378:
1427 000016bd * 2C202073686F756C642062652 .ascii ", should be = \0"
03D2000
1428 000016cd * .text
1429 0001CCC2 dd 8f000016bd pushl $L378
1430 0001CCC8 fe 08 effffff121 callf $8,_writes
1431 0001CCCF # write32h( load_regs[ index2 ] );
1432 0001CCCF 0d effffff11b 50 movl _index2,r0
1433 0001CCD6 dd 40effffff113 pushl _load_regs[r0]
1434 0001CCDD fe 08 effffff10c callf $8,_write32h
1435 0001CCE4 # writes("\n");
1436 0001CCE4 .data 1
1437 000016cd * L379:
1438 000016cd * 0A00 .ascii "\12\0"
1439 000016cf * .text
1440 0001CCE4 dd 8f000016cd pushl $L379
1441 0001CCEA fe 08 effffff0ff callf $8,_writes
1442 0001CCF1 # }
1443 0001CCF1 # if ( halt_flg )
1444 0001CCF1 L369:
1445 0001CCF1 5d effffff0f9 tstl _halt_flg
1446 0001CCF7 31 09 jeql L380
1447 0001CCF9 # cmpd2_er_halt( BAD_REG_HLT ); /* halt on the error */
1448 0001CCF9 dd 02 pushl $2
1449 0001CCFB fe 08 ef0000033c callf $8,_cmpd2_er_halt
1450 0001CD02 # if ( loop_on_err )
1451 0001CD02 L380:
1452 0001CD02 5d effffff0e8 tstl _loop_on_err
1453 0001CD08 31 0d jeql L381
1454 0001CD0A # {
1455 0001CD0A # force_loop = TRUE; /* set the force loop flag */
1456 0001CD0A 0d 01 effffff0df movl $1,_force_loop
1457 0001CD11 # asm("jmp _cmpd2_5_lp1"); /* and loop */
1458 0001CD11 71 effffffe28 jmp _cmpd2_5_lp1
1459 0001CD17 # }; /* end of loop-on-error */
1460 0001CD17 L381:
1461 0001CD17 # } /* end of compare error */
1462 0001CD17 # } while( index++ < max_cmpd_1_index );
1463 0001CD17 L368:
1464 0001CD17 L363:
1465 0001CD17 0d effffff0d3 50 movl _index,r0
1466 0001CD1E 6d effffff0cc incl _index
1467 0001CD24 1d 50 effffff0c5 cmpl r0,_max_cmpd_1_index
1468 0001CD2B 81 03 13 fd8b jlss L364
1469 0001CD30 L362:
1470 0001CD30 # } /* end of subtest 5 */
1471 0001CD30 40 ret#2
1472 0001CD31 .set L357,0x0
1473 0001CD31 L359:
1474 0001CD31 13 fd67 jbr L360
1475 0001CD34 .data
1476 00001398 * .text
1477 0001CD34 .align 1
1478 0001CD34 .globl _cmpd2_6
1479 0001CD34 _cmpd2_6:
1480 0001CD34 0000 .word L382
1481 0001CD36 #
1482 0001CD36 #
1483 0001CD36 #
1484 0001CD36 # /****************************************************************************
1485 0001CD36 # *
1486 0001CD36 # * SUBTEST 6 - CMPD2 test Accumulator stability test
1487 0001CD36 # *
1488 0001CD36 # ****************************************************************************/
1489 0001CD36 # cmpd2_6()
1490 0001CD36 # {
1491 0001CD36 13 029a jbr L384
1492 0001CD39 L385:
1493 0001CD39 # force_loop = FALSE;
1494 0001CD39 4d effffff0b1 clrl _force_loop
1495 0001CD3F # subtest = 6;
1496 0001CD3F 0d 06 effffff0aa movl $6,_subtest
1497 0001CD46 # index = 0;
1498 0001CD46 4d effffff0a4 clrl _index
1499 0001CD4C # do
1500 0001CD4C L388:
1501 0001CD4C # {
1502 0001CD4C # dbl_value_1 = cmpd_1_data[index].one; /* get the data operands */
1503 0001CD4C 5c 14 effffff09d 50 mull3 $20,_index,r0
1504 0001CD54 0c 8f00000000 50 addl2 $_cmpd_1_data,r0
1505 0001CD5B 0d a004 effffff091 movl 4(r0),_dbl_value_1+4
1506 0001CD63 0d 60 effffff086 movl (r0),_dbl_value_1
1507 0001CD6A # dbl_value_2 = cmpd_1_data[index].two;
1508 0001CD6A 5c 14 effffff07f 50 mull3 $20,_index,r0
1509 0001CD72 0c 8f00000008 50 addl2 $_cmpd_1_data+8,r0
1510 0001CD79 0d a004 effffff073 movl 4(r0),_dbl_value_2+4
1511 0001CD81 0d 60 effffff068 movl (r0),_dbl_value_2
1512 0001CD88 # sgl_value_1 = dbl_value_1.m;
1513 0001CD88 0d effffff062 effffff05d movl _dbl_value_1,_sgl_value_1
1514 0001CD93 # sgl_value_2 = dbl_value_1.l;
1515 0001CD93 0d effffff05b effffff052 movl _dbl_value_1+4,_sgl_value_2
1516 0001CD9E # sgl_value_3 = dbl_value_2.m;
1517 0001CD9E 0d effffff04c effffff047 movl _dbl_value_2,_sgl_value_3
1518 0001CDA9 # sgl_value_4 = dbl_value_2.l;
1519 0001CDA9 0d effffff045 effffff03c movl _dbl_value_2+4,_sgl_value_4
1520 0001CDB4 # index2 = 0; /* clear Acc. data index */
1521 0001CDB4 4d effffff036 clrl _index2
1522 0001CDBA # do
1523 0001CDBA L391:
1524 0001CDBA # {
1525 0001CDBA # dbl_ld_acc = ldd_1_data[index2].ld; /* get the Accumulator data */
1526 0001CDBA 48 04 effffff02f 50 shll $4,_index2,r0
1527 0001CDC2 0c 8f00000000 50 addl2 $_ldd_1_data,r0
1528 0001CDC9 0d a004 effffff023 movl 4(r0),_dbl_ld_acc+4
1529 0001CDD1 0d 60 effffff018 movl (r0),_dbl_ld_acc
1530 0001CDD8 # if( !(dbl_ld_acc.m & 0x7f800000 ) ) {
1531 0001CDD8 3d 8f7f800000 effffff00d bitl $2139095040,_dbl_ld_acc
1532 0001CDE3 21 0e jneq L392
1533 0001CDE5 # dbl_expected.m = 0; /* expect a '0' stored */
1534 0001CDE5 4d effffff005 clrl _dbl_expected
1535 0001CDEB # dbl_expected.l = 0;
1536 0001CDEB 4d effffff003 clrl _dbl_expected+4
1537 0001CDF1 # } else
1538 0001CDF1 11 16 jbr L393
1539 0001CDF3 L392:
1540 0001CDF3 # dbl_expected = dbl_ld_acc;
1541 0001CDF3 0d efffffeffb efffffeff6 movl _dbl_ld_acc+4,_dbl_expected+4
1542 0001CDFE 0d efffffefec efffffefe7 movl _dbl_ld_acc,_dbl_expected
1543 0001CE09 L393:
1544 0001CE09 # asm("ldd _dbl_ld_acc"); /* load the acc */
1545 0001CE09 07 efffffefe1 ldd _dbl_ld_acc
1546 0001CE0F # /*
1547 0001CE0F # * If LOOP ON ERROR is set, this is the loop for this subtest.
1548 0001CE0F # * The force loop flag is set after the first error.
1549 0001CE0F # */
1550 0001CE0F # asm("_cmpd2_6_lp1:");
1551 0001CE0F _cmpd2_6_lp1:
1552 0001CE0F # asm("nop");
1553 0001CE0F 10 nop
1554 0001CE10 # asm("cmpd2 _dbl_value_1,_dbl_value_2");/* compare the operands */
1555 0001CE10 47 efffffefda efffffefd5 cmpd2 _dbl_value_1,_dbl_value_2
1556 0001CE1B # asm("nop");
1557 0001CE1B 10 nop
1558 0001CE1C # asm("std _dbl_st_acc"); /* store the accumulator */
1559 0001CE1C 27 efffffefce std _dbl_st_acc
1560 0001CE22 # if( force_loop ) /* loop? */
1561 0001CE22 5d efffffefc8 tstl _force_loop
1562 0001CE28 31 02 jeql L394
1563 0001CE2A # asm("brb _cmpd2_6_lp1");; /* run the loop again */
1564 0001CE2A 11 e3 brb _cmpd2_6_lp1
1565 0001CE2C L394:
1566 0001CE2C # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the final */
1567 0001CE2C # (dbl_st_acc.l != dbl_expected.l) ) { /* results */
1568 0001CE2C 1d efffffefbe efffffefb9 cmpl _dbl_st_acc,_dbl_expected
1569 0001CE37 21 10 jneq L9995
1570 0001CE39 1d efffffefb5 efffffefb0 cmpl _dbl_st_acc+4,_dbl_expected+4
1571 0001CE44 21 03 13 0151 jeql L395
1572 0001CE49 L9995:
1573 0001CE49 # errcnt++; /* bump the error count */
1574 0001CE49 6d efffffefa1 incl _errcnt
1575 0001CE4F # if ( prt_error ) {
1576 0001CE4F 5d efffffef9b tstl _prt_error
1577 0001CE55 21 03 13 011a jeql L396
1578 0001CE5A # writes(" \n"); /* start a new print line */
1579 0001CE5A .data 1
1580 000016cf * L397:
1581 000016cf * 200A00 .ascii " \12\0"
1582 000016d2 * .text
1583 0001CE5A dd 8f000016cf pushl $L397
1584 0001CE60 fe 08 efffffef89 callf $8,_writes
1585 0001CE67 # writes("cycle: ");
1586 0001CE67 .data 1
1587 000016d2 * L398:
1588 000016d2 * 6379636C653A2000 .ascii "cycle: \0"
1589 000016da * .text
1590 0001CE67 dd 8f000016d2 pushl $L398
1591 0001CE6D fe 08 efffffef7c callf $8,_writes
1592 0001CE74 # writed( cycle );
1593 0001CE74 dd efffffef76 pushl _cycle
1594 0001CE7A fe 08 efffffef6f callf $8,_writed
1595 0001CE81 # writes(" CMPD2 test ");
1596 0001CE81 .data 1
1597 000016da * L399:
1598 000016da * 2020434D50443220746573742 .ascii " CMPD2 test \0"
000
1599 000016e8 * .text
1600 0001CE81 dd 8f000016da pushl $L399
1601 0001CE87 fe 08 efffffef62 callf $8,_writes
1602 0001CE8E # writed( test_no );
1603 0001CE8E dd efffffef5c pushl _test_no
1604 0001CE94 fe 08 efffffef55 callf $8,_writed
1605 0001CE9B # writes(", subtest 6 - BAD FINAL ACC\n");
1606 0001CE9B .data 1
1607 000016e8 * L400:
1608 000016e8 * 2C20737562746573742036202 .ascii ", subtest 6 - BAD FINAL ACC\12\0"
D204241442046494E414C2041
43430A00
1609 00001705 * .text
1610 0001CE9B dd 8f000016e8 pushl $L400
1611 0001CEA1 fe 08 efffffef48 callf $8,_writes
1612 0001CEA8 # print_cmpd2_data();
1613 0001CEA8 fe 04 ef00000127 callf $4,_print_cmpd2_data
1614 0001CEAF # writes(", index = ");
1615 0001CEAF .data 1
1616 00001705 * L401:
1617 00001705 * 2C202020696E646578203D200 .ascii ", index = \0"
0
1618 00001712 * .text
1619 0001CEAF dd 8f00001705 pushl $L401
1620 0001CEB5 fe 08 efffffef34 callf $8,_writes
1621 0001CEBC # writed( index );
1622 0001CEBC dd efffffef2e pushl _index
1623 0001CEC2 fe 08 efffffef27 callf $8,_writed
1624 0001CEC9 # writec('\n');
1625 0001CEC9 dd 0a pushl $10
1626 0001CECB fe 08 efffffef1e callf $8,_writec
1627 0001CED2 # writes(" final Acc = ");
1628 0001CED2 .data 1
1629 00001712 * L402:
1630 00001712 * 20202066696E616C204163632 .ascii " final Acc = \0"
03D2000
1631 00001722 * .text
1632 0001CED2 dd 8f00001712 pushl $L402
1633 0001CED8 fe 08 efffffef11 callf $8,_writes
1634 0001CEDF # write32h( dbl_st_acc.m );
1635 0001CEDF dd efffffef0b pushl _dbl_st_acc
1636 0001CEE5 fe 08 efffffef04 callf $8,_write32h
1637 0001CEEC # writec(' ');
1638 0001CEEC dd 20 pushl $32
1639 0001CEEE fe 08 efffffeefb callf $8,_writec
1640 0001CEF5 # write32h( dbl_st_acc.l );
1641 0001CEF5 dd efffffeef9 pushl _dbl_st_acc+4
1642 0001CEFB fe 08 efffffeeee callf $8,_write32h
1643 0001CF02 # writes(", operand 2 = ");
1644 0001CF02 .data 1
1645 00001722 * L403:
1646 00001722 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0"
03D2000
1647 00001732 * .text
1648 0001CF02 dd 8f00001722 pushl $L403
1649 0001CF08 fe 08 efffffeee1 callf $8,_writes
1650 0001CF0F # write32h( sgl_value_3);
1651 0001CF0F dd efffffeedb pushl _sgl_value_3
1652 0001CF15 fe 08 efffffeed4 callf $8,_write32h
1653 0001CF1C # writec(' ');
1654 0001CF1C dd 20 pushl $32
1655 0001CF1E fe 08 efffffeecb callf $8,_writec
1656 0001CF25 # write32h( sgl_value_4);
1657 0001CF25 dd efffffeec5 pushl _sgl_value_4
1658 0001CF2B fe 08 efffffeebe callf $8,_write32h
1659 0001CF32 # writec('\n');
1660 0001CF32 dd 0a pushl $10
1661 0001CF34 fe 08 efffffeeb5 callf $8,_writec
1662 0001CF3B # writes("expected Acc = ");
1663 0001CF3B .data 1
1664 00001732 * L404:
1665 00001732 * 6578706563746564204163632 .ascii "expected Acc = \0"
03D2000
1666 00001742 * .text
1667 0001CF3B dd 8f00001732 pushl $L404
1668 0001CF41 fe 08 efffffeea8 callf $8,_writes
1669 0001CF48 # write32h( dbl_expected.m );
1670 0001CF48 dd efffffeea2 pushl _dbl_expected
1671 0001CF4E fe 08 efffffee9b callf $8,_write32h
1672 0001CF55 # writec(' ');
1673 0001CF55 dd 20 pushl $32
1674 0001CF57 fe 08 efffffee92 callf $8,_writec
1675 0001CF5E # write32h( dbl_expected.l );
1676 0001CF5E dd efffffee90 pushl _dbl_expected+4
1677 0001CF64 fe 08 efffffee85 callf $8,_write32h
1678 0001CF6B # writec('\n');
1679 0001CF6B dd 0a pushl $10
1680 0001CF6D fe 08 efffffee7c callf $8,_writec
1681 0001CF74 # }
1682 0001CF74 # if ( halt_flg ) /* halt on error? */
1683 0001CF74 L396:
1684 0001CF74 5d efffffee76 tstl _halt_flg
1685 0001CF7A 31 09 jeql L405
1686 0001CF7C # cmpd2_er_halt( BAD_ACC_HLT );
1687 0001CF7C dd 01 pushl $1
1688 0001CF7E fe 08 ef000000b9 callf $8,_cmpd2_er_halt
1689 0001CF85 # if ( loop_on_err )
1690 0001CF85 L405:
1691 0001CF85 5d efffffee65 tstl _loop_on_err
1692 0001CF8B 31 0d jeql L406
1693 0001CF8D # {
1694 0001CF8D # force_loop = TRUE; /* set the force loop flag */
1695 0001CF8D 0d 01 efffffee5c movl $1,_force_loop
1696 0001CF94 # asm("jmp _cmpd2_6_lp1"); /* and loop */
1697 0001CF94 71 effffffe75 jmp _cmpd2_6_lp1
1698 0001CF9A # }; /* end of loop-on-error */
1699 0001CF9A L406:
1700 0001CF9A # } /* end of compare error */
1701 0001CF9A # index2++;
1702 0001CF9A L395:
1703 0001CF9A 6d efffffee50 incl _index2
1704 0001CFA0 # } while( (index2 < 10) && (index2 < max_ldf_1_index) );
1705 0001CFA0 L390:
1706 0001CFA0 1d efffffee4a 0a cmpl _index2,$10
1707 0001CFA7 81 10 jgeq L9994
1708 0001CFA9 1d efffffee41 efffffee3c cmpl _index2,_max_ldf_1_index
1709 0001CFB4 81 03 13 fe01 jlss L391
1710 0001CFB9 L9994:
1711 0001CFB9 L389:
1712 0001CFB9 # } while( index++ < max_cmpd_1_index );
1713 0001CFB9 L387:
1714 0001CFB9 0d efffffee31 50 movl _index,r0
1715 0001CFC0 6d efffffee2a incl _index
1716 0001CFC6 1d 50 efffffee23 cmpl r0,_max_cmpd_1_index
1717 0001CFCD 81 03 13 fd7a jlss L388
1718 0001CFD2 L386:
1719 0001CFD2 # } /* end of subtest 6 */
1720 0001CFD2 40 ret#2
1721 0001CFD3 .set L382,0x0
1722 0001CFD3 L384:
1723 0001CFD3 13 fd63 jbr L385
1724 0001CFD6 .data
1725 00001398 * .text
1726 0001CFD6 .align 1
1727 0001CFD6 .globl _print_cmpd2_data
1728 0001CFD6 _print_cmpd2_data:
1729 0001CFD6 0000 .word L407
1730 0001CFD8 #
1731 0001CFD8 #
1732 0001CFD8 #
1733 0001CFD8 # /**************************************************************************
1734 0001CFD8 # *
1735 0001CFD8 # * PRINT THE DATA AND STORE RESULTS
1736 0001CFD8 # *
1737 0001CFD8 # * initial Acc = xxxxxxxx xxxxxxxx, operand 1 = xxxxxxxx xxxxxxxx
1738 0001CFD8 # **************************************************************************/
1739 0001CFD8 # print_cmpd2_data()
1740 0001CFD8 # {
1741 0001CFD8 11 61 jbr L409
1742 0001CFDA L410:
1743 0001CFDA # writes(" initial Acc = ");
1744 0001CFDA .data 1
1745 00001742 * L411:
1746 00001742 * 20696E697469616C204163632 .ascii " initial Acc = \0"
03D2000
1747 00001752 * .text
1748 0001CFDA dd 8f00001742 pushl $L411
1749 0001CFE0 fe 08 efffffee09 callf $8,_writes
1750 0001CFE7 # write32h( dbl_ld_acc.m );
1751 0001CFE7 dd efffffee03 pushl _dbl_ld_acc
1752 0001CFED fe 08 efffffedfc callf $8,_write32h
1753 0001CFF4 # writec(' ');
1754 0001CFF4 dd 20 pushl $32
1755 0001CFF6 fe 08 efffffedf3 callf $8,_writec
1756 0001CFFD # write32h( dbl_ld_acc.l );
1757 0001CFFD dd efffffedf1 pushl _dbl_ld_acc+4
1758 0001D003 fe 08 efffffede6 callf $8,_write32h
1759 0001D00A # writes(", operand 1 = ");
1760 0001D00A .data 1
1761 00001752 * L412:
1762 00001752 * 2C20206F706572616E6420312 .ascii ", operand 1 = \0"
03D2000
1763 00001762 * .text
1764 0001D00A dd 8f00001752 pushl $L412
1765 0001D010 fe 08 efffffedd9 callf $8,_writes
1766 0001D017 # write32h( sgl_value_1 );
1767 0001D017 dd efffffedd3 pushl _sgl_value_1
1768 0001D01D fe 08 efffffedcc callf $8,_write32h
1769 0001D024 # writec(' ');
1770 0001D024 dd 20 pushl $32
1771 0001D026 fe 08 efffffedc3 callf $8,_writec
1772 0001D02D # write32h( sgl_value_2 );
1773 0001D02D dd efffffedbd pushl _sgl_value_2
1774 0001D033 fe 08 efffffedb6 callf $8,_write32h
1775 0001D03A # }
1776 0001D03A 40 ret#2
1777 0001D03B .set L407,0x0
1778 0001D03B L409:
1779 0001D03B 11 9d jbr L410
1780 0001D03D .data
1781 00001398 * .text
1782 0001D03D 00 .align 1
1783 0001D03E .globl _cmpd2_er_halt
1784 0001D03E _cmpd2_er_halt:
1785 0001D03E 0000 .word L413
1786 0001D040 #
1787 0001D040 #
1788 0001D040 #
1789 0001D040 # /**************************************************************************
1790 0001D040 # *
1791 0001D040 # * HALT ON ERROR ROUTINE
1792 0001D040 # *
1793 0001D040 # **************************************************************************/
1794 0001D040 # cmpd2_er_halt( halt_code )
1795 0001D040 # int halt_code;
1796 0001D040 # {
1797 0001D040 13 0140 jbr L415
1798 0001D043 L416:
1799 0001D043 # sgl_value_1 = dbl_value_1.m;
1800 0001D043 0d efffffeda7 efffffeda2 movl _dbl_value_1,_sgl_value_1
1801 0001D04E # sgl_value_2 = dbl_value_1.l;
1802 0001D04E 0d efffffeda0 efffffed97 movl _dbl_value_1+4,_sgl_value_2
1803 0001D059 # sgl_value_3 = dbl_value_2.m;
1804 0001D059 0d efffffed91 efffffed8c movl _dbl_value_2,_sgl_value_3
1805 0001D064 # sgl_value_4 = dbl_value_2.l;
1806 0001D064 0d efffffed8a efffffed81 movl _dbl_value_2+4,_sgl_value_4
1807 0001D06F # sgl_value_5 = dbl_ld_acc.m;
1808 0001D06F 0d efffffed7b efffffed76 movl _dbl_ld_acc,_sgl_value_5
1809 0001D07A # sgl_value_6 = dbl_ld_acc.l;
1810 0001D07A 0d efffffed74 efffffed6b movl _dbl_ld_acc+4,_sgl_value_6
1811 0001D085 # sgl_value_7 = dbl_st_acc.m;
1812 0001D085 0d efffffed65 efffffed60 movl _dbl_st_acc,_sgl_value_7
1813 0001D090 # sgl_value_8 = dbl_st_acc.l;
1814 0001D090 0d efffffed5e efffffed55 movl _dbl_st_acc+4,_sgl_value_8
1815 0001D09B # sgl_dummy1 = halt_code; /* get the error type */
1816 0001D09B 0d ad04 efffffed4d movl 4(fp),_sgl_dummy1
1817 0001D0A3 # asm("movl _test_no,r0"); /* r0 = test number */
1818 0001D0A3 0d efffffed47 50 movl _test_no,r0
1819 0001D0AA # asm("movl _subtest,r1"); /* r1 = subtest number */
1820 0001D0AA 0d efffffed40 51 movl _subtest,r1
1821 0001D0B1 # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1822 0001D0B1 0d efffffed39 52 movl _sgl_dummy1,r2
1823 0001D0B8 # asm("movl _cycle,r3"); /* r3 = cycle count */
1824 0001D0B8 0d efffffed32 53 movl _cycle,r3
1825 0001D0BF # asm("movl _sgl_value_5,r4"); /* r4 = MS acc loaded */
1826 0001D0BF 0d efffffed2b 54 movl _sgl_value_5,r4
1827 0001D0C6 # asm("movl _sgl_value_6,r5"); /* r5 = LS acc loaded */
1828 0001D0C6 0d efffffed24 55 movl _sgl_value_6,r5
1829 0001D0CD # asm("movl _sgl_value_1,r6"); /* r6 = MS operand 1 */
1830 0001D0CD 0d efffffed1d 56 movl _sgl_value_1,r6
1831 0001D0D4 # asm("movl _sgl_value_2,r7"); /* r7 = MS operand 1 */
1832 0001D0D4 0d efffffed16 57 movl _sgl_value_2,r7
1833 0001D0DB # asm("movl _sgl_value_3,r8"); /* r8 = MS operand 2 */
1834 0001D0DB 0d efffffed0f 58 movl _sgl_value_3,r8
1835 0001D0E2 # asm("movl _sgl_value_4,r9"); /* r9 = MS operand 2 */
1836 0001D0E2 0d efffffed08 59 movl _sgl_value_4,r9
1837 0001D0E9 # asm("movl _psl_val,r10"); /* r10 = actual PSL */
1838 0001D0E9 0d efffffed01 5a movl _psl_val,r10
1839 0001D0F0 # if( halt_code == BAD_ACC_HLT ) {
1840 0001D0F0 1d ad04 01 cmpl 4(fp),$1
1841 0001D0F4 21 34 jneq L417
1842 0001D0F6 # sgl_value_1 = dbl_expected.m;
1843 0001D0F6 0d efffffecf4 efffffecef movl _dbl_expected,_sgl_value_1
1844 0001D101 # sgl_value_2 = dbl_expected.l;
1845 0001D101 0d efffffeced efffffece4 movl _dbl_expected+4,_sgl_value_2
1846 0001D10C # asm("movl _sgl_value_7,r11"); /* r11 = MS stored */
1847 0001D10C 0d efffffecde 5b movl _sgl_value_7,r11
1848 0001D113 # asm("movl _sgl_value_8,r12"); /* r12 = LS stored */
1849 0001D113 0d efffffecd7 5c movl _sgl_value_8,r12
1850 0001D11A # asm("movl _sgl_value_1,r13"); /* r13 = MS expected */
1851 0001D11A 0d efffffecd0 5d movl _sgl_value_1,r13
1852 0001D121 # asm("movl _sgl_value_2,r14"); /* r14 = LS expected */
1853 0001D121 0d efffffecc9 5e movl _sgl_value_2,r14
1854 0001D128 # } else
1855 0001D128 11 57 jbr L418
1856 0001D12A L417:
1857 0001D12A # if( halt_code == BAD_REG_HLT ) {
1858 0001D12A 1d ad04 02 cmpl 4(fp),$2
1859 0001D12E 21 3d jneq L419
1860 0001D130 # sgl_dummy1 = load_regs[index2];
1861 0001D130 0d efffffecba 50 movl _index2,r0
1862 0001D137 0d 40efffffecb2 movl _load_regs[r0],_sgl_dummy1
efffffecad
1863 0001D143 # sgl_dummy2 = store_regs[index2];
1864 0001D143 0d efffffeca7 50 movl _index2,r0
1865 0001D14A 0d 40efffffec9f movl _store_regs[r0],_sgl_dummy2
efffffec9a
1866 0001D156 # asm("movl _index2,r11"); /* r11 = bad register # */
1867 0001D156 0d efffffec94 5b movl _index2,r11
1868 0001D15D # asm("movl _sgl_dummy2,r12"); /* r12 = actual value */
1869 0001D15D 0d efffffec8d 5c movl _sgl_dummy2,r12
1870 0001D164 # asm("movl _sgl_dummy1,r13"); /* r13 = expected value */
1871 0001D164 0d efffffec86 5d movl _sgl_dummy1,r13
1872 0001D16B # } else
1873 0001D16B 11 14 jbr L420
1874 0001D16D L419:
1875 0001D16D # if( halt_code == BAD_PSL_HLT ) {
1876 0001D16D 1d ad04 03 cmpl 4(fp),$3
1877 0001D171 21 0e jneq L421
1878 0001D173 # asm("movl _exp_psl,r11"); /* r11 = expected PSL */
1879 0001D173 0d efffffec77 5b movl _exp_psl,r11
1880 0001D17A # asm("movl _index,r12"); /* r12 = data index */
1881 0001D17A 0d efffffec70 5c movl _index,r12
1882 0001D181 # };
1883 0001D181 L421:
1884 0001D181 L420:
1885 0001D181 L418:
1886 0001D181 # asm("halt"); /* HALT ... */
1887 0001D181 00 halt
1888 0001D182 # }
1889 0001D182 40 ret#2
1890 0001D183 .set L413,0x0
1891 0001D183 L415:
1892 0001D183 13 febd jbr L416
1893 0001D186 .data
1893 00038F76 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.