|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000468 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe13
6: 6 00000000 _pipe13:
7: 7 00013404 0000 .word L381
8: 8 00013406 #
9: 9 00013406 # #include "evt_defs.h"
10: 10 00013406 #
11: 11 00013406 # /*
12: 12 00013406 # *********************************************************************
13: 13 00013406 # * FPP PIPELINED EVENTS TEST #13
14: 14 00013406 # *
15: 15 00013406 # * This test will execute the following code: "LDF CVFL NEGF"
16: 16 00013406 # * with an integer overflow fault on the CVFL. We will make sure that:
17: 17 00013406 # * 1. The fault is detected, and
18: 18 00013406 # * 2. the NEGF instruction is not executed.
19: 19 00013406 # *********************************************************************
20: 20 00013406 # */
21: 21 00013406 # pipe13()
22: 22 00013406 # {
23: 23 00013406 13 0135 jbr L383
24: 24 00013409 L384:
25: 25 00013409 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
26: 26 00013409 ed 6d effffffff4 moval (r13),_pre_event_fp
27: 27 00013410 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
28: 28 00013410 ed 6e efffffffed moval (r14),_pre_event_sp
29: 29 00013417 # precision = SGL;
30: 30 00013417 0d 01 efffffffe6 movl $1,_precision
31: 31 0001341E # test_event = ARITH_CODE; /* expect an arithmetic fault */
32: 32 0001341E 0d 34 efffffffdf movl $52,_test_event
33: 33 00013425 # exp_code = INT_OVFL_CODE; /* - specificly underflow */
34: 34 00013425 0d 01 efffffffd8 movl $1,_exp_code
35: 35 0001342C # exp_event = FALSE; /* ... but not yet */
36: 36 0001342C 4d efffffffd2 clrl _exp_event
37: 37 00013432 # asm("movab _pipe13_ret,_event_return"); /* set event return address */
38: 38 00013432 e9 ef000000ae efffffffc7 movab _pipe13_ret,_event_return
39: 39 0001343D # max_index = cvdl_ov_cnt; /* set max operand index */
40: 40 0001343D 0d efffffffc1 efffffffbc movl _cvdl_ov_cnt,_max_index
41: 41 00013448 # for( index = 0; index < max_index; index++ )
42: 42 00013448 4d efffffffb6 clrl _index
43: 43 0001344E L387:
44: 44 0001344E 1d efffffffb0 efffffffab cmpl _index,_max_index
45: 45 00013459 91 03 13 00df jgeq L386
46: 46 0001345E # {
47: 47 0001345E # dbl_ld_acc = cvfl_ov_dat[index].op_1; /* get the Acc data */
48: 48 0001345E 48 04 efffffff9f 50 shll $4,_index,r0
49: 49 00013466 0c 8f00000000 50 addl2 $_cvfl_ov_dat,r0
50: 50 0001346D 0d a004 efffffff93 movl 4(r0),_dbl_ld_acc+4
51: 51 00013475 0d 60 efffffff88 movl (r0),_dbl_ld_acc
52: 52 0001347C # if( dbl_ld_acc.m & 0x7f800000 )
53: 53 0001347C 3d 8f7f800000 efffffff7d bitl $2139095040,_dbl_ld_acc
54: 54 00013487 31 0d jeql L388
55: 55 00013489 # dbl_expected.m = dbl_ld_acc.m; /* Acc shouldn't change */
56: 56 00013489 0d efffffff75 efffffff70 movl _dbl_ld_acc,_dbl_expected
57: 57 00013494 # else
58: 58 00013494 11 06 jbr L389
59: 59 00013496 L388:
60: 60 00013496 # dbl_expected.m = 0; /* expect a 'good 0' */
61: 61 00013496 4d efffffff68 clrl _dbl_expected
62: 62 0001349C L389:
63: 63 0001349C # asm("bispsw $0x60"); /* enable ovfl,undfl */
64: 64 0001349C 8b 8860 bispsw $0x60
65: 65 0001349F # asm(".globl _pipe13_lp1");
66: 66 0001349F .globl _pipe13_lp1
67: 67 0001349F # asm("_pipe13_lp1:");
68: 68 0001349F _pipe13_lp1:
69: 69 0001349F # asm("ldf _dbl_ld_acc"); /* load the Acc. */
70: 70 0001349F 06 efffffff5f ldf _dbl_ld_acc
71: 71 000134A5 # exp_event = test_event; /* expect event soon */
72: 72 000134A5 0d efffffff59 efffffff54 movl _test_event,_exp_event
73: 73 000134B0 # asm("cvfl _dbl_value_1"); /* trigger the event */
74: 74 000134B0 86 efffffff4e cvfl _dbl_value_1
75: 75 000134B6 # asm("negf"); /* shouldn't get here*/
76: 76 000134B6 b6 negf
77: 77 000134B7 # /*
78: 78 000134B7 # * If we got to here then there was no event
79: 79 000134B7 # */
80: 80 000134B7 # if( force_loop )
81: 81 000134B7 5d efffffff47 tstl _force_loop
82: 82 000134BD 31 03 jeql L390
83: 83 000134BF # asm("brw _pipe13_lp1");; /* loop on the error */
84: Assemb0002ABC4 # asm("brw _pipe13_lp1");; /* loop on the error */
85: "pipe100013407 e 84: WARNING: brw: destination label is external
86: 84 000134BF 13 ffdd brw _pipe13_lp1
87: 85 000134C2 L390:
88: 86 000134C2 # exp_event = FALSE; /* reset event expected flag */
89: 87 000134C2 4d efffffff3c clrl _exp_event
90: 88 000134C8 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
91: 89 000134C8 9b 8860 bicpsw $0x60
92: 90 000134CB # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
93: 91 000134CB 0d efffffff33 5d movl _pre_event_fp,fp
94: 92 000134D2 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
95: 93 000134D2 0d efffffff2c 5e movl _pre_event_sp,sp
96: 94 000134D9 # asm("stf _dbl_st_acc"); /* save the accumulator */
97: 95 000134D9 26 efffffff25 stf _dbl_st_acc
98: 96 000134DF # no_pipe13_evt();; /* report the error */
99: 97 000134DF fe 04 ef0000005c callf $4,_no_pipe13_evt
100: 98 000134E6 # /*
101: 99 000134E6 # * Come here after the event
102: 100 000134E6 # */
103: 101 000134E6 # asm(".globl _pipe13_ret");
104: 102 000134E6 .globl _pipe13_ret
105: 103 000134E6 # asm("_pipe13_ret:");
106: 104 000134E6 _pipe13_ret:
107: 105 000134E6 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
108: 106 000134E6 0d efffffff18 5d movl _pre_event_fp,fp
109: 107 000134ED # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
110: 108 000134ED 0d efffffff11 5e movl _pre_event_sp,sp
111: 109 000134F4 # if( force_loop )
112: 110 000134F4 5d efffffff0a tstl _force_loop
113: 111 000134FA 31 03 jeql L392
114: 112 000134FC # asm("brw _pipe13_lp1");; /* loop on the error */
115: "pipe100013407 e 113: WARNING: brw: destination label is external
116: 113 000134FC 13 ffa0 brw _pipe13_lp1
117: 114 000134FF L392:
118: 115 000134FF # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
119: 116 000134FF 9b 8860 bicpsw $0x60
120: 117 00013502 # if( post_evt_acc.m == (dbl_ld_acc.m ^ 0x80000000) )
121: 118 00013502 dc 8f80000000 effffffef7 xorl3 $-2147483648,_dbl_ld_acc,r0
122: 50
123: 119 0001350E 1d effffffef0 50 cmpl _post_evt_acc,r0
124: 120 00013515 21 09 jneq L393
125: 121 00013517 # pipe13_queue_er(); /* the NEGF was executed */
126: 122 00013517 fe 04 ef00000174 callf $4,_pipe13_queue_er
127: 123 0001351E # else if( post_evt_acc.m != dbl_expected.m ) /* Acc modified? */
128: 124 0001351E 11 14 jbr L395
129: 125 00013520 L393:
130: 126 00013520 1d effffffede effffffed9 cmpl _post_evt_acc,_dbl_expected
131: 127 0001352B 31 07 jeql L396
132: 128 0001352D # bad_pipe13_result(); /* incorrect result error */
133: 129 0001352D fe 04 ef000000b0 callf $4,_bad_pipe13_result
134: 130 00013534 #
135: 131 00013534 # }
136: 132 00013534 L396:
137: 133 00013534 L395:
138: 134 00013534 L385:
139: 135 00013534 6d effffffeca incl _index
140: 136 0001353A 13 ff11 jbr L387
141: 137 0001353D L386:
142: 138 0001353D # }
143: 139 0001353D 40 ret#2
144: 140 0001353E .set L381,0x0
145: 141 0001353E L383:
146: 142 0001353E 13 fec8 jbr L384
147: 143 00013541 .data
148: 144 00000468 * .text
149: 145 00013541 00 .align 1
150: 146 00013542 .globl _no_pipe13_evt
151: 147 00013542 _no_pipe13_evt:
152: 148 00013542 0000 .word L398
153: 149 00013544 #
154: 150 00013544 #
155: 151 00013544 #
156: 152 00013544 # /****************************************************************************
157: 153 00013544 # * Report an "EVENT NOT DETECTED" error
158: 154 00013544 # *
159: 155 00013544 # * Cycle: xx. EVT test xx. subtest xx. No overflow fault seen. index = xx
160: 156 00013544 # * inst = LDF op1, CVFL op2, NEGF (integer overflow fault on the CVDF)
161: 157 00013544 # * op1 = xxxxxxxx, op2 = xxxxxxxx, final Acc. = xxxxxxxx
162: 158 00013544 # ****************************************************************************/
163: 159 00013544 # no_pipe13_evt()
164: 160 00013544 # {
165: 161 00013544 13 0099 jbr L400
166: 162 00013547 L401:
167: 163 00013547 # errcnt++; /* bump the error count */
168: 164 00013547 6d effffffeb7 incl _errcnt
169: 165 0001354D # if ( prt_error )
170: 166 0001354D 5d effffffeb1 tstl _prt_error
171: 167 00013553 31 64 jeql L402
172: 168 00013555 # {
173: 169 00013555 # print_pipe13_er( ". No overflow fault seen." );
174: 170 00013555 .data 1
175: 171 00000468 * L404:
176: 172 00000468 * 2E204E6F206F766572666C6F7 .ascii ". No overflow fault seen.\0"
177: 7206661756C74207365656E2E
178: 00
179: 173 00000482 * .text
180: 174 00013555 dd 8f00000468 pushl $L404
181: 175 0001355B fe 08 ef000001fc callf $8,_print_pipe13_er
182: 176 00013562 # writes("op1 = ");
183: 177 00013562 .data 1
184: 178 00000482 * L406:
185: 179 00000482 * 6F7031203D2000 .ascii "op1 = \0"
186: 180 00000489 * .text
187: 181 00013562 dd 8f00000482 pushl $L406
188: 182 00013568 fe 08 effffffe95 callf $8,_writes
189: 183 0001356F # write32h( dbl_ld_acc.m );
190: 184 0001356F dd effffffe8f pushl _dbl_ld_acc
191: 185 00013575 fe 08 effffffe88 callf $8,_write32h
192: 186 0001357C # writes(", op2 = ");
193: 187 0001357C .data 1
194: 188 00000489 * L408:
195: 189 00000489 * 2C2020206F7032203D2000 .ascii ", op2 = \0"
196: 190 00000494 * .text
197: 191 0001357C dd 8f00000489 pushl $L408
198: 192 00013582 fe 08 effffffe7b callf $8,_writes
199: 193 00013589 # write32h( dbl_value_1.m );
200: 194 00013589 dd effffffe75 pushl _dbl_value_1
201: 195 0001358F fe 08 effffffe6e callf $8,_write32h
202: 196 00013596 # writes(", final Acc. = ");
203: 197 00013596 .data 1
204: 198 00000494 * L409:
205: 199 00000494 * 2C20202066696E616C2041636 .ascii ", final Acc. = \0"
206: 32E203D2000
207: 200 000004a6 * .text
208: 201 00013596 dd 8f00000494 pushl $L409
209: 202 0001359C fe 08 effffffe61 callf $8,_writes
210: 203 000135A3 # write32h( dbl_st_acc.m );
211: 204 000135A3 dd effffffe5b pushl _dbl_st_acc
212: 205 000135A9 fe 08 effffffe54 callf $8,_write32h
213: 206 000135B0 # writec('\n');
214: 207 000135B0 dd 0a pushl $10
215: 208 000135B2 fe 08 effffffe4b callf $8,_writec
216: 209 000135B9 # }
217: 210 000135B9 # if ( halt_flg ) /* halt on error? */
218: 211 000135B9 L402:
219: 212 000135B9 5d effffffe45 tstl _halt_flg
220: 213 000135BF 31 09 jeql L411
221: 214 000135C1 # pipe13_halt( 1 ); /* halt with a code of 1 */
222: 215 000135C1 dd 01 pushl $1
223: 216 000135C3 fe 08 ef00000232 callf $8,_pipe13_halt
224: 217 000135CA # if ( loop_on_err )
225: 218 000135CA L411:
226: 219 000135CA 5d effffffe34 tstl _loop_on_err
227: 220 000135D0 31 0d jeql L413
228: 221 000135D2 # {
229: 222 000135D2 # force_loop = TRUE; /* set the force loop flag */
230: 223 000135D2 0d 01 effffffe2b movl $1,_force_loop
231: 224 000135D9 # asm("jmp _pipe13_lp1"); /* and loop */
232: 225 000135D9 71 effffffec0 jmp _pipe13_lp1
233: 226 000135DF # };
234: 227 000135DF L413:
235: 228 000135DF # }
236: 229 000135DF 40 ret#2
237: 230 000135E0 .set L398,0x0
238: 231 000135E0 L400:
239: 232 000135E0 13 ff64 jbr L401
240: 233 000135E3 .data
241: 234 00000468 * .text
242: 235 000135E3 00 .align 1
243: 236 000135E4 .globl _bad_pipe13_result
244: 237 000135E4 _bad_pipe13_result:
245: 238 000135E4 0000 .word L414
246: 239 000135E6 #
247: 240 000135E6 #
248: 241 000135E6 #
249: 242 000135E6 #
250: 243 000135E6 # /****************************************************************************
251: 244 000135E6 # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error
252: 245 000135E6 # *
253: 246 000135E6 # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. index = xx
254: 247 000135E6 # * inst = LDF op1, CVFL op2, NEGF (integer overflow fault on the CVDF)
255: 248 000135E6 # * The NEGF instruction should not be executed.
256: 249 000135E6 # * op1 = xxxxxxxx, final Acc. = xxxxxxxx, expected = xxxxxxxx
257: 250 000135E6 # ****************************************************************************/
258: 251 000135E6 # bad_pipe13_result()
259: 252 000135E6 # {
260: 253 000135E6 13 00a6 jbr L416
261: 254 000135E9 L417:
262: 255 000135E9 # errcnt++; /* bump the error count */
263: 256 000135E9 6d effffffe15 incl _errcnt
264: 257 000135EF # if ( prt_error )
265: 258 000135EF 5d effffffe0f tstl _prt_error
266: 259 000135F5 31 71 jeql L418
267: 260 000135F7 # {
268: 261 000135F7 # print_pipe13_er( ". Bad final Accumulator" );
269: 262 000135F7 .data 1
270: 263 000004a6 * L419:
271: 264 000004a6 * 2E204261642066696E616C204 .ascii ". Bad final Accumulator\0"
272: 16363756D756C61746F7200
273: 265 000004be * .text
274: 266 000135F7 dd 8f000004a6 pushl $L419
275: 267 000135FD fe 08 ef0000015a callf $8,_print_pipe13_er
276: 268 00013604 # writes(
277: 269 00013604 # "The NEGF instruction should not be executed\n");
278: 270 00013604 .data 1
279: 271 000004be * L420:
280: 272 000004be * 546865204E45474620696E737 .ascii "The NEGF instruction should not be executed\12\0"
281: 472756374696F6E2073686F75
282: 6C64206E6F742062652065786
283: 563757465640A00
284: 273 000004eb * .text
285: 274 00013604 dd 8f000004be pushl $L420
286: 275 0001360A fe 08 effffffdf3 callf $8,_writes
287: 276 00013611 # writes("op1 = ");
288: 277 00013611 .data 1
289: 278 000004eb * L421:
290: 279 000004eb * 6F7031203D2000 .ascii "op1 = \0"
291: 280 000004f2 * .text
292: 281 00013611 dd 8f000004eb pushl $L421
293: 282 00013617 fe 08 effffffde6 callf $8,_writes
294: 283 0001361E # write32h( dbl_ld_acc.m );
295: 284 0001361E dd effffffde0 pushl _dbl_ld_acc
296: 285 00013624 fe 08 effffffdd9 callf $8,_write32h
297: 286 0001362B # writes(", final Acc. = ");
298: 287 0001362B .data 1
299: 288 000004f2 * L422:
300: 289 000004f2 * 2C202066696E616C204163632 .ascii ", final Acc. = \0"
301: E203D2000
302: 290 00000503 * .text
303: 291 0001362B dd 8f000004f2 pushl $L422
304: 292 00013631 fe 08 effffffdcc callf $8,_writes
305: 293 00013638 # write32h( post_evt_acc.m );
306: 294 00013638 dd effffffdc6 pushl _post_evt_acc
307: 295 0001363E fe 08 effffffdbf callf $8,_write32h
308: 296 00013645 # writes(", expected = ");
309: 297 00013645 .data 1
310: 298 00000503 * L423:
311: 299 00000503 * 2C20206578706563746564203 .ascii ", expected = \0"
312: D2000
313: 300 00000512 * .text
314: 301 00013645 dd 8f00000503 pushl $L423
315: 302 0001364B fe 08 effffffdb2 callf $8,_writes
316: 303 00013652 # write32h( dbl_expected.m ); /* expected = initial data */
317: 304 00013652 dd effffffdac pushl _dbl_expected
318: 305 00013658 fe 08 effffffda5 callf $8,_write32h
319: 306 0001365F # writec('\n');
320: 307 0001365F dd 0a pushl $10
321: 308 00013661 fe 08 effffffd9c callf $8,_writec
322: 309 00013668 # }
323: 310 00013668 # if ( halt_flg ) /* halt on error? */
324: 311 00013668 L418:
325: 312 00013668 5d effffffd96 tstl _halt_flg
326: 313 0001366E 31 09 jeql L424
327: 314 00013670 # pipe13_halt( 2 ); /* halt with a code of 2 */
328: 315 00013670 dd 02 pushl $2
329: 316 00013672 fe 08 ef00000183 callf $8,_pipe13_halt
330: 317 00013679 # if ( loop_on_err )
331: 318 00013679 L424:
332: 319 00013679 5d effffffd85 tstl _loop_on_err
333: 320 0001367F 31 0d jeql L425
334: 321 00013681 # {
335: 322 00013681 # force_loop = TRUE; /* set the force loop flag */
336: 323 00013681 0d 01 effffffd7c movl $1,_force_loop
337: 324 00013688 # asm("jmp _pipe13_lp1"); /* and loop */
338: 325 00013688 71 effffffe11 jmp _pipe13_lp1
339: 326 0001368E # };
340: 327 0001368E L425:
341: 328 0001368E # }
342: 329 0001368E 40 ret#2
343: 330 0001368F .set L414,0x0
344: 331 0001368F L416:
345: 332 0001368F 13 ff57 jbr L417
346: 333 00013692 .data
347: 334 00000468 * .text
348: 335 00013692 .align 1
349: 336 00013692 .globl _pipe13_queue_er
350: 337 00013692 _pipe13_queue_er:
351: 338 00013692 0000 .word L426
352: 339 00013694 #
353: 340 00013694 #
354: 341 00013694 #
355: 342 00013694 #
356: 343 00013694 #
357: 344 00013694 # /****************************************************************************
358: 345 00013694 # * Report an "FPP queue not cleared" message
359: 346 00013694 # *
360: 347 00013694 # * Cycle: xx. EVT test xx. subtest xx. Fpp queue not cleared. index = xx
361: 348 00013694 # * inst = LDF op1, CVFL op2, NEGF (integer overflow fault on the CVDF)
362: 349 00013694 # * The NEGF instruction was apparently executed.
363: 350 00013694 # * op1 = xxxxxxxx, final Acc. = xxxxxxxx
364: 351 00013694 # * op2 = xxxxxxxx, expected = xxxxxxxx
365: 352 00013694 # ****************************************************************************/
366: 353 00013694 # pipe13_queue_er()
367: 354 00013694 # {
368: 355 00013694 13 00c3 jbr L428
369: 356 00013697 L429:
370: 357 00013697 # errcnt++; /* bump the error count */
371: 358 00013697 6d effffffd67 incl _errcnt
372: 359 0001369D # if ( prt_error )
373: 360 0001369D 5d effffffd61 tstl _prt_error
374: 361 000136A3 21 03 13 008b jeql L430
375: 362 000136A8 # {
376: 363 000136A8 # print_pipe13_er( ". Fpp queue not cleared" );
377: 364 000136A8 .data 1
378: 365 00000512 * L431:
379: 366 00000512 * 2E20467070207175657565206 .ascii ". Fpp queue not cleared\0"
380: E6F7420636C656172656400
381: 367 0000052a * .text
382: 368 000136A8 dd 8f00000512 pushl $L431
383: 369 000136AE fe 08 ef000000a9 callf $8,_print_pipe13_er
384: 370 000136B5 # writes(
385: 371 000136B5 # "The NEGF instruction was apparently executed.\n");
386: 372 000136B5 .data 1
387: 373 0000052a * L432:
388: 374 0000052a * 546865204E45474620696E737 .ascii "The NEGF instruction was apparently executed.\12\0"
389: 472756374696F6E2077617320
390: 6170706172656E746C7920657
391: 86563757465642E0A00
392: 375 00000559 * .text
393: 376 000136B5 dd 8f0000052a pushl $L432
394: 377 000136BB fe 08 effffffd42 callf $8,_writes
395: 378 000136C2 # writes("op1 = ");
396: 379 000136C2 .data 1
397: 380 00000559 * L433:
398: 381 00000559 * 6F7031203D2000 .ascii "op1 = \0"
399: 382 00000560 * .text
400: 383 000136C2 dd 8f00000559 pushl $L433
401: 384 000136C8 fe 08 effffffd35 callf $8,_writes
402: 385 000136CF # write32h( dbl_ld_acc.m );
403: 386 000136CF dd effffffd2f pushl _dbl_ld_acc
404: 387 000136D5 fe 08 effffffd28 callf $8,_write32h
405: 388 000136DC # writes(", final Acc. = ");
406: 389 000136DC .data 1
407: 390 00000560 * L434:
408: 391 00000560 * 2C20202066696E616C2041636 .ascii ", final Acc. = \0"
409: 32E203D2000
410: 392 00000572 * .text
411: 393 000136DC dd 8f00000560 pushl $L434
412: 394 000136E2 fe 08 effffffd1b callf $8,_writes
413: 395 000136E9 # write32h( post_evt_acc.m );
414: 396 000136E9 dd effffffd15 pushl _post_evt_acc
415: 397 000136EF fe 08 effffffd0e callf $8,_write32h
416: 398 000136F6 # writes("\nop2 = ");
417: 399 000136F6 .data 1
418: 400 00000572 * L435:
419: 401 00000572 * 0A6F7032203D2000 .ascii "\12op2 = \0"
420: 402 0000057a * .text
421: 403 000136F6 dd 8f00000572 pushl $L435
422: 404 000136FC fe 08 effffffd01 callf $8,_writes
423: 405 00013703 # write32h( dbl_value_1.m );
424: 406 00013703 dd effffffcfb pushl _dbl_value_1
425: 407 00013709 fe 08 effffffcf4 callf $8,_write32h
426: 408 00013710 # writes(", expected = ");
427: 409 00013710 .data 1
428: 410 0000057a * L436:
429: 411 0000057a * 2C20202020206578706563746 .ascii ", expected = \0"
430: 564203D2000
431: 412 0000058c * .text
432: 413 00013710 dd 8f0000057a pushl $L436
433: 414 00013716 fe 08 effffffce7 callf $8,_writes
434: 415 0001371D # write32h( dbl_expected.m ); /* expected = initial data */
435: 416 0001371D dd effffffce1 pushl _dbl_expected
436: 417 00013723 fe 08 effffffcda callf $8,_write32h
437: 418 0001372A # writec('\n');
438: 419 0001372A dd 0a pushl $10
439: 420 0001372C fe 08 effffffcd1 callf $8,_writec
440: 421 00013733 # }
441: 422 00013733 # if ( halt_flg ) /* halt on error? */
442: 423 00013733 L430:
443: 424 00013733 5d effffffccb tstl _halt_flg
444: 425 00013739 31 09 jeql L437
445: 426 0001373B # pipe13_halt( 3 ); /* halt with a code of 3 */
446: 427 0001373B dd 03 pushl $3
447: 428 0001373D fe 08 ef000000b8 callf $8,_pipe13_halt
448: 429 00013744 # if ( loop_on_err )
449: 430 00013744 L437:
450: 431 00013744 5d effffffcba tstl _loop_on_err
451: 432 0001374A 31 0d jeql L438
452: 433 0001374C # {
453: 434 0001374C # force_loop = TRUE; /* set the force loop flag */
454: 435 0001374C 0d 01 effffffcb1 movl $1,_force_loop
455: 436 00013753 # asm("jmp _pipe13_lp1"); /* and loop */
456: 437 00013753 71 effffffd46 jmp _pipe13_lp1
457: 438 00013759 # };
458: 439 00013759 L438:
459: 440 00013759 # }
460: 441 00013759 40 ret#2
461: 442 0001375A .set L426,0x0
462: 443 0001375A L428:
463: 444 0001375A 13 ff3a jbr L429
464: 445 0001375D .data
465: 446 00000468 * .text
466: 447 0001375D 00 .align 1
467: 448 0001375E .globl _print_pipe13_er
468: 449 0001375E _print_pipe13_er:
469: 450 0001375E 0000 .word L439
470: 451 00013760 #
471: 452 00013760 #
472: 453 00013760 #
473: 454 00013760 #
474: 455 00013760 # /****************************************************************************
475: 456 00013760 # * Report an error message of the form:
476: 457 00013760 # *
477: 458 00013760 # * Cycle: xx. EVT test xx. subtest xx. <your message here> index = xx
478: 459 00013760 # * inst = LDF op1, CVFL op2, NEGF (integer overflow fault on the CVDF)
479: 460 00013760 # ****************************************************************************/
480: 461 00013760 # print_pipe13_er( msg )
481: 462 00013760 # char *msg; /* error message to print */
482: 463 00013760 # {
483: 464 00013760 13 0096 jbr L441
484: 465 00013763 L442:
485: 466 00013763 # if( errcnt == 1 ) /* 1st error? */
486: 467 00013763 1d effffffc9b 01 cmpl _errcnt,$1
487: 468 0001376A 21 0d jneq L443
488: 469 0001376C # writes(" \n"); /* start a new print line */
489: 470 0001376C .data 1
490: 471 0000058c * L444:
491: 472 0000058c * 200A00 .ascii " \12\0"
492: 473 0000058f * .text
493: 474 0001376C dd 8f0000058c pushl $L444
494: 475 00013772 fe 08 effffffc8b callf $8,_writes
495: 476 00013779 # writes("Cycle: ");
496: 477 00013779 L443:
497: 478 00013779 .data 1
498: 479 0000058f * L445:
499: 480 0000058f * 4379636C653A2000 .ascii "Cycle: \0"
500: 481 00000597 * .text
501: 482 00013779 dd 8f0000058f pushl $L445
502: 483 0001377F fe 08 effffffc7e callf $8,_writes
503: 484 00013786 # writed( cycle );
504: 485 00013786 dd effffffc78 pushl _cycle
505: 486 0001378C fe 08 effffffc71 callf $8,_writed
506: 487 00013793 # writes(" EVT test ");
507: 488 00013793 .data 1
508: 489 00000597 * L447:
509: 490 00000597 * 202045565420746573742000 .ascii " EVT test \0"
510: 491 000005a3 * .text
511: 492 00013793 dd 8f00000597 pushl $L447
512: 493 00013799 fe 08 effffffc64 callf $8,_writes
513: 494 000137A0 # writed( test_no );
514: 495 000137A0 dd effffffc5e pushl _test_no
515: 496 000137A6 fe 08 effffffc57 callf $8,_writed
516: 497 000137AD # writes(". subtest ");
517: 498 000137AD .data 1
518: 499 000005a3 * L448:
519: 500 000005a3 * 2E20737562746573742000 .ascii ". subtest \0"
520: 501 000005ae * .text
521: 502 000137AD dd 8f000005a3 pushl $L448
522: 503 000137B3 fe 08 effffffc4a callf $8,_writes
523: 504 000137BA # writed( subtest );
524: 505 000137BA dd effffffc44 pushl _subtest
525: 506 000137C0 fe 08 effffffc3d callf $8,_writed
526: 507 000137C7 # writes( msg ); /* print the message */
527: 508 000137C7 dd ad04 pushl 4(fp)
528: 509 000137CA fe 08 effffffc33 callf $8,_writes
529: 510 000137D1 # writes(" index = ");
530: 511 000137D1 .data 1
531: 512 000005ae * L449:
532: 513 000005ae * 20696E646578203D2000 .ascii " index = \0"
533: 514 000005b8 * .text
534: 515 000137D1 dd 8f000005ae pushl $L449
535: 516 000137D7 fe 08 effffffc26 callf $8,_writes
536: 517 000137DE # writed( index );
537: 518 000137DE dd effffffc20 pushl _index
538: 519 000137E4 fe 08 effffffc19 callf $8,_writed
539: 520 000137EB # writes(
540: 521 000137EB # "\ninst = LDF op1, CVFL op2, NEGF (integer overflow fault on the CVDF)\n");
541: 522 000137EB .data 1
542: 523 000005b8 * L450:
543: 524 000005b8 * 0A696E7374203D204C4446206 .ascii "\12inst = LDF op1, CVFL op2, NEGF (integer overflow fault on th"
544: F70312C204356464C206F7032
545: 2C204E4547462020202028696
546: E7465676572206F766572666C
547: 6F77206661756C74206F6E207
548: 468
549: 525 000005f8 * 652043564446290A00 .ascii "e CVDF)\12\0"
550: 526 00000601 * .text
551: 527 000137EB dd 8f000005b8 pushl $L450
552: 528 000137F1 fe 08 effffffc0c callf $8,_writes
553: 529 000137F8 # }
554: 530 000137F8 40 ret#2
555: 531 000137F9 .set L439,0x0
556: 532 000137F9 L441:
557: 533 000137F9 13 ff67 jbr L442
558: 534 000137FC .data
559: 535 00000468 * .text
560: 536 000137FC .align 1
561: 537 000137FC .globl _pipe13_halt
562: 538 000137FC _pipe13_halt:
563: 539 000137FC 0000 .word L451
564: 540 000137FE #
565: 541 000137FE #
566: 542 000137FE #
567: 543 000137FE # /****************************************************************************
568: 544 000137FE # * halt on error routine
569: 545 000137FE # ****************************************************************************/
570: 546 000137FE # pipe13_halt( code )
571: 547 000137FE # int code; /* error code to halt with */
572: 548 000137FE # {
573: 549 000137FE 11 6a jbr L453
574: 550 00013800 L454:
575: 551 00013800 # err_code = code;
576: 552 00013800 0d ad04 effffffbfc movl 4(fp),_err_code
577: 553 00013808 # sgl_value_1 = dbl_ld_acc.m;
578: 554 00013808 0d effffffbf6 effffffbf1 movl _dbl_ld_acc,_sgl_value_1
579: 555 00013813 # sgl_value_2 = post_evt_acc.m;
580: 556 00013813 0d effffffbeb effffffbe6 movl _post_evt_acc,_sgl_value_2
581: 557 0001381E # sgl_value_3 = dbl_value_1.m;
582: 558 0001381E 0d effffffbe0 effffffbdb movl _dbl_value_1,_sgl_value_3
583: 559 00013829 # asm("movl _test_no,r0"); /* r0 = test number */
584: 560 00013829 0d effffffbd5 50 movl _test_no,r0
585: 561 00013830 # asm("movl _subtest,r1"); /* r1 = subtest number */
586: 562 00013830 0d effffffbce 51 movl _subtest,r1
587: 563 00013837 # asm("movl _err_code,r2"); /* r2 = error code */
588: 564 00013837 0d effffffbc7 52 movl _err_code,r2
589: 565 0001383E # asm("movl _cycle,r3"); /* r3 = cycle count */
590: 566 0001383E 0d effffffbc0 53 movl _cycle,r3
591: 567 00013845 # asm("movl _sgl_value_1,r4"); /* r4 = initial Acc. */
592: 568 00013845 0d effffffbb9 54 movl _sgl_value_1,r4
593: 569 0001384C # asm("movl _sgl_value_2,r5"); /* r5 = post event Acc. */
594: 570 0001384C 0d effffffbb2 55 movl _sgl_value_2,r5
595: 571 00013853 # asm("movl _sgl_value_3,r6"); /* r6 = integer stored */
596: 572 00013853 0d effffffbab 56 movl _sgl_value_3,r6
597: 573 0001385A # asm("movl _sgl_value_4,r7"); /* r7 = expected Acc. */
598: 574 0001385A 0d effffffba4 57 movl _sgl_value_4,r7
599: 575 00013861 # asm("movl _index,r8"); /* r8 = data index */
600: 576 00013861 0d effffffb9d 58 movl _index,r8
601: 577 00013868 # asm("halt"); /* HALT ... */
602: 578 00013868 00 halt
603: 579 00013869 # }
604: 580 00013869 40 ret#2
605: 581 0001386A .set L451,0x0
606: 582 0001386A L453:
607: 583 0001386A 11 94 jbr L454
608: 584 00000468 * .data
609: 584 00000468 * .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.