|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000714 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe16
6: 6 00000000 _pipe16:
7: 7 00014400 0000 .word L381
8: 8 00014402 #
9: 9 00014402 # #include "evt_defs.h"
10: 10 00014402 #
11: 11 00014402 # /*
12: 12 00014402 # *********************************************************************
13: 13 00014402 # * FPP PIPELINED EVENTS TEST #16
14: 14 00014402 # *
15: 15 00014402 # * This test will execute the following code: "LDD ADDD STD"
16: 16 00014402 # * with an overflow fault on the ADDD. We will make sure that:
17: 17 00014402 # * 1. The fault is detected,
18: 18 00014402 # * 2. the accumulator is cleared, and
19: 19 00014402 # * 3. that a floating '0' is stored by the STD or that there is no store.
20: 20 00014402 # *********************************************************************
21: 21 00014402 # */
22: 22 00014402 # pipe16()
23: 23 00014402 # {
24: 24 00014402 13 016d jbr L383
25: 25 00014405 L384:
26: 26 00014405 # #define PIPE16_PAT1 0x11223344
27: 27 00014405 # #define PIPE16_PAT2 0x55667788
28: 28 00014405 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
29: 29 00014405 ed 6d effffffff4 moval (r13),_pre_event_fp
30: 30 0001440C # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
31: 31 0001440C ed 6e efffffffed moval (r14),_pre_event_sp
32: 32 00014413 # precision = DBL;
33: 33 00014413 0d 02 efffffffe6 movl $2,_precision
34: 34 0001441A # test_event = ARITH_CODE; /* expect an arithmetic fault */
35: 35 0001441A 0d 34 efffffffdf movl $52,_test_event
36: 36 00014421 # exp_code = FLT_OVFL_CODE; /* - specificly overflow */
37: 37 00014421 0d 04 efffffffd8 movl $4,_exp_code
38: 38 00014428 # exp_event = FALSE; /* ... but not yet */
39: 39 00014428 4d efffffffd2 clrl _exp_event
40: 40 0001442E # asm("movab _pipe16_ret,_event_return"); /* set event return address */
41: 41 0001442E e9 ef000000c1 efffffffc7 movab _pipe16_ret,_event_return
42: 42 00014439 # max_index = add_ov_cnt; /* set max operand index */
43: 43 00014439 0d efffffffc1 efffffffbc movl _add_ov_cnt,_max_index
44: 44 00014444 # for( index = 0; index < max_index; index++ )
45: 45 00014444 4d efffffffb6 clrl _index
46: 46 0001444A L387:
47: 47 0001444A 1d efffffffb0 efffffffab cmpl _index,_max_index
48: 48 00014455 91 03 13 0117 jgeq L386
49: 49 0001445A # {
50: 50 0001445A # dbl_ld_acc = add_ov_dat[index].op_1; /* get the Acc data */
51: 51 0001445A 48 04 efffffff9f 50 shll $4,_index,r0
52: 52 00014462 0c 8f00000000 50 addl2 $_add_ov_dat,r0
53: 53 00014469 0d a004 efffffff93 movl 4(r0),_dbl_ld_acc+4
54: 54 00014471 0d 60 efffffff88 movl (r0),_dbl_ld_acc
55: 55 00014478 # dbl_value_1 = add_ov_dat[index].op_2; /* get the B operand */
56: 56 00014478 48 04 efffffff81 50 shll $4,_index,r0
57: 57 00014480 0c 8f00000008 50 addl2 $_add_ov_dat+8,r0
58: 58 00014487 0d a004 efffffff75 movl 4(r0),_dbl_value_1+4
59: 59 0001448F 0d 60 efffffff6a movl (r0),_dbl_value_1
60: 60 00014496 # dbl_value_2.m = PIPE16_PAT1; /* set the initial */
61: 61 00014496 0d 8f11223344 efffffff5f movl $287454020,_dbl_value_2
62: 62 000144A1 # dbl_value_2.l = PIPE16_PAT2; /* STD op's contents */
63: 63 000144A1 0d 8f55667788 efffffff58 movl $1432778632,_dbl_value_2+4
64: 64 000144AC # asm(".globl _pipe16_lp1");
65: 65 000144AC .globl _pipe16_lp1
66: 66 000144AC # asm("_pipe16_lp1:");
67: 67 000144AC _pipe16_lp1:
68: 68 000144AC # asm("bispsw $0x60"); /* enable ovfl,undfl */
69: 69 000144AC 8b 8860 bispsw $0x60
70: 70 000144AF # asm("ldd _dbl_ld_acc"); /* load the Acc. */
71: 71 000144AF 07 efffffff4b ldd _dbl_ld_acc
72: 72 000144B5 # exp_event = test_event; /* expect event soon */
73: 73 000144B5 0d efffffff45 efffffff40 movl _test_event,_exp_event
74: 74 000144C0 # asm("addd _dbl_value_1"); /* trigger the event */
75: 75 000144C0 c7 efffffff3a addd _dbl_value_1
76: 76 000144C6 # asm("std _dbl_value_2"); /* shouldn't get here*/
77: 77 000144C6 27 efffffff34 std _dbl_value_2
78: 78 000144CC # /*
79: 79 000144CC # * If we got to here then there was no event
80: 80 000144CC # */
81: 81 000144CC # if( force_loop )
82: 82 000144CC 5d efffffff2e tstl _force_loop
83: 83 000144D2 31 03 jeql L388
84: 84 000144D4 # asm("brw _pipe16_lp1");; /* loop on the error */
85: Assemb0002BBC0 # asm("brw _pipe16_lp1");; /* loop on the error */
86: "pipe100014406 e 85: WARNING: brw: destination label is external
87: 85 000144D4 13 ffd5 brw _pipe16_lp1
88: 86 000144D7 L388:
89: 87 000144D7 # exp_event = FALSE; /* reset event expected flag */
90: 88 000144D7 4d efffffff23 clrl _exp_event
91: 89 000144DD # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
92: 90 000144DD 0d efffffff1d 5d movl _pre_event_fp,fp
93: 91 000144E4 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
94: 92 000144E4 0d efffffff16 5e movl _pre_event_sp,sp
95: 93 000144EB # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
96: 94 000144EB 9b 8860 bicpsw $0x60
97: 95 000144EE # no_pipe16_evt();; /* report the error */
98: 96 000144EE fe 04 ef00000081 callf $4,_no_pipe16_evt
99: 97 000144F5 # /*
100: 98 000144F5 # * Come here after the event
101: 99 000144F5 # */
102: 100 000144F5 # asm(".globl _pipe16_ret");
103: 101 000144F5 .globl _pipe16_ret
104: 102 000144F5 # asm("_pipe16_ret:");
105: 103 000144F5 _pipe16_ret:
106: 104 000144F5 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
107: 105 000144F5 0d efffffff05 5d movl _pre_event_fp,fp
108: 106 000144FC # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
109: 107 000144FC 0d effffffefe 5e movl _pre_event_sp,sp
110: 108 00014503 # if( force_loop )
111: 109 00014503 5d effffffef7 tstl _force_loop
112: 110 00014509 31 03 jeql L390
113: 111 0001450B # asm("brw _pipe16_lp1");; /* loop on the error */
114: "pipe100014406 e 112: WARNING: brw: destination label is external
115: 112 0001450B 13 ff9e brw _pipe16_lp1
116: 113 0001450E L390:
117: 114 0001450E # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
118: 115 0001450E 9b 8860 bicpsw $0x60
119: 116 00014511 # if( (post_evt_acc.m) || (post_evt_acc.l) ) /* is Acc = 0? */
120: 117 00014511 5d effffffee9 tstl _post_evt_acc
121: 118 00014517 21 08 jneq L9999
122: 119 00014519 5d effffffee5 tstl _post_evt_acc+4
123: 120 0001451F 31 09 jeql L391
124: 121 00014521 L9999:
125: 122 00014521 # bad_pipe16_result(); /* incorrect result error */
126: 123 00014521 fe 04 ef0000017a callf $4,_bad_pipe16_result
127: 124 00014528 # else if( ( (dbl_value_2.m) ||
128: 125 00014528 11 3e jbr L393
129: 126 0001452A L391:
130: 127 0001452A # (dbl_value_2.l) ) /* either a '0' s/b stored, */
131: 128 0001452A # && (dbl_value_2.m != 0x80000000) /* or a RESERVED OP, or */
132: 129 0001452A # && ( (dbl_value_2.m != PIPE16_PAT1) || /* there s/b no */
133: 130 0001452A # (dbl_value_2.l != PIPE16_PAT2) ) ) /* store at all */
134: 131 0001452A 5d effffffed0 tstl _dbl_value_2
135: 132 00014530 21 08 jneq L9998
136: 133 00014532 5d effffffecc tstl _dbl_value_2+4
137: 134 00014538 31 2e jeql L394
138: 135 0001453A L9998:
139: 136 0001453A 1d effffffec0 8f80000000 cmpl _dbl_value_2,$-2147483648
140: 137 00014545 31 21 jeql L394
141: 138 00014547 1d effffffeb3 8f11223344 cmpl _dbl_value_2,$287454020
142: 139 00014552 21 0d jneq L9997
143: 140 00014554 1d effffffeaa 8f55667788 cmpl _dbl_value_2+4,$1432778632
144: 141 0001455F 31 07 jeql L394
145: 142 00014561 L9997:
146: 143 00014561 # bad_pipe16_store(); /* incorrect store error */
147: 144 00014561 fe 04 ef000002be callf $4,_bad_pipe16_store
148: 145 00014568 # }
149: 146 00014568 L394:
150: 147 00014568 L393:
151: 148 00014568 L385:
152: 149 00014568 6d effffffe92 incl _index
153: 150 0001456E 13 fed9 jbr L387
154: 151 00014571 L386:
155: 152 00014571 # }
156: 153 00014571 40 ret#2
157: 154 00014572 .set L381,0x0
158: 155 00014572 L383:
159: 156 00014572 13 fe90 jbr L384
160: 157 00014575 .data
161: 158 00000714 * .text
162: 159 00014575 00 .align 1
163: 160 00014576 .globl _no_pipe16_evt
164: 161 00014576 _no_pipe16_evt:
165: 162 00014576 0000 .word L396
166: 163 00014578 #
167: 164 00014578 #
168: 165 00014578 #
169: 166 00014578 # /****************************************************************************
170: 167 00014578 # * Report an "EVENT NOT DETECTED" error
171: 168 00014578 # *
172: 169 00014578 # * Cycle: xx. EVT test xx. subtest xx. No overflow fault seen. index = xx
173: 170 00014578 # * inst = LDD op1, ADDD op2, STD op3 (overflow fault on the ADDD)
174: 171 00014578 # * op1 = xxxxxxxx xxxxxxxx, initial op3 = xxxxxxxx xxxxxxxx
175: 172 00014578 # * op2 = xxxxxxxx xxxxxxxx, final op3 = xxxxxxxx xxxxxxxx
176: 173 00014578 # ****************************************************************************/
177: 174 00014578 # no_pipe16_evt()
178: 175 00014578 # {
179: 176 00014578 13 0124 jbr L398
180: 177 0001457B L399:
181: 178 0001457B # errcnt++; /* bump the error count */
182: 179 0001457B 6d effffffe7f incl _errcnt
183: 180 00014581 # if ( prt_error )
184: 181 00014581 5d effffffe79 tstl _prt_error
185: 182 00014587 21 03 13 00ec jeql L400
186: 183 0001458C # {
187: 184 0001458C # sgl_value_1 = PIPE16_PAT1;
188: 185 0001458C 0d 8f11223344 effffffe69 movl $287454020,_sgl_value_1
189: 186 00014597 # sgl_value_2 = PIPE16_PAT2;
190: 187 00014597 0d 8f55667788 effffffe5e movl $1432778632,_sgl_value_2
191: 188 000145A2 # print_pipe16_er( ". No overflow fault seen." );
192: 189 000145A2 .data 1
193: 190 00000714 * L402:
194: 191 00000714 * 2E204E6F206F766572666C6F7 .ascii ". No overflow fault seen.\0"
195: 7206661756C74207365656E2E
196: 00
197: 192 0000072e * .text
198: 193 000145A2 dd 8f00000714 pushl $L402
199: 194 000145A8 fe 08 ef000003ff callf $8,_print_pipe16_er
200: 195 000145AF # writes("op1 = ");
201: 196 000145AF .data 1
202: 197 0000072e * L404:
203: 198 0000072e * 6F7031203D2000 .ascii "op1 = \0"
204: 199 00000735 * .text
205: 200 000145AF dd 8f0000072e pushl $L404
206: 201 000145B5 fe 08 effffffe44 callf $8,_writes
207: 202 000145BC # write32h( dbl_ld_acc.m );
208: 203 000145BC dd effffffe3e pushl _dbl_ld_acc
209: 204 000145C2 fe 08 effffffe37 callf $8,_write32h
210: 205 000145C9 # writec(' ');
211: 206 000145C9 dd 20 pushl $32
212: 207 000145CB fe 08 effffffe2e callf $8,_writec
213: 208 000145D2 # write32h( dbl_ld_acc.l );
214: 209 000145D2 dd effffffe2c pushl _dbl_ld_acc+4
215: 210 000145D8 fe 08 effffffe21 callf $8,_write32h
216: 211 000145DF # writes(", initial op3 = ");
217: 212 000145DF .data 1
218: 213 00000735 * L407:
219: 214 00000735 * 2C202020696E697469616C206 .ascii ", initial op3 = \0"
220: F7033203D2000
221: 215 00000748 * .text
222: 216 000145DF dd 8f00000735 pushl $L407
223: 217 000145E5 fe 08 effffffe14 callf $8,_writes
224: 218 000145EC # write32h( sgl_value_1 );
225: 219 000145EC dd effffffe0e pushl _sgl_value_1
226: 220 000145F2 fe 08 effffffe07 callf $8,_write32h
227: 221 000145F9 # writec(' ');
228: 222 000145F9 dd 20 pushl $32
229: 223 000145FB fe 08 effffffdfe callf $8,_writec
230: 224 00014602 # write32h( sgl_value_2 );
231: 225 00014602 dd effffffdf8 pushl _sgl_value_2
232: 226 00014608 fe 08 effffffdf1 callf $8,_write32h
233: 227 0001460F # writes("\nop2 = ");
234: 228 0001460F .data 1
235: 229 00000748 * L408:
236: 230 00000748 * 0A6F7032203D2000 .ascii "\12op2 = \0"
237: 231 00000750 * .text
238: 232 0001460F dd 8f00000748 pushl $L408
239: 233 00014615 fe 08 effffffde4 callf $8,_writes
240: 234 0001461C # write32h( dbl_value_1.m );
241: 235 0001461C dd effffffdde pushl _dbl_value_1
242: 236 00014622 fe 08 effffffdd7 callf $8,_write32h
243: 237 00014629 # writec(' ');
244: 238 00014629 dd 20 pushl $32
245: 239 0001462B fe 08 effffffdce callf $8,_writec
246: 240 00014632 # write32h( dbl_value_1.l );
247: 241 00014632 dd effffffdcc pushl _dbl_value_1+4
248: 242 00014638 fe 08 effffffdc1 callf $8,_write32h
249: 243 0001463F # writes(", final op3 = ");
250: 244 0001463F .data 1
251: 245 00000750 * L409:
252: 246 00000750 * 2C202020202066696E616C206 .ascii ", final op3 = \0"
253: F7033203D2000
254: 247 00000763 * .text
255: 248 0001463F dd 8f00000750 pushl $L409
256: 249 00014645 fe 08 effffffdb4 callf $8,_writes
257: 250 0001464C # write32h( dbl_value_2.m );
258: 251 0001464C dd effffffdae pushl _dbl_value_2
259: 252 00014652 fe 08 effffffda7 callf $8,_write32h
260: 253 00014659 # writec(' ');
261: 254 00014659 dd 20 pushl $32
262: 255 0001465B fe 08 effffffd9e callf $8,_writec
263: 256 00014662 # write32h( dbl_value_2.l );
264: 257 00014662 dd effffffd9c pushl _dbl_value_2+4
265: 258 00014668 fe 08 effffffd91 callf $8,_write32h
266: 259 0001466F # writec('\n');
267: 260 0001466F dd 0a pushl $10
268: 261 00014671 fe 08 effffffd88 callf $8,_writec
269: 262 00014678 # }
270: 263 00014678 # if ( halt_flg ) /* halt on error? */
271: 264 00014678 L400:
272: 265 00014678 5d effffffd82 tstl _halt_flg
273: 266 0001467E 31 09 jeql L410
274: 267 00014680 # pipe16_halt( 1 ); /* halt with a code of 1 */
275: 268 00014680 dd 01 pushl $1
276: 269 00014682 fe 08 ef000003c3 callf $8,_pipe16_halt
277: 270 00014689 # if ( loop_on_err )
278: 271 00014689 L410:
279: 272 00014689 5d effffffd71 tstl _loop_on_err
280: 273 0001468F 31 0d jeql L412
281: 274 00014691 # {
282: 275 00014691 # force_loop = TRUE; /* set the force loop flag */
283: 276 00014691 0d 01 effffffd68 movl $1,_force_loop
284: 277 00014698 # asm("jmp _pipe16_lp1"); /* and loop */
285: 278 00014698 71 effffffe0e jmp _pipe16_lp1
286: 279 0001469E # };
287: 280 0001469E L412:
288: 281 0001469E # }
289: 282 0001469E 40 ret#2
290: 283 0001469F .set L396,0x0
291: 284 0001469F L398:
292: 285 0001469F 13 fed9 jbr L399
293: 286 000146A2 .data
294: 287 00000714 * .text
295: 288 000146A2 .align 1
296: 289 000146A2 .globl _bad_pipe16_result
297: 290 000146A2 _bad_pipe16_result:
298: 291 000146A2 0000 .word L413
299: 292 000146A4 #
300: 293 000146A4 #
301: 294 000146A4 #
302: 295 000146A4 #
303: 296 000146A4 # /****************************************************************************
304: 297 000146A4 # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error
305: 298 000146A4 # *
306: 299 000146A4 # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. index = xx
307: 300 000146A4 # * inst = LDD op1, ADDD op2, STD op3 (overflow fault on the ADDD)
308: 301 000146A4 # * op1 = xxxxxxxx xxxxxxxx, final Acc = xxxxxxxx xxxxxxxx
309: 302 000146A4 # * op2 = xxxxxxxx xxxxxxxx, expected = xxxxxxxx xxxxxxxx
310: 303 000146A4 # * init op3 = xxxxxxxx xxxxxxxx, final op3 = xxxxxxxx xxxxxxxx
311: 304 000146A4 # ****************************************************************************/
312: 305 000146A4 # bad_pipe16_result()
313: 306 000146A4 # {
314: 307 000146A4 13 017c jbr L415
315: 308 000146A7 L416:
316: 309 000146A7 # errcnt++; /* bump the error count */
317: 310 000146A7 6d effffffd53 incl _errcnt
318: 311 000146AD # if ( prt_error )
319: 312 000146AD 5d effffffd4d tstl _prt_error
320: 313 000146B3 21 03 13 0144 jeql L417
321: 314 000146B8 # {
322: 315 000146B8 # sgl_value_1 = PIPE16_PAT1;
323: 316 000146B8 0d 8f11223344 effffffd3d movl $287454020,_sgl_value_1
324: 317 000146C3 # sgl_value_2 = PIPE16_PAT2;
325: 318 000146C3 0d 8f55667788 effffffd32 movl $1432778632,_sgl_value_2
326: 319 000146CE # print_pipe16_er( ". Bad final Accumulator" );
327: 320 000146CE .data 1
328: 321 00000763 * L418:
329: 322 00000763 * 2E204261642066696E616C204 .ascii ". Bad final Accumulator\0"
330: 16363756D756C61746F7200
331: 323 0000077b * .text
332: 324 000146CE dd 8f00000763 pushl $L418
333: 325 000146D4 fe 08 ef000002d3 callf $8,_print_pipe16_er
334: 326 000146DB # writes("op1 = ");
335: 327 000146DB .data 1
336: 328 0000077b * L419:
337: 329 0000077b * 6F7031203D2000 .ascii "op1 = \0"
338: 330 00000782 * .text
339: 331 000146DB dd 8f0000077b pushl $L419
340: 332 000146E1 fe 08 effffffd18 callf $8,_writes
341: 333 000146E8 # write32h( dbl_ld_acc.m );
342: 334 000146E8 dd effffffd12 pushl _dbl_ld_acc
343: 335 000146EE fe 08 effffffd0b callf $8,_write32h
344: 336 000146F5 # writec(' ');
345: 337 000146F5 dd 20 pushl $32
346: 338 000146F7 fe 08 effffffd02 callf $8,_writec
347: 339 000146FE # write32h( dbl_ld_acc.l );
348: 340 000146FE dd effffffd00 pushl _dbl_ld_acc+4
349: 341 00014704 fe 08 effffffcf5 callf $8,_write32h
350: 342 0001470B # writes(", final Acc. = ");
351: 343 0001470B .data 1
352: 344 00000782 * L420:
353: 345 00000782 * 2C2066696E616C204163632E2 .ascii ", final Acc. = \0"
354: 03D2000
355: 346 00000792 * .text
356: 347 0001470B dd 8f00000782 pushl $L420
357: 348 00014711 fe 08 effffffce8 callf $8,_writes
358: 349 00014718 # write32h( post_evt_acc.l );
359: 350 00014718 dd effffffce6 pushl _post_evt_acc+4
360: 351 0001471E fe 08 effffffcdb callf $8,_write32h
361: 352 00014725 # writec(' ');
362: 353 00014725 dd 20 pushl $32
363: 354 00014727 fe 08 effffffcd2 callf $8,_writec
364: 355 0001472E # write32h( post_evt_acc.l );
365: 356 0001472E dd effffffcd0 pushl _post_evt_acc+4
366: 357 00014734 fe 08 effffffcc5 callf $8,_write32h
367: 358 0001473B # writes("\nop2 = ");
368: 359 0001473B .data 1
369: 360 00000792 * L421:
370: 361 00000792 * 0A6F7032203D2000 .ascii "\12op2 = \0"
371: 362 0000079a * .text
372: 363 0001473B dd 8f00000792 pushl $L421
373: 364 00014741 fe 08 effffffcb8 callf $8,_writes
374: 365 00014748 # write32h( dbl_value_1.m );
375: 366 00014748 dd effffffcb2 pushl _dbl_value_1
376: 367 0001474E fe 08 effffffcab callf $8,_write32h
377: 368 00014755 # writec(' ');
378: 369 00014755 dd 20 pushl $32
379: 370 00014757 fe 08 effffffca2 callf $8,_writec
380: 371 0001475E # write32h( dbl_value_1.l );
381: 372 0001475E dd effffffca0 pushl _dbl_value_1+4
382: 373 00014764 fe 08 effffffc95 callf $8,_write32h
383: 374 0001476B # writes(", expected = ");
384: 375 0001476B .data 1
385: 376 0000079a * L422:
386: 377 0000079a * 2C20202065787065637465642 .ascii ", expected = \0"
387: 03D2000
388: 378 000007aa * .text
389: 379 0001476B dd 8f0000079a pushl $L422
390: 380 00014771 fe 08 effffffc88 callf $8,_writes
391: 381 00014778 # write32h( 0 ); /* the expected result = 0 */
392: 382 00014778 dd 00 pushl $0
393: 383 0001477A fe 08 effffffc7f callf $8,_write32h
394: 384 00014781 # writec(' ');
395: 385 00014781 dd 20 pushl $32
396: 386 00014783 fe 08 effffffc76 callf $8,_writec
397: 387 0001478A # write32h( 0 );
398: 388 0001478A dd 00 pushl $0
399: 389 0001478C fe 08 effffffc6d callf $8,_write32h
400: 390 00014793 # writes("\ninit op3 = ");
401: 391 00014793 .data 1
402: 392 000007aa * L423:
403: 393 000007aa * 0A696E6974206F7033203D200 .ascii "\12init op3 = \0"
404: 0
405: 394 000007b7 * .text
406: 395 00014793 dd 8f000007aa pushl $L423
407: 396 00014799 fe 08 effffffc60 callf $8,_writes
408: 397 000147A0 # write32h( sgl_value_1 );
409: 398 000147A0 dd effffffc5a pushl _sgl_value_1
410: 399 000147A6 fe 08 effffffc53 callf $8,_write32h
411: 400 000147AD # writec(' ');
412: 401 000147AD dd 20 pushl $32
413: 402 000147AF fe 08 effffffc4a callf $8,_writec
414: 403 000147B6 # write32h( sgl_value_2 );
415: 404 000147B6 dd effffffc44 pushl _sgl_value_2
416: 405 000147BC fe 08 effffffc3d callf $8,_write32h
417: 406 000147C3 # writes(", final op3 = ");
418: 407 000147C3 .data 1
419: 408 000007b7 * L424:
420: 409 000007b7 * 2C202066696E616C206F70332 .ascii ", final op3 = \0"
421: 03D2000
422: 410 000007c7 * .text
423: 411 000147C3 dd 8f000007b7 pushl $L424
424: 412 000147C9 fe 08 effffffc30 callf $8,_writes
425: 413 000147D0 # write32h( dbl_value_2.m );
426: 414 000147D0 dd effffffc2a pushl _dbl_value_2
427: 415 000147D6 fe 08 effffffc23 callf $8,_write32h
428: 416 000147DD # writec(' ');
429: 417 000147DD dd 20 pushl $32
430: 418 000147DF fe 08 effffffc1a callf $8,_writec
431: 419 000147E6 # write32h( dbl_value_2.l );
432: 420 000147E6 dd effffffc18 pushl _dbl_value_2+4
433: 421 000147EC fe 08 effffffc0d callf $8,_write32h
434: 422 000147F3 # writec('\n');
435: 423 000147F3 dd 0a pushl $10
436: 424 000147F5 fe 08 effffffc04 callf $8,_writec
437: 425 000147FC # }
438: 426 000147FC # if ( halt_flg ) /* halt on error? */
439: 427 000147FC L417:
440: 428 000147FC 5d effffffbfe tstl _halt_flg
441: 429 00014802 31 09 jeql L425
442: 430 00014804 # pipe16_halt( 2 ); /* halt with a code of 2 */
443: 431 00014804 dd 02 pushl $2
444: 432 00014806 fe 08 ef0000023f callf $8,_pipe16_halt
445: 433 0001480D # if ( loop_on_err )
446: 434 0001480D L425:
447: 435 0001480D 5d effffffbed tstl _loop_on_err
448: 436 00014813 31 0d jeql L426
449: 437 00014815 # {
450: 438 00014815 # force_loop = TRUE; /* set the force loop flag */
451: 439 00014815 0d 01 effffffbe4 movl $1,_force_loop
452: 440 0001481C # asm("jmp _pipe16_lp1"); /* and loop */
453: 441 0001481C 71 effffffc8a jmp _pipe16_lp1
454: 442 00014822 # };
455: 443 00014822 L426:
456: 444 00014822 # }
457: 445 00014822 40 ret#2
458: 446 00014823 .set L413,0x0
459: 447 00014823 L415:
460: 448 00014823 13 fe81 jbr L416
461: 449 00014826 .data
462: 450 00000714 * .text
463: 451 00014826 .align 1
464: 452 00014826 .globl _bad_pipe16_store
465: 453 00014826 _bad_pipe16_store:
466: 454 00014826 0000 .word L427
467: 455 00014828 #
468: 456 00014828 #
469: 457 00014828 #
470: 458 00014828 #
471: 459 00014828 #
472: 460 00014828 # /****************************************************************************
473: 461 00014828 # * Report an "BAD VALUE STORED INTO OPERAND 3" error
474: 462 00014828 # *
475: 463 00014828 # * Cycle: xx. EVT test xx. subtest xx. Bad STD OP3 result. index = xx
476: 464 00014828 # * inst = LDD op1, ADDD op2, STD op3 (overflow fault on the ADDD)
477: 465 00014828 # * op1 = xxxxxxxx xxxxxxxx, final Acc = xxxxxxxx xxxxxxxx
478: 466 00014828 # * op2 = xxxxxxxx xxxxxxxx, expected op3 = xxxxxxxx xxxxxxxx
479: 467 00014828 # * init op3 = xxxxxxxx xxxxxxxx, final op3 = xxxxxxxx xxxxxxxx
480: 468 00014828 # ****************************************************************************/
481: 469 00014828 # bad_pipe16_store()
482: 470 00014828 # {
483: 471 00014828 13 0180 jbr L429
484: 472 0001482B L430:
485: 473 0001482B # errcnt++; /* bump the error count */
486: 474 0001482B 6d effffffbcf incl _errcnt
487: 475 00014831 # if ( prt_error )
488: 476 00014831 5d effffffbc9 tstl _prt_error
489: 477 00014837 21 03 13 0148 jeql L431
490: 478 0001483C # {
491: 479 0001483C # sgl_value_1 = PIPE16_PAT1;
492: 480 0001483C 0d 8f11223344 effffffbb9 movl $287454020,_sgl_value_1
493: 481 00014847 # sgl_value_2 = PIPE16_PAT2;
494: 482 00014847 0d 8f55667788 effffffbae movl $1432778632,_sgl_value_2
495: 483 00014852 # print_pipe16_er( ". Bad STD OP3 result" );
496: 484 00014852 .data 1
497: 485 000007c7 * L432:
498: 486 000007c7 * 2E202042616420535444204F5 .ascii ". Bad STD OP3 result\0"
499: 03320726573756C7400
500: 487 000007dd * .text
501: 488 00014852 dd 8f000007c7 pushl $L432
502: 489 00014858 fe 08 ef0000014f callf $8,_print_pipe16_er
503: 490 0001485F # writes(" op1 = ");
504: 491 0001485F .data 1
505: 492 000007dd * L433:
506: 493 000007dd * 20202020206F7031203D2000 .ascii " op1 = \0"
507: 494 000007e9 * .text
508: 495 0001485F dd 8f000007dd pushl $L433
509: 496 00014865 fe 08 effffffb94 callf $8,_writes
510: 497 0001486C # write32h( dbl_ld_acc.m );
511: 498 0001486C dd effffffb8e pushl _dbl_ld_acc
512: 499 00014872 fe 08 effffffb87 callf $8,_write32h
513: 500 00014879 # writec(' ');
514: 501 00014879 dd 20 pushl $32
515: 502 0001487B fe 08 effffffb7e callf $8,_writec
516: 503 00014882 # write32h( dbl_ld_acc.l );
517: 504 00014882 dd effffffb7c pushl _dbl_ld_acc+4
518: 505 00014888 fe 08 effffffb71 callf $8,_write32h
519: 506 0001488F # writes(", final Acc. = ");
520: 507 0001488F .data 1
521: 508 000007e9 * L434:
522: 509 000007e9 * 2C2020202066696E616C20416 .ascii ", final Acc. = \0"
523: 3632E203D2000
524: 510 000007fc * .text
525: 511 0001488F dd 8f000007e9 pushl $L434
526: 512 00014895 fe 08 effffffb64 callf $8,_writes
527: 513 0001489C # write32h( post_evt_acc.l );
528: 514 0001489C dd effffffb62 pushl _post_evt_acc+4
529: 515 000148A2 fe 08 effffffb57 callf $8,_write32h
530: 516 000148A9 # writec(' ');
531: 517 000148A9 dd 20 pushl $32
532: 518 000148AB fe 08 effffffb4e callf $8,_writec
533: 519 000148B2 # write32h( post_evt_acc.l );
534: 520 000148B2 dd effffffb4c pushl _post_evt_acc+4
535: 521 000148B8 fe 08 effffffb41 callf $8,_write32h
536: 522 000148BF # writes("\n op2 = ");
537: 523 000148BF .data 1
538: 524 000007fc * L435:
539: 525 000007fc * 0A20202020206F7032203D200 .ascii "\12 op2 = \0"
540: 0
541: 526 00000809 * .text
542: 527 000148BF dd 8f000007fc pushl $L435
543: 528 000148C5 fe 08 effffffb34 callf $8,_writes
544: 529 000148CC # write32h( dbl_value_1.m );
545: 530 000148CC dd effffffb2e pushl _dbl_value_1
546: 531 000148D2 fe 08 effffffb27 callf $8,_write32h
547: 532 000148D9 # writec(' ');
548: 533 000148D9 dd 20 pushl $32
549: 534 000148DB fe 08 effffffb1e callf $8,_writec
550: 535 000148E2 # write32h( dbl_value_1.l );
551: 536 000148E2 dd effffffb1c pushl _dbl_value_1+4
552: 537 000148E8 fe 08 effffffb11 callf $8,_write32h
553: 538 000148EF # writes(", expected op3 = ");
554: 539 000148EF .data 1
555: 540 00000809 * L436:
556: 541 00000809 * 2C20206578706563746564206 .ascii ", expected op3 = \0"
557: F7033203D2000
558: 542 0000081c * .text
559: 543 000148EF dd 8f00000809 pushl $L436
560: 544 000148F5 fe 08 effffffb04 callf $8,_writes
561: 545 000148FC # write32h( 0x80000000 ); /* the expected result = 0 */
562: 546 000148FC dd 8f80000000 pushl $-2147483648
563: 547 00014902 fe 08 effffffaf7 callf $8,_write32h
564: 548 00014909 # writec(' ');
565: 549 00014909 dd 20 pushl $32
566: 550 0001490B fe 08 effffffaee callf $8,_writec
567: 551 00014912 # write32h( 0 );
568: 552 00014912 dd 00 pushl $0
569: 553 00014914 fe 08 effffffae5 callf $8,_write32h
570: 554 0001491B # writes("\ninit op3 = ");
571: 555 0001491B .data 1
572: 556 0000081c * L437:
573: 557 0000081c * 0A696E6974206F7033203D200 .ascii "\12init op3 = \0"
574: 0
575: 558 00000829 * .text
576: 559 0001491B dd 8f0000081c pushl $L437
577: 560 00014921 fe 08 effffffad8 callf $8,_writes
578: 561 00014928 # write32h( sgl_value_1 );
579: 562 00014928 dd effffffad2 pushl _sgl_value_1
580: 563 0001492E fe 08 effffffacb callf $8,_write32h
581: 564 00014935 # writec(' ');
582: 565 00014935 dd 20 pushl $32
583: 566 00014937 fe 08 effffffac2 callf $8,_writec
584: 567 0001493E # write32h( sgl_value_2 );
585: 568 0001493E dd effffffabc pushl _sgl_value_2
586: 569 00014944 fe 08 effffffab5 callf $8,_write32h
587: 570 0001494B # writes(", final op3 = ");
588: 571 0001494B .data 1
589: 572 00000829 * L438:
590: 573 00000829 * 2C202020202066696E616C206 .ascii ", final op3 = \0"
591: F7033203D2000
592: 574 0000083c * .text
593: 575 0001494B dd 8f00000829 pushl $L438
594: 576 00014951 fe 08 effffffaa8 callf $8,_writes
595: 577 00014958 # write32h( dbl_value_2.m );
596: 578 00014958 dd effffffaa2 pushl _dbl_value_2
597: 579 0001495E fe 08 effffffa9b callf $8,_write32h
598: 580 00014965 # writec(' ');
599: 581 00014965 dd 20 pushl $32
600: 582 00014967 fe 08 effffffa92 callf $8,_writec
601: 583 0001496E # write32h( dbl_value_2.l );
602: 584 0001496E dd effffffa90 pushl _dbl_value_2+4
603: 585 00014974 fe 08 effffffa85 callf $8,_write32h
604: 586 0001497B # writec('\n');
605: 587 0001497B dd 0a pushl $10
606: 588 0001497D fe 08 effffffa7c callf $8,_writec
607: 589 00014984 # }
608: 590 00014984 # if ( halt_flg ) /* halt on error? */
609: 591 00014984 L431:
610: 592 00014984 5d effffffa76 tstl _halt_flg
611: 593 0001498A 31 09 jeql L439
612: 594 0001498C # pipe16_halt( 3 ); /* halt with a code of 2 */
613: 595 0001498C dd 03 pushl $3
614: 596 0001498E fe 08 ef000000b7 callf $8,_pipe16_halt
615: 597 00014995 # if ( loop_on_err )
616: 598 00014995 L439:
617: 599 00014995 5d effffffa65 tstl _loop_on_err
618: 600 0001499B 31 0d jeql L440
619: 601 0001499D # {
620: 602 0001499D # force_loop = TRUE; /* set the force loop flag */
621: 603 0001499D 0d 01 effffffa5c movl $1,_force_loop
622: 604 000149A4 # asm("jmp _pipe16_lp1"); /* and loop */
623: 605 000149A4 71 effffffb02 jmp _pipe16_lp1
624: 606 000149AA # };
625: 607 000149AA L440:
626: 608 000149AA # }
627: 609 000149AA 40 ret#2
628: 610 000149AB .set L427,0x0
629: 611 000149AB L429:
630: 612 000149AB 13 fe7d jbr L430
631: 613 000149AE .data
632: 614 00000714 * .text
633: 615 000149AE .align 1
634: 616 000149AE .globl _print_pipe16_er
635: 617 000149AE _print_pipe16_er:
636: 618 000149AE 0000 .word L441
637: 619 000149B0 #
638: 620 000149B0 #
639: 621 000149B0 #
640: 622 000149B0 #
641: 623 000149B0 #
642: 624 000149B0 #
643: 625 000149B0 # /****************************************************************************
644: 626 000149B0 # * Report an error message of the form:
645: 627 000149B0 # *
646: 628 000149B0 # * Cycle: xx. EVT test xx. subtest xx. <your message here>. index = xx
647: 629 000149B0 # * inst = LDD op1, ADDD op2, STD op3 (overflow fault on the ADDD)
648: 630 000149B0 # ****************************************************************************/
649: 631 000149B0 # print_pipe16_er( msg )
650: 632 000149B0 # char *msg; /* error message to print */
651: 633 000149B0 # {
652: 634 000149B0 13 0096 jbr L443
653: 635 000149B3 L444:
654: 636 000149B3 # if( errcnt == 1 ) /* 1st error? */
655: 637 000149B3 1d effffffa47 01 cmpl _errcnt,$1
656: 638 000149BA 21 0d jneq L445
657: 639 000149BC # writes(" \n"); /* start a new print line */
658: 640 000149BC .data 1
659: 641 0000083c * L446:
660: 642 0000083c * 200A00 .ascii " \12\0"
661: 643 0000083f * .text
662: 644 000149BC dd 8f0000083c pushl $L446
663: 645 000149C2 fe 08 effffffa37 callf $8,_writes
664: 646 000149C9 # writes("Cycle: ");
665: 647 000149C9 L445:
666: 648 000149C9 .data 1
667: 649 0000083f * L447:
668: 650 0000083f * 4379636C653A2000 .ascii "Cycle: \0"
669: 651 00000847 * .text
670: 652 000149C9 dd 8f0000083f pushl $L447
671: 653 000149CF fe 08 effffffa2a callf $8,_writes
672: 654 000149D6 # writed( cycle );
673: 655 000149D6 dd effffffa24 pushl _cycle
674: 656 000149DC fe 08 effffffa1d callf $8,_writed
675: 657 000149E3 # writes(" EVT test ");
676: 658 000149E3 .data 1
677: 659 00000847 * L449:
678: 660 00000847 * 202045565420746573742000 .ascii " EVT test \0"
679: 661 00000853 * .text
680: 662 000149E3 dd 8f00000847 pushl $L449
681: 663 000149E9 fe 08 effffffa10 callf $8,_writes
682: 664 000149F0 # writed( test_no );
683: 665 000149F0 dd effffffa0a pushl _test_no
684: 666 000149F6 fe 08 effffffa03 callf $8,_writed
685: 667 000149FD # writes(". subtest ");
686: 668 000149FD .data 1
687: 669 00000853 * L450:
688: 670 00000853 * 2E20737562746573742000 .ascii ". subtest \0"
689: 671 0000085e * .text
690: 672 000149FD dd 8f00000853 pushl $L450
691: 673 00014A03 fe 08 effffff9f6 callf $8,_writes
692: 674 00014A0A # writed( subtest );
693: 675 00014A0A dd effffff9f0 pushl _subtest
694: 676 00014A10 fe 08 effffff9e9 callf $8,_writed
695: 677 00014A17 # writes( msg ); /* print the message */
696: 678 00014A17 dd ad04 pushl 4(fp)
697: 679 00014A1A fe 08 effffff9df callf $8,_writes
698: 680 00014A21 # writes(". index = ");
699: 681 00014A21 .data 1
700: 682 0000085e * L451:
701: 683 0000085e * 2E20696E646578203D2000 .ascii ". index = \0"
702: 684 00000869 * .text
703: 685 00014A21 dd 8f0000085e pushl $L451
704: 686 00014A27 fe 08 effffff9d2 callf $8,_writes
705: 687 00014A2E # writed( index );
706: 688 00014A2E dd effffff9cc pushl _index
707: 689 00014A34 fe 08 effffff9c5 callf $8,_writed
708: 690 00014A3B # writes(
709: 691 00014A3B # "\ninst = LDD op1, ADDD op2, STD op3 (overflow fault on the ADDD)\n");
710: 692 00014A3B .data 1
711: 693 00000869 * L452:
712: 694 00000869 * 0A696E7374203D204C4444206 .ascii "\12inst = LDD op1, ADDD op2, STD op3 (overflow fault on the ADD"
713: F70312C2041444444206F7032
714: 2C20535444206F70332020202
715: 0286F766572666C6F77206661
716: 756C74206F6E2074686520414
717: 444
718: 695 000008a9 * 44290A00 .ascii "D)\12\0"
719: 696 000008ad * .text
720: 697 00014A3B dd 8f00000869 pushl $L452
721: 698 00014A41 fe 08 effffff9b8 callf $8,_writes
722: 699 00014A48 # }
723: 700 00014A48 40 ret#2
724: 701 00014A49 .set L441,0x0
725: 702 00014A49 L443:
726: 703 00014A49 13 ff67 jbr L444
727: 704 00014A4C .data
728: 705 00000714 * .text
729: 706 00014A4C .align 1
730: 707 00014A4C .globl _pipe16_halt
731: 708 00014A4C _pipe16_halt:
732: 709 00014A4C 0000 .word L453
733: 710 00014A4E #
734: 711 00014A4E #
735: 712 00014A4E #
736: 713 00014A4E # /****************************************************************************
737: 714 00014A4E # * halt on error routine
738: 715 00014A4E # ****************************************************************************/
739: 716 00014A4E # pipe16_halt( code )
740: 717 00014A4E # int code; /* error code to halt with */
741: 718 00014A4E # {
742: 719 00014A4E 13 00bf jbr L455
743: 720 00014A51 L456:
744: 721 00014A51 # err_code = code;
745: 722 00014A51 0d ad04 effffff9a7 movl 4(fp),_err_code
746: 723 00014A59 # sgl_value_1 = dbl_ld_acc.m;
747: 724 00014A59 0d effffff9a1 effffff99c movl _dbl_ld_acc,_sgl_value_1
748: 725 00014A64 # sgl_value_2 = dbl_ld_acc.l;
749: 726 00014A64 0d effffff99a effffff991 movl _dbl_ld_acc+4,_sgl_value_2
750: 727 00014A6F # sgl_value_3 = dbl_value_1.m;
751: 728 00014A6F 0d effffff98b effffff986 movl _dbl_value_1,_sgl_value_3
752: 729 00014A7A # sgl_value_4 = dbl_value_1.l;
753: 730 00014A7A 0d effffff984 effffff97b movl _dbl_value_1+4,_sgl_value_4
754: 731 00014A85 # sgl_value_5 = post_evt_acc.m;
755: 732 00014A85 0d effffff975 effffff970 movl _post_evt_acc,_sgl_value_5
756: 733 00014A90 # sgl_value_6 = post_evt_acc.l;
757: 734 00014A90 0d effffff96e effffff965 movl _post_evt_acc+4,_sgl_value_6
758: 735 00014A9B # sgl_value_7 = dbl_value_2.m;
759: 736 00014A9B 0d effffff95f effffff95a movl _dbl_value_2,_sgl_value_7
760: 737 00014AA6 # sgl_value_8 = dbl_value_2.l;
761: 738 00014AA6 0d effffff958 effffff94f movl _dbl_value_2+4,_sgl_value_8
762: 739 00014AB1 # asm("movl _test_no,r0"); /* r0 = test number */
763: 740 00014AB1 0d effffff949 50 movl _test_no,r0
764: 741 00014AB8 # asm("movl _subtest,r1"); /* r1 = subtest number */
765: 742 00014AB8 0d effffff942 51 movl _subtest,r1
766: 743 00014ABF # asm("movl _err_code,r2"); /* r2 = error code */
767: 744 00014ABF 0d effffff93b 52 movl _err_code,r2
768: 745 00014AC6 # asm("movl _cycle,r3"); /* r3 = cycle count */
769: 746 00014AC6 0d effffff934 53 movl _cycle,r3
770: 747 00014ACD # asm("movl _sgl_value_1,r4"); /* r4 = MSW of operand 1 */
771: 748 00014ACD 0d effffff92d 54 movl _sgl_value_1,r4
772: 749 00014AD4 # asm("movl _sgl_value_2,r5"); /* r5 = LSW of operand 1 */
773: 750 00014AD4 0d effffff926 55 movl _sgl_value_2,r5
774: 751 00014ADB # asm("movl _sgl_value_3,r6"); /* r6 = MSW of operand 2 */
775: 752 00014ADB 0d effffff91f 56 movl _sgl_value_3,r6
776: 753 00014AE2 # asm("movl _sgl_value_4,r7"); /* r7 = LSW of operand 2 */
777: 754 00014AE2 0d effffff918 57 movl _sgl_value_4,r7
778: 755 00014AE9 # asm("movl _sgl_value_5,r8"); /* r8 = MSW of final Acc. */
779: 756 00014AE9 0d effffff911 58 movl _sgl_value_5,r8
780: 757 00014AF0 # asm("movl _sgl_value_6,r9"); /* r9 = LSW of final Acc. */
781: 758 00014AF0 0d effffff90a 59 movl _sgl_value_6,r9
782: 759 00014AF7 # asm("clrl r10"); /* r10 = 0 (expected Acc.) */
783: 760 00014AF7 4d 5a clrl r10
784: 761 00014AF9 # asm("movl _sgl_value_7,r11"); /* r11 = MSW of store data */
785: 762 00014AF9 0d effffff901 5b movl _sgl_value_7,r11
786: 763 00014B00 # asm("movl _sgl_value_8,r12"); /* r12 = LSW of store data */
787: 764 00014B00 0d effffff8fa 5c movl _sgl_value_8,r12
788: 765 00014B07 # asm("movl _index,r13"); /* r13 = data index */
789: 766 00014B07 0d effffff8f3 5d movl _index,r13
790: 767 00014B0E # asm("halt"); /* HALT ... */
791: 768 00014B0E 00 halt
792: 769 00014B0F # }
793: 770 00014B0F 40 ret#2
794: 771 00014B10 .set L453,0x0
795: 772 00014B10 L455:
796: 773 00014B10 13 ff3e jbr L456
797: 774 00014B13 .data
798: 774 00028F13 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.