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