|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000920 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _cvld
6: 6 00000000 _cvld:
7: 7 0001D188 0000 .word L215
8: 8 0001D18A #
9: 9 0001D18A # #include "fpp_defs.h"
10: 10 0001D18A #
11: 11 0001D18A #
12: 12 0001D18A # /*****************************************************************************
13: 13 0001D18A # *
14: 14 0001D18A # * CVLD - SINGLE PRECISION FLOATING POINT CONVERT LONG TO FLOAT TEST
15: 15 0001D18A # *
16: 16 0001D18A # *****************************************************************************/
17: 17 0001D18A # cvld()
18: 18 0001D18A # {
19: 19 0001D18A 11 41 jbr L217
20: 20 0001D18C L218:
21: 21 0001D18C # asm(".globl _cvld_t");
22: 22 0001D18C .globl _cvld_t
23: 23 0001D18C # asm("_cvld_t:"); /* entry address */
24: 24 0001D18C _cvld_t:
25: 25 0001D18C # if( ( cycle ==1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
26: 26 0001D18C 1d effffffff6 01 cmpl _cycle,$1
27: 27 0001D193 21 15 jneq L219
28: 28 0001D195 5d efffffffed tstl _prt_hdrs
29: 29 0001D19B 31 0d jeql L219
30: 30 0001D19D # writes(" CVLD");
31: 31 0001D19D .data 1
32: 32 00000920 * L221:
33: 33 00000920 * 2043564C4400 .ascii " CVLD\0"
34: 34 00000926 * .text
35: 35 0001D19D dd 8f00000920 pushl $L221
36: 36 0001D1A3 fe 08 efffffffde callf $8,_writes
37: 37 0001D1AA # cvld_1(); /* load through a register */
38: 38 0001D1AA L219:
39: 39 0001D1AA fe 04 ef0000001f callf $4,_cvld_1
40: 40 0001D1B1 # cvld_2(); /* load through the cache */
41: 41 0001D1B1 fe 04 ef000001e0 callf $4,_cvld_2
42: 42 0001D1B8 # cvld_3(); /* register stability */
43: 43 0001D1B8 fe 04 ef00000389 callf $4,_cvld_3
44: 44 0001D1BF # cvld_4(); /* PSL stability test */
45: 45 0001D1BF fe 04 ef0000057a callf $4,_cvld_4
46: 46 0001D1C6 # asm("jmp *return"); /* return to the test monitor */
47: 47 0001D1C6 71 ffffffffbc jmp *return
48: 48 0001D1CC # }
49: 49 0001D1CC 40 ret#2
50: 50 0001D1CD .set L215,0x0
51: 51 0001D1CD L217:
52: 52 0001D1CD 11 bd jbr L218
53: 53 0001D1CF .data
54: 54 00000920 * .text
55: 55 0001D1CF 00 .align 1
56: 56 0001D1D0 .globl _cvld_1
57: 57 0001D1D0 _cvld_1:
58: 58 0001D1D0 0000 .word L226
59: 59 0001D1D2 #
60: 60 0001D1D2 #
61: 61 0001D1D2 #
62: 62 0001D1D2 # /************************************************************************
63: 63 0001D1D2 # *
64: 64 0001D1D2 # * SUBTEST 1
65: 65 0001D1D2 # *
66: 66 0001D1D2 # ************************************************************************/
67: 67 0001D1D2 # cvld_1()
68: 68 0001D1D2 # {
69: 69 0001D1D2 13 01bf jbr L228
70: 70 0001D1D5 L229:
71: 71 0001D1D5 # force_loop = FALSE;
72: 72 0001D1D5 4d efffffffad clrl _force_loop
73: 73 0001D1DB # subtest = 1;
74: 74 0001D1DB 0d 01 efffffffa6 movl $1,_subtest
75: 75 0001D1E2 # index = 0;
76: 76 0001D1E2 4d efffffffa0 clrl _index
77: 77 0001D1E8 # do
78: 78 0001D1E8 L232:
79: 79 0001D1E8 # {
80: 80 0001D1E8 # sgl_value_2 = 0xffffffff; /* get an initial value */
81: 81 0001D1E8 ec 01 efffffff99 mnegl $1,_sgl_value_2
82: 82 0001D1EF # sgl_value_3 = 0xfff0fff0; /* for the accumulator */
83: 83 0001D1EF 0d 8ffff0fff0 efffffff8e movl $-983056,_sgl_value_3
84: 84 0001D1FA # sgl_value_1 = cvld_1_data[index].ld; /* get the operand */
85: 85 0001D1FA 5c 0c efffffff87 50 mull3 $12,_index,r0
86: 86 0001D202 0d e000000000 efffffff7b movl _cvld_1_data(r0),_sgl_value_1
87: 87 0001D20D # dbl_expected = cvld_1_data[index].exp; /* get expected result */
88: 88 0001D20D 5c 0c efffffff74 50 mull3 $12,_index,r0
89: 89 0001D215 0c 8f00000004 50 addl2 $_cvld_1_data+4,r0
90: 90 0001D21C 0d a004 efffffff68 movl 4(r0),_dbl_expected+4
91: 91 0001D224 0d 60 efffffff5d movl (r0),_dbl_expected
92: 92 0001D22B # /*
93: 93 0001D22B # * If LOOP ON ERROR is set, this is the loop for this subtest.
94: 94 0001D22B # * The force loop flag is set after the first error.
95: 95 0001D22B # */
96: 96 0001D22B # asm("_cvld_1_lp1:");
97: 97 0001D22B _cvld_1_lp1:
98: 98 0001D22B # asm("movl _sgl_value_2,r4"); /* move background data */
99: 99 0001D22B 0d efffffff57 54 movl _sgl_value_2,r4
100: 100 0001D232 # asm("movl _sgl_value_3,r5");
101: 101 0001D232 0d efffffff50 55 movl _sgl_value_3,r5
102: 102 0001D239 # asm("movl _sgl_value_1,r6"); /* move the operand to r6 */
103: 103 0001D239 0d efffffff49 56 movl _sgl_value_1,r6
104: 104 0001D240 # asm("ldd r4"); /* load the background data */
105: 105 0001D240 07 54 ldd r4
106: 106 0001D242 # asm("cvld r6"); /* convert the value */
107: 107 0001D242 77 56 cvld r6
108: 108 0001D244 # asm("std r8"); /* store the result in R8 */
109: 109 0001D244 27 58 std r8
110: 110 0001D246 # if( force_loop )
111: 111 0001D246 5d efffffff3c tstl _force_loop
112: 112 0001D24C 31 02 jeql L233
113: 113 0001D24E # asm("brb _cvld_1_lp1");; /* loop on the error */
114: 114 0001D24E 11 db brb _cvld_1_lp1
115: 115 0001D250 L233:
116: 116 0001D250 # /*
117: 117 0001D250 # * end error loop - test the results
118: 118 0001D250 # */
119: 119 0001D250 # asm("movl r8,_dbl_st_acc"); /* move MSW to cache */
120: 120 0001D250 0d 58 efffffff31 movl r8,_dbl_st_acc
121: 121 0001D257 # asm("movl r9,_dbl_st_acc+4"); /* move LSW to cache */
122: 122 0001D257 0d 59 efffffff2e movl r9,_dbl_st_acc+4
123: 123 0001D25E # if( ( dbl_st_acc.m != dbl_expected.m ) || /* COMPARE the values */
124: 124 0001D25E # ( dbl_st_acc.l != dbl_expected.l ) ){
125: 125 0001D25E 1d efffffff24 efffffff1f cmpl _dbl_st_acc,_dbl_expected
126: 126 0001D269 21 10 jneq L9999
127: 127 0001D26B 1d efffffff1b efffffff16 cmpl _dbl_st_acc+4,_dbl_expected+4
128: 128 0001D276 21 03 13 00ff jeql L234
129: 129 0001D27B L9999:
130: 130 0001D27B # errcnt++; /* bump the error count */
131: 131 0001D27B 6d efffffff07 incl _errcnt
132: 132 0001D281 # if( prt_error ) {
133: 133 0001D281 5d efffffff01 tstl _prt_error
134: 134 0001D287 21 03 13 00cb jeql L235
135: 135 0001D28C # writes(" \n"); /* start a new print line */
136: 136 0001D28C .data 1
137: 137 00000926 * L236:
138: 138 00000926 * 200A00 .ascii " \12\0"
139: 139 00000929 * .text
140: 140 0001D28C dd 8f00000926 pushl $L236
141: 141 0001D292 fe 08 effffffeef callf $8,_writes
142: 142 0001D299 # writes("cycle: ");
143: 143 0001D299 .data 1
144: 144 00000929 * L237:
145: 145 00000929 * 6379636C653A2000 .ascii "cycle: \0"
146: 146 00000931 * .text
147: 147 0001D299 dd 8f00000929 pushl $L237
148: 148 0001D29F fe 08 effffffee2 callf $8,_writes
149: 149 0001D2A6 # writed( cycle );
150: 150 0001D2A6 dd effffffedc pushl _cycle
151: 151 0001D2AC fe 08 effffffed5 callf $8,_writed
152: 152 0001D2B3 # writes(" CVLD test ");
153: 153 0001D2B3 .data 1
154: 154 00000931 * L239:
155: 155 00000931 * 202043564C442074657374200 .ascii " CVLD test \0"
156: 0
157: 156 0000093e * .text
158: 157 0001D2B3 dd 8f00000931 pushl $L239
159: 158 0001D2B9 fe 08 effffffec8 callf $8,_writes
160: 159 0001D2C0 # writed( test_no );
161: 160 0001D2C0 dd effffffec2 pushl _test_no
162: 161 0001D2C6 fe 08 effffffebb callf $8,_writed
163: 162 0001D2CD # writes(", subtest 1 (Reg. Data) - BAD FINAL ACC\n");
164: 163 0001D2CD .data 1
165: 164 0000093e * L240:
166: 165 0000093e * 2C20737562746573742031202 .ascii ", subtest 1 (Reg. Data) - BAD FINAL ACC\12\0"
167: 85265672E204461746129202D
168: 204241442046494E414C20414
169: 3430A00
170: 166 00000967 * .text
171: 167 0001D2CD dd 8f0000093e pushl $L240
172: 168 0001D2D3 fe 08 effffffeae callf $8,_writes
173: 169 0001D2DA # print_cvld_data();
174: 170 0001D2DA fe 04 ef00000643 callf $4,_print_cvld_data
175: 171 0001D2E1 # writes(", index = ");
176: 172 0001D2E1 .data 1
177: 173 00000967 * L242:
178: 174 00000967 * 2C202020696E646578203D200 .ascii ", index = \0"
179: 0
180: 175 00000974 * .text
181: 176 0001D2E1 dd 8f00000967 pushl $L242
182: 177 0001D2E7 fe 08 effffffe9a callf $8,_writes
183: 178 0001D2EE # writed( index );
184: 179 0001D2EE dd effffffe94 pushl _index
185: 180 0001D2F4 fe 08 effffffe8d callf $8,_writed
186: 181 0001D2FB # writec('\n');
187: 182 0001D2FB dd 0a pushl $10
188: 183 0001D2FD fe 08 effffffe84 callf $8,_writec
189: 184 0001D304 # writes(" operand = ");
190: 185 0001D304 .data 1
191: 186 00000974 * L244:
192: 187 00000974 * 202020206F706572616E64203 .ascii " operand = \0"
193: D2000
194: 188 00000983 * .text
195: 189 0001D304 dd 8f00000974 pushl $L244
196: 190 0001D30A fe 08 effffffe77 callf $8,_writes
197: 191 0001D311 # write32h( sgl_value_1 );
198: 192 0001D311 dd effffffe71 pushl _sgl_value_1
199: 193 0001D317 fe 08 effffffe6a callf $8,_write32h
200: 194 0001D31E # writes(" expected Acc = ");
201: 195 0001D31E .data 1
202: 196 00000983 * L246:
203: 197 00000983 * 2020202020202020202065787 .ascii " expected Acc = \0"
204: 0656374656420416363203D20
205: 00
206: 198 0000099d * .text
207: 199 0001D31E dd 8f00000983 pushl $L246
208: 200 0001D324 fe 08 effffffe5d callf $8,_writes
209: 201 0001D32B # write32h( dbl_expected.m );
210: 202 0001D32B dd effffffe57 pushl _dbl_expected
211: 203 0001D331 fe 08 effffffe50 callf $8,_write32h
212: 204 0001D338 # writec(' ');
213: 205 0001D338 dd 20 pushl $32
214: 206 0001D33A fe 08 effffffe47 callf $8,_writec
215: 207 0001D341 # write32h( dbl_expected.l );
216: 208 0001D341 dd effffffe45 pushl _dbl_expected+4
217: 209 0001D347 fe 08 effffffe3a callf $8,_write32h
218: 210 0001D34E # writec('\n');
219: 211 0001D34E dd 0a pushl $10
220: 212 0001D350 fe 08 effffffe31 callf $8,_writec
221: 213 0001D357 # }
222: 214 0001D357 # if( halt_flg )
223: 215 0001D357 L235:
224: 216 0001D357 5d effffffe2b tstl _halt_flg
225: 217 0001D35D 31 09 jeql L247
226: 218 0001D35F # cvld_er_halt( BAD_ACC_HLT ); /* halt on the error */
227: 219 0001D35F dd 01 pushl $1
228: 220 0001D361 fe 08 ef00000624 callf $8,_cvld_er_halt
229: 221 0001D368 # if( loop_on_err ) {
230: 222 0001D368 L247:
231: 223 0001D368 5d effffffe1a tstl _loop_on_err
232: 224 0001D36E 31 0a jeql L249
233: 225 0001D370 # force_loop = TRUE; /* set the force loop flag */
234: 226 0001D370 0d 01 effffffe11 movl $1,_force_loop
235: 227 0001D377 # asm("brw _cvld_1_lp1");; /* and loop on the error */
236: 228 0001D377 13 feb1 brw _cvld_1_lp1
237: 229 0001D37A # } /* end of loop on error */
238: 230 0001D37A # } /* end of compare error */
239: 231 0001D37A L249:
240: 232 0001D37A # } while( index++ < max_cvld_1_index ); /* end of WHILE loop */
241: 233 0001D37A L234:
242: 234 0001D37A L231:
243: 235 0001D37A 0d effffffe08 50 movl _index,r0
244: 236 0001D381 6d effffffe01 incl _index
245: 237 0001D387 1d 50 effffffdfa cmpl r0,_max_cvld_1_index
246: 238 0001D38E 81 03 13 fe55 jlss L232
247: 239 0001D393 L230:
248: 240 0001D393 # } /* end of subtest 1 */
249: 241 0001D393 40 ret#2
250: 242 0001D394 .set L226,0x0
251: 243 0001D394 L228:
252: 244 0001D394 13 fe3e jbr L229
253: 245 0001D397 .data
254: 246 00000920 * .text
255: 247 0001D397 00 .align 1
256: 248 0001D398 .globl _cvld_2
257: 249 0001D398 _cvld_2:
258: 250 0001D398 0000 .word L250
259: 251 0001D39A #
260: 252 0001D39A #
261: 253 0001D39A #
262: 254 0001D39A # /************************************************************************
263: 255 0001D39A # *
264: 256 0001D39A # * SUBTEST 2 - convert through memory
265: 257 0001D39A # *
266: 258 0001D39A # ************************************************************************/
267: 259 0001D39A # cvld_2()
268: 260 0001D39A # {
269: 261 0001D39A 13 01a8 jbr L252
270: 262 0001D39D L253:
271: 263 0001D39D # force_loop = FALSE;
272: 264 0001D39D 4d effffffde5 clrl _force_loop
273: 265 0001D3A3 # subtest = 2;
274: 266 0001D3A3 0d 02 effffffdde movl $2,_subtest
275: 267 0001D3AA # index = 0;
276: 268 0001D3AA 4d effffffdd8 clrl _index
277: 269 0001D3B0 # do
278: 270 0001D3B0 L256:
279: 271 0001D3B0 # {
280: 272 0001D3B0 # dbl_ld_acc.m = 0xffffffff; /* get an initial value */
281: 273 0001D3B0 ec 01 effffffdd1 mnegl $1,_dbl_ld_acc
282: 274 0001D3B7 # dbl_ld_acc.l = 0xfff0fff0; /* for the accumulator */
283: 275 0001D3B7 0d 8ffff0fff0 effffffdca movl $-983056,_dbl_ld_acc+4
284: 276 0001D3C2 # sgl_value_1 = cvld_1_data[index].ld; /* get the operand */
285: 277 0001D3C2 5c 0c effffffdbf 50 mull3 $12,_index,r0
286: 278 0001D3CA 0d e000000000 effffffdb3 movl _cvld_1_data(r0),_sgl_value_1
287: 279 0001D3D5 # dbl_expected = cvld_1_data[index].exp; /* get expected result */
288: 280 0001D3D5 5c 0c effffffdac 50 mull3 $12,_index,r0
289: 281 0001D3DD 0c 8f00000004 50 addl2 $_cvld_1_data+4,r0
290: 282 0001D3E4 0d a004 effffffda0 movl 4(r0),_dbl_expected+4
291: 283 0001D3EC 0d 60 effffffd95 movl (r0),_dbl_expected
292: 284 0001D3F3 # /*
293: 285 0001D3F3 # * If LOOP ON ERROR is set, this is the loop for this subtest.
294: 286 0001D3F3 # * The force loop flag is set after the first error.
295: 287 0001D3F3 # */
296: 288 0001D3F3 # asm("_cvld_2_lp1:");
297: 289 0001D3F3 _cvld_2_lp1:
298: 290 0001D3F3 # asm("ldd _dbl_ld_acc"); /* load the base value */
299: 291 0001D3F3 07 effffffd8f ldd _dbl_ld_acc
300: 292 0001D3F9 # asm("cvld _sgl_value_1"); /* convert the value */
301: 293 0001D3F9 77 effffffd89 cvld _sgl_value_1
302: 294 0001D3FF # asm("std _dbl_st_acc"); /* store the result */
303: 295 0001D3FF 27 effffffd83 std _dbl_st_acc
304: 296 0001D405 # if( force_loop )
305: 297 0001D405 5d effffffd7d tstl _force_loop
306: 298 0001D40B 31 02 jeql L257
307: 299 0001D40D # asm("brb _cvld_2_lp1");; /* loop on the error */
308: 300 0001D40D 11 e4 brb _cvld_2_lp1
309: 301 0001D40F L257:
310: 302 0001D40F # /*
311: 303 0001D40F # * end error loop - test the results
312: 304 0001D40F # */
313: 305 0001D40F # if( ( dbl_st_acc.m != dbl_expected.m ) || /* COMPARE the values */
314: 306 0001D40F # ( dbl_st_acc.l != dbl_expected.l ) ){
315: 307 0001D40F 1d effffffd73 effffffd6e cmpl _dbl_st_acc,_dbl_expected
316: 308 0001D41A 21 10 jneq L9998
317: 309 0001D41C 1d effffffd6a effffffd65 cmpl _dbl_st_acc+4,_dbl_expected+4
318: 310 0001D427 21 03 13 00ff jeql L258
319: 311 0001D42C L9998:
320: 312 0001D42C # errcnt++; /* bump the error count */
321: 313 0001D42C 6d effffffd56 incl _errcnt
322: 314 0001D432 # if( prt_error ) {
323: 315 0001D432 5d effffffd50 tstl _prt_error
324: 316 0001D438 21 03 13 00cb jeql L259
325: 317 0001D43D # writes(" \n"); /* start a new print line */
326: 318 0001D43D .data 1
327: 319 0000099d * L260:
328: 320 0000099d * 200A00 .ascii " \12\0"
329: 321 000009a0 * .text
330: 322 0001D43D dd 8f0000099d pushl $L260
331: 323 0001D443 fe 08 effffffd3e callf $8,_writes
332: 324 0001D44A # writes("cycle: ");
333: 325 0001D44A .data 1
334: 326 000009a0 * L261:
335: 327 000009a0 * 6379636C653A2000 .ascii "cycle: \0"
336: 328 000009a8 * .text
337: 329 0001D44A dd 8f000009a0 pushl $L261
338: 330 0001D450 fe 08 effffffd31 callf $8,_writes
339: 331 0001D457 # writed( cycle );
340: 332 0001D457 dd effffffd2b pushl _cycle
341: 333 0001D45D fe 08 effffffd24 callf $8,_writed
342: 334 0001D464 # writes(" CVLD test ");
343: 335 0001D464 .data 1
344: 336 000009a8 * L262:
345: 337 000009a8 * 202043564C442074657374200 .ascii " CVLD test \0"
346: 0
347: 338 000009b5 * .text
348: 339 0001D464 dd 8f000009a8 pushl $L262
349: 340 0001D46A fe 08 effffffd17 callf $8,_writes
350: 341 0001D471 # writed( test_no );
351: 342 0001D471 dd effffffd11 pushl _test_no
352: 343 0001D477 fe 08 effffffd0a callf $8,_writed
353: 344 0001D47E # writes(", subtest 2 (Cache Data) - BAD FINAL ACC\n");
354: 345 0001D47E .data 1
355: 346 000009b5 * L263:
356: 347 000009b5 * 2C20737562746573742032202 .ascii ", subtest 2 (Cache Data) - BAD FINAL ACC\12\0"
357: 8436163686520446174612920
358: 2D204241442046494E414C204
359: 143430A00
360: 348 000009df * .text
361: 349 0001D47E dd 8f000009b5 pushl $L263
362: 350 0001D484 fe 08 effffffcfd callf $8,_writes
363: 351 0001D48B # print_cvld_data();
364: 352 0001D48B fe 04 ef00000492 callf $4,_print_cvld_data
365: 353 0001D492 # writes(", index = ");
366: 354 0001D492 .data 1
367: 355 000009df * L264:
368: 356 000009df * 2C202020696E646578203D200 .ascii ", index = \0"
369: 0
370: 357 000009ec * .text
371: 358 0001D492 dd 8f000009df pushl $L264
372: 359 0001D498 fe 08 effffffce9 callf $8,_writes
373: 360 0001D49F # writed( index );
374: 361 0001D49F dd effffffce3 pushl _index
375: 362 0001D4A5 fe 08 effffffcdc callf $8,_writed
376: 363 0001D4AC # writec('\n');
377: 364 0001D4AC dd 0a pushl $10
378: 365 0001D4AE fe 08 effffffcd3 callf $8,_writec
379: 366 0001D4B5 # writes(" operand = ");
380: 367 0001D4B5 .data 1
381: 368 000009ec * L265:
382: 369 000009ec * 202020206F706572616E64203 .ascii " operand = \0"
383: D2000
384: 370 000009fb * .text
385: 371 0001D4B5 dd 8f000009ec pushl $L265
386: 372 0001D4BB fe 08 effffffcc6 callf $8,_writes
387: 373 0001D4C2 # write32h( sgl_value_1 );
388: 374 0001D4C2 dd effffffcc0 pushl _sgl_value_1
389: 375 0001D4C8 fe 08 effffffcb9 callf $8,_write32h
390: 376 0001D4CF # writes(" expected Acc = ");
391: 377 0001D4CF .data 1
392: 378 000009fb * L266:
393: 379 000009fb * 2020202020202020202065787 .ascii " expected Acc = \0"
394: 0656374656420416363203D20
395: 00
396: 380 00000a15 * .text
397: 381 0001D4CF dd 8f000009fb pushl $L266
398: 382 0001D4D5 fe 08 effffffcac callf $8,_writes
399: 383 0001D4DC # write32h( dbl_expected.m );
400: 384 0001D4DC dd effffffca6 pushl _dbl_expected
401: 385 0001D4E2 fe 08 effffffc9f callf $8,_write32h
402: 386 0001D4E9 # writec(' ');
403: 387 0001D4E9 dd 20 pushl $32
404: 388 0001D4EB fe 08 effffffc96 callf $8,_writec
405: 389 0001D4F2 # write32h( dbl_expected.l );
406: 390 0001D4F2 dd effffffc94 pushl _dbl_expected+4
407: 391 0001D4F8 fe 08 effffffc89 callf $8,_write32h
408: 392 0001D4FF # writec('\n');
409: 393 0001D4FF dd 0a pushl $10
410: 394 0001D501 fe 08 effffffc80 callf $8,_writec
411: 395 0001D508 # }
412: 396 0001D508 # if( halt_flg )
413: 397 0001D508 L259:
414: 398 0001D508 5d effffffc7a tstl _halt_flg
415: 399 0001D50E 31 09 jeql L267
416: 400 0001D510 # cvld_er_halt( BAD_ACC_HLT ); /* halt on the error */
417: 401 0001D510 dd 01 pushl $1
418: 402 0001D512 fe 08 ef00000473 callf $8,_cvld_er_halt
419: 403 0001D519 # if( loop_on_err ) {
420: 404 0001D519 L267:
421: 405 0001D519 5d effffffc69 tstl _loop_on_err
422: 406 0001D51F 31 0a jeql L268
423: 407 0001D521 # force_loop = TRUE; /* set the force loop flag */
424: 408 0001D521 0d 01 effffffc60 movl $1,_force_loop
425: 409 0001D528 # asm("brw _cvld_2_lp1");; /* and loop on the error */
426: 410 0001D528 13 fec8 brw _cvld_2_lp1
427: 411 0001D52B # } /* end of loop on error */
428: 412 0001D52B # } /* end of compare error */
429: 413 0001D52B L268:
430: 414 0001D52B # } while( index++ < max_cvld_1_index ); /* end of WHILE loop */
431: 415 0001D52B L258:
432: 416 0001D52B L255:
433: 417 0001D52B 0d effffffc57 50 movl _index,r0
434: 418 0001D532 6d effffffc50 incl _index
435: 419 0001D538 1d 50 effffffc49 cmpl r0,_max_cvld_1_index
436: 420 0001D53F 81 03 13 fe6c jlss L256
437: 421 0001D544 L254:
438: 422 0001D544 # } /* end of subtest 2 */
439: 423 0001D544 40 ret#2
440: 424 0001D545 .set L250,0x0
441: 425 0001D545 L252:
442: 426 0001D545 13 fe55 jbr L253
443: 427 0001D548 .data
444: 428 00000920 * .text
445: 429 0001D548 .align 1
446: 430 0001D548 .globl _cvld_3
447: 431 0001D548 _cvld_3:
448: 432 0001D548 0000 .word L269
449: 433 0001D54A #
450: 434 0001D54A #
451: 435 0001D54A #
452: 436 0001D54A # /************************************************************************
453: 437 0001D54A # *
454: 438 0001D54A # * SUBTEST 3 - Check for register corruption
455: 439 0001D54A # *
456: 440 0001D54A # ************************************************************************/
457: 441 0001D54A # cvld_3()
458: 442 0001D54A # {
459: 443 0001D54A 13 01f0 jbr L271
460: 444 0001D54D L272:
461: 445 0001D54D # force_loop = FALSE; /* clear force_loop flg */
462: 446 0001D54D 4d effffffc35 clrl _force_loop
463: 447 0001D553 # subtest = 3;
464: 448 0001D553 0d 03 effffffc2e movl $3,_subtest
465: 449 0001D55A # fill_reg_buf( load_regs ); /* get patterns for regs */
466: 450 0001D55A dd 8f00000000 pushl $_load_regs
467: 451 0001D560 fe 08 effffffc21 callf $8,_fill_reg_buf
468: 452 0001D567 # index = 0;
469: 453 0001D567 4d effffffc1b clrl _index
470: 454 0001D56D # dbl_ld_acc.m = 0xffffffff; /* get an initial value */
471: 455 0001D56D ec 01 effffffc14 mnegl $1,_dbl_ld_acc
472: 456 0001D574 # dbl_ld_acc.l = 0xfff0fff0; /* for the accumulator */
473: 457 0001D574 0d 8ffff0fff0 effffffc0d movl $-983056,_dbl_ld_acc+4
474: 458 0001D57F # sgl_value_1 = cvld_1_data[index].ld; /* get the operand */
475: 459 0001D57F 5c 0c effffffc02 50 mull3 $12,_index,r0
476: 460 0001D587 0d e000000000 effffffbf6 movl _cvld_1_data(r0),_sgl_value_1
477: 461 0001D592 # dbl_expected = cvld_1_data[index].exp; /* get expected result */
478: 462 0001D592 5c 0c effffffbef 50 mull3 $12,_index,r0
479: 463 0001D59A 0c 8f00000004 50 addl2 $_cvld_1_data+4,r0
480: 464 0001D5A1 0d a004 effffffbe3 movl 4(r0),_dbl_expected+4
481: 465 0001D5A9 0d 60 effffffbd8 movl (r0),_dbl_expected
482: 466 0001D5B0 # /*
483: 467 0001D5B0 # * If LOOP ON ERROR is set, this is the loop for this subtest.
484: 468 0001D5B0 # * The force loop flag is set after the first error.
485: 469 0001D5B0 # */
486: 470 0001D5B0 # asm("_cvld_3_lp1:");
487: 471 0001D5B0 _cvld_3_lp1:
488: 472 0001D5B0 # asm("ldd _dbl_ld_acc"); /* load base value */
489: 473 0001D5B0 07 effffffbd2 ldd _dbl_ld_acc
490: 474 0001D5B6 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
491: 475 0001D5B6 ab 891fff effffffbc9 loadr $0x1fff,_load_regs
492: 476 0001D5BF # asm("nop");
493: 477 0001D5BF 10 nop
494: 478 0001D5C0 # asm("cvld _sgl_value_1"); /* convert the value */
495: 479 0001D5C0 77 effffffbc2 cvld _sgl_value_1
496: 480 0001D5C6 # asm("nop");
497: 481 0001D5C6 10 nop
498: 482 0001D5C7 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
499: 483 0001D5C7 bb 891fff effffffbb8 storer $0x1fff,_store_regs
500: 484 0001D5D0 # asm("std _dbl_st_acc"); /* save the accumulator */
501: 485 0001D5D0 27 effffffbb2 std _dbl_st_acc
502: 486 0001D5D6 # if( force_loop )
503: 487 0001D5D6 5d effffffbac tstl _force_loop
504: 488 0001D5DC 31 02 jeql L274
505: 489 0001D5DE # asm("brb _cvld_3_lp1");; /* loop on the error */
506: 490 0001D5DE 11 d0 brb _cvld_3_lp1
507: 491 0001D5E0 L274:
508: 492 0001D5E0 # /*
509: 493 0001D5E0 # * Now compare the stored register values to those that were loaded
510: 494 0001D5E0 # */
511: 495 0001D5E0 # index2 = 0;
512: 496 0001D5E0 4d effffffba2 clrl _index2
513: 497 0001D5E6 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
514: 498 0001D5E6 L275:
515: 499 0001D5E6 0d effffffb9c 50 movl _index2,r0
516: 500 0001D5ED 0d effffffb95 51 movl _index2,r1
517: 501 0001D5F4 1d 40effffffb8d cmpl _load_regs[r0],_store_regs[r1]
518: 41effffffb87
519: 502 0001D601 21 11 jneq L276
520: 503 0001D603 1d effffffb7f 0d cmpl _index2,$13
521: 504 0001D60A 81 08 jgeq L276
522: 505 0001D60C # index2++; /* check reg values */
523: 506 0001D60C 6d effffffb76 incl _index2
524: 507 0001D612 11 d2 jbr L275
525: 508 0001D614 L276:
526: 509 0001D614 # if( index2 < 13 ) { /* error if index2 < 13 */
527: 510 0001D614 1d effffffb6e 0d cmpl _index2,$13
528: 511 0001D61B 91 03 13 011c jgeq L277
529: 512 0001D620 # errcnt++; /* bump the error count */
530: 513 0001D620 6d effffffb62 incl _errcnt
531: 514 0001D626 # if( prt_error ) {
532: 515 0001D626 5d effffffb5c tstl _prt_error
533: 516 0001D62C 21 03 13 00e8 jeql L278
534: 517 0001D631 # writes(" \n"); /* start a new print line */
535: 518 0001D631 .data 1
536: 519 00000a15 * L279:
537: 520 00000a15 * 200A00 .ascii " \12\0"
538: 521 00000a18 * .text
539: 522 0001D631 dd 8f00000a15 pushl $L279
540: 523 0001D637 fe 08 effffffb4a callf $8,_writes
541: 524 0001D63E # writes("cycle: ");
542: 525 0001D63E .data 1
543: 526 00000a18 * L280:
544: 527 00000a18 * 6379636C653A2000 .ascii "cycle: \0"
545: 528 00000a20 * .text
546: 529 0001D63E dd 8f00000a18 pushl $L280
547: 530 0001D644 fe 08 effffffb3d callf $8,_writes
548: 531 0001D64B # writed( cycle );
549: 532 0001D64B dd effffffb37 pushl _cycle
550: 533 0001D651 fe 08 effffffb30 callf $8,_writed
551: 534 0001D658 # writes(" CVLD test ");
552: 535 0001D658 .data 1
553: 536 00000a20 * L281:
554: 537 00000a20 * 202043564C442074657374200 .ascii " CVLD test \0"
555: 0
556: 538 00000a2d * .text
557: 539 0001D658 dd 8f00000a20 pushl $L281
558: 540 0001D65E fe 08 effffffb23 callf $8,_writes
559: 541 0001D665 # writed( test_no );
560: 542 0001D665 dd effffffb1d pushl _test_no
561: 543 0001D66B fe 08 effffffb16 callf $8,_writed
562: 544 0001D672 # writes(", subtest 3 - A REGISTER WAS MODIFIED\n");
563: 545 0001D672 .data 1
564: 546 00000a2d * L282:
565: 547 00000a2d * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS MODIFIED\12\0"
566: D204120524547495354455220
567: 574153204D4F4449464945440
568: A00
569: 548 00000a54 * .text
570: 549 0001D672 dd 8f00000a2d pushl $L282
571: 550 0001D678 fe 08 effffffb09 callf $8,_writes
572: 551 0001D67F # print_cvld_data();
573: 552 0001D67F fe 04 ef0000029e callf $4,_print_cvld_data
574: 553 0001D686 # writec('\n');
575: 554 0001D686 dd 0a pushl $10
576: 555 0001D688 fe 08 effffffaf9 callf $8,_writec
577: 556 0001D68F # writes(" operand = ");
578: 557 0001D68F .data 1
579: 558 00000a54 * L283:
580: 559 00000a54 * 202020206F706572616E64203 .ascii " operand = \0"
581: D2000
582: 560 00000a63 * .text
583: 561 0001D68F dd 8f00000a54 pushl $L283
584: 562 0001D695 fe 08 effffffaec callf $8,_writes
585: 563 0001D69C # write32h( sgl_value_1 );
586: 564 0001D69C dd effffffae6 pushl _sgl_value_1
587: 565 0001D6A2 fe 08 effffffadf callf $8,_write32h
588: 566 0001D6A9 # writec('\n');
589: 567 0001D6A9 dd 0a pushl $10
590: 568 0001D6AB fe 08 effffffad6 callf $8,_writec
591: 569 0001D6B2 # writes("register "); /* print the information */
592: 570 0001D6B2 .data 1
593: 571 00000a63 * L284:
594: 572 00000a63 * 72656769737465722000 .ascii "register \0"
595: 573 00000a6d * .text
596: 574 0001D6B2 dd 8f00000a63 pushl $L284
597: 575 0001D6B8 fe 08 effffffac9 callf $8,_writes
598: 576 0001D6BF # writed( index2 ); /* about the corrupted */
599: 577 0001D6BF dd effffffac3 pushl _index2
600: 578 0001D6C5 fe 08 effffffabc callf $8,_writed
601: 579 0001D6CC # writes(" = "); /* register */
602: 580 0001D6CC .data 1
603: 581 00000a6d * L285:
604: 582 00000a6d * 203D2000 .ascii " = \0"
605: 583 00000a71 * .text
606: 584 0001D6CC dd 8f00000a6d pushl $L285
607: 585 0001D6D2 fe 08 effffffaaf callf $8,_writes
608: 586 0001D6D9 # write32h( store_regs[index2] );
609: 587 0001D6D9 0d effffffaa9 50 movl _index2,r0
610: 588 0001D6E0 dd 40effffffaa1 pushl _store_regs[r0]
611: 589 0001D6E7 fe 08 effffffa9a callf $8,_write32h
612: 590 0001D6EE # writes(", should be = ");
613: 591 0001D6EE .data 1
614: 592 00000a71 * L286:
615: 593 00000a71 * 2C202073686F756C642062652 .ascii ", should be = \0"
616: 03D2000
617: 594 00000a81 * .text
618: 595 0001D6EE dd 8f00000a71 pushl $L286
619: 596 0001D6F4 fe 08 effffffa8d callf $8,_writes
620: 597 0001D6FB # write32h( load_regs[index2] );
621: 598 0001D6FB 0d effffffa87 50 movl _index2,r0
622: 599 0001D702 dd 40effffffa7f pushl _load_regs[r0]
623: 600 0001D709 fe 08 effffffa78 callf $8,_write32h
624: 601 0001D710 # writec('\n');
625: 602 0001D710 dd 0a pushl $10
626: 603 0001D712 fe 08 effffffa6f callf $8,_writec
627: 604 0001D719 # }
628: 605 0001D719 # if( halt_flg )
629: 606 0001D719 L278:
630: 607 0001D719 5d effffffa69 tstl _halt_flg
631: 608 0001D71F 31 09 jeql L287
632: 609 0001D721 # cvld_er_halt( BAD_REG_HLT ); /* halt on the error */
633: 610 0001D721 dd 02 pushl $2
634: 611 0001D723 fe 08 ef00000262 callf $8,_cvld_er_halt
635: 612 0001D72A # if( loop_on_err ) {
636: 613 0001D72A L287:
637: 614 0001D72A 5d effffffa58 tstl _loop_on_err
638: 615 0001D730 31 0a jeql L288
639: 616 0001D732 # force_loop = TRUE; /* set the force loop flag */
640: 617 0001D732 0d 01 effffffa4f movl $1,_force_loop
641: 618 0001D739 # asm("brw _cvld_3_lp1");; /* and loop on the error */
642: 619 0001D739 13 fe74 brw _cvld_3_lp1
643: 620 0001D73C # } /* end of loop on error */
644: 621 0001D73C # } /* end of register corruption error */
645: 622 0001D73C L288:
646: 623 0001D73C # } /* end of subtest 3 */
647: 624 0001D73C L277:
648: 625 0001D73C 40 ret#2
649: 626 0001D73D .set L269,0x0
650: 627 0001D73D L271:
651: 628 0001D73D 13 fe0d jbr L272
652: 629 0001D740 .data
653: 630 00000920 * .text
654: 631 0001D740 .align 1
655: 632 0001D740 .globl _cvld_4
656: 633 0001D740 _cvld_4:
657: 634 0001D740 0000 .word L289
658: 635 0001D742 #
659: 636 0001D742 #
660: 637 0001D742 #
661: 638 0001D742 # /************************************************************************
662: 639 0001D742 # *
663: 640 0001D742 # * SUBTEST 4 - Check for PSL corruption
664: 641 0001D742 # *
665: 642 0001D742 # ************************************************************************/
666: 643 0001D742 # cvld_4()
667: 644 0001D742 # {
668: 645 0001D742 13 01dc jbr L291
669: 646 0001D745 L292:
670: 647 0001D745 # force_loop = FALSE; /* clear force_loop flg */
671: 648 0001D745 4d effffffa3d clrl _force_loop
672: 649 0001D74B # subtest = 4;
673: 650 0001D74B 0d 04 effffffa36 movl $4,_subtest
674: 651 0001D752 # fill_reg_buf( load_regs ); /* get patterns for regs */
675: 652 0001D752 dd 8f00000000 pushl $_load_regs
676: 653 0001D758 fe 08 effffffa29 callf $8,_fill_reg_buf
677: 654 0001D75F # for( index = 0; index < 3; index++ ) {
678: 655 0001D75F 4d effffffa23 clrl _index
679: 656 0001D765 L295:
680: 657 0001D765 1d effffffa1d 03 cmpl _index,$3
681: 658 0001D76C 91 03 13 01af jgeq L294
682: 659 0001D771 # dbl_ld_acc.m = 0xffffffff; /* get an initial value */
683: 660 0001D771 ec 01 effffffa10 mnegl $1,_dbl_ld_acc
684: 661 0001D778 # dbl_ld_acc.l = 0xfff0fff0; /* for the accumulator */
685: 662 0001D778 0d 8ffff0fff0 effffffa09 movl $-983056,_dbl_ld_acc+4
686: 663 0001D783 # sgl_value_1 = cvld_1_data[index].ld; /* get the operand */
687: 664 0001D783 5c 0c effffff9fe 50 mull3 $12,_index,r0
688: 665 0001D78B 0d e000000000 effffff9f2 movl _cvld_1_data(r0),_sgl_value_1
689: 666 0001D796 # dbl_expected = cvld_1_data[index].exp; /* get expected */
690: 667 0001D796 5c 0c effffff9eb 50 mull3 $12,_index,r0
691: 668 0001D79E 0c 8f00000004 50 addl2 $_cvld_1_data+4,r0
692: 669 0001D7A5 0d a004 effffff9df movl 4(r0),_dbl_expected+4
693: 670 0001D7AD 0d 60 effffff9d4 movl (r0),_dbl_expected
694: 671 0001D7B4 # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */
695: 672 0001D7B4 0d effffff9ce 50 movl _status_index,r0
696: 673 0001D7BB 0d 40effffff9c6 movl _status_array[r0],_sgl_dummy1
697: effffff9c1
698: 674 0001D7C7 # /*
699: 675 0001D7C7 # * If LOOP ON ERROR is set, this is the loop for this subtest.
700: 676 0001D7C7 # * The force loop flag is set after the first error.
701: 677 0001D7C7 # */
702: 678 0001D7C7 # asm("_cvld_4_lp1:");
703: 679 0001D7C7 _cvld_4_lp1:
704: 680 0001D7C7 # asm("ldd _dbl_ld_acc"); /* load the base value */
705: 681 0001D7C7 07 effffff9bb ldd _dbl_ld_acc
706: 682 0001D7CD # asm("tstl _sgl_dummy1"); /* set the PSL status */
707: 683 0001D7CD 5d effffff9b5 tstl _sgl_dummy1
708: 684 0001D7D3 # asm("movpsl _init_psl"); /* save the initial PSL */
709: 685 0001D7D3 cd effffff9af movpsl _init_psl
710: 686 0001D7D9 # asm("nop");
711: 687 0001D7D9 10 nop
712: 688 0001D7DA # asm("cvld _sgl_value_1"); /* convert the value */
713: 689 0001D7DA 77 effffff9a8 cvld _sgl_value_1
714: 690 0001D7E0 # asm("nop");
715: 691 0001D7E0 10 nop
716: 692 0001D7E1 # asm("movpsl _psl_val"); /* save the final PSL */
717: 693 0001D7E1 cd effffff9a1 movpsl _psl_val
718: 694 0001D7E7 # asm("std _dbl_st_acc"); /* save the accumulator */
719: 695 0001D7E7 27 effffff99b std _dbl_st_acc
720: 696 0001D7ED # if( force_loop )
721: 697 0001D7ED 5d effffff995 tstl _force_loop
722: 698 0001D7F3 31 02 jeql L296
723: 699 0001D7F5 # asm("brb _cvld_4_lp1");; /* loop on the error */
724: 700 0001D7F5 11 d0 brb _cvld_4_lp1
725: 701 0001D7F7 L296:
726: 702 0001D7F7 # /*
727: 703 0001D7F7 # * Now compare the final PSL to the initial PSL -they should be the same
728: 704 0001D7F7 # */
729: 705 0001D7F7 # if( psl_val != init_psl ) {
730: 706 0001D7F7 1d effffff98b effffff986 cmpl _psl_val,_init_psl
731: 707 0001D802 21 03 13 0110 jeql L297
732: 708 0001D807 # errcnt++; /* bump the error count */
733: 709 0001D807 6d effffff97b incl _errcnt
734: 710 0001D80D # if( prt_error ) {
735: 711 0001D80D 5d effffff975 tstl _prt_error
736: 712 0001D813 21 03 13 00dc jeql L298
737: 713 0001D818 # writes(" \n"); /* start a new print line */
738: 714 0001D818 .data 1
739: 715 00000a81 * L299:
740: 716 00000a81 * 200A00 .ascii " \12\0"
741: 717 00000a84 * .text
742: 718 0001D818 dd 8f00000a81 pushl $L299
743: 719 0001D81E fe 08 effffff963 callf $8,_writes
744: 720 0001D825 # writes("cycle: ");
745: 721 0001D825 .data 1
746: 722 00000a84 * L300:
747: 723 00000a84 * 6379636C653A2000 .ascii "cycle: \0"
748: 724 00000a8c * .text
749: 725 0001D825 dd 8f00000a84 pushl $L300
750: 726 0001D82B fe 08 effffff956 callf $8,_writes
751: 727 0001D832 # writed( cycle );
752: 728 0001D832 dd effffff950 pushl _cycle
753: 729 0001D838 fe 08 effffff949 callf $8,_writed
754: 730 0001D83F # writes(" CVLD test ");
755: 731 0001D83F .data 1
756: 732 00000a8c * L301:
757: 733 00000a8c * 202043564C442074657374200 .ascii " CVLD test \0"
758: 0
759: 734 00000a99 * .text
760: 735 0001D83F dd 8f00000a8c pushl $L301
761: 736 0001D845 fe 08 effffff93c callf $8,_writes
762: 737 0001D84C # writed( test_no );
763: 738 0001D84C dd effffff936 pushl _test_no
764: 739 0001D852 fe 08 effffff92f callf $8,_writed
765: 740 0001D859 # writes(", subtest 4 - INCORRECT FINAL PSL\n");
766: 741 0001D859 .data 1
767: 742 00000a99 * L302:
768: 743 00000a99 * 2C20737562746573742034202 .ascii ", subtest 4 - INCORRECT FINAL PSL\12\0"
769: D20494E434F52524543542046
770: 494E414C2050534C0A00
771: 744 00000abc * .text
772: 745 0001D859 dd 8f00000a99 pushl $L302
773: 746 0001D85F fe 08 effffff922 callf $8,_writes
774: 747 0001D866 # print_cvld_data(); /* print the operands */
775: 748 0001D866 fe 04 ef000000b7 callf $4,_print_cvld_data
776: 749 0001D86D # writec('\n');
777: 750 0001D86D dd 0a pushl $10
778: 751 0001D86F fe 08 effffff912 callf $8,_writec
779: 752 0001D876 # writes(" operand = ");
780: 753 0001D876 .data 1
781: 754 00000abc * L303:
782: 755 00000abc * 202020206F706572616E64203 .ascii " operand = \0"
783: D2000
784: 756 00000acb * .text
785: 757 0001D876 dd 8f00000abc pushl $L303
786: 758 0001D87C fe 08 effffff905 callf $8,_writes
787: 759 0001D883 # write32h( sgl_value_1 );
788: 760 0001D883 dd effffff8ff pushl _sgl_value_1
789: 761 0001D889 fe 08 effffff8f8 callf $8,_write32h
790: 762 0001D890 # writec('\n');
791: 763 0001D890 dd 0a pushl $10
792: 764 0001D892 fe 08 effffff8ef callf $8,_writec
793: 765 0001D899 # writes("initial PSL = ");
794: 766 0001D899 .data 1
795: 767 00000acb * L304:
796: 768 00000acb * 696E697469616C2050534C203 .ascii "initial PSL = \0"
797: D2000
798: 769 00000ada * .text
799: 770 0001D899 dd 8f00000acb pushl $L304
800: 771 0001D89F fe 08 effffff8e2 callf $8,_writes
801: 772 0001D8A6 # write32h( init_psl );
802: 773 0001D8A6 dd effffff8dc pushl _init_psl
803: 774 0001D8AC fe 08 effffff8d5 callf $8,_write32h
804: 775 0001D8B3 # writes(", final PSL = ");
805: 776 0001D8B3 .data 1
806: 777 00000ada * L305:
807: 778 00000ada * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
808: 03D2000
809: 779 00000aea * .text
810: 780 0001D8B3 dd 8f00000ada pushl $L305
811: 781 0001D8B9 fe 08 effffff8c8 callf $8,_writes
812: 782 0001D8C0 # write32h( psl_val );
813: 783 0001D8C0 dd effffff8c2 pushl _psl_val
814: 784 0001D8C6 fe 08 effffff8bb callf $8,_write32h
815: 785 0001D8CD # writes(", expected PSL = ");
816: 786 0001D8CD .data 1
817: 787 00000aea * L306:
818: 788 00000aea * 2C20206578706563746564205 .ascii ", expected PSL = \0"
819: 0534C203D2000
820: 789 00000afd * .text
821: 790 0001D8CD dd 8f00000aea pushl $L306
822: 791 0001D8D3 fe 08 effffff8ae callf $8,_writes
823: 792 0001D8DA # write32h( psl_val );
824: 793 0001D8DA dd effffff8a8 pushl _psl_val
825: 794 0001D8E0 fe 08 effffff8a1 callf $8,_write32h
826: 795 0001D8E7 # writes("\n");
827: 796 0001D8E7 .data 1
828: 797 00000afd * L307:
829: 798 00000afd * 0A00 .ascii "\12\0"
830: 799 00000aff * .text
831: 800 0001D8E7 dd 8f00000afd pushl $L307
832: 801 0001D8ED fe 08 effffff894 callf $8,_writes
833: 802 0001D8F4 # }
834: 803 0001D8F4 # if( halt_flg )
835: 804 0001D8F4 L298:
836: 805 0001D8F4 5d effffff88e tstl _halt_flg
837: 806 0001D8FA 31 09 jeql L308
838: 807 0001D8FC # cvld_er_halt( BAD_PSL_HLT ); /* halt on the error */
839: 808 0001D8FC dd 03 pushl $3
840: 809 0001D8FE fe 08 ef00000087 callf $8,_cvld_er_halt
841: 810 0001D905 # if( loop_on_err ) {
842: 811 0001D905 L308:
843: 812 0001D905 5d effffff87d tstl _loop_on_err
844: 813 0001D90B 31 0a jeql L309
845: 814 0001D90D # force_loop = TRUE; /* set the force loop flag */
846: 815 0001D90D 0d 01 effffff874 movl $1,_force_loop
847: 816 0001D914 # asm("brw _cvld_4_lp1");; /* and loop on the error */
848: 817 0001D914 13 feb0 brw _cvld_4_lp1
849: 818 0001D917 # } /* end of loop on error */
850: 819 0001D917 # } /* end of PSL corruption error */
851: 820 0001D917 L309:
852: 821 0001D917 # } /* end of WHILE loop */
853: 822 0001D917 L297:
854: 823 0001D917 L293:
855: 824 0001D917 6d effffff86b incl _index
856: 825 0001D91D 13 fe45 jbr L295
857: 826 0001D920 L294:
858: 827 0001D920 # } /* end of subtest 4 */
859: 828 0001D920 40 ret#2
860: 829 0001D921 .set L289,0x0
861: 830 0001D921 L291:
862: 831 0001D921 13 fe21 jbr L292
863: 832 0001D924 .data
864: 833 00000920 * .text
865: 834 0001D924 .align 1
866: 835 0001D924 .globl _print_cvld_data
867: 836 0001D924 _print_cvld_data:
868: 837 0001D924 0000 .word L310
869: 838 0001D926 #
870: 839 0001D926 #
871: 840 0001D926 #
872: 841 0001D926 # /**************************************************************************
873: 842 0001D926 # *
874: 843 0001D926 # * PRINT THE DATA AND STORE RESULTS
875: 844 0001D926 # *
876: 845 0001D926 # * initial Acc = xxxxxxxx xxxxxxxx, final Acc = xxxxxxxx xxxxxxxx
877: 846 0001D926 # **************************************************************************/
878: 847 0001D926 # print_cvld_data()
879: 848 0001D926 # {
880: 849 0001D926 11 61 jbr L312
881: 850 0001D928 L313:
882: 851 0001D928 # writes("initial Acc = ");
883: 852 0001D928 .data 1
884: 853 00000aff * L314:
885: 854 00000aff * 696E697469616C20416363203 .ascii "initial Acc = \0"
886: D2000
887: 855 00000b0e * .text
888: 856 0001D928 dd 8f00000aff pushl $L314
889: 857 0001D92E fe 08 effffff853 callf $8,_writes
890: 858 0001D935 # write32h( dbl_ld_acc.m );
891: 859 0001D935 dd effffff84d pushl _dbl_ld_acc
892: 860 0001D93B fe 08 effffff846 callf $8,_write32h
893: 861 0001D942 # writec(' ');
894: 862 0001D942 dd 20 pushl $32
895: 863 0001D944 fe 08 effffff83d callf $8,_writec
896: 864 0001D94B # write32h( dbl_ld_acc.l );
897: 865 0001D94B dd effffff83b pushl _dbl_ld_acc+4
898: 866 0001D951 fe 08 effffff830 callf $8,_write32h
899: 867 0001D958 # writes(", final Acc = ");
900: 868 0001D958 .data 1
901: 869 00000b0e * L315:
902: 870 00000b0e * 2C202066696E616C204163632 .ascii ", final Acc = \0"
903: 03D2000
904: 871 00000b1e * .text
905: 872 0001D958 dd 8f00000b0e pushl $L315
906: 873 0001D95E fe 08 effffff823 callf $8,_writes
907: 874 0001D965 # write32h( dbl_st_acc.m );
908: 875 0001D965 dd effffff81d pushl _dbl_st_acc
909: 876 0001D96B fe 08 effffff816 callf $8,_write32h
910: 877 0001D972 # writec(' ');
911: 878 0001D972 dd 20 pushl $32
912: 879 0001D974 fe 08 effffff80d callf $8,_writec
913: 880 0001D97B # write32h( dbl_st_acc.l );
914: 881 0001D97B dd effffff80b pushl _dbl_st_acc+4
915: 882 0001D981 fe 08 effffff800 callf $8,_write32h
916: 883 0001D988 # }
917: 884 0001D988 40 ret#2
918: 885 0001D989 .set L310,0x0
919: 886 0001D989 L312:
920: 887 0001D989 11 9d jbr L313
921: 888 0001D98B .data
922: 889 00000920 * .text
923: 890 0001D98B 00 .align 1
924: 891 0001D98C .globl _cvld_er_halt
925: 892 0001D98C _cvld_er_halt:
926: 893 0001D98C 0000 .word L316
927: 894 0001D98E #
928: 895 0001D98E #
929: 896 0001D98E #
930: 897 0001D98E # /**************************************************************************
931: 898 0001D98E # *
932: 899 0001D98E # * HALT ON ERROR ROUTINE
933: 900 0001D98E # *
934: 901 0001D98E # **************************************************************************/
935: 902 0001D98E # cvld_er_halt( halt_code )
936: 903 0001D98E # int halt_code;
937: 904 0001D98E # {
938: 905 0001D98E 13 0111 jbr L318
939: 906 0001D991 L319:
940: 907 0001D991 # sgl_value_1 = dbl_ld_acc.m;
941: 908 0001D991 0d effffff7f1 effffff7ec movl _dbl_ld_acc,_sgl_value_1
942: 909 0001D99C # sgl_value_2 = dbl_ld_acc.l;
943: 910 0001D99C 0d effffff7ea effffff7e1 movl _dbl_ld_acc+4,_sgl_value_2
944: 911 0001D9A7 # sgl_value_3 = sgl_value_1;
945: 912 0001D9A7 0d effffff7db effffff7d6 movl _sgl_value_1,_sgl_value_3
946: 913 0001D9B2 # sgl_value_4 = dbl_st_acc.m;
947: 914 0001D9B2 0d effffff7d0 effffff7cb movl _dbl_st_acc,_sgl_value_4
948: 915 0001D9BD # sgl_value_5 = dbl_st_acc.l;
949: 916 0001D9BD 0d effffff7c9 effffff7c0 movl _dbl_st_acc+4,_sgl_value_5
950: 917 0001D9C8 # sgl_dummy1 = halt_code; /* get the error type */
951: 918 0001D9C8 0d ad04 effffff7b8 movl 4(fp),_sgl_dummy1
952: 919 0001D9D0 # asm("movl _test_no,r0"); /* r0 = test number */
953: 920 0001D9D0 0d effffff7b2 50 movl _test_no,r0
954: 921 0001D9D7 # asm("movl _subtest,r1"); /* r1 = subtest number */
955: 922 0001D9D7 0d effffff7ab 51 movl _subtest,r1
956: 923 0001D9DE # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
957: 924 0001D9DE 0d effffff7a4 52 movl _sgl_dummy1,r2
958: 925 0001D9E5 # asm("movl _cycle,r3"); /* r3 = cycle count */
959: 926 0001D9E5 0d effffff79d 53 movl _cycle,r3
960: 927 0001D9EC # asm("movl _sgl_value_1,r4"); /* r4 = MS operand 1 */
961: 928 0001D9EC 0d effffff796 54 movl _sgl_value_1,r4
962: 929 0001D9F3 # asm("movl _sgl_value_2,r5"); /* r5 = LS operand 1 */
963: 930 0001D9F3 0d effffff78f 55 movl _sgl_value_2,r5
964: 931 0001D9FA # asm("movl _sgl_value_3,r6"); /* r6 = operand 2 */
965: 932 0001D9FA 0d effffff788 56 movl _sgl_value_3,r6
966: 933 0001DA01 # asm("movl _sgl_value_4,r7"); /* r7 = MS stored */
967: 934 0001DA01 0d effffff781 57 movl _sgl_value_4,r7
968: 935 0001DA08 # asm("movl _sgl_value_5,r8"); /* r8 = LS stored */
969: 936 0001DA08 0d effffff77a 58 movl _sgl_value_5,r8
970: 937 0001DA0F # if( halt_code == BAD_ACC_HLT ) {
971: 938 0001DA0F 1d ad04 01 cmpl 4(fp),$1
972: 939 0001DA13 21 2d jneq L320
973: 940 0001DA15 # sgl_value_1 = dbl_expected.m;
974: 941 0001DA15 0d effffff76d effffff768 movl _dbl_expected,_sgl_value_1
975: 942 0001DA20 # sgl_value_2 = dbl_expected.l;
976: 943 0001DA20 0d effffff766 effffff75d movl _dbl_expected+4,_sgl_value_2
977: 944 0001DA2B # asm("movl _sgl_value_1,r9"); /* r9 = MS expected */
978: 945 0001DA2B 0d effffff757 59 movl _sgl_value_1,r9
979: 946 0001DA32 # asm("movl _sgl_value_2,r10"); /* r10 = LS expected */
980: 947 0001DA32 0d effffff750 5a movl _sgl_value_2,r10
981: 948 0001DA39 # asm("movl _index2,r11"); /* r11 = data index */
982: 949 0001DA39 0d effffff749 5b movl _index2,r11
983: 950 0001DA40 # } else
984: 951 0001DA40 11 5e jbr L321
985: 952 0001DA42 L320:
986: 953 0001DA42 # if( halt_code == BAD_REG_HLT ) {
987: 954 0001DA42 1d ad04 02 cmpl 4(fp),$2
988: 955 0001DA46 21 3d jneq L322
989: 956 0001DA48 # sgl_dummy1 = load_regs[index2];
990: 957 0001DA48 0d effffff73a 50 movl _index2,r0
991: 958 0001DA4F 0d 40effffff732 movl _load_regs[r0],_sgl_dummy1
992: effffff72d
993: 959 0001DA5B # sgl_dummy2 = store_regs[index2];
994: 960 0001DA5B 0d effffff727 50 movl _index2,r0
995: 961 0001DA62 0d 40effffff71f movl _store_regs[r0],_sgl_dummy2
996: effffff71a
997: 962 0001DA6E # asm("movl _index2,r9"); /* r9 = bad register # */
998: 963 0001DA6E 0d effffff714 59 movl _index2,r9
999: 964 0001DA75 # asm("movl _sgl_dummy2,r10"); /* r10 = actual value */
1000: 965 0001DA75 0d effffff70d 5a movl _sgl_dummy2,r10
1001: 966 0001DA7C # asm("movl _sgl_dummy1,r11"); /* r11 = expected value */
1002: 967 0001DA7C 0d effffff706 5b movl _sgl_dummy1,r11
1003: 968 0001DA83 # } else
1004: 969 0001DA83 11 1b jbr L323
1005: 970 0001DA85 L322:
1006: 971 0001DA85 # if( halt_code == BAD_PSL_HLT ) {
1007: 972 0001DA85 1d ad04 03 cmpl 4(fp),$3
1008: 973 0001DA89 21 15 jneq L324
1009: 974 0001DA8B # asm("movl _init_psl,r9"); /* r9 = initial PSL */
1010: 975 0001DA8B 0d effffff6f7 59 movl _init_psl,r9
1011: 976 0001DA92 # asm("movl _psl_val,r10"); /* r10 = final PSL */
1012: 977 0001DA92 0d effffff6f0 5a movl _psl_val,r10
1013: 978 0001DA99 # asm("movl _exp_psl,r11"); /* r11 = expected PSL */
1014: 979 0001DA99 0d effffff6e9 5b movl _exp_psl,r11
1015: 980 0001DAA0 # };
1016: 981 0001DAA0 L324:
1017: 982 0001DAA0 L323:
1018: 983 0001DAA0 L321:
1019: 984 0001DAA0 # asm("halt"); /* HALT ... */
1020: 985 0001DAA0 00 halt
1021: 986 0001DAA1 # }
1022: 987 0001DAA1 40 ret#2
1023: 988 0001DAA2 .set L316,0x0
1024: 989 0001DAA2 L318:
1025: 990 0001DAA2 13 feec jbr L319
1026: 991 0001DAA5 .data
1027: 991 0003AC2D .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.