|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000560 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe10
6: 6 00000000 _pipe10:
7: 7 00012514 0000 .word L381
8: 8 00012516 #
9: 9 00012516 # #include "evt_defs.h"
10: 10 00012516 #
11: 11 00012516 # /*
12: 12 00012516 # *********************************************************************
13: 13 00012516 # * FPP PIPELINED EVENTS TEST #10
14: 14 00012516 # *
15: 15 00012516 # * This test will execute the following code: "LDD MULD CVLF $2"
16: 16 00012516 # * with an underflow fault on the MULD. We will make sure that:
17: 17 00012516 # * 1. The fault is detected, and
18: 18 00012516 # * 2. the convert instruction is not executed.
19: 19 00012516 # *********************************************************************
20: 20 00012516 # */
21: 21 00012516 # pipe10()
22: 22 00012516 # {
23: 23 00012516 13 0129 jbr L383
24: 24 00012519 L384:
25: 25 00012519 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
26: 26 00012519 ed 6d effffffff4 moval (r13),_pre_event_fp
27: 27 00012520 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
28: 28 00012520 ed 6e efffffffed moval (r14),_pre_event_sp
29: 29 00012527 # precision = DBL;
30: 30 00012527 0d 02 efffffffe6 movl $2,_precision
31: 31 0001252E # test_event = ARITH_CODE; /* expect an arithmetic fault */
32: 32 0001252E 0d 34 efffffffdf movl $52,_test_event
33: 33 00012535 # exp_code = FLT_UNDFL_CODE; /* - specificly underflow */
34: 34 00012535 0d 05 efffffffd8 movl $5,_exp_code
35: 35 0001253C # exp_event = FALSE; /* ... but not yet */
36: 36 0001253C 4d efffffffd2 clrl _exp_event
37: 37 00012542 # asm("movab _pipe10_ret,_event_return"); /* set event return address */
38: 38 00012542 e9 ef000000a7 efffffffc7 movab _pipe10_ret,_event_return
39: 39 0001254D # max_index = mud_u_cnt; /* set max operand index */
40: 40 0001254D 0d efffffffc1 efffffffbc movl _mud_u_cnt,_max_index
41: 41 00012558 # for( index = 0; index < max_index; index++ )
42: 42 00012558 4d efffffffb6 clrl _index
43: 43 0001255E L387:
44: 44 0001255E 1d efffffffb0 efffffffab cmpl _index,_max_index
45: 45 00012569 91 03 13 00d3 jgeq L386
46: 46 0001256E # {
47: 47 0001256E # dbl_ld_acc = mud_u_dat[index].op_1; /* get the Acc data */
48: 48 0001256E 48 04 efffffff9f 50 shll $4,_index,r0
49: 49 00012576 0c 8f00000000 50 addl2 $_mud_u_dat,r0
50: 50 0001257D 0d a004 efffffff93 movl 4(r0),_dbl_ld_acc+4
51: 51 00012585 0d 60 efffffff88 movl (r0),_dbl_ld_acc
52: 52 0001258C # dbl_value_1 = mud_u_dat[index].op_2; /* get the B operand */
53: 53 0001258C 48 04 efffffff81 50 shll $4,_index,r0
54: 54 00012594 0c 8f00000008 50 addl2 $_mud_u_dat+8,r0
55: 55 0001259B 0d a004 efffffff75 movl 4(r0),_dbl_value_1+4
56: 56 000125A3 0d 60 efffffff6a movl (r0),_dbl_value_1
57: 57 000125AA # asm("bispsw $0x60"); /* enable ovfl&undfl */
58: 58 000125AA 8b 8860 bispsw $0x60
59: 59 000125AD # asm(".globl _pipe10_lp1");
60: 60 000125AD .globl _pipe10_lp1
61: 61 000125AD # asm("_pipe10_lp1:");
62: 62 000125AD _pipe10_lp1:
63: 63 000125AD # asm("ldd _dbl_ld_acc"); /* load the Acc. */
64: 64 000125AD 07 efffffff61 ldd _dbl_ld_acc
65: 65 000125B3 # exp_event = test_event; /* expect event soon */
66: 66 000125B3 0d efffffff5b efffffff56 movl _test_event,_exp_event
67: 67 000125BE # asm("muld _dbl_value_1"); /* trigger the event */
68: 68 000125BE e7 efffffff50 muld _dbl_value_1
69: 69 000125C4 # asm("cvlf $2"); /* shouldn't get here*/
70: 70 000125C4 76 02 cvlf $2
71: 71 000125C6 # /*
72: 72 000125C6 # * If we got to here then there was no event
73: 73 000125C6 # */
74: 74 000125C6 # if( force_loop )
75: 75 000125C6 5d efffffff48 tstl _force_loop
76: 76 000125CC 31 03 jeql L388
77: 77 000125CE # asm("brw _pipe10_lp1");; /* loop on the error */
78: Assemb00029CD4 # asm("brw _pipe10_lp1");; /* loop on the error */
79: "pipe100012514 e 78: WARNING: brw: destination label is external
80: 78 000125CE 13 ffdc brw _pipe10_lp1
81: 79 000125D1 L388:
82: 80 000125D1 # exp_event = FALSE; /* reset event expected flag */
83: 81 000125D1 4d efffffff3d clrl _exp_event
84: 82 000125D7 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
85: 83 000125D7 0d efffffff37 5d movl _pre_event_fp,fp
86: 84 000125DE # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
87: 85 000125DE 0d efffffff30 5e movl _pre_event_sp,sp
88: 86 000125E5 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
89: 87 000125E5 9b 8860 bicpsw $0x60
90: 88 000125E8 # no_pipe10_evt();; /* report the error */
91: 89 000125E8 fe 04 ef00000057 callf $4,_no_pipe10_evt
92: 90 000125EF # /*
93: 91 000125EF # * Come here after the event
94: 92 000125EF # */
95: 93 000125EF # asm(".globl _pipe10_ret");
96: 94 000125EF .globl _pipe10_ret
97: 95 000125EF # asm("_pipe10_ret:");
98: 96 000125EF _pipe10_ret:
99: 97 000125EF # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
100: 98 000125EF 0d efffffff1f 5d movl _pre_event_fp,fp
101: 99 000125F6 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
102: 100 000125F6 0d efffffff18 5e movl _pre_event_sp,sp
103: 101 000125FD # if( force_loop )
104: 102 000125FD 5d efffffff11 tstl _force_loop
105: 103 00012603 31 03 jeql L390
106: 104 00012605 # asm("brw _pipe10_lp1");; /* loop on the error */
107: "pipe100012514 e 105: WARNING: brw: destination label is external
108: 105 00012605 13 ffa5 brw _pipe10_lp1
109: 106 00012608 L390:
110: 107 00012608 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
111: 108 00012608 9b 8860 bicpsw $0x60
112: 109 0001260B # if( post_evt_acc.m == 0x41000000 ) /* is the Acc. = floating 2? */
113: 110 0001260B 1d efffffff03 8f41000000 cmpl _post_evt_acc,$1090519040
114: 111 00012616 21 09 jneq L391
115: 112 00012618 # pipe10_queue_er(); /* queue not cleared error */
116: 113 00012618 fe 04 ef000001f7 callf $4,_pipe10_queue_er
117: 114 0001261F # else if( (post_evt_acc.m) || (post_evt_acc.l) ) /* is Acc = 0? */
118: 115 0001261F 11 17 jbr L393
119: 116 00012621 L391:
120: 117 00012621 5d effffffeed tstl _post_evt_acc
121: 118 00012627 21 08 jneq L9999
122: 119 00012629 5d effffffee9 tstl _post_evt_acc+4
123: 120 0001262F 31 07 jeql L394
124: 121 00012631 L9999:
125: 122 00012631 # bad_pipe10_result(); /* incorrect result error */
126: 123 00012631 fe 04 ef000000c2 callf $4,_bad_pipe10_result
127: 124 00012638 #
128: 125 00012638 # }
129: 126 00012638 L394:
130: 127 00012638 L393:
131: 128 00012638 L385:
132: 129 00012638 6d effffffed6 incl _index
133: 130 0001263E 13 ff1d jbr L387
134: 131 00012641 L386:
135: 132 00012641 # }
136: 133 00012641 40 ret#2
137: 134 00012642 .set L381,0x0
138: 135 00012642 L383:
139: 136 00012642 13 fed4 jbr L384
140: 137 00012645 .data
141: 138 00000560 * .text
142: 139 00012645 00 .align 1
143: 140 00012646 .globl _no_pipe10_evt
144: 141 00012646 _no_pipe10_evt:
145: 142 00012646 0000 .word L396
146: 143 00012648 #
147: 144 00012648 #
148: 145 00012648 #
149: 146 00012648 # /****************************************************************************
150: 147 00012648 # * Report an "EVENT NOT DETECTED" error
151: 148 00012648 # *
152: 149 00012648 # * Cycle: xx. EVT test xx. subtest xx. index = xx. No underflow fault seen.
153: 150 00012648 # * inst = LDD op1, MULD op2, CVLF '2' (underflow fault on the MULD)
154: 151 00012648 # * op1 = xxxxxxxx xxxxxxxx, op2 = xxxxxxxx xxxxxxxx
155: 152 00012648 # ****************************************************************************/
156: 153 00012648 # no_pipe10_evt()
157: 154 00012648 # {
158: 155 00012648 13 00ab jbr L398
159: 156 0001264B L399:
160: 157 0001264B # errcnt++; /* bump the error count */
161: 158 0001264B 6d effffffec3 incl _errcnt
162: 159 00012651 # if ( prt_error )
163: 160 00012651 5d effffffebd tstl _prt_error
164: 161 00012657 31 76 jeql L400
165: 162 00012659 # {
166: 163 00012659 # print_pipe10_er( ". No underflow fault seen." );
167: 164 00012659 .data 1
168: 165 00000560 * L402:
169: 166 00000560 * 2E204E6F20756E646572666C6 .ascii ". No underflow fault seen.\0"
170: F77206661756C74207365656E
171: 2E00
172: 167 0000057b * .text
173: 168 00012659 dd 8f00000560 pushl $L402
174: 169 0001265F fe 08 ef000002cc callf $8,_print_pipe10_er
175: 170 00012666 # writes("op1 = ");
176: 171 00012666 .data 1
177: 172 0000057b * L404:
178: 173 0000057b * 6F7031203D2000 .ascii "op1 = \0"
179: 174 00000582 * .text
180: 175 00012666 dd 8f0000057b pushl $L404
181: 176 0001266C fe 08 effffffea1 callf $8,_writes
182: 177 00012673 # write32h( dbl_ld_acc.m );
183: 178 00012673 dd effffffe9b pushl _dbl_ld_acc
184: 179 00012679 fe 08 effffffe94 callf $8,_write32h
185: 180 00012680 # writec(' ');
186: 181 00012680 dd 20 pushl $32
187: 182 00012682 fe 08 effffffe8b callf $8,_writec
188: 183 00012689 # write32h( dbl_ld_acc.l );
189: 184 00012689 dd effffffe89 pushl _dbl_ld_acc+4
190: 185 0001268F fe 08 effffffe7e callf $8,_write32h
191: 186 00012696 # writes(", op2 = ");
192: 187 00012696 .data 1
193: 188 00000582 * L407:
194: 189 00000582 * 2C2020206F7032203D2000 .ascii ", op2 = \0"
195: 190 0000058d * .text
196: 191 00012696 dd 8f00000582 pushl $L407
197: 192 0001269C fe 08 effffffe71 callf $8,_writes
198: 193 000126A3 # write32h( dbl_value_1.m );
199: 194 000126A3 dd effffffe6b pushl _dbl_value_1
200: 195 000126A9 fe 08 effffffe64 callf $8,_write32h
201: 196 000126B0 # writec(' ');
202: 197 000126B0 dd 20 pushl $32
203: 198 000126B2 fe 08 effffffe5b callf $8,_writec
204: 199 000126B9 # write32h( dbl_value_1.l );
205: 200 000126B9 dd effffffe59 pushl _dbl_value_1+4
206: 201 000126BF fe 08 effffffe4e callf $8,_write32h
207: 202 000126C6 # writec('\n');
208: 203 000126C6 dd 0a pushl $10
209: 204 000126C8 fe 08 effffffe45 callf $8,_writec
210: 205 000126CF # }
211: 206 000126CF # if ( halt_flg ) /* halt on error? */
212: 207 000126CF L400:
213: 208 000126CF 5d effffffe3f tstl _halt_flg
214: 209 000126D5 31 09 jeql L408
215: 210 000126D7 # pipe10_halt( 1 ); /* halt with a code of 1 */
216: 211 000126D7 dd 01 pushl $1
217: 212 000126D9 fe 08 ef000002f0 callf $8,_pipe10_halt
218: 213 000126E0 # if ( loop_on_err )
219: 214 000126E0 L408:
220: 215 000126E0 5d effffffe2e tstl _loop_on_err
221: 216 000126E6 31 0d jeql L410
222: 217 000126E8 # {
223: 218 000126E8 # force_loop = TRUE; /* set the force loop flag */
224: 219 000126E8 0d 01 effffffe25 movl $1,_force_loop
225: 220 000126EF # asm("jmp _pipe10_lp1"); /* and loop */
226: 221 000126EF 71 effffffeb8 jmp _pipe10_lp1
227: 222 000126F5 # };
228: 223 000126F5 L410:
229: 224 000126F5 # }
230: 225 000126F5 40 ret#2
231: 226 000126F6 .set L396,0x0
232: 227 000126F6 L398:
233: 228 000126F6 13 ff52 jbr L399
234: 229 000126F9 .data
235: 230 00000560 * .text
236: 231 000126F9 00 .align 1
237: 232 000126FA .globl _bad_pipe10_result
238: 233 000126FA _bad_pipe10_result:
239: 234 000126FA 0000 .word L411
240: 235 000126FC #
241: 236 000126FC #
242: 237 000126FC #
243: 238 000126FC #
244: 239 000126FC # /****************************************************************************
245: 240 000126FC # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error
246: 241 000126FC # *
247: 242 000126FC # * Cycle: xx. EVT test xx. subtest xx. index = xx. Bad final Accumulator.
248: 243 000126FC # * inst = LDD op1, MULD op2, CVLF '2' (underflow fault on the MULD)
249: 244 000126FC # * The 'Convert '2' to Floating Point' should not be executed.
250: 245 000126FC # * op1 = xxxxxxxx xxxxxxxx, final Acc. = xxxxxxxx xxxxxxxx
251: 246 000126FC # * op2 = xxxxxxxx xxxxxxxx, expected = xxxxxxxx xxxxxxxx
252: 247 000126FC # ****************************************************************************/
253: 248 000126FC # bad_pipe10_result()
254: 249 000126FC # {
255: 250 000126FC 13 0113 jbr L413
256: 251 000126FF L414:
257: 252 000126FF # errcnt++; /* bump the error count */
258: 253 000126FF 6d effffffe0f incl _errcnt
259: 254 00012705 # if ( prt_error )
260: 255 00012705 5d effffffe09 tstl _prt_error
261: 256 0001270B 21 03 13 00db jeql L415
262: 257 00012710 # {
263: 258 00012710 # print_pipe10_er( ". Bad final Accumulator" );
264: 259 00012710 .data 1
265: 260 0000058d * L416:
266: 261 0000058d * 2E204261642066696E616C204 .ascii ". Bad final Accumulator\0"
267: 16363756D756C61746F7200
268: 262 000005a5 * .text
269: 263 00012710 dd 8f0000058d pushl $L416
270: 264 00012716 fe 08 ef00000215 callf $8,_print_pipe10_er
271: 265 0001271D # writes(
272: 266 0001271D # "The 'Convert '2' to Floating Point' should not be executed\n");
273: 267 0001271D .data 1
274: 268 000005a5 * L417:
275: 269 000005a5 * 5468652027436F6E766572742 .ascii "The 'Convert '2' to Floating Point' should not be executed\12\0"
276: 027322720746F20466C6F6174
277: 696E6720506F696E742720736
278: 86F756C64206E6F7420626520
279: 65786563757465640A00
280: 270 000005e1 * .text
281: 271 0001271D dd 8f000005a5 pushl $L417
282: 272 00012723 fe 08 effffffdea callf $8,_writes
283: 273 0001272A # writes("op1 = ");
284: 274 0001272A .data 1
285: 275 000005e1 * L418:
286: 276 000005e1 * 6F7031203D2000 .ascii "op1 = \0"
287: 277 000005e8 * .text
288: 278 0001272A dd 8f000005e1 pushl $L418
289: 279 00012730 fe 08 effffffddd callf $8,_writes
290: 280 00012737 # write32h( dbl_ld_acc.m );
291: 281 00012737 dd effffffdd7 pushl _dbl_ld_acc
292: 282 0001273D fe 08 effffffdd0 callf $8,_write32h
293: 283 00012744 # writec(' ');
294: 284 00012744 dd 20 pushl $32
295: 285 00012746 fe 08 effffffdc7 callf $8,_writec
296: 286 0001274D # write32h( dbl_ld_acc.l );
297: 287 0001274D dd effffffdc5 pushl _dbl_ld_acc+4
298: 288 00012753 fe 08 effffffdba callf $8,_write32h
299: 289 0001275A # writes(", final Acc. = ");
300: 290 0001275A .data 1
301: 291 000005e8 * L419:
302: 292 000005e8 * 2C2066696E616C204163632E2 .ascii ", final Acc. = \0"
303: 03D2000
304: 293 000005f8 * .text
305: 294 0001275A dd 8f000005e8 pushl $L419
306: 295 00012760 fe 08 effffffdad callf $8,_writes
307: 296 00012767 # write32h( post_evt_acc.l );
308: 297 00012767 dd effffffdab pushl _post_evt_acc+4
309: 298 0001276D fe 08 effffffda0 callf $8,_write32h
310: 299 00012774 # writec(' ');
311: 300 00012774 dd 20 pushl $32
312: 301 00012776 fe 08 effffffd97 callf $8,_writec
313: 302 0001277D # write32h( post_evt_acc.l );
314: 303 0001277D dd effffffd95 pushl _post_evt_acc+4
315: 304 00012783 fe 08 effffffd8a callf $8,_write32h
316: 305 0001278A # writes("\nop2 = ");
317: 306 0001278A .data 1
318: 307 000005f8 * L420:
319: 308 000005f8 * 0A6F7032203D2000 .ascii "\12op2 = \0"
320: 309 00000600 * .text
321: 310 0001278A dd 8f000005f8 pushl $L420
322: 311 00012790 fe 08 effffffd7d callf $8,_writes
323: 312 00012797 # write32h( dbl_value_1.m );
324: 313 00012797 dd effffffd77 pushl _dbl_value_1
325: 314 0001279D fe 08 effffffd70 callf $8,_write32h
326: 315 000127A4 # writec(' ');
327: 316 000127A4 dd 20 pushl $32
328: 317 000127A6 fe 08 effffffd67 callf $8,_writec
329: 318 000127AD # write32h( dbl_value_1.l );
330: 319 000127AD dd effffffd65 pushl _dbl_value_1+4
331: 320 000127B3 fe 08 effffffd5a callf $8,_write32h
332: 321 000127BA # writes(", expected = ");
333: 322 000127BA .data 1
334: 323 00000600 * L421:
335: 324 00000600 * 2C20202065787065637465642 .ascii ", expected = \0"
336: 03D2000
337: 325 00000610 * .text
338: 326 000127BA dd 8f00000600 pushl $L421
339: 327 000127C0 fe 08 effffffd4d callf $8,_writes
340: 328 000127C7 # write32h( 0 ); /* the expected result = 0 */
341: 329 000127C7 dd 00 pushl $0
342: 330 000127C9 fe 08 effffffd44 callf $8,_write32h
343: 331 000127D0 # writec(' ');
344: 332 000127D0 dd 20 pushl $32
345: 333 000127D2 fe 08 effffffd3b callf $8,_writec
346: 334 000127D9 # write32h( 0 );
347: 335 000127D9 dd 00 pushl $0
348: 336 000127DB fe 08 effffffd32 callf $8,_write32h
349: 337 000127E2 # writec('\n');
350: 338 000127E2 dd 0a pushl $10
351: 339 000127E4 fe 08 effffffd29 callf $8,_writec
352: 340 000127EB # }
353: 341 000127EB # if ( halt_flg ) /* halt on error? */
354: 342 000127EB L415:
355: 343 000127EB 5d effffffd23 tstl _halt_flg
356: 344 000127F1 31 09 jeql L422
357: 345 000127F3 # pipe10_halt( 2 ); /* halt with a code of 2 */
358: 346 000127F3 dd 02 pushl $2
359: 347 000127F5 fe 08 ef000001d4 callf $8,_pipe10_halt
360: 348 000127FC # if ( loop_on_err )
361: 349 000127FC L422:
362: 350 000127FC 5d effffffd12 tstl _loop_on_err
363: 351 00012802 31 0d jeql L423
364: 352 00012804 # {
365: 353 00012804 # force_loop = TRUE; /* set the force loop flag */
366: 354 00012804 0d 01 effffffd09 movl $1,_force_loop
367: 355 0001280B # asm("jmp _pipe10_lp1"); /* and loop */
368: 356 0001280B 71 effffffd9c jmp _pipe10_lp1
369: 357 00012811 # };
370: 358 00012811 L423:
371: 359 00012811 # }
372: 360 00012811 40 ret#2
373: 361 00012812 .set L411,0x0
374: 362 00012812 L413:
375: 363 00012812 13 feea jbr L414
376: 364 00012815 .data
377: 365 00000560 * .text
378: 366 00012815 00 .align 1
379: 367 00012816 .globl _pipe10_queue_er
380: 368 00012816 _pipe10_queue_er:
381: 369 00012816 0000 .word L424
382: 370 00012818 #
383: 371 00012818 #
384: 372 00012818 #
385: 373 00012818 #
386: 374 00012818 #
387: 375 00012818 # /****************************************************************************
388: 376 00012818 # * Report an "FPP queue not cleared" message
389: 377 00012818 # *
390: 378 00012818 # * Cycle: xx. EVT test xx. subtest xx. index = xx. Fpp queue not cleared.
391: 379 00012818 # * inst = LDD op1, MULD op2, CVLF '2' (underflow fault on the MULD)
392: 380 00012818 # * The 'Convert '2' to Floating Point' was apparently executed.
393: 381 00012818 # * op1 = xxxxxxxx xxxxxxxx, final Acc. = xxxxxxxx xxxxxxxx
394: 382 00012818 # * op2 = xxxxxxxx xxxxxxxx, expected = xxxxxxxx xxxxxxxx
395: 383 00012818 # ****************************************************************************/
396: 384 00012818 # pipe10_queue_er()
397: 385 00012818 # {
398: 386 00012818 13 0113 jbr L426
399: 387 0001281B L427:
400: 388 0001281B # errcnt++; /* bump the error count */
401: 389 0001281B 6d effffffcf3 incl _errcnt
402: 390 00012821 # if ( prt_error )
403: 391 00012821 5d effffffced tstl _prt_error
404: 392 00012827 21 03 13 00db jeql L428
405: 393 0001282C # {
406: 394 0001282C # print_pipe10_er( ". Fpp queue not cleared" );
407: 395 0001282C .data 1
408: 396 00000610 * L429:
409: 397 00000610 * 2E20467070207175657565206 .ascii ". Fpp queue not cleared\0"
410: E6F7420636C656172656400
411: 398 00000628 * .text
412: 399 0001282C dd 8f00000610 pushl $L429
413: 400 00012832 fe 08 ef000000f9 callf $8,_print_pipe10_er
414: 401 00012839 # writes(
415: 402 00012839 # "The 'Convert '2' to Floating Point' was apparently executed.\n");
416: 403 00012839 .data 1
417: 404 00000628 * L430:
418: 405 00000628 * 5468652027436F6E766572742 .ascii "The 'Convert '2' to Floating Point' was apparently executed.\12\0"
419: 027322720746F20466C6F6174
420: 696E6720506F696E742720776
421: 173206170706172656E746C79
422: 2065786563757465642E0A00
423: 406 00000666 * .text
424: 407 00012839 dd 8f00000628 pushl $L430
425: 408 0001283F fe 08 effffffcce callf $8,_writes
426: 409 00012846 # writes("op1 = ");
427: 410 00012846 .data 1
428: 411 00000666 * L431:
429: 412 00000666 * 6F7031203D2000 .ascii "op1 = \0"
430: 413 0000066d * .text
431: 414 00012846 dd 8f00000666 pushl $L431
432: 415 0001284C fe 08 effffffcc1 callf $8,_writes
433: 416 00012853 # write32h( dbl_ld_acc.m );
434: 417 00012853 dd effffffcbb pushl _dbl_ld_acc
435: 418 00012859 fe 08 effffffcb4 callf $8,_write32h
436: 419 00012860 # writec(' ');
437: 420 00012860 dd 20 pushl $32
438: 421 00012862 fe 08 effffffcab callf $8,_writec
439: 422 00012869 # write32h( dbl_ld_acc.l );
440: 423 00012869 dd effffffca9 pushl _dbl_ld_acc+4
441: 424 0001286F fe 08 effffffc9e callf $8,_write32h
442: 425 00012876 # writes(", final Acc. = ");
443: 426 00012876 .data 1
444: 427 0000066d * L432:
445: 428 0000066d * 2C2066696E616C204163632E2 .ascii ", final Acc. = \0"
446: 03D2000
447: 429 0000067d * .text
448: 430 00012876 dd 8f0000066d pushl $L432
449: 431 0001287C fe 08 effffffc91 callf $8,_writes
450: 432 00012883 # write32h( post_evt_acc.m );
451: 433 00012883 dd effffffc8b pushl _post_evt_acc
452: 434 00012889 fe 08 effffffc84 callf $8,_write32h
453: 435 00012890 # writec(' ');
454: 436 00012890 dd 20 pushl $32
455: 437 00012892 fe 08 effffffc7b callf $8,_writec
456: 438 00012899 # write32h( post_evt_acc.l );
457: 439 00012899 dd effffffc79 pushl _post_evt_acc+4
458: 440 0001289F fe 08 effffffc6e callf $8,_write32h
459: 441 000128A6 # writes("\nop2 = ");
460: 442 000128A6 .data 1
461: 443 0000067d * L433:
462: 444 0000067d * 0A6F7032203D2000 .ascii "\12op2 = \0"
463: 445 00000685 * .text
464: 446 000128A6 dd 8f0000067d pushl $L433
465: 447 000128AC fe 08 effffffc61 callf $8,_writes
466: 448 000128B3 # write32h( dbl_value_1.m );
467: 449 000128B3 dd effffffc5b pushl _dbl_value_1
468: 450 000128B9 fe 08 effffffc54 callf $8,_write32h
469: 451 000128C0 # writec(' ');
470: 452 000128C0 dd 20 pushl $32
471: 453 000128C2 fe 08 effffffc4b callf $8,_writec
472: 454 000128C9 # write32h( dbl_value_1.l );
473: 455 000128C9 dd effffffc49 pushl _dbl_value_1+4
474: 456 000128CF fe 08 effffffc3e callf $8,_write32h
475: 457 000128D6 # writes(", expected = ");
476: 458 000128D6 .data 1
477: 459 00000685 * L434:
478: 460 00000685 * 2C20202065787065637465642 .ascii ", expected = \0"
479: 03D2000
480: 461 00000695 * .text
481: 462 000128D6 dd 8f00000685 pushl $L434
482: 463 000128DC fe 08 effffffc31 callf $8,_writes
483: 464 000128E3 # write32h( 0 ); /* the expected result = 0 */
484: 465 000128E3 dd 00 pushl $0
485: 466 000128E5 fe 08 effffffc28 callf $8,_write32h
486: 467 000128EC # writec(' ');
487: 468 000128EC dd 20 pushl $32
488: 469 000128EE fe 08 effffffc1f callf $8,_writec
489: 470 000128F5 # write32h( 0 );
490: 471 000128F5 dd 00 pushl $0
491: 472 000128F7 fe 08 effffffc16 callf $8,_write32h
492: 473 000128FE # writec('\n');
493: 474 000128FE dd 0a pushl $10
494: 475 00012900 fe 08 effffffc0d callf $8,_writec
495: 476 00012907 # }
496: 477 00012907 # if ( halt_flg ) /* halt on error? */
497: 478 00012907 L428:
498: 479 00012907 5d effffffc07 tstl _halt_flg
499: 480 0001290D 31 09 jeql L435
500: 481 0001290F # pipe10_halt( 3 ); /* halt with a code of 3 */
501: 482 0001290F dd 03 pushl $3
502: 483 00012911 fe 08 ef000000b8 callf $8,_pipe10_halt
503: 484 00012918 # if ( loop_on_err )
504: 485 00012918 L435:
505: 486 00012918 5d effffffbf6 tstl _loop_on_err
506: 487 0001291E 31 0d jeql L436
507: 488 00012920 # {
508: 489 00012920 # force_loop = TRUE; /* set the force loop flag */
509: 490 00012920 0d 01 effffffbed movl $1,_force_loop
510: 491 00012927 # asm("jmp _pipe10_lp1"); /* and loop */
511: 492 00012927 71 effffffc80 jmp _pipe10_lp1
512: 493 0001292D # };
513: 494 0001292D L436:
514: 495 0001292D # }
515: 496 0001292D 40 ret#2
516: 497 0001292E .set L424,0x0
517: 498 0001292E L426:
518: 499 0001292E 13 feea jbr L427
519: 500 00012931 .data
520: 501 00000560 * .text
521: 502 00012931 00 .align 1
522: 503 00012932 .globl _print_pipe10_er
523: 504 00012932 _print_pipe10_er:
524: 505 00012932 0000 .word L437
525: 506 00012934 #
526: 507 00012934 #
527: 508 00012934 #
528: 509 00012934 #
529: 510 00012934 # /****************************************************************************
530: 511 00012934 # * Report an error message of the form:
531: 512 00012934 # *
532: 513 00012934 # * Cycle: xx. EVT test xx. subtest xx. index = xx. <your message here>
533: 514 00012934 # * inst = LDD op1, MULD op2, CVLF '2' (underflow fault on the MULD)
534: 515 00012934 # ****************************************************************************/
535: 516 00012934 # print_pipe10_er( msg )
536: 517 00012934 # char *msg; /* error message to print */
537: 518 00012934 # {
538: 519 00012934 13 0096 jbr L439
539: 520 00012937 L440:
540: 521 00012937 # if( errcnt == 1 ) /* 1st error? */
541: 522 00012937 1d effffffbd7 01 cmpl _errcnt,$1
542: 523 0001293E 21 0d jneq L441
543: 524 00012940 # writes(" \n"); /* start a new print line */
544: 525 00012940 .data 1
545: 526 00000695 * L442:
546: 527 00000695 * 200A00 .ascii " \12\0"
547: 528 00000698 * .text
548: 529 00012940 dd 8f00000695 pushl $L442
549: 530 00012946 fe 08 effffffbc7 callf $8,_writes
550: 531 0001294D # writes("Cycle: ");
551: 532 0001294D L441:
552: 533 0001294D .data 1
553: 534 00000698 * L443:
554: 535 00000698 * 4379636C653A2000 .ascii "Cycle: \0"
555: 536 000006a0 * .text
556: 537 0001294D dd 8f00000698 pushl $L443
557: 538 00012953 fe 08 effffffbba callf $8,_writes
558: 539 0001295A # writed( cycle );
559: 540 0001295A dd effffffbb4 pushl _cycle
560: 541 00012960 fe 08 effffffbad callf $8,_writed
561: 542 00012967 # writes(" EVT test ");
562: 543 00012967 .data 1
563: 544 000006a0 * L445:
564: 545 000006a0 * 202045565420746573742000 .ascii " EVT test \0"
565: 546 000006ac * .text
566: 547 00012967 dd 8f000006a0 pushl $L445
567: 548 0001296D fe 08 effffffba0 callf $8,_writes
568: 549 00012974 # writed( test_no );
569: 550 00012974 dd effffffb9a pushl _test_no
570: 551 0001297A fe 08 effffffb93 callf $8,_writed
571: 552 00012981 # writes(". subtest ");
572: 553 00012981 .data 1
573: 554 000006ac * L446:
574: 555 000006ac * 2E20737562746573742000 .ascii ". subtest \0"
575: 556 000006b7 * .text
576: 557 00012981 dd 8f000006ac pushl $L446
577: 558 00012987 fe 08 effffffb86 callf $8,_writes
578: 559 0001298E # writed( subtest );
579: 560 0001298E dd effffffb80 pushl _subtest
580: 561 00012994 fe 08 effffffb79 callf $8,_writed
581: 562 0001299B # writes(". index = ");
582: 563 0001299B .data 1
583: 564 000006b7 * L447:
584: 565 000006b7 * 2E20696E646578203D2000 .ascii ". index = \0"
585: 566 000006c2 * .text
586: 567 0001299B dd 8f000006b7 pushl $L447
587: 568 000129A1 fe 08 effffffb6c callf $8,_writes
588: 569 000129A8 # writed( index );
589: 570 000129A8 dd effffffb66 pushl _index
590: 571 000129AE fe 08 effffffb5f callf $8,_writed
591: 572 000129B5 # writes( msg ); /* print the message */
592: 573 000129B5 dd ad04 pushl 4(fp)
593: 574 000129B8 fe 08 effffffb55 callf $8,_writes
594: 575 000129BF # writes(
595: 576 000129BF # "\ninst = LDD op1, MULD op2, CVLF '2' (underflow fault on the MULD)\n");
596: 577 000129BF .data 1
597: 578 000006c2 * L448:
598: 579 000006c2 * 0A696E7374203D204C4444206 .ascii "\12inst = LDD op1, MULD op2, CVLF '2' (underflow fault on the M"
599: F70312C204D554C44206F7032
600: 2C2043564C462027322720202
601: 02028756E646572666C6F7720
602: 6661756C74206F6E207468652
603: 04D
604: 580 00000702 * 554C44290A00 .ascii "ULD)\12\0"
605: 581 00000708 * .text
606: 582 000129BF dd 8f000006c2 pushl $L448
607: 583 000129C5 fe 08 effffffb48 callf $8,_writes
608: 584 000129CC # }
609: 585 000129CC 40 ret#2
610: 586 000129CD .set L437,0x0
611: 587 000129CD L439:
612: 588 000129CD 13 ff67 jbr L440
613: 589 000129D0 .data
614: 590 00000560 * .text
615: 591 000129D0 .align 1
616: 592 000129D0 .globl _pipe10_halt
617: 593 000129D0 _pipe10_halt:
618: 594 000129D0 0000 .word L449
619: 595 000129D2 #
620: 596 000129D2 #
621: 597 000129D2 #
622: 598 000129D2 # /****************************************************************************
623: 599 000129D2 # * halt on error routine
624: 600 000129D2 # ****************************************************************************/
625: 601 000129D2 # pipe10_halt( code )
626: 602 000129D2 # int code; /* error code to halt with */
627: 603 000129D2 # {
628: 604 000129D2 13 009b jbr L451
629: 605 000129D5 L452:
630: 606 000129D5 # err_code = code;
631: 607 000129D5 0d ad04 effffffb37 movl 4(fp),_err_code
632: 608 000129DD # sgl_value_1 = dbl_ld_acc.m;
633: 609 000129DD 0d effffffb31 effffffb2c movl _dbl_ld_acc,_sgl_value_1
634: 610 000129E8 # sgl_value_2 = dbl_ld_acc.l;
635: 611 000129E8 0d effffffb2a effffffb21 movl _dbl_ld_acc+4,_sgl_value_2
636: 612 000129F3 # sgl_value_3 = dbl_value_1.m;
637: 613 000129F3 0d effffffb1b effffffb16 movl _dbl_value_1,_sgl_value_3
638: 614 000129FE # sgl_value_4 = dbl_value_1.l;
639: 615 000129FE 0d effffffb14 effffffb0b movl _dbl_value_1+4,_sgl_value_4
640: 616 00012A09 # sgl_value_5 = post_evt_acc.m;
641: 617 00012A09 0d effffffb05 effffffb00 movl _post_evt_acc,_sgl_value_5
642: 618 00012A14 # sgl_value_6 = post_evt_acc.l;
643: 619 00012A14 0d effffffafe effffffaf5 movl _post_evt_acc+4,_sgl_value_6
644: 620 00012A1F # asm("movl _test_no,r0"); /* r0 = test number */
645: 621 00012A1F 0d effffffaef 50 movl _test_no,r0
646: 622 00012A26 # asm("movl _subtest,r1"); /* r1 = subtest number */
647: 623 00012A26 0d effffffae8 51 movl _subtest,r1
648: 624 00012A2D # asm("movl _err_code,r2"); /* r2 = error code */
649: 625 00012A2D 0d effffffae1 52 movl _err_code,r2
650: 626 00012A34 # asm("movl _cycle,r3"); /* r3 = cycle count */
651: 627 00012A34 0d effffffada 53 movl _cycle,r3
652: 628 00012A3B # asm("movl _sgl_value_1,r4"); /* r4 = MSW of operand 1 */
653: 629 00012A3B 0d effffffad3 54 movl _sgl_value_1,r4
654: 630 00012A42 # asm("movl _sgl_value_2,r5"); /* r5 = LSW of operand 1 */
655: 631 00012A42 0d effffffacc 55 movl _sgl_value_2,r5
656: 632 00012A49 # asm("movl _sgl_value_3,r6"); /* r6 = MSW of operand 2 */
657: 633 00012A49 0d effffffac5 56 movl _sgl_value_3,r6
658: 634 00012A50 # asm("movl _sgl_value_4,r7"); /* r7 = LSW of operand 2 */
659: 635 00012A50 0d effffffabe 57 movl _sgl_value_4,r7
660: 636 00012A57 # asm("movl _sgl_value_5,r8"); /* r8 = MSW of final Acc. */
661: 637 00012A57 0d effffffab7 58 movl _sgl_value_5,r8
662: 638 00012A5E # asm("movl _sgl_value_6,r9"); /* r9 = LSW of final Acc. */
663: 639 00012A5E 0d effffffab0 59 movl _sgl_value_6,r9
664: 640 00012A65 # asm("clrl r10"); /* r10 = 0 (expected Acc.) */
665: 641 00012A65 4d 5a clrl r10
666: 642 00012A67 # asm("movl _index,r11"); /* r11 = data index */
667: 643 00012A67 0d effffffaa7 5b movl _index,r11
668: 644 00012A6E # asm("halt"); /* HALT ... */
669: 645 00012A6E 00 halt
670: 646 00012A6F # }
671: 647 00012A6F 40 ret#2
672: 648 00012A70 .set L449,0x0
673: 649 00012A70 L451:
674: 650 00012A70 13 ff62 jbr L452
675: 651 00012A73 .data
676: 651 00024F87 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.