|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000488 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe9
6: 6 00000000 _pipe9:
7: 7 0001208C 0000 .word L381
8: 8 0001208E #
9: 9 0001208E # #include "evt_defs.h"
10: 10 0001208E #
11: 11 0001208E # /*
12: 12 0001208E # *********************************************************************
13: 13 0001208E # * FPP PIPELINED EVENTS TEST #9
14: 14 0001208E # *
15: 15 0001208E # * This test will execute the following code: "LDF DIVF CVLF $2"
16: 16 0001208E # * with a divide by zero fault on the DIVF. We will make sure that:
17: 17 0001208E # * 1. The fault is detected, and
18: 18 0001208E # * 2. the convert instruction is not executed.
19: 19 0001208E # *********************************************************************
20: 20 0001208E # */
21: 21 0001208E # pipe9()
22: 22 0001208E # {
23: 23 0001208E 13 0146 jbr L383
24: 24 00012091 L384:
25: 25 00012091 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
26: 26 00012091 ed 6d effffffff4 moval (r13),_pre_event_fp
27: 27 00012098 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
28: 28 00012098 ed 6e efffffffed moval (r14),_pre_event_sp
29: 29 0001209F # precision = SGL;
30: 30 0001209F 0d 01 efffffffe6 movl $1,_precision
31: 31 000120A6 # test_event = ARITH_CODE; /* expect an arithmetic fault */
32: 32 000120A6 0d 34 efffffffdf movl $52,_test_event
33: 33 000120AD # exp_code = FLT_0_DIV_CODE; /* - specificly div by 0 */
34: 34 000120AD 0d 03 efffffffd8 movl $3,_exp_code
35: 35 000120B4 # exp_event = FALSE; /* ... but not yet */
36: 36 000120B4 4d efffffffd2 clrl _exp_event
37: 37 000120BA # asm("movab _pipe9_ret,_event_return"); /* set event return address */
38: 38 000120BA e9 ef000000c7 efffffffc7 movab _pipe9_ret,_event_return
39: 39 000120C5 # max_index = zero_divide_cnt; /* set max operand index */
40: 40 000120C5 0d efffffffc1 efffffffbc movl _zero_divide_cnt,_max_index
41: 41 000120D0 # for( index = 0; index < max_index; index++ )
42: 42 000120D0 4d efffffffb6 clrl _index
43: 43 000120D6 L387:
44: 44 000120D6 1d efffffffb0 efffffffab cmpl _index,_max_index
45: 45 000120E1 91 03 13 00f0 jgeq L386
46: 46 000120E6 # {
47: 47 000120E6 # dbl_ld_acc = zero_divide_data[index].op_1; /* get the Acc data */
48: 48 000120E6 48 04 efffffff9f 50 shll $4,_index,r0
49: 49 000120EE 0c 8f00000000 50 addl2 $_zero_divide_data,r0
50: 50 000120F5 0d a004 efffffff93 movl 4(r0),_dbl_ld_acc+4
51: 51 000120FD 0d 60 efffffff88 movl (r0),_dbl_ld_acc
52: 52 00012104 # dbl_value_1 = zero_divide_data[index].op_2; /* get the '0' data */
53: 53 00012104 48 04 efffffff81 50 shll $4,_index,r0
54: 54 0001210C 0c 8f00000008 50 addl2 $_zero_divide_data+8,r0
55: 55 00012113 0d a004 efffffff75 movl 4(r0),_dbl_value_1+4
56: 56 0001211B 0d 60 efffffff6a movl (r0),_dbl_value_1
57: 57 00012122 # if( dbl_ld_acc.m & 0x7f800000 )
58: 58 00012122 3d 8f7f800000 efffffff5f bitl $2139095040,_dbl_ld_acc
59: 59 0001212D 31 0d jeql L388
60: 60 0001212F # dbl_expected.m = dbl_ld_acc.m; /* The final Acc s/b */
61: 61 0001212F 0d efffffff57 efffffff52 movl _dbl_ld_acc,_dbl_expected
62: 62 0001213A # else
63: 63 0001213A 11 06 jbr L389
64: 64 0001213C L388:
65: 65 0001213C # dbl_expected.m = 0; /* = the initial Acc */
66: 66 0001213C 4d efffffff4a clrl _dbl_expected
67: 67 00012142 L389:
68: 68 00012142 # asm("bispsw $0x60"); /* enable ovfl,undfl */
69: 69 00012142 8b 8860 bispsw $0x60
70: 70 00012145 # asm(".globl _pipe9_lp1");
71: 71 00012145 .globl _pipe9_lp1
72: 72 00012145 # asm("_pipe9_lp1:");
73: 73 00012145 _pipe9_lp1:
74: 74 00012145 # asm("ldf _dbl_ld_acc"); /* load the Acc. */
75: 75 00012145 06 efffffff41 ldf _dbl_ld_acc
76: 76 0001214B # exp_event = test_event; /* expect event soon */
77: 77 0001214B 0d efffffff3b efffffff36 movl _test_event,_exp_event
78: 78 00012156 # asm("divf _dbl_value_1"); /* trigger the event */
79: 79 00012156 f6 efffffff30 divf _dbl_value_1
80: 80 0001215C # asm("cvlf $2"); /* shouldn't get here*/
81: 81 0001215C 76 02 cvlf $2
82: 82 0001215E # /*
83: 83 0001215E # * If we got to here then there was no event
84: 84 0001215E # */
85: 85 0001215E # if( force_loop )
86: 86 0001215E 5d efffffff28 tstl _force_loop
87: 87 00012164 31 03 jeql L390
88: 88 00012166 # asm("brw _pipe9_lp1");; /* loop on the error */
89: Assemb0002984C # asm("brw _pipe9_lp1");; /* loop on the error */
90: "pipe90002984C 89: WARNING: brw: destination label is external
91: 89 00012166 13 ffdc brw _pipe9_lp1
92: 90 00012169 L390:
93: 91 00012169 # exp_event = FALSE; /* reset event expected flag */
94: 92 00012169 4d efffffff1d clrl _exp_event
95: 93 0001216F # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
96: 94 0001216F 0d efffffff17 5d movl _pre_event_fp,fp
97: 95 00012176 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
98: 96 00012176 0d efffffff10 5e movl _pre_event_sp,sp
99: 97 0001217D # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
100: 98 0001217D 9b 8860 bicpsw $0x60
101: 99 00012180 # no_pipe9_evt();; /* report the error */
102: 100 00012180 fe 04 ef00000053 callf $4,_no_pipe9_evt
103: 101 00012187 # /*
104: 102 00012187 # * Come here after the event
105: 103 00012187 # */
106: 104 00012187 # asm(".globl _pipe9_ret");
107: 105 00012187 .globl _pipe9_ret
108: 106 00012187 # asm("_pipe9_ret:");
109: 107 00012187 _pipe9_ret:
110: 108 00012187 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
111: 109 00012187 0d effffffeff 5d movl _pre_event_fp,fp
112: 110 0001218E # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
113: 111 0001218E 0d effffffef8 5e movl _pre_event_sp,sp
114: 112 00012195 # if( force_loop )
115: 113 00012195 5d effffffef1 tstl _force_loop
116: 114 0001219B 31 03 jeql L392
117: 115 0001219D # asm("brw _pipe9_lp1");; /* loop on the error */
118: "pipe90002984C 116: WARNING: brw: destination label is external
119: 116 0001219D 13 ffa5 brw _pipe9_lp1
120: 117 000121A0 L392:
121: 118 000121A0 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
122: 119 000121A0 9b 8860 bicpsw $0x60
123: 120 000121A3 # if( post_evt_acc.m != dbl_expected.m ) /* was the Acc modified? */
124: 121 000121A3 1d effffffee3 effffffede cmpl _post_evt_acc,_dbl_expected
125: 122 000121AE 31 1d jeql L393
126: 123 000121B0 # {
127: 124 000121B0 # if( post_evt_acc.m == 0x41000000 ) /* is Acc. = 2.0 ? */
128: 125 000121B0 1d effffffed6 8f41000000 cmpl _post_evt_acc,$1090519040
129: 126 000121BB 21 09 jneq L394
130: 127 000121BD # pipe9_queue_er(); /* queue not cleared error */
131: 128 000121BD fe 04 ef00000168 callf $4,_pipe9_queue_er
132: 129 000121C4 # else
133: 130 000121C4 11 07 jbr L396
134: 131 000121C6 L394:
135: 132 000121C6 # bad_pipe9_result(); /* incorrect result error */
136: 133 000121C6 fe 04 ef00000093 callf $4,_bad_pipe9_result
137: 134 000121CD L396:
138: 135 000121CD # }
139: 136 000121CD # }
140: 137 000121CD L393:
141: 138 000121CD L385:
142: 139 000121CD 6d effffffeb9 incl _index
143: 140 000121D3 13 ff00 jbr L387
144: 141 000121D6 L386:
145: 142 000121D6 # }
146: 143 000121D6 40 ret#2
147: 144 000121D7 .set L381,0x0
148: 145 000121D7 L383:
149: 146 000121D7 13 feb7 jbr L384
150: 147 000121DA .data
151: 148 00000488 * .text
152: 149 000121DA .align 1
153: 150 000121DA .globl _no_pipe9_evt
154: 151 000121DA _no_pipe9_evt:
155: 152 000121DA 0000 .word L398
156: 153 000121DC #
157: 154 000121DC #
158: 155 000121DC #
159: 156 000121DC # /****************************************************************************
160: 157 000121DC # * Report an "EVENT NOT DETECTED" error
161: 158 000121DC # *
162: 159 000121DC # * Cycle: xx. EVT test xx. subtest xx. No 'divide by 0' fault seen. index = xx
163: 160 000121DC # * inst = LDF op1, DIVF op2, CVLF '2' ('divide by 0' fault on DIVF)
164: 161 000121DC # * op1 = xxxxxxxx, op2 = xxxxxxxx
165: 162 000121DC # ****************************************************************************/
166: 163 000121DC # no_pipe9_evt()
167: 164 000121DC # {
168: 165 000121DC 11 7f jbr L400
169: 166 000121DE L401:
170: 167 000121DE # errcnt++; /* bump the error count */
171: 168 000121DE 6d effffffea8 incl _errcnt
172: 169 000121E4 # if ( prt_error )
173: 170 000121E4 5d effffffea2 tstl _prt_error
174: 171 000121EA 31 4a jeql L402
175: 172 000121EC # {
176: 173 000121EC # print_pipe9_er( ". No 'divide by 0' fault seen." );
177: 174 000121EC .data 1
178: 175 00000488 * L404:
179: 176 00000488 * 2E204E6F20276469766964652 .ascii ". No 'divide by 0' fault seen.\0"
180: 06279203027206661756C7420
181: 7365656E2E00
182: 177 000004a7 * .text
183: 178 000121EC dd 8f00000488 pushl $L404
184: 179 000121F2 fe 08 ef000001ff callf $8,_print_pipe9_er
185: 180 000121F9 # writes("op1 = ");
186: 181 000121F9 .data 1
187: 182 000004a7 * L406:
188: 183 000004a7 * 6F7031203D2000 .ascii "op1 = \0"
189: 184 000004ae * .text
190: 185 000121F9 dd 8f000004a7 pushl $L406
191: 186 000121FF fe 08 effffffe86 callf $8,_writes
192: 187 00012206 # write32h( dbl_ld_acc.m );
193: 188 00012206 dd effffffe80 pushl _dbl_ld_acc
194: 189 0001220C fe 08 effffffe79 callf $8,_write32h
195: 190 00012213 # writes(", op2 = ");
196: 191 00012213 .data 1
197: 192 000004ae * L408:
198: 193 000004ae * 2C2020206F7032203D2000 .ascii ", op2 = \0"
199: 194 000004b9 * .text
200: 195 00012213 dd 8f000004ae pushl $L408
201: 196 00012219 fe 08 effffffe6c callf $8,_writes
202: 197 00012220 # write32h( dbl_value_1.m );
203: 198 00012220 dd effffffe66 pushl _dbl_value_1
204: 199 00012226 fe 08 effffffe5f callf $8,_write32h
205: 200 0001222D # writec('\n');
206: 201 0001222D dd 0a pushl $10
207: 202 0001222F fe 08 effffffe56 callf $8,_writec
208: 203 00012236 # }
209: 204 00012236 # if ( halt_flg ) /* halt on error? */
210: 205 00012236 L402:
211: 206 00012236 5d effffffe50 tstl _halt_flg
212: 207 0001223C 31 09 jeql L410
213: 208 0001223E # pipe9_halt( 1 ); /* halt with a code of 1 */
214: 209 0001223E dd 01 pushl $1
215: 210 00012240 fe 08 ef0000025d callf $8,_pipe9_halt
216: 211 00012247 # if ( loop_on_err )
217: 212 00012247 L410:
218: 213 00012247 5d effffffe3f tstl _loop_on_err
219: 214 0001224D 31 0d jeql L412
220: 215 0001224F # {
221: 216 0001224F # force_loop = TRUE; /* set the force loop flag */
222: 217 0001224F 0d 01 effffffe36 movl $1,_force_loop
223: 218 00012256 # asm("jmp _pipe9_lp1"); /* and loop */
224: 219 00012256 71 effffffee9 jmp _pipe9_lp1
225: 220 0001225C # };
226: 221 0001225C L412:
227: 222 0001225C # }
228: 223 0001225C 40 ret#2
229: 224 0001225D .set L398,0x0
230: 225 0001225D L400:
231: 226 0001225D 13 ff7e jbr L401
232: 227 00012260 .data
233: 228 00000488 * .text
234: 229 00012260 .align 1
235: 230 00012260 .globl _bad_pipe9_result
236: 231 00012260 _bad_pipe9_result:
237: 232 00012260 0000 .word L413
238: 233 00012262 #
239: 234 00012262 #
240: 235 00012262 #
241: 236 00012262 #
242: 237 00012262 # /****************************************************************************
243: 238 00012262 # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error
244: 239 00012262 # *
245: 240 00012262 # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. index = xx
246: 241 00012262 # * inst = LDF op1, DIVF op2, CVLF '2' ('divide by 0' fault on DIVF)
247: 242 00012262 # * The 'Convert '2' to Floating Point' should not be executed.
248: 243 00012262 # * op_1 = xxxxxxxx, op2 = xxxxxxxx, final Acc. = xxxxxxxx, expected = xxxxxxxx
249: 244 00012262 # ****************************************************************************/
250: 245 00012262 # bad_pipe9_result()
251: 246 00012262 # {
252: 247 00012262 13 00c3 jbr L415
253: 248 00012265 L416:
254: 249 00012265 # errcnt++; /* bump the error count */
255: 250 00012265 6d effffffe21 incl _errcnt
256: 251 0001226B # if ( prt_error )
257: 252 0001226B 5d effffffe1b tstl _prt_error
258: 253 00012271 21 03 13 008b jeql L417
259: 254 00012276 # {
260: 255 00012276 # print_pipe9_er( ". Bad final Accumulator" );
261: 256 00012276 .data 1
262: 257 000004b9 * L418:
263: 258 000004b9 * 2E204261642066696E616C204 .ascii ". Bad final Accumulator\0"
264: 16363756D756C61746F7200
265: 259 000004d1 * .text
266: 260 00012276 dd 8f000004b9 pushl $L418
267: 261 0001227C fe 08 ef00000175 callf $8,_print_pipe9_er
268: 262 00012283 # writes(
269: 263 00012283 # "The 'Convert '2' to Floating Point' should not be executed\n");
270: 264 00012283 .data 1
271: 265 000004d1 * L419:
272: 266 000004d1 * 5468652027436F6E766572742 .ascii "The 'Convert '2' to Floating Point' should not be executed\12\0"
273: 027322720746F20466C6F6174
274: 696E6720506F696E742720736
275: 86F756C64206E6F7420626520
276: 65786563757465640A00
277: 267 0000050d * .text
278: 268 00012283 dd 8f000004d1 pushl $L419
279: 269 00012289 fe 08 effffffdfc callf $8,_writes
280: 270 00012290 # writes("op1 = ");
281: 271 00012290 .data 1
282: 272 0000050d * L420:
283: 273 0000050d * 6F7031203D2000 .ascii "op1 = \0"
284: 274 00000514 * .text
285: 275 00012290 dd 8f0000050d pushl $L420
286: 276 00012296 fe 08 effffffdef callf $8,_writes
287: 277 0001229D # write32h( dbl_ld_acc.m );
288: 278 0001229D dd effffffde9 pushl _dbl_ld_acc
289: 279 000122A3 fe 08 effffffde2 callf $8,_write32h
290: 280 000122AA # writes(", op1 = ");
291: 281 000122AA .data 1
292: 282 00000514 * L421:
293: 283 00000514 * 2C206F7031203D2000 .ascii ", op1 = \0"
294: 284 0000051d * .text
295: 285 000122AA dd 8f00000514 pushl $L421
296: 286 000122B0 fe 08 effffffdd5 callf $8,_writes
297: 287 000122B7 # write32h( dbl_value_1.m );
298: 288 000122B7 dd effffffdcf pushl _dbl_value_1
299: 289 000122BD fe 08 effffffdc8 callf $8,_write32h
300: 290 000122C4 # writes(", final Acc. = ");
301: 291 000122C4 .data 1
302: 292 0000051d * L422:
303: 293 0000051d * 2C2066696E616C204163632E2 .ascii ", final Acc. = \0"
304: 03D2000
305: 294 0000052d * .text
306: 295 000122C4 dd 8f0000051d pushl $L422
307: 296 000122CA fe 08 effffffdbb callf $8,_writes
308: 297 000122D1 # write32h( post_evt_acc.m );
309: 298 000122D1 dd effffffdb5 pushl _post_evt_acc
310: 299 000122D7 fe 08 effffffdae callf $8,_write32h
311: 300 000122DE # writes(", expected = ");
312: 301 000122DE .data 1
313: 302 0000052d * L423:
314: 303 0000052d * 2C206578706563746564203D2 .ascii ", expected = \0"
315: 000
316: 304 0000053b * .text
317: 305 000122DE dd 8f0000052d pushl $L423
318: 306 000122E4 fe 08 effffffda1 callf $8,_writes
319: 307 000122EB # write32h( dbl_expected.m ); /* the expected result = 0 */
320: 308 000122EB dd effffffd9b pushl _dbl_expected
321: 309 000122F1 fe 08 effffffd94 callf $8,_write32h
322: 310 000122F8 # writec('\n');
323: 311 000122F8 dd 0a pushl $10
324: 312 000122FA fe 08 effffffd8b callf $8,_writec
325: 313 00012301 # }
326: 314 00012301 # if ( halt_flg ) /* halt on error? */
327: 315 00012301 L417:
328: 316 00012301 5d effffffd85 tstl _halt_flg
329: 317 00012307 31 09 jeql L424
330: 318 00012309 # pipe9_halt( 2 ); /* halt with a code of 2 */
331: 319 00012309 dd 02 pushl $2
332: 320 0001230B fe 08 ef00000192 callf $8,_pipe9_halt
333: 321 00012312 # if ( loop_on_err )
334: 322 00012312 L424:
335: 323 00012312 5d effffffd74 tstl _loop_on_err
336: 324 00012318 31 0d jeql L425
337: 325 0001231A # {
338: 326 0001231A # force_loop = TRUE; /* set the force loop flag */
339: 327 0001231A 0d 01 effffffd6b movl $1,_force_loop
340: 328 00012321 # asm("jmp _pipe9_lp1"); /* and loop */
341: 329 00012321 71 effffffe1e jmp _pipe9_lp1
342: 330 00012327 # };
343: 331 00012327 L425:
344: 332 00012327 # }
345: 333 00012327 40 ret#2
346: 334 00012328 .set L413,0x0
347: 335 00012328 L415:
348: 336 00012328 13 ff3a jbr L416
349: 337 0001232B .data
350: 338 00000488 * .text
351: 339 0001232B 00 .align 1
352: 340 0001232C .globl _pipe9_queue_er
353: 341 0001232C _pipe9_queue_er:
354: 342 0001232C 0000 .word L426
355: 343 0001232E #
356: 344 0001232E #
357: 345 0001232E #
358: 346 0001232E #
359: 347 0001232E #
360: 348 0001232E # /****************************************************************************
361: 349 0001232E # * Report an "FPP queue not cleared" message
362: 350 0001232E # *
363: 351 0001232E # * Cycle: xx. EVT test xx. subtest xx. Fpp queue not cleared. index = xx
364: 352 0001232E # * inst = LDF op1, DIVF op2, CVLF '2' ('divide by 0' fault on DIVF)
365: 353 0001232E # * The 'Convert '2' to Floating Point' was apparently executed.
366: 354 0001232E # * op1 = xxxxxxxx, op2 = xxxxxxxx, final Acc. = xxxxxxxx, expected = xxxxxxxx
367: 355 0001232E # ****************************************************************************/
368: 356 0001232E # pipe9_queue_er()
369: 357 0001232E # {
370: 358 0001232E 13 00c3 jbr L428
371: 359 00012331 L429:
372: 360 00012331 # errcnt++; /* bump the error count */
373: 361 00012331 6d effffffd55 incl _errcnt
374: 362 00012337 # if ( prt_error )
375: 363 00012337 5d effffffd4f tstl _prt_error
376: 364 0001233D 21 03 13 008b jeql L430
377: 365 00012342 # {
378: 366 00012342 # print_pipe9_er( ". Fpp queue not cleared" );
379: 367 00012342 .data 1
380: 368 0000053b * L431:
381: 369 0000053b * 2E20467070207175657565206 .ascii ". Fpp queue not cleared\0"
382: E6F7420636C656172656400
383: 370 00000553 * .text
384: 371 00012342 dd 8f0000053b pushl $L431
385: 372 00012348 fe 08 ef000000a9 callf $8,_print_pipe9_er
386: 373 0001234F # writes(
387: 374 0001234F # "The 'Convert '2' to Floating Point' was apparently executed.\n");
388: 375 0001234F .data 1
389: 376 00000553 * L432:
390: 377 00000553 * 5468652027436F6E766572742 .ascii "The 'Convert '2' to Floating Point' was apparently executed.\12\0"
391: 027322720746F20466C6F6174
392: 696E6720506F696E742720776
393: 173206170706172656E746C79
394: 2065786563757465642E0A00
395: 378 00000591 * .text
396: 379 0001234F dd 8f00000553 pushl $L432
397: 380 00012355 fe 08 effffffd30 callf $8,_writes
398: 381 0001235C # writes("op1 = ");
399: 382 0001235C .data 1
400: 383 00000591 * L433:
401: 384 00000591 * 6F7031203D2000 .ascii "op1 = \0"
402: 385 00000598 * .text
403: 386 0001235C dd 8f00000591 pushl $L433
404: 387 00012362 fe 08 effffffd23 callf $8,_writes
405: 388 00012369 # write32h( dbl_ld_acc.m );
406: 389 00012369 dd effffffd1d pushl _dbl_ld_acc
407: 390 0001236F fe 08 effffffd16 callf $8,_write32h
408: 391 00012376 # writes(", op1 = ");
409: 392 00012376 .data 1
410: 393 00000598 * L434:
411: 394 00000598 * 2C206F7031203D2000 .ascii ", op1 = \0"
412: 395 000005a1 * .text
413: 396 00012376 dd 8f00000598 pushl $L434
414: 397 0001237C fe 08 effffffd09 callf $8,_writes
415: 398 00012383 # write32h( dbl_value_1.m );
416: 399 00012383 dd effffffd03 pushl _dbl_value_1
417: 400 00012389 fe 08 effffffcfc callf $8,_write32h
418: 401 00012390 # writes(", final Acc. = ");
419: 402 00012390 .data 1
420: 403 000005a1 * L435:
421: 404 000005a1 * 2C2066696E616C204163632E2 .ascii ", final Acc. = \0"
422: 03D2000
423: 405 000005b1 * .text
424: 406 00012390 dd 8f000005a1 pushl $L435
425: 407 00012396 fe 08 effffffcef callf $8,_writes
426: 408 0001239D # write32h( post_evt_acc.m );
427: 409 0001239D dd effffffce9 pushl _post_evt_acc
428: 410 000123A3 fe 08 effffffce2 callf $8,_write32h
429: 411 000123AA # writes(", expected = ");
430: 412 000123AA .data 1
431: 413 000005b1 * L436:
432: 414 000005b1 * 2C206578706563746564203D2 .ascii ", expected = \0"
433: 000
434: 415 000005bf * .text
435: 416 000123AA dd 8f000005b1 pushl $L436
436: 417 000123B0 fe 08 effffffcd5 callf $8,_writes
437: 418 000123B7 # write32h( 0x80000000 ); /* the expected result = 0 */
438: 419 000123B7 dd 8f80000000 pushl $-2147483648
439: 420 000123BD fe 08 effffffcc8 callf $8,_write32h
440: 421 000123C4 # writec('\n');
441: 422 000123C4 dd 0a pushl $10
442: 423 000123C6 fe 08 effffffcbf callf $8,_writec
443: 424 000123CD # }
444: 425 000123CD # if ( halt_flg ) /* halt on error? */
445: 426 000123CD L430:
446: 427 000123CD 5d effffffcb9 tstl _halt_flg
447: 428 000123D3 31 09 jeql L437
448: 429 000123D5 # pipe9_halt( 3 ); /* halt with a code of 3 */
449: 430 000123D5 dd 03 pushl $3
450: 431 000123D7 fe 08 ef000000c6 callf $8,_pipe9_halt
451: 432 000123DE # if ( loop_on_err )
452: 433 000123DE L437:
453: 434 000123DE 5d effffffca8 tstl _loop_on_err
454: 435 000123E4 31 0d jeql L438
455: 436 000123E6 # {
456: 437 000123E6 # force_loop = TRUE; /* set the force loop flag */
457: 438 000123E6 0d 01 effffffc9f movl $1,_force_loop
458: 439 000123ED # asm("jmp _pipe9_lp1"); /* and loop */
459: 440 000123ED 71 effffffd52 jmp _pipe9_lp1
460: 441 000123F3 # };
461: 442 000123F3 L438:
462: 443 000123F3 # }
463: 444 000123F3 40 ret#2
464: 445 000123F4 .set L426,0x0
465: 446 000123F4 L428:
466: 447 000123F4 13 ff3a jbr L429
467: 448 000123F7 .data
468: 449 00000488 * .text
469: 450 000123F7 00 .align 1
470: 451 000123F8 .globl _print_pipe9_er
471: 452 000123F8 _print_pipe9_er:
472: 453 000123F8 0000 .word L439
473: 454 000123FA #
474: 455 000123FA #
475: 456 000123FA #
476: 457 000123FA #
477: 458 000123FA # /****************************************************************************
478: 459 000123FA # * Report an error message of the form:
479: 460 000123FA # *
480: 461 000123FA # * Cycle: xx. EVT test xx. subtest xx. <your message here> index = xx
481: 462 000123FA # * inst = LDF op1, DIVF op2, CVLF '2' ('divide by 0' fault on DIVF)
482: 463 000123FA # ****************************************************************************/
483: 464 000123FA # print_pipe9_er( msg )
484: 465 000123FA # char *msg; /* error message to print */
485: 466 000123FA # {
486: 467 000123FA 13 00a3 jbr L441
487: 468 000123FD L442:
488: 469 000123FD # if( errcnt == 1 ) /* 1st error? */
489: 470 000123FD 1d effffffc89 01 cmpl _errcnt,$1
490: 471 00012404 21 0d jneq L443
491: 472 00012406 # writes(" \n"); /* start a new print line */
492: 473 00012406 .data 1
493: 474 000005bf * L444:
494: 475 000005bf * 200A00 .ascii " \12\0"
495: 476 000005c2 * .text
496: 477 00012406 dd 8f000005bf pushl $L444
497: 478 0001240C fe 08 effffffc79 callf $8,_writes
498: 479 00012413 # writes("Cycle: ");
499: 480 00012413 L443:
500: 481 00012413 .data 1
501: 482 000005c2 * L445:
502: 483 000005c2 * 4379636C653A2000 .ascii "Cycle: \0"
503: 484 000005ca * .text
504: 485 00012413 dd 8f000005c2 pushl $L445
505: 486 00012419 fe 08 effffffc6c callf $8,_writes
506: 487 00012420 # writed( cycle );
507: 488 00012420 dd effffffc66 pushl _cycle
508: 489 00012426 fe 08 effffffc5f callf $8,_writed
509: 490 0001242D # writes(" EVT test ");
510: 491 0001242D .data 1
511: 492 000005ca * L447:
512: 493 000005ca * 202045565420746573742000 .ascii " EVT test \0"
513: 494 000005d6 * .text
514: 495 0001242D dd 8f000005ca pushl $L447
515: 496 00012433 fe 08 effffffc52 callf $8,_writes
516: 497 0001243A # writed( test_no );
517: 498 0001243A dd effffffc4c pushl _test_no
518: 499 00012440 fe 08 effffffc45 callf $8,_writed
519: 500 00012447 # writes(". subtest ");
520: 501 00012447 .data 1
521: 502 000005d6 * L448:
522: 503 000005d6 * 2E20737562746573742000 .ascii ". subtest \0"
523: 504 000005e1 * .text
524: 505 00012447 dd 8f000005d6 pushl $L448
525: 506 0001244D fe 08 effffffc38 callf $8,_writes
526: 507 00012454 # writed( subtest );
527: 508 00012454 dd effffffc32 pushl _subtest
528: 509 0001245A fe 08 effffffc2b callf $8,_writed
529: 510 00012461 # writes( msg ); /* print the message */
530: 511 00012461 dd ad04 pushl 4(fp)
531: 512 00012464 fe 08 effffffc21 callf $8,_writes
532: 513 0001246B # writes(" index = ");
533: 514 0001246B .data 1
534: 515 000005e1 * L449:
535: 516 000005e1 * 20696E646578203D2000 .ascii " index = \0"
536: 517 000005eb * .text
537: 518 0001246B dd 8f000005e1 pushl $L449
538: 519 00012471 fe 08 effffffc14 callf $8,_writes
539: 520 00012478 # writed( index );
540: 521 00012478 dd effffffc0e pushl _index
541: 522 0001247E fe 08 effffffc07 callf $8,_writed
542: 523 00012485 # writes("\ninst = LDF op1, DIVF op2, CVLF '2'");
543: 524 00012485 .data 1
544: 525 000005eb * L450:
545: 526 000005eb * 0A696E7374203D204C4446206 .ascii "\12inst = LDF op1, DIVF op2, CVLF '2'\0"
546: F70312C2044495646206F7032
547: 2C2043564C462027322700
548: 527 0000060f * .text
549: 528 00012485 dd 8f000005eb pushl $L450
550: 529 0001248B fe 08 effffffbfa callf $8,_writes
551: 530 00012492 # writes(" ('divide by 0' fault on DIVF)\n");
552: 531 00012492 .data 1
553: 532 0000060f * L451:
554: 533 0000060f * 2020202028276469766964652 .ascii " ('divide by 0' fault on DIVF)\12\0"
555: 06279203027206661756C7420
556: 6F6E2044495646290A00
557: 534 00000632 * .text
558: 535 00012492 dd 8f0000060f pushl $L451
559: 536 00012498 fe 08 effffffbed callf $8,_writes
560: 537 0001249F # }
561: 538 0001249F 40 ret#2
562: 539 000124A0 .set L439,0x0
563: 540 000124A0 L441:
564: 541 000124A0 13 ff5a jbr L442
565: 542 000124A3 .data
566: 543 00000488 * .text
567: 544 000124A3 00 .align 1
568: 545 000124A4 .globl _pipe9_halt
569: 546 000124A4 _pipe9_halt:
570: 547 000124A4 0000 .word L452
571: 548 000124A6 #
572: 549 000124A6 #
573: 550 000124A6 #
574: 551 000124A6 # /****************************************************************************
575: 552 000124A6 # * halt on error routine
576: 553 000124A6 # ****************************************************************************/
577: 554 000124A6 # pipe9_halt( code )
578: 555 000124A6 # int code; /* error code to halt with */
579: 556 000124A6 # {
580: 557 000124A6 11 6a jbr L454
581: 558 000124A8 L455:
582: 559 000124A8 # err_code = code;
583: 560 000124A8 0d ad04 effffffbdc movl 4(fp),_err_code
584: 561 000124B0 # sgl_value_1 = dbl_ld_acc.m;
585: 562 000124B0 0d effffffbd6 effffffbd1 movl _dbl_ld_acc,_sgl_value_1
586: 563 000124BB # sgl_value_2 = dbl_value_1.m;
587: 564 000124BB 0d effffffbcb effffffbc6 movl _dbl_value_1,_sgl_value_2
588: 565 000124C6 # sgl_value_3 = post_evt_acc.m;
589: 566 000124C6 0d effffffbc0 effffffbbb movl _post_evt_acc,_sgl_value_3
590: 567 000124D1 # asm("movl _test_no,r0"); /* r0 = test number */
591: 568 000124D1 0d effffffbb5 50 movl _test_no,r0
592: 569 000124D8 # asm("movl _subtest,r1"); /* r1 = subtest number */
593: 570 000124D8 0d effffffbae 51 movl _subtest,r1
594: 571 000124DF # asm("movl _err_code,r2"); /* r2 = error code */
595: 572 000124DF 0d effffffba7 52 movl _err_code,r2
596: 573 000124E6 # asm("movl _cycle,r3"); /* r3 = cycle count */
597: 574 000124E6 0d effffffba0 53 movl _cycle,r3
598: 575 000124ED # asm("movl _sgl_value_1,r4"); /* r4 = initial accumulator */
599: 576 000124ED 0d effffffb99 54 movl _sgl_value_1,r4
600: 577 000124F4 # asm("movl _sgl_value_2,r5"); /* r5 = divide operand */
601: 578 000124F4 0d effffffb92 55 movl _sgl_value_2,r5
602: 579 000124FB # asm("movl _sgl_value_3,r6"); /* r6 = final accumulator */
603: 580 000124FB 0d effffffb8b 56 movl _sgl_value_3,r6
604: 581 00012502 # asm("movl $0x80000000,r7"); /* r7 = expected accumulator */
605: 582 00012502 0d 8f80000000 57 movl $0x80000000,r7
606: 583 00012509 # asm("movl _index,r8"); /* r8 = data index */
607: 584 00012509 0d effffffb7d 58 movl _index,r8
608: 585 00012510 # asm("halt"); /* HALT ... */
609: 586 00012510 00 halt
610: 587 00012511 # }
611: 588 00012511 40 ret#2
612: 589 00012512 .set L452,0x0
613: 590 00012512 L454:
614: 591 00012512 11 94 jbr L455
615: 592 00000488 * .data
616: 592 00000488 * .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.