|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 0000048c * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe11
6: 6 00000000 _pipe11:
7: 7 00012A74 0000 .word L381
8: 8 00012A76 #
9: 9 00012A76 #
10: 10 00012A76 # #include "evt_defs.h"
11: 11 00012A76 #
12: 12 00012A76 # /*
13: 13 00012A76 # *********************************************************************
14: 14 00012A76 # * FPP PIPELINED EVENTS TEST #11
15: 15 00012A76 # *
16: 16 00012A76 # * This test will execute the following code: "LDF ADDF CVLF"
17: 17 00012A76 # * with an overflow fault on the ADDF. We will make sure that:
18: 18 00012A76 # * 1. The fault is detected, and
19: 19 00012A76 # * 2. the Convert Longword Intger to SGL Floating instruction is not executed.
20: 20 00012A76 # *********************************************************************
21: 21 00012A76 # */
22: 22 00012A76 # pipe11()
23: 23 00012A76 # {
24: 24 00012A76 13 012f jbr L383
25: 25 00012A79 L384:
26: 26 00012A79 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
27: 27 00012A79 ed 6d effffffff4 moval (r13),_pre_event_fp
28: 28 00012A80 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
29: 29 00012A80 ed 6e efffffffed moval (r14),_pre_event_sp
30: 30 00012A87 # precision = SGL;
31: 31 00012A87 0d 01 efffffffe6 movl $1,_precision
32: 32 00012A8E # test_event = ARITH_CODE; /* expect an arithmetic fault */
33: 33 00012A8E 0d 34 efffffffdf movl $52,_test_event
34: 34 00012A95 # exp_code = FLT_OVFL_CODE; /* - specificly overflow */
35: 35 00012A95 0d 04 efffffffd8 movl $4,_exp_code
36: 36 00012A9C # exp_event = FALSE; /* ... but not yet */
37: 37 00012A9C 4d efffffffd2 clrl _exp_event
38: 38 00012AA2 # asm("movab _pipe11_ret,_event_return"); /* set event return address */
39: 39 00012AA2 e9 ef000000b5 efffffffc7 movab _pipe11_ret,_event_return
40: 40 00012AAD # dbl_value_2.m = 24; /* set the CVLF data */
41: 41 00012AAD 0d 18 efffffffc0 movl $24,_dbl_value_2
42: 42 00012AB4 # max_index = adf_ov_cnt; /* set max operand index */
43: 43 00012AB4 0d efffffffba efffffffb5 movl _adf_ov_cnt,_max_index
44: 44 00012ABF # for( index = 0; index < max_index; index++ )
45: 45 00012ABF 4d efffffffaf clrl _index
46: 46 00012AC5 L387:
47: 47 00012AC5 1d efffffffa9 efffffffa4 cmpl _index,_max_index
48: 48 00012AD0 91 03 13 00d2 jgeq L386
49: 49 00012AD5 # {
50: 50 00012AD5 # dbl_ld_acc = adf_ov_dat[index].op_1; /* get the Acc data */
51: 51 00012AD5 48 04 efffffff98 50 shll $4,_index,r0
52: 52 00012ADD 0c 8f00000000 50 addl2 $_adf_ov_dat,r0
53: 53 00012AE4 0d a004 efffffff8c movl 4(r0),_dbl_ld_acc+4
54: 54 00012AEC 0d 60 efffffff81 movl (r0),_dbl_ld_acc
55: 55 00012AF3 # dbl_value_1 = adf_ov_dat[index].op_2; /* get the '0' data */
56: 56 00012AF3 48 04 efffffff7a 50 shll $4,_index,r0
57: 57 00012AFB 0c 8f00000008 50 addl2 $_adf_ov_dat+8,r0
58: 58 00012B02 0d a004 efffffff6e movl 4(r0),_dbl_value_1+4
59: 59 00012B0A 0d 60 efffffff63 movl (r0),_dbl_value_1
60: 60 00012B11 # asm(".globl _pipe11_lp1");
61: 61 00012B11 .globl _pipe11_lp1
62: 62 00012B11 # asm("_pipe11_lp1:");
63: 63 00012B11 _pipe11_lp1:
64: 64 00012B11 # asm("bispsw $0x60"); /* enable ovfl & undfl events*/
65: 65 00012B11 8b 8860 bispsw $0x60
66: 66 00012B14 # asm("movl _dbl_value_2,r4"); /* set the dummy load data */
67: 67 00012B14 0d efffffff5a 54 movl _dbl_value_2,r4
68: 68 00012B1B # asm("ldf _dbl_ld_acc"); /* load the Acc. */
69: 69 00012B1B 06 efffffff53 ldf _dbl_ld_acc
70: 70 00012B21 # exp_event = test_event; /* set the expect event flag */
71: 71 00012B21 0d efffffff4d efffffff48 movl _test_event,_exp_event
72: 72 00012B2C # asm("addf _dbl_value_1"); /* trigger the event */
73: 73 00012B2C c6 efffffff42 addf _dbl_value_1
74: 74 00012B32 # asm("cvlf r4"); /* we shouldn't get to here */
75: 75 00012B32 76 54 cvlf r4
76: 76 00012B34 # /*
77: 77 00012B34 # * If we got to here then there was no event
78: 78 00012B34 # */
79: 79 00012B34 # if( force_loop )
80: 80 00012B34 5d efffffff3a tstl _force_loop
81: 81 00012B3A 31 03 jeql L388
82: 82 00012B3C # asm("brw _pipe11_lp1");; /* loop on the error */
83: Assemb0002A234 # asm("brw _pipe11_lp1");; /* loop on the error */
84: "pipe100012A75 e 83: WARNING: brw: destination label is external
85: 83 00012B3C 13 ffd2 brw _pipe11_lp1
86: 84 00012B3F L388:
87: 85 00012B3F # exp_event = FALSE; /* reset event expected flag */
88: 86 00012B3F 4d efffffff2f clrl _exp_event
89: 87 00012B45 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
90: 88 00012B45 9b 8860 bicpsw $0x60
91: 89 00012B48 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
92: 90 00012B48 0d efffffff26 5d movl _pre_event_fp,fp
93: 91 00012B4F # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
94: 92 00012B4F 0d efffffff1f 5e movl _pre_event_sp,sp
95: 93 00012B56 # no_pipe11_evt();; /* report the error */
96: 94 00012B56 fe 04 ef0000004f callf $4,_no_pipe11_evt
97: 95 00012B5D # /*
98: 96 00012B5D # * Come here after the event
99: 97 00012B5D # */
100: 98 00012B5D # asm(".globl _pipe11_ret");
101: 99 00012B5D .globl _pipe11_ret
102: 100 00012B5D # asm("_pipe11_ret:");
103: 101 00012B5D _pipe11_ret:
104: 102 00012B5D # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
105: 103 00012B5D 0d efffffff11 5d movl _pre_event_fp,fp
106: 104 00012B64 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
107: 105 00012B64 0d efffffff0a 5e movl _pre_event_sp,sp
108: 106 00012B6B # if( force_loop )
109: 107 00012B6B 5d efffffff03 tstl _force_loop
110: 108 00012B71 31 03 jeql L390
111: 109 00012B73 # asm("brw _pipe11_lp1");; /* loop on the error */
112: "pipe100012A75 e 110: WARNING: brw: destination label is external
113: 110 00012B73 13 ff9b brw _pipe11_lp1
114: 111 00012B76 L390:
115: 112 00012B76 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
116: 113 00012B76 9b 8860 bicpsw $0x60
117: 114 00012B79 # if( post_evt_acc.m == 0x42c00000 ) /* Acc = CVLF data? ( 24.0 ) */
118: 115 00012B79 1d effffffef5 8f42c00000 cmpl _post_evt_acc,$1119879168
119: 116 00012B84 21 09 jneq L391
120: 117 00012B86 # pipe11_queue_er(); /* yes it was -error! error! */
121: 118 00012B86 fe 04 ef00000187 callf $4,_pipe11_queue_er
122: 119 00012B8D # else if( post_evt_acc.m ) /* was the Acc cleared? */
123: 120 00012B8D 11 0f jbr L393
124: 121 00012B8F L391:
125: 122 00012B8F 5d effffffedf tstl _post_evt_acc
126: 123 00012B95 31 07 jeql L394
127: 124 00012B97 # bad_pipe11_result(); /* incorrect result error */
128: 125 00012B97 fe 04 ef00000094 callf $4,_bad_pipe11_result
129: 126 00012B9E #
130: 127 00012B9E # }
131: 128 00012B9E L394:
132: 129 00012B9E L393:
133: 130 00012B9E L385:
134: 131 00012B9E 6d effffffed0 incl _index
135: 132 00012BA4 13 ff1e jbr L387
136: 133 00012BA7 L386:
137: 134 00012BA7 # }
138: 135 00012BA7 40 ret#2
139: 136 00012BA8 .set L381,0x0
140: 137 00012BA8 L383:
141: 138 00012BA8 13 fece jbr L384
142: 139 00012BAB .data
143: 140 0000048c * .text
144: 141 00012BAB 00 .align 1
145: 142 00012BAC .globl _no_pipe11_evt
146: 143 00012BAC _no_pipe11_evt:
147: 144 00012BAC 0000 .word L396
148: 145 00012BAE #
149: 146 00012BAE #
150: 147 00012BAE #
151: 148 00012BAE # /****************************************************************************
152: 149 00012BAE # * Report an "EVENT NOT DETECTED" error
153: 150 00012BAE # *
154: 151 00012BAE # * Cycle: xx. EVT test xx. subtest xx. No overflow fault seen. index = xx
155: 152 00012BAE # * inst = LDF op1, ADDF op2, CVLF op3 (overflow fault on the ADDF)
156: 153 00012BAE # * op1 = xxxxxxxx, op2 = xxxxxxxx
157: 154 00012BAE # ****************************************************************************/
158: 155 00012BAE # no_pipe11_evt()
159: 156 00012BAE # {
160: 157 00012BAE 11 7f jbr L398
161: 158 00012BB0 L399:
162: 159 00012BB0 # errcnt++; /* bump the error count */
163: 160 00012BB0 6d effffffebe incl _errcnt
164: 161 00012BB6 # if ( prt_error )
165: 162 00012BB6 5d effffffeb8 tstl _prt_error
166: 163 00012BBC 31 4a jeql L400
167: 164 00012BBE # {
168: 165 00012BBE # print_pipe11_er( ". No overflow fault seen" );
169: 166 00012BBE .data 1
170: 167 0000048c * L402:
171: 168 0000048c * 2E204E6F206F766572666C6F7 .ascii ". No overflow fault seen\0"
172: 7206661756C74207365656E00
173: 169 000004a5 * .text
174: 170 00012BBE dd 8f0000048c pushl $L402
175: 171 00012BC4 fe 08 ef0000022b callf $8,_print_pipe11_er
176: 172 00012BCB # writes("op1 = ");
177: 173 00012BCB .data 1
178: 174 000004a5 * L404:
179: 175 000004a5 * 6F7031203D2000 .ascii "op1 = \0"
180: 176 000004ac * .text
181: 177 00012BCB dd 8f000004a5 pushl $L404
182: 178 00012BD1 fe 08 effffffe9c callf $8,_writes
183: 179 00012BD8 # write32h( dbl_ld_acc.m );
184: 180 00012BD8 dd effffffe96 pushl _dbl_ld_acc
185: 181 00012BDE fe 08 effffffe8f callf $8,_write32h
186: 182 00012BE5 # writes(", op2 = ");
187: 183 00012BE5 .data 1
188: 184 000004ac * L406:
189: 185 000004ac * 2C2020206F7032203D2000 .ascii ", op2 = \0"
190: 186 000004b7 * .text
191: 187 00012BE5 dd 8f000004ac pushl $L406
192: 188 00012BEB fe 08 effffffe82 callf $8,_writes
193: 189 00012BF2 # write32h( dbl_value_1.m );
194: 190 00012BF2 dd effffffe7c pushl _dbl_value_1
195: 191 00012BF8 fe 08 effffffe75 callf $8,_write32h
196: 192 00012BFF # writec('\n');
197: 193 00012BFF dd 0a pushl $10
198: 194 00012C01 fe 08 effffffe6c callf $8,_writec
199: 195 00012C08 # }
200: 196 00012C08 # if ( halt_flg ) /* halt on error? */
201: 197 00012C08 L400:
202: 198 00012C08 5d effffffe66 tstl _halt_flg
203: 199 00012C0E 31 09 jeql L408
204: 200 00012C10 # pipe11_halt( 1 ); /* halt with a code of 1 */
205: 201 00012C10 dd 01 pushl $1
206: 202 00012C12 fe 08 ef0000027b callf $8,_pipe11_halt
207: 203 00012C19 # if ( loop_on_err )
208: 204 00012C19 L408:
209: 205 00012C19 5d effffffe55 tstl _loop_on_err
210: 206 00012C1F 31 0d jeql L410
211: 207 00012C21 # {
212: 208 00012C21 # force_loop = TRUE; /* set the force loop flag */
213: 209 00012C21 0d 01 effffffe4c movl $1,_force_loop
214: 210 00012C28 # asm("jmp _pipe11_lp1"); /* and loop */
215: 211 00012C28 71 effffffee3 jmp _pipe11_lp1
216: 212 00012C2E # };
217: 213 00012C2E L410:
218: 214 00012C2E # }
219: 215 00012C2E 40 ret#2
220: 216 00012C2F .set L396,0x0
221: 217 00012C2F L398:
222: 218 00012C2F 13 ff7e jbr L399
223: 219 00012C32 .data
224: 220 0000048c * .text
225: 221 00012C32 .align 1
226: 222 00012C32 .globl _bad_pipe11_result
227: 223 00012C32 _bad_pipe11_result:
228: 224 00012C32 0000 .word L411
229: 225 00012C34 #
230: 226 00012C34 #
231: 227 00012C34 #
232: 228 00012C34 #
233: 229 00012C34 # /****************************************************************************
234: 230 00012C34 # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error
235: 231 00012C34 # *
236: 232 00012C34 # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. index = xx
237: 233 00012C34 # * inst = LDF op1, ADDF op2, CVLF op3 (overflow fault on the ADDF)
238: 234 00012C34 # * The CVLF should not be executed.
239: 235 00012C34 # * op1 = xxxxxxxx, final Acc. = xxxxxxxx, op3 = xxxxxxxx
240: 236 00012C34 # * op2 = xxxxxxxx, expected = xxxxxxxx
241: 237 00012C34 # ****************************************************************************/
242: 238 00012C34 # bad_pipe11_result()
243: 239 00012C34 # {
244: 240 00012C34 13 00d9 jbr L413
245: 241 00012C37 L414:
246: 242 00012C37 # errcnt++; /* bump the error count */
247: 243 00012C37 6d effffffe37 incl _errcnt
248: 244 00012C3D # if ( prt_error )
249: 245 00012C3D 5d effffffe31 tstl _prt_error
250: 246 00012C43 21 03 13 00a1 jeql L415
251: 247 00012C48 # {
252: 248 00012C48 # print_pipe11_er( ". Bad final Accumulator" );
253: 249 00012C48 .data 1
254: 250 000004b7 * L416:
255: 251 000004b7 * 2E204261642066696E616C204 .ascii ". Bad final Accumulator\0"
256: 16363756D756C61746F7200
257: 252 000004cf * .text
258: 253 00012C48 dd 8f000004b7 pushl $L416
259: 254 00012C4E fe 08 ef000001a1 callf $8,_print_pipe11_er
260: 255 00012C55 # writes(
261: 256 00012C55 # "The CVLF should not be executed\n");
262: 257 00012C55 .data 1
263: 258 000004cf * L417:
264: 259 000004cf * 5468652043564C462073686F7 .ascii "The CVLF should not be executed\12\0"
265: 56C64206E6F74206265206578
266: 6563757465640A00
267: 260 000004f0 * .text
268: 261 00012C55 dd 8f000004cf pushl $L417
269: 262 00012C5B fe 08 effffffe12 callf $8,_writes
270: 263 00012C62 # writes("op1 = ");
271: 264 00012C62 .data 1
272: 265 000004f0 * L418:
273: 266 000004f0 * 6F7031203D2000 .ascii "op1 = \0"
274: 267 000004f7 * .text
275: 268 00012C62 dd 8f000004f0 pushl $L418
276: 269 00012C68 fe 08 effffffe05 callf $8,_writes
277: 270 00012C6F # write32h( dbl_ld_acc.m );
278: 271 00012C6F dd effffffdff pushl _dbl_ld_acc
279: 272 00012C75 fe 08 effffffdf8 callf $8,_write32h
280: 273 00012C7C # writes(", final Acc. = ");
281: 274 00012C7C .data 1
282: 275 000004f7 * L419:
283: 276 000004f7 * 2C202066696E616C204163632 .ascii ", final Acc. = \0"
284: E203D2000
285: 277 00000508 * .text
286: 278 00012C7C dd 8f000004f7 pushl $L419
287: 279 00012C82 fe 08 effffffdeb callf $8,_writes
288: 280 00012C89 # write32h( post_evt_acc.m );
289: 281 00012C89 dd effffffde5 pushl _post_evt_acc
290: 282 00012C8F fe 08 effffffdde callf $8,_write32h
291: 283 00012C96 # writes(", op3 = ");
292: 284 00012C96 .data 1
293: 285 00000508 * L420:
294: 286 00000508 * 2C2020206F7033203D2000 .ascii ", op3 = \0"
295: 287 00000513 * .text
296: 288 00012C96 dd 8f00000508 pushl $L420
297: 289 00012C9C fe 08 effffffdd1 callf $8,_writes
298: 290 00012CA3 # write32h( dbl_value_2.m );
299: 291 00012CA3 dd effffffdcb pushl _dbl_value_2
300: 292 00012CA9 fe 08 effffffdc4 callf $8,_write32h
301: 293 00012CB0 # writes("\nop2 = ");
302: 294 00012CB0 .data 1
303: 295 00000513 * L421:
304: 296 00000513 * 0A6F7032203D2000 .ascii "\12op2 = \0"
305: 297 0000051b * .text
306: 298 00012CB0 dd 8f00000513 pushl $L421
307: 299 00012CB6 fe 08 effffffdb7 callf $8,_writes
308: 300 00012CBD # write32h( dbl_value_1.m );
309: 301 00012CBD dd effffffdb1 pushl _dbl_value_1
310: 302 00012CC3 fe 08 effffffdaa callf $8,_write32h
311: 303 00012CCA # writes(", expected = ");
312: 304 00012CCA .data 1
313: 305 0000051b * L422:
314: 306 0000051b * 2C20202020657870656374656 .ascii ", expected = \0"
315: 4203D2000
316: 307 0000052c * .text
317: 308 00012CCA dd 8f0000051b pushl $L422
318: 309 00012CD0 fe 08 effffffd9d callf $8,_writes
319: 310 00012CD7 # write32h( 0 ); /* the expected result = 0 */
320: 311 00012CD7 dd 00 pushl $0
321: 312 00012CD9 fe 08 effffffd94 callf $8,_write32h
322: 313 00012CE0 # writec('\n');
323: 314 00012CE0 dd 0a pushl $10
324: 315 00012CE2 fe 08 effffffd8b callf $8,_writec
325: 316 00012CE9 # }
326: 317 00012CE9 # if ( halt_flg ) /* halt on error? */
327: 318 00012CE9 L415:
328: 319 00012CE9 5d effffffd85 tstl _halt_flg
329: 320 00012CEF 31 09 jeql L423
330: 321 00012CF1 # pipe11_halt( 2 ); /* halt with a code of 2 */
331: 322 00012CF1 dd 02 pushl $2
332: 323 00012CF3 fe 08 ef0000019a callf $8,_pipe11_halt
333: 324 00012CFA # if ( loop_on_err )
334: 325 00012CFA L423:
335: 326 00012CFA 5d effffffd74 tstl _loop_on_err
336: 327 00012D00 31 0d jeql L424
337: 328 00012D02 # {
338: 329 00012D02 # force_loop = TRUE; /* set the force loop flag */
339: 330 00012D02 0d 01 effffffd6b movl $1,_force_loop
340: 331 00012D09 # asm("jmp _pipe11_lp1"); /* and loop */
341: 332 00012D09 71 effffffe02 jmp _pipe11_lp1
342: 333 00012D0F # };
343: 334 00012D0F L424:
344: 335 00012D0F # }
345: 336 00012D0F 40 ret#2
346: 337 00012D10 .set L411,0x0
347: 338 00012D10 L413:
348: 339 00012D10 13 ff24 jbr L414
349: 340 00012D13 .data
350: 341 0000048c * .text
351: 342 00012D13 00 .align 1
352: 343 00012D14 .globl _pipe11_queue_er
353: 344 00012D14 _pipe11_queue_er:
354: 345 00012D14 0000 .word L425
355: 346 00012D16 #
356: 347 00012D16 #
357: 348 00012D16 #
358: 349 00012D16 #
359: 350 00012D16 #
360: 351 00012D16 # /****************************************************************************
361: 352 00012D16 # * Report an "FPP queue not cleared" message
362: 353 00012D16 # *
363: 354 00012D16 # * Cycle: xx. EVT test xx. subtest xx. Fpp queue not cleared. index = xx
364: 355 00012D16 # * inst = LDF op1, ADDF op2, CVLF op3 (overflow fault on the ADDF)
365: 356 00012D16 # * The CVLF should not have been executed but apparently was.
366: 357 00012D16 # * op1 = xxxxxxxx, final Acc. = xxxxxxxx, op3 = xxxxxxxx
367: 358 00012D16 # * op2 = xxxxxxxx, expected = xxxxxxxx
368: 359 00012D16 # ****************************************************************************/
369: 360 00012D16 # pipe11_queue_er()
370: 361 00012D16 # {
371: 362 00012D16 13 00d9 jbr L427
372: 363 00012D19 L428:
373: 364 00012D19 # errcnt++; /* bump the error count */
374: 365 00012D19 6d effffffd55 incl _errcnt
375: 366 00012D1F # if ( prt_error )
376: 367 00012D1F 5d effffffd4f tstl _prt_error
377: 368 00012D25 21 03 13 00a1 jeql L429
378: 369 00012D2A # {
379: 370 00012D2A # print_pipe11_er( ". Fpp queue not cleared" );
380: 371 00012D2A .data 1
381: 372 0000052c * L430:
382: 373 0000052c * 2E20467070207175657565206 .ascii ". Fpp queue not cleared\0"
383: E6F7420636C656172656400
384: 374 00000544 * .text
385: 375 00012D2A dd 8f0000052c pushl $L430
386: 376 00012D30 fe 08 ef000000bf callf $8,_print_pipe11_er
387: 377 00012D37 # writes(
388: 378 00012D37 # "The CVLF should not have been executed but apparently was.\n");
389: 379 00012D37 .data 1
390: 380 00000544 * L431:
391: 381 00000544 * 5468652043564C462073686F7 .ascii "The CVLF should not have been executed but apparently was.\12\0"
392: 56C64206E6F74206861766520
393: 6265656E20657865637574656
394: 420627574206170706172656E
395: 746C79207761732E0A00
396: 382 00000580 * .text
397: 383 00012D37 dd 8f00000544 pushl $L431
398: 384 00012D3D fe 08 effffffd30 callf $8,_writes
399: 385 00012D44 # writes("op1 = ");
400: 386 00012D44 .data 1
401: 387 00000580 * L432:
402: 388 00000580 * 6F7031203D2000 .ascii "op1 = \0"
403: 389 00000587 * .text
404: 390 00012D44 dd 8f00000580 pushl $L432
405: 391 00012D4A fe 08 effffffd23 callf $8,_writes
406: 392 00012D51 # write32h( dbl_ld_acc.m );
407: 393 00012D51 dd effffffd1d pushl _dbl_ld_acc
408: 394 00012D57 fe 08 effffffd16 callf $8,_write32h
409: 395 00012D5E # writes(", final Acc. = ");
410: 396 00012D5E .data 1
411: 397 00000587 * L433:
412: 398 00000587 * 2C202066696E616C204163632 .ascii ", final Acc. = \0"
413: E203D2000
414: 399 00000598 * .text
415: 400 00012D5E dd 8f00000587 pushl $L433
416: 401 00012D64 fe 08 effffffd09 callf $8,_writes
417: 402 00012D6B # write32h( post_evt_acc.m );
418: 403 00012D6B dd effffffd03 pushl _post_evt_acc
419: 404 00012D71 fe 08 effffffcfc callf $8,_write32h
420: 405 00012D78 # writes(", op3 = ");
421: 406 00012D78 .data 1
422: 407 00000598 * L434:
423: 408 00000598 * 2C20206F7033203D2000 .ascii ", op3 = \0"
424: 409 000005a2 * .text
425: 410 00012D78 dd 8f00000598 pushl $L434
426: 411 00012D7E fe 08 effffffcef callf $8,_writes
427: 412 00012D85 # write32h( dbl_value_2.m );
428: 413 00012D85 dd effffffce9 pushl _dbl_value_2
429: 414 00012D8B fe 08 effffffce2 callf $8,_write32h
430: 415 00012D92 # writes("\nop2 = ");
431: 416 00012D92 .data 1
432: 417 000005a2 * L435:
433: 418 000005a2 * 0A6F7032203D2000 .ascii "\12op2 = \0"
434: 419 000005aa * .text
435: 420 00012D92 dd 8f000005a2 pushl $L435
436: 421 00012D98 fe 08 effffffcd5 callf $8,_writes
437: 422 00012D9F # write32h( dbl_value_1.m );
438: 423 00012D9F dd effffffccf pushl _dbl_value_1
439: 424 00012DA5 fe 08 effffffcc8 callf $8,_write32h
440: 425 00012DAC # writes(", expected = ");
441: 426 00012DAC .data 1
442: 427 000005aa * L436:
443: 428 000005aa * 2C20202020657870656374656 .ascii ", expected = \0"
444: 4203D2000
445: 429 000005bb * .text
446: 430 00012DAC dd 8f000005aa pushl $L436
447: 431 00012DB2 fe 08 effffffcbb callf $8,_writes
448: 432 00012DB9 # write32h( 0 ); /* the expected result = 0 */
449: 433 00012DB9 dd 00 pushl $0
450: 434 00012DBB fe 08 effffffcb2 callf $8,_write32h
451: 435 00012DC2 # writec('\n');
452: 436 00012DC2 dd 0a pushl $10
453: 437 00012DC4 fe 08 effffffca9 callf $8,_writec
454: 438 00012DCB # }
455: 439 00012DCB # if ( halt_flg ) /* halt on error? */
456: 440 00012DCB L429:
457: 441 00012DCB 5d effffffca3 tstl _halt_flg
458: 442 00012DD1 31 09 jeql L437
459: 443 00012DD3 # pipe11_halt( 3 ); /* halt with a code of 3 */
460: 444 00012DD3 dd 03 pushl $3
461: 445 00012DD5 fe 08 ef000000b8 callf $8,_pipe11_halt
462: 446 00012DDC # if ( loop_on_err )
463: 447 00012DDC L437:
464: 448 00012DDC 5d effffffc92 tstl _loop_on_err
465: 449 00012DE2 31 0d jeql L438
466: 450 00012DE4 # {
467: 451 00012DE4 # force_loop = TRUE; /* set the force loop flag */
468: 452 00012DE4 0d 01 effffffc89 movl $1,_force_loop
469: 453 00012DEB # asm("jmp _pipe11_lp1"); /* and loop */
470: 454 00012DEB 71 effffffd20 jmp _pipe11_lp1
471: 455 00012DF1 # };
472: 456 00012DF1 L438:
473: 457 00012DF1 # }
474: 458 00012DF1 40 ret#2
475: 459 00012DF2 .set L425,0x0
476: 460 00012DF2 L427:
477: 461 00012DF2 13 ff24 jbr L428
478: 462 00012DF5 .data
479: 463 0000048c * .text
480: 464 00012DF5 00 .align 1
481: 465 00012DF6 .globl _print_pipe11_er
482: 466 00012DF6 _print_pipe11_er:
483: 467 00012DF6 0000 .word L439
484: 468 00012DF8 #
485: 469 00012DF8 #
486: 470 00012DF8 #
487: 471 00012DF8 #
488: 472 00012DF8 # /****************************************************************************
489: 473 00012DF8 # * Report an error message of the form:
490: 474 00012DF8 # *
491: 475 00012DF8 # * Cycle: xx. EVT test xx. subtest xx. <your message here> index = xx
492: 476 00012DF8 # * inst = LDF op1, ADDF op2, CVLF op3 (overflow fault on the ADDF)
493: 477 00012DF8 # ****************************************************************************/
494: 478 00012DF8 # print_pipe11_er( msg )
495: 479 00012DF8 # char *msg; /* error message to print */
496: 480 00012DF8 # {
497: 481 00012DF8 13 0096 jbr L441
498: 482 00012DFB L442:
499: 483 00012DFB # if( errcnt == 1 ) /* 1st error? */
500: 484 00012DFB 1d effffffc73 01 cmpl _errcnt,$1
501: 485 00012E02 21 0d jneq L443
502: 486 00012E04 # writes(" \n"); /* start a new print line */
503: 487 00012E04 .data 1
504: 488 000005bb * L444:
505: 489 000005bb * 200A00 .ascii " \12\0"
506: 490 000005be * .text
507: 491 00012E04 dd 8f000005bb pushl $L444
508: 492 00012E0A fe 08 effffffc63 callf $8,_writes
509: 493 00012E11 # writes("Cycle: ");
510: 494 00012E11 L443:
511: 495 00012E11 .data 1
512: 496 000005be * L445:
513: 497 000005be * 4379636C653A2000 .ascii "Cycle: \0"
514: 498 000005c6 * .text
515: 499 00012E11 dd 8f000005be pushl $L445
516: 500 00012E17 fe 08 effffffc56 callf $8,_writes
517: 501 00012E1E # writed( cycle );
518: 502 00012E1E dd effffffc50 pushl _cycle
519: 503 00012E24 fe 08 effffffc49 callf $8,_writed
520: 504 00012E2B # writes(" EVT test ");
521: 505 00012E2B .data 1
522: 506 000005c6 * L447:
523: 507 000005c6 * 202045565420746573742000 .ascii " EVT test \0"
524: 508 000005d2 * .text
525: 509 00012E2B dd 8f000005c6 pushl $L447
526: 510 00012E31 fe 08 effffffc3c callf $8,_writes
527: 511 00012E38 # writed( test_no );
528: 512 00012E38 dd effffffc36 pushl _test_no
529: 513 00012E3E fe 08 effffffc2f callf $8,_writed
530: 514 00012E45 # writes(". subtest ");
531: 515 00012E45 .data 1
532: 516 000005d2 * L448:
533: 517 000005d2 * 2E20737562746573742000 .ascii ". subtest \0"
534: 518 000005dd * .text
535: 519 00012E45 dd 8f000005d2 pushl $L448
536: 520 00012E4B fe 08 effffffc22 callf $8,_writes
537: 521 00012E52 # writed( subtest );
538: 522 00012E52 dd effffffc1c pushl _subtest
539: 523 00012E58 fe 08 effffffc15 callf $8,_writed
540: 524 00012E5F # writes( msg ); /* print the message */
541: 525 00012E5F dd ad04 pushl 4(fp)
542: 526 00012E62 fe 08 effffffc0b callf $8,_writes
543: 527 00012E69 # writes(". index = ");
544: 528 00012E69 .data 1
545: 529 000005dd * L449:
546: 530 000005dd * 2E20696E646578203D2000 .ascii ". index = \0"
547: 531 000005e8 * .text
548: 532 00012E69 dd 8f000005dd pushl $L449
549: 533 00012E6F fe 08 effffffbfe callf $8,_writes
550: 534 00012E76 # writed( index );
551: 535 00012E76 dd effffffbf8 pushl _index
552: 536 00012E7C fe 08 effffffbf1 callf $8,_writed
553: 537 00012E83 # writes(
554: 538 00012E83 # "\ninst = LDF op1, ADDF op2, CVLF op3 (overflow fault on the ADDF)\n");
555: 539 00012E83 .data 1
556: 540 000005e8 * L450:
557: 541 000005e8 * 0A696E7374203D204C4446206 .ascii "\12inst = LDF op1, ADDF op2, CVLF op3 (overflow fault on the AD"
558: F70312C2041444446206F7032
559: 2C2043564C46206F703320202
560: 020286F766572666C6F772066
561: 61756C74206F6E20746865204
562: 144
563: 542 00000628 * 4446290A00 .ascii "DF)\12\0"
564: 543 0000062d * .text
565: 544 00012E83 dd 8f000005e8 pushl $L450
566: 545 00012E89 fe 08 effffffbe4 callf $8,_writes
567: 546 00012E90 # }
568: 547 00012E90 40 ret#2
569: 548 00012E91 .set L439,0x0
570: 549 00012E91 L441:
571: 550 00012E91 13 ff67 jbr L442
572: 551 00012E94 .data
573: 552 0000048c * .text
574: 553 00012E94 .align 1
575: 554 00012E94 .globl _pipe11_halt
576: 555 00012E94 _pipe11_halt:
577: 556 00012E94 0000 .word L451
578: 557 00012E96 #
579: 558 00012E96 #
580: 559 00012E96 #
581: 560 00012E96 # /****************************************************************************
582: 561 00012E96 # * halt on error routine
583: 562 00012E96 # ****************************************************************************/
584: 563 00012E96 # pipe11_halt( code )
585: 564 00012E96 # int code; /* error code to halt with */
586: 565 00012E96 # {
587: 566 00012E96 11 65 jbr L453
588: 567 00012E98 L454:
589: 568 00012E98 # err_code = code;
590: 569 00012E98 0d ad04 effffffbd4 movl 4(fp),_err_code
591: 570 00012EA0 # sgl_value_1 = dbl_ld_acc.m;
592: 571 00012EA0 0d effffffbce effffffbc9 movl _dbl_ld_acc,_sgl_value_1
593: 572 00012EAB # sgl_value_2 = dbl_value_1.m;
594: 573 00012EAB 0d effffffbc3 effffffbbe movl _dbl_value_1,_sgl_value_2
595: 574 00012EB6 # sgl_value_3 = post_evt_acc.m;
596: 575 00012EB6 0d effffffbb8 effffffbb3 movl _post_evt_acc,_sgl_value_3
597: 576 00012EC1 # asm("movl _test_no,r0"); /* r0 = test number */
598: 577 00012EC1 0d effffffbad 50 movl _test_no,r0
599: 578 00012EC8 # asm("movl _subtest,r1"); /* r1 = subtest number */
600: 579 00012EC8 0d effffffba6 51 movl _subtest,r1
601: 580 00012ECF # asm("movl _err_code,r2"); /* r2 = error code */
602: 581 00012ECF 0d effffffb9f 52 movl _err_code,r2
603: 582 00012ED6 # asm("movl _cycle,r3"); /* r3 = cycle count */
604: 583 00012ED6 0d effffffb98 53 movl _cycle,r3
605: 584 00012EDD # asm("movl _sgl_value_1,r4"); /* r4 = initial accumulator */
606: 585 00012EDD 0d effffffb91 54 movl _sgl_value_1,r4
607: 586 00012EE4 # asm("movl _sgl_value_2,r5"); /* r5 = ADDF operand */
608: 587 00012EE4 0d effffffb8a 55 movl _sgl_value_2,r5
609: 588 00012EEB # asm("movl _sgl_value_3,r6"); /* r6 = final accumulator */
610: 589 00012EEB 0d effffffb83 56 movl _sgl_value_3,r6
611: 590 00012EF2 # asm("clrl r7"); /* r7 = expected accumulator */
612: 591 00012EF2 4d 57 clrl r7
613: 592 00012EF4 # asm("movl _index,r8"); /* r8 = data index */
614: 593 00012EF4 0d effffffb7a 58 movl _index,r8
615: 594 00012EFB # asm("halt"); /* HALT ... */
616: 595 00012EFB 00 halt
617: 596 00012EFC # }
618: 597 00012EFC 40 ret#2
619: 598 00012EFD .set L451,0x0
620: 599 00012EFD L453:
621: 600 00012EFD 11 99 jbr L454
622: 601 00012EFF .data
623: 601 00025973 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.