|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 00000730 * .text
4 00000000 .align 1
5 00000000 .globl _pipe6
6 00000000 _pipe6:
7 00010FC4 0000 .word L381
8 00010FC6 #
9 00010FC6 # #include "evt_defs.h"
10 00010FC6 # #define MAX_POS 0x7fffffff;
11 00010FC6 # /*
12 00010FC6 # *********************************************************************
13 00010FC6 # * FPP PIPELINED EVENTS TEST #6
14 00010FC6 # *
15 00010FC6 # * This test will execute the following code: "LDD MULD ADDL2 MULD 0"
16 00010FC6 # * with an integer overflow fault on the ADDL2. We will make sure that:
17 00010FC6 # * 1. The fault is detected,
18 00010FC6 # * 2. the 1st multiply operation completes, and
19 00010FC6 # * 3. the 2nd multiply instruction is not executed.
20 00010FC6 # *
21 00010FC6 # * NOTE: this instruction uses the same data as pipe2
22 00010FC6 # *********************************************************************
23 00010FC6 # */
24 00010FC6 # pipe6()
25 00010FC6 # {
26 00010FC6 13 0182 jbr L383
27 00010FC9 L384:
28 00010FC9 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
29 00010FC9 ed 6d effffffff4 moval (r13),_pre_event_fp
30 00010FD0 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
31 00010FD0 ed 6e efffffffed moval (r14),_pre_event_sp
32 00010FD7 # precision = DBL;
33 00010FD7 0d 02 efffffffe6 movl $2,_precision
34 00010FDE # test_event = ARITH_CODE; /* expect an arithmetic fault */
35 00010FDE 0d 34 efffffffdf movl $52,_test_event
36 00010FE5 # exp_code = INT_OVFL_CODE; /* -specificly int overflow */
37 00010FE5 0d 01 efffffffd8 movl $1,_exp_code
38 00010FEC # exp_event = FALSE; /* ... but not yet */
39 00010FEC 4d efffffffd2 clrl _exp_event
40 00010FF2 # asm("movab _pipe6_ret,_event_return"); /* set post event return addr */
41 00010FF2 e9 ef000000f3 efffffffc7 movab _pipe6_ret,_event_return
42 00010FFD # dbl_value_2.m = dbl_value_2.l = 0; /* clear the 2nd MULD operand */
43 00010FFD 4d efffffffc5 clrl _dbl_value_2+4
44 00011003 0d efffffffbf 50 movl _dbl_value_2+4,r0
45 0001100A 0d 50 efffffffb3 movl r0,_dbl_value_2
46 00011011 # for( index = 0; index < max_pipe2_index; index++ )
47 00011011 4d efffffffad clrl _index
48 00011017 L387:
49 00011017 1d efffffffa7 efffffffa2 cmpl _index,_max_pipe2_index
50 00011022 91 03 13 0123 jgeq L386
51 00011027 # {
52 00011027 # sgl_value_1 = 0x789abcde; /* get the integer ovfl data */
53 00011027 0d 8f789abcde efffffff92 movl $2023406814,_sgl_value_1
54 00011032 # sgl_value_2 = MAX_POS; /* max integer (7fffffff) */
55 00011032 0d 8f7fffffff efffffff87 movl $2147483647,_sgl_value_2
56 0001103D # dbl_ld_acc = pipe2_data[index].op_1; /* get the data */
57 0001103D 5c 18 efffffff80 50 mull3 $24,_index,r0
58 00011045 0c 8f00000000 50 addl2 $_pipe2_data,r0
59 0001104C 0d a004 efffffff74 movl 4(r0),_dbl_ld_acc+4
60 00011054 0d 60 efffffff69 movl (r0),_dbl_ld_acc
61 0001105B # dbl_value_1 = pipe2_data[index].op_2;
62 0001105B 5c 18 efffffff62 50 mull3 $24,_index,r0
63 00011063 0c 8f00000008 50 addl2 $_pipe2_data+8,r0
64 0001106A 0d a004 efffffff56 movl 4(r0),_dbl_value_1+4
65 00011072 0d 60 efffffff4b movl (r0),_dbl_value_1
66 00011079 # dbl_expected = pipe2_data[index].exp;
67 00011079 5c 18 efffffff44 50 mull3 $24,_index,r0
68 00011081 0c 8f00000010 50 addl2 $_pipe2_data+16,r0
69 00011088 0d a004 efffffff38 movl 4(r0),_dbl_expected+4
70 00011090 0d 60 efffffff2d movl (r0),_dbl_expected
71 00011097 # asm(".globl _pipe6_lp1");
72 00011097 .globl _pipe6_lp1
73 00011097 # asm("_pipe6_lp1:");
74 00011097 _pipe6_lp1:
75 00011097 # asm("bispsw $0x60"); /* enable ovfl,undfl */
76 00011097 8b 8860 bispsw $0x60
77 0001109A # asm("ldd _dbl_ld_acc"); /* load the Acc. */
78 0001109A 07 efffffff24 ldd _dbl_ld_acc
79 000110A0 # exp_event = test_event; /* expect event soon */
80 000110A0 0d efffffff1e efffffff19 movl _test_event,_exp_event
81 000110AB # asm("muld _dbl_value_1"); /* start the multiply*/
82 000110AB e7 efffffff13 muld _dbl_value_1
83 000110B1 # asm("addl2 _sgl_value_1,_sgl_value_2"); /* trigger the fault */
84 000110B1 0c efffffff0d efffffff08 addl2 _sgl_value_1,_sgl_value_2
85 000110BC # asm("muld _dbl_value_2"); /* shouldn't get here*/
86 000110BC e7 efffffff02 muld _dbl_value_2
87 000110C2 # /*
88 000110C2 # * If we got to here then there was no event
89 000110C2 # */
90 000110C2 # if( force_loop )
91 000110C2 5d effffffefc tstl _force_loop
92 000110C8 31 03 jeql L388
93 000110CA # asm("brw _pipe6_lp1");; /* loop on the error */
Assemb00028784 # asm("brw _pipe6_lp1");; /* loop on the error */
"pipe600028784 94: WARNING: brw: destination label is external
94 000110CA 13 ffca brw _pipe6_lp1
95 000110CD L388:
96 000110CD # exp_event = FALSE; /* reset event expected flag */
97 000110CD 4d effffffef1 clrl _exp_event
98 000110D3 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
99 000110D3 0d effffffeeb 5d movl _pre_event_fp,fp
100 000110DA # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
101 000110DA 0d effffffee4 5e movl _pre_event_sp,sp
102 000110E1 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
103 000110E1 9b 8860 bicpsw $0x60
104 000110E4 # no_pipe6_evt();; /* report the error */
105 000110E4 fe 04 ef00000063 callf $4,_no_pipe6_evt
106 000110EB # /*
107 000110EB # * Come here after the event
108 000110EB # */
109 000110EB # asm(".globl _pipe6_ret");
110 000110EB .globl _pipe6_ret
111 000110EB # asm("_pipe6_ret:");
112 000110EB _pipe6_ret:
113 000110EB # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
114 000110EB 0d effffffed3 5d movl _pre_event_fp,fp
115 000110F2 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
116 000110F2 0d effffffecc 5e movl _pre_event_sp,sp
117 000110F9 # if( force_loop )
118 000110F9 5d effffffec5 tstl _force_loop
119 000110FF 31 03 jeql L390
120 00011101 # asm("brw _pipe6_lp1");; /* loop on the error */
"pipe600028784 121: WARNING: brw: destination label is external
121 00011101 13 ff93 brw _pipe6_lp1
122 00011104 L390:
123 00011104 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
124 00011104 9b 8860 bicpsw $0x60
125 00011107 # if( (post_evt_acc.m != dbl_expected.m) ||
126 00011107 # (post_evt_acc.l != dbl_expected.l) )
127 00011107 1d effffffeb7 effffffeb2 cmpl _post_evt_acc,_dbl_expected
128 00011112 21 0d jneq L9999
129 00011114 1d effffffeae effffffea9 cmpl _post_evt_acc+4,_dbl_expected+4
130 0001111F 31 20 jeql L391
131 00011121 L9999:
132 00011121 # {
133 00011121 # if( (!post_evt_acc.m) && (!post_evt_acc.l) )
134 00011121 5d effffffe9d tstl _post_evt_acc
135 00011127 21 11 jneq L392
136 00011129 5d effffffe99 tstl _post_evt_acc+4
137 0001112F 21 09 jneq L392
138 00011131 # pipe6_queue_er(); /* queue not cleared error */
139 00011131 fe 04 ef00000292 callf $4,_pipe6_queue_er
140 00011138 # else
141 00011138 11 07 jbr L394
142 0001113A L392:
143 0001113A # bad_pipe6_result(); /* incorrect result error */
144 0001113A fe 04 ef00000125 callf $4,_bad_pipe6_result
145 00011141 L394:
146 00011141 # }
147 00011141 # }
148 00011141 L391:
149 00011141 L385:
150 00011141 6d effffffe7d incl _index
151 00011147 13 fecd jbr L387
152 0001114A L386:
153 0001114A # }
154 0001114A 40 ret#2
155 0001114B .set L381,0x0
156 0001114B L383:
157 0001114B 13 fe7b jbr L384
158 0001114E .data
159 00000730 * .text
160 0001114E .align 1
161 0001114E .globl _no_pipe6_evt
162 0001114E _no_pipe6_evt:
163 0001114E 0000 .word L396
164 00011150 #
165 00011150 #
166 00011150 #
167 00011150 # /****************************************************************************
168 00011150 # * Report an "EVENT NOT DETECTED" error
169 00011150 # *
170 00011150 # * Cycle: xx. EVT test xx. subtest xx. No Integer Overflow fault. index = xx
171 00011150 # * inst = LDD op1, MULD op2, ADDL2 op3,op4, MULD op5 (Int. Overflow on ADDL2)
172 00011150 # * op1 = xxxxxxxx xxxxxxxx, op3 = xxxxxxxx
173 00011150 # * op2 = xxxxxxxx xxxxxxxx, initial op4 = xxxxxxxx, final op4 = xxxxxxxx
174 00011150 # ****************************************************************************/
175 00011150 # no_pipe6_evt()
176 00011150 # {
177 00011150 13 010f jbr L398
178 00011153 L399:
179 00011153 # errcnt++; /* bump the error count */
180 00011153 6d effffffe6b incl _errcnt
181 00011159 # if ( prt_error )
182 00011159 5d effffffe65 tstl _prt_error
183 0001115F 21 03 13 00d7 jeql L400
184 00011164 # {
185 00011164 # print_pipe6_err( " No Integer Overflow fault." );
186 00011164 .data 1
187 00000730 * L402:
188 00000730 * 20204E6F20496E74656765722 .ascii " No Integer Overflow fault.\0"
04F766572666C6F7720666175
6C742E00
189 0000074d * .text
190 00011164 dd 8f00000730 pushl $L402
191 0001116A fe 08 ef000003bd callf $8,_print_pipe6_err
192 00011171 # writes("op1 = ");
193 00011171 .data 1
194 0000074d * L404:
195 0000074d * 6F7031203D2000 .ascii "op1 = \0"
196 00000754 * .text
197 00011171 dd 8f0000074d pushl $L404
198 00011177 fe 08 effffffe46 callf $8,_writes
199 0001117E # write32h( dbl_ld_acc.m );
200 0001117E dd effffffe40 pushl _dbl_ld_acc
201 00011184 fe 08 effffffe39 callf $8,_write32h
202 0001118B # writes(" ");
203 0001118B .data 1
204 00000754 * L406:
205 00000754 * 2000 .ascii " \0"
206 00000756 * .text
207 0001118B dd 8f00000754 pushl $L406
208 00011191 fe 08 effffffe2c callf $8,_writes
209 00011198 # write32h( dbl_ld_acc.l );
210 00011198 dd effffffe2a pushl _dbl_ld_acc+4
211 0001119E fe 08 effffffe1f callf $8,_write32h
212 000111A5 # writes(", op3 = ");
213 000111A5 .data 1
214 00000756 * L407:
215 00000756 * 2C202020202020202020206F7 .ascii ", op3 = \0"
033203D2000
216 00000768 * .text
217 000111A5 dd 8f00000756 pushl $L407
218 000111AB fe 08 effffffe12 callf $8,_writes
219 000111B2 # write32h( sgl_value_1 );
220 000111B2 dd effffffe0c pushl _sgl_value_1
221 000111B8 fe 08 effffffe05 callf $8,_write32h
222 000111BF # writes("\nop2 = ");
223 000111BF .data 1
224 00000768 * L408:
225 00000768 * 0A6F7032203D2000 .ascii "\12op2 = \0"
226 00000770 * .text
227 000111BF dd 8f00000768 pushl $L408
228 000111C5 fe 08 effffffdf8 callf $8,_writes
229 000111CC # write32h( dbl_value_1.m );
230 000111CC dd effffffdf2 pushl _dbl_value_1
231 000111D2 fe 08 effffffdeb callf $8,_write32h
232 000111D9 # writes(" ");
233 000111D9 .data 1
234 00000770 * L409:
235 00000770 * 2000 .ascii " \0"
236 00000772 * .text
237 000111D9 dd 8f00000770 pushl $L409
238 000111DF fe 08 effffffdde callf $8,_writes
239 000111E6 # write32h( dbl_value_1.l );
240 000111E6 dd effffffddc pushl _dbl_value_1+4
241 000111EC fe 08 effffffdd1 callf $8,_write32h
242 000111F3 # writes(", initial op4 = ");
243 000111F3 .data 1
244 00000772 * L410:
245 00000772 * 2C2020696E697469616C206F7 .ascii ", initial op4 = \0"
034203D2000
246 00000784 * .text
247 000111F3 dd 8f00000772 pushl $L410
248 000111F9 fe 08 effffffdc4 callf $8,_writes
249 00011200 # sgl_dummy1 = MAX_POS;
250 00011200 0d 8f7fffffff effffffdb9 movl $2147483647,_sgl_dummy1
251 0001120B # write32h( sgl_dummy1 );
252 0001120B dd effffffdb3 pushl _sgl_dummy1
253 00011211 fe 08 effffffdac callf $8,_write32h
254 00011218 # writes(", final op4 = ");
255 00011218 .data 1
256 00000784 * L411:
257 00000784 * 2C202066696E616C206F70342 .ascii ", final op4 = \0"
03D2000
258 00000794 * .text
259 00011218 dd 8f00000784 pushl $L411
260 0001121E fe 08 effffffd9f callf $8,_writes
261 00011225 # write32h( sgl_value_2 );
262 00011225 dd effffffd99 pushl _sgl_value_2
263 0001122B fe 08 effffffd92 callf $8,_write32h
264 00011232 # writec('\n');
265 00011232 dd 0a pushl $10
266 00011234 fe 08 effffffd89 callf $8,_writec
267 0001123B # }
268 0001123B # if ( halt_flg ) /* halt on error? */
269 0001123B L400:
270 0001123B 5d effffffd83 tstl _halt_flg
271 00011241 31 09 jeql L413
272 00011243 # pipe6_halt( 1 ); /* halt with a code of 1 */
273 00011243 dd 01 pushl $1
274 00011245 fe 08 ef0000038e callf $8,_pipe6_halt
275 0001124C # if ( loop_on_err )
276 0001124C L413:
277 0001124C 5d effffffd72 tstl _loop_on_err
278 00011252 31 0d jeql L415
279 00011254 # {
280 00011254 # force_loop = TRUE; /* set the force loop flag */
281 00011254 0d 01 effffffd69 movl $1,_force_loop
282 0001125B # asm("jmp _pipe6_lp1"); /* and loop */
283 0001125B 71 effffffe36 jmp _pipe6_lp1
284 00011261 # };
285 00011261 L415:
286 00011261 # }
287 00011261 40 ret#2
288 00011262 .set L396,0x0
289 00011262 L398:
290 00011262 13 feee jbr L399
291 00011265 .data
292 00000730 * .text
293 00011265 00 .align 1
294 00011266 .globl _bad_pipe6_result
295 00011266 _bad_pipe6_result:
296 00011266 0000 .word L416
297 00011268 #
298 00011268 #
299 00011268 #
300 00011268 #
301 00011268 # /****************************************************************************
302 00011268 # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error
303 00011268 # *
304 00011268 # * Cycle: xx. EVT test xx. subtest xx. . Bad final Accumulator. index = xx
305 00011268 # * inst = LDD op1, MULD op2, ADDL2 op3,op4, MULD op5 (Int. Overflow on ADDL2)
306 00011268 # * The 2nd MULD should not be executed.
307 00011268 # * op1 = xxxxxxxx xxxxxxxx, final Acc. = xxxxxxxx xxxxxxxx
308 00011268 # * op2 = xxxxxxxx xxxxxxxx, expected = xxxxxxxx xxxxxxxx
309 00011268 # * op5 = xxxxxxxx xxxxxxxx
310 00011268 # ****************************************************************************/
311 00011268 # bad_pipe6_result()
312 00011268 # {
313 00011268 13 015b jbr L418
314 0001126B L419:
315 0001126B # errcnt++; /* bump the error count */
316 0001126B 6d effffffd53 incl _errcnt
317 00011271 # if ( prt_error )
318 00011271 5d effffffd4d tstl _prt_error
319 00011277 21 03 13 0123 jeql L420
320 0001127C # {
321 0001127C # print_pipe6_err( ". Bad final Accumulator." );
322 0001127C .data 1
323 00000794 * L421:
324 00000794 * 2E204261642066696E616C204 .ascii ". Bad final Accumulator.\0"
16363756D756C61746F722E00
325 000007ad * .text
326 0001127C dd 8f00000794 pushl $L421
327 00011282 fe 08 ef000002a5 callf $8,_print_pipe6_err
328 00011289 # writes("The 2nd MULD should not be executed\n");
329 00011289 .data 1
330 000007ad * L422:
331 000007ad * 54686520326E64204D554C442 .ascii "The 2nd MULD should not be executed\12\0"
073686F756C64206E6F742062
652065786563757465640A00
332 000007d2 * .text
333 00011289 dd 8f000007ad pushl $L422
334 0001128F fe 08 effffffd2e callf $8,_writes
335 00011296 # writes("op1 = ");
336 00011296 .data 1
337 000007d2 * L423:
338 000007d2 * 6F7031203D2000 .ascii "op1 = \0"
339 000007d9 * .text
340 00011296 dd 8f000007d2 pushl $L423
341 0001129C fe 08 effffffd21 callf $8,_writes
342 000112A3 # write32h( dbl_ld_acc.m );
343 000112A3 dd effffffd1b pushl _dbl_ld_acc
344 000112A9 fe 08 effffffd14 callf $8,_write32h
345 000112B0 # writes(" ");
346 000112B0 .data 1
347 000007d9 * L424:
348 000007d9 * 2000 .ascii " \0"
349 000007db * .text
350 000112B0 dd 8f000007d9 pushl $L424
351 000112B6 fe 08 effffffd07 callf $8,_writes
352 000112BD # write32h( dbl_ld_acc.l );
353 000112BD dd effffffd05 pushl _dbl_ld_acc+4
354 000112C3 fe 08 effffffcfa callf $8,_write32h
355 000112CA # writes(", final Acc. = ");
356 000112CA .data 1
357 000007db * L425:
358 000007db * 2C20202066696E616C2041636 .ascii ", final Acc. = \0"
32E203D2000
359 000007ed * .text
360 000112CA dd 8f000007db pushl $L425
361 000112D0 fe 08 effffffced callf $8,_writes
362 000112D7 # write32h( post_evt_acc.m );
363 000112D7 dd effffffce7 pushl _post_evt_acc
364 000112DD fe 08 effffffce0 callf $8,_write32h
365 000112E4 # writec(' ');
366 000112E4 dd 20 pushl $32
367 000112E6 fe 08 effffffcd7 callf $8,_writec
368 000112ED # write32h( post_evt_acc.l );
369 000112ED dd effffffcd5 pushl _post_evt_acc+4
370 000112F3 fe 08 effffffcca callf $8,_write32h
371 000112FA # writes("\nop2 = ");
372 000112FA .data 1
373 000007ed * L426:
374 000007ed * 0A6F7032203D2000 .ascii "\12op2 = \0"
375 000007f5 * .text
376 000112FA dd 8f000007ed pushl $L426
377 00011300 fe 08 effffffcbd callf $8,_writes
378 00011307 # write32h( dbl_value_1.m );
379 00011307 dd effffffcb7 pushl _dbl_value_1
380 0001130D fe 08 effffffcb0 callf $8,_write32h
381 00011314 # writes(" ");
382 00011314 .data 1
383 000007f5 * L427:
384 000007f5 * 2000 .ascii " \0"
385 000007f7 * .text
386 00011314 dd 8f000007f5 pushl $L427
387 0001131A fe 08 effffffca3 callf $8,_writes
388 00011321 # write32h( dbl_value_1.l );
389 00011321 dd effffffca1 pushl _dbl_value_1+4
390 00011327 fe 08 effffffc96 callf $8,_write32h
391 0001132E # writes(", expected = ");
392 0001132E .data 1
393 000007f7 * L428:
394 000007f7 * 2C20202065787065637465642 .ascii ", expected = \0"
020203D2000
395 00000809 * .text
396 0001132E dd 8f000007f7 pushl $L428
397 00011334 fe 08 effffffc89 callf $8,_writes
398 0001133B # write32h( dbl_expected.m );
399 0001133B dd effffffc83 pushl _dbl_expected
400 00011341 fe 08 effffffc7c callf $8,_write32h
401 00011348 # writes(" ");
402 00011348 .data 1
403 00000809 * L429:
404 00000809 * 2000 .ascii " \0"
405 0000080b * .text
406 00011348 dd 8f00000809 pushl $L429
407 0001134E fe 08 effffffc6f callf $8,_writes
408 00011355 # write32h( dbl_expected.l );
409 00011355 dd effffffc6d pushl _dbl_expected+4
410 0001135B fe 08 effffffc62 callf $8,_write32h
411 00011362 # writes("\nop5 = ");
412 00011362 .data 1
413 0000080b * L430:
414 0000080b * 0A6F7035203D2000 .ascii "\12op5 = \0"
415 00000813 * .text
416 00011362 dd 8f0000080b pushl $L430
417 00011368 fe 08 effffffc55 callf $8,_writes
418 0001136F # write32h( dbl_value_2.m );
419 0001136F dd effffffc4f pushl _dbl_value_2
420 00011375 fe 08 effffffc48 callf $8,_write32h
421 0001137C # writes(" ");
422 0001137C .data 1
423 00000813 * L431:
424 00000813 * 2000 .ascii " \0"
425 00000815 * .text
426 0001137C dd 8f00000813 pushl $L431
427 00011382 fe 08 effffffc3b callf $8,_writes
428 00011389 # write32h( dbl_value_2.l );
429 00011389 dd effffffc39 pushl _dbl_value_2+4
430 0001138F fe 08 effffffc2e callf $8,_write32h
431 00011396 # writec('\n');
432 00011396 dd 0a pushl $10
433 00011398 fe 08 effffffc25 callf $8,_writec
434 0001139F # }
435 0001139F # if ( halt_flg ) /* halt on error? */
436 0001139F L420:
437 0001139F 5d effffffc1f tstl _halt_flg
438 000113A5 31 09 jeql L432
439 000113A7 # pipe6_halt( 2 ); /* halt with a code of 2 */
440 000113A7 dd 02 pushl $2
441 000113A9 fe 08 ef0000022a callf $8,_pipe6_halt
442 000113B0 # if ( loop_on_err )
443 000113B0 L432:
444 000113B0 5d effffffc0e tstl _loop_on_err
445 000113B6 31 0d jeql L433
446 000113B8 # {
447 000113B8 # force_loop = TRUE; /* set the force loop flag */
448 000113B8 0d 01 effffffc05 movl $1,_force_loop
449 000113BF # asm("jmp _pipe6_lp1"); /* and loop */
450 000113BF 71 effffffcd2 jmp _pipe6_lp1
451 000113C5 # };
452 000113C5 L433:
453 000113C5 # }
454 000113C5 40 ret#2
455 000113C6 .set L416,0x0
456 000113C6 L418:
457 000113C6 13 fea2 jbr L419
458 000113C9 .data
459 00000730 * .text
460 000113C9 00 .align 1
461 000113CA .globl _pipe6_queue_er
462 000113CA _pipe6_queue_er:
463 000113CA 0000 .word L434
464 000113CC #
465 000113CC #
466 000113CC #
467 000113CC #
468 000113CC # /****************************************************************************
469 000113CC # * Report an "FPP Queue not cleared" error
470 000113CC # *
471 000113CC # * Cycle: xx. EVT test xx. subtest xx. . FPP queue not cleared. index = xx
472 000113CC # * inst = LDD op1, MULD op2, ADDL2 op3,op4, MULD op5 (Int. Overflow on ADDL2)
473 000113CC # * The 2nd MULD should not have been executed but apparently was.
474 000113CC # * op1 = xxxxxxxx xxxxxxxx, final Acc. = xxxxxxxx xxxxxxxx
475 000113CC # * op2 = xxxxxxxx xxxxxxxx, expected = xxxxxxxx xxxxxxxx
476 000113CC # * op5 = xxxxxxxx xxxxxxxx
477 000113CC # ****************************************************************************/
478 000113CC # pipe6_queue_er()
479 000113CC # {
480 000113CC 13 015b jbr L436
481 000113CF L437:
482 000113CF # errcnt++; /* bump the error count */
483 000113CF 6d effffffbef incl _errcnt
484 000113D5 # if ( prt_error )
485 000113D5 5d effffffbe9 tstl _prt_error
486 000113DB 21 03 13 0123 jeql L438
487 000113E0 # {
488 000113E0 # print_pipe6_err( ". FPP queue not cleared." );
489 000113E0 .data 1
490 00000815 * L439:
491 00000815 * 2E20465050207175657565206 .ascii ". FPP queue not cleared.\0"
E6F7420636C65617265642E00
492 0000082e * .text
493 000113E0 dd 8f00000815 pushl $L439
494 000113E6 fe 08 ef00000141 callf $8,_print_pipe6_err
495 000113ED # writes(
496 000113ED # "The 2nd MULD should not have been executed but apparently was.\n");
497 000113ED .data 1
498 0000082e * L440:
499 0000082e * 54686520326E64204D554C442 .ascii "The 2nd MULD should not have been executed but apparently was.\12\0"
073686F756C64206E6F742068
617665206265656E206578656
3757465642062757420617070
6172656E746C79207761732E0
A00
500 0000086e * .text
501 000113ED dd 8f0000082e pushl $L440
502 000113F3 fe 08 effffffbca callf $8,_writes
503 000113FA # writes("op1 = ");
504 000113FA .data 1
505 0000086e * L441:
506 0000086e * 6F7031203D2000 .ascii "op1 = \0"
507 00000875 * .text
508 000113FA dd 8f0000086e pushl $L441
509 00011400 fe 08 effffffbbd callf $8,_writes
510 00011407 # write32h( dbl_ld_acc.m );
511 00011407 dd effffffbb7 pushl _dbl_ld_acc
512 0001140D fe 08 effffffbb0 callf $8,_write32h
513 00011414 # writes(" ");
514 00011414 .data 1
515 00000875 * L442:
516 00000875 * 2000 .ascii " \0"
517 00000877 * .text
518 00011414 dd 8f00000875 pushl $L442
519 0001141A fe 08 effffffba3 callf $8,_writes
520 00011421 # write32h( dbl_ld_acc.l );
521 00011421 dd effffffba1 pushl _dbl_ld_acc+4
522 00011427 fe 08 effffffb96 callf $8,_write32h
523 0001142E # writes(", final Acc. = ");
524 0001142E .data 1
525 00000877 * L443:
526 00000877 * 2C20202066696E616C2041636 .ascii ", final Acc. = \0"
32E203D2000
527 00000889 * .text
528 0001142E dd 8f00000877 pushl $L443
529 00011434 fe 08 effffffb89 callf $8,_writes
530 0001143B # write32h( post_evt_acc.m );
531 0001143B dd effffffb83 pushl _post_evt_acc
532 00011441 fe 08 effffffb7c callf $8,_write32h
533 00011448 # writec(' ');
534 00011448 dd 20 pushl $32
535 0001144A fe 08 effffffb73 callf $8,_writec
536 00011451 # write32h( post_evt_acc.l );
537 00011451 dd effffffb71 pushl _post_evt_acc+4
538 00011457 fe 08 effffffb66 callf $8,_write32h
539 0001145E # writes("\nop2 = ");
540 0001145E .data 1
541 00000889 * L444:
542 00000889 * 0A6F7032203D2000 .ascii "\12op2 = \0"
543 00000891 * .text
544 0001145E dd 8f00000889 pushl $L444
545 00011464 fe 08 effffffb59 callf $8,_writes
546 0001146B # write32h( dbl_value_1.m );
547 0001146B dd effffffb53 pushl _dbl_value_1
548 00011471 fe 08 effffffb4c callf $8,_write32h
549 00011478 # writes(" ");
550 00011478 .data 1
551 00000891 * L445:
552 00000891 * 2000 .ascii " \0"
553 00000893 * .text
554 00011478 dd 8f00000891 pushl $L445
555 0001147E fe 08 effffffb3f callf $8,_writes
556 00011485 # write32h( dbl_value_1.l );
557 00011485 dd effffffb3d pushl _dbl_value_1+4
558 0001148B fe 08 effffffb32 callf $8,_write32h
559 00011492 # writes(", expected = ");
560 00011492 .data 1
561 00000893 * L446:
562 00000893 * 2C20202065787065637465642 .ascii ", expected = \0"
020203D2000
563 000008a5 * .text
564 00011492 dd 8f00000893 pushl $L446
565 00011498 fe 08 effffffb25 callf $8,_writes
566 0001149F # write32h( dbl_expected.m );
567 0001149F dd effffffb1f pushl _dbl_expected
568 000114A5 fe 08 effffffb18 callf $8,_write32h
569 000114AC # writes(" ");
570 000114AC .data 1
571 000008a5 * L447:
572 000008a5 * 2000 .ascii " \0"
573 000008a7 * .text
574 000114AC dd 8f000008a5 pushl $L447
575 000114B2 fe 08 effffffb0b callf $8,_writes
576 000114B9 # write32h( dbl_expected.l );
577 000114B9 dd effffffb09 pushl _dbl_expected+4
578 000114BF fe 08 effffffafe callf $8,_write32h
579 000114C6 # writes("\nop5 = ");
580 000114C6 .data 1
581 000008a7 * L448:
582 000008a7 * 0A6F7035203D2000 .ascii "\12op5 = \0"
583 000008af * .text
584 000114C6 dd 8f000008a7 pushl $L448
585 000114CC fe 08 effffffaf1 callf $8,_writes
586 000114D3 # write32h( dbl_value_2.m );
587 000114D3 dd effffffaeb pushl _dbl_value_2
588 000114D9 fe 08 effffffae4 callf $8,_write32h
589 000114E0 # writes(" ");
590 000114E0 .data 1
591 000008af * L449:
592 000008af * 2000 .ascii " \0"
593 000008b1 * .text
594 000114E0 dd 8f000008af pushl $L449
595 000114E6 fe 08 effffffad7 callf $8,_writes
596 000114ED # write32h( dbl_value_2.l );
597 000114ED dd effffffad5 pushl _dbl_value_2+4
598 000114F3 fe 08 effffffaca callf $8,_write32h
599 000114FA # writec('\n');
600 000114FA dd 0a pushl $10
601 000114FC fe 08 effffffac1 callf $8,_writec
602 00011503 # }
603 00011503 # if ( halt_flg ) /* halt on error? */
604 00011503 L438:
605 00011503 5d effffffabb tstl _halt_flg
606 00011509 31 09 jeql L450
607 0001150B # pipe6_halt( 3 ); /* halt with a code of 3 */
608 0001150B dd 03 pushl $3
609 0001150D fe 08 ef000000c6 callf $8,_pipe6_halt
610 00011514 # if ( loop_on_err )
611 00011514 L450:
612 00011514 5d effffffaaa tstl _loop_on_err
613 0001151A 31 0d jeql L451
614 0001151C # {
615 0001151C # force_loop = TRUE; /* set the force loop flag */
616 0001151C 0d 01 effffffaa1 movl $1,_force_loop
617 00011523 # asm("jmp _pipe6_lp1"); /* and loop */
618 00011523 71 effffffb6e jmp _pipe6_lp1
619 00011529 # };
620 00011529 L451:
621 00011529 # }
622 00011529 40 ret#2
623 0001152A .set L434,0x0
624 0001152A L436:
625 0001152A 13 fea2 jbr L437
626 0001152D .data
627 00000730 * .text
628 0001152D 00 .align 1
629 0001152E .globl _print_pipe6_err
630 0001152E _print_pipe6_err:
631 0001152E 0000 .word L452
632 00011530 #
633 00011530 #
634 00011530 #
635 00011530 #
636 00011530 #
637 00011530 # /****************************************************************************
638 00011530 # * Report an error message of the form
639 00011530 # *
640 00011530 # * Cycle: xx. EVT test xx. subtest xx. <your message here> index = xx
641 00011530 # * inst = LDD op1, MULD op2, ADDL2 op3,op4, MULD op5 (Int. Overflow on ADDL2)
642 00011530 # ****************************************************************************/
643 00011530 # print_pipe6_err( msg )
644 00011530 # char *msg; /* pointer to error message */
645 00011530 # {
646 00011530 13 00a3 jbr L454
647 00011533 L455:
648 00011533 # if( errcnt == 1 ) /* 1st error? */
649 00011533 1d effffffa8b 01 cmpl _errcnt,$1
650 0001153A 21 0d jneq L456
651 0001153C # writes(" \n"); /* start a new print line */
652 0001153C .data 1
653 000008b1 * L457:
654 000008b1 * 200A00 .ascii " \12\0"
655 000008b4 * .text
656 0001153C dd 8f000008b1 pushl $L457
657 00011542 fe 08 effffffa7b callf $8,_writes
658 00011549 # writes("Cycle: ");
659 00011549 L456:
660 00011549 .data 1
661 000008b4 * L458:
662 000008b4 * 4379636C653A2000 .ascii "Cycle: \0"
663 000008bc * .text
664 00011549 dd 8f000008b4 pushl $L458
665 0001154F fe 08 effffffa6e callf $8,_writes
666 00011556 # writed( cycle );
667 00011556 dd effffffa68 pushl _cycle
668 0001155C fe 08 effffffa61 callf $8,_writed
669 00011563 # writes(" EVT test ");
670 00011563 .data 1
671 000008bc * L460:
672 000008bc * 202045565420746573742000 .ascii " EVT test \0"
673 000008c8 * .text
674 00011563 dd 8f000008bc pushl $L460
675 00011569 fe 08 effffffa54 callf $8,_writes
676 00011570 # writed( test_no );
677 00011570 dd effffffa4e pushl _test_no
678 00011576 fe 08 effffffa47 callf $8,_writed
679 0001157D # writes(". subtest ");
680 0001157D .data 1
681 000008c8 * L461:
682 000008c8 * 2E20737562746573742000 .ascii ". subtest \0"
683 000008d3 * .text
684 0001157D dd 8f000008c8 pushl $L461
685 00011583 fe 08 effffffa3a callf $8,_writes
686 0001158A # writed( subtest );
687 0001158A dd effffffa34 pushl _subtest
688 00011590 fe 08 effffffa2d callf $8,_writed
689 00011597 # writes( msg ); /* print the error message */
690 00011597 dd ad04 pushl 4(fp)
691 0001159A fe 08 effffffa23 callf $8,_writes
692 000115A1 # writes(" index = ");
693 000115A1 .data 1
694 000008d3 * L462:
695 000008d3 * 20696E646578203D2000 .ascii " index = \0"
696 000008dd * .text
697 000115A1 dd 8f000008d3 pushl $L462
698 000115A7 fe 08 effffffa16 callf $8,_writes
699 000115AE # writed( index );
700 000115AE dd effffffa10 pushl _index
701 000115B4 fe 08 effffffa09 callf $8,_writed
702 000115BB # writes("\ninst = LDD op1, MULD op2, ADDL2 op3,op4, MULD op5");
703 000115BB .data 1
704 000008dd * L463:
705 000008dd * 0A696E7374203D204C4444206 .ascii "\12inst = LDD op1, MULD op2, ADDL2 op3,op4, MULD op5\0"
F70312C204D554C44206F7032
2C204144444C32206F70332C6
F70342C204D554C44206F7035
00
706 00000910 * .text
707 000115BB dd 8f000008dd pushl $L463
708 000115C1 fe 08 effffff9fc callf $8,_writes
709 000115C8 # writes(" (Integer Overflow on ADDL2)\n");
710 000115C8 .data 1
711 00000910 * L464:
712 00000910 * 202028496E7465676572204F7 .ascii " (Integer Overflow on ADDL2)\12\0"
66572666C6F77206F6E204144
444C32290A00
713 0000092f * .text
714 000115C8 dd 8f00000910 pushl $L464
715 000115CE fe 08 effffff9ef callf $8,_writes
716 000115D5 # }
717 000115D5 40 ret#2
718 000115D6 .set L452,0x0
719 000115D6 L454:
720 000115D6 13 ff5a jbr L455
721 000115D9 .data
722 00000730 * .text
723 000115D9 00 .align 1
724 000115DA .globl _pipe6_halt
725 000115DA _pipe6_halt:
726 000115DA 0000 .word L465
727 000115DC #
728 000115DC #
729 000115DC # /****************************************************************************
730 000115DC # * Error Halt Routine
731 000115DC # ****************************************************************************/
732 000115DC # pipe6_halt( code )
733 000115DC # int code; /* halt code to use */
734 000115DC # {
735 000115DC 13 0111 jbr L467
736 000115DF L468:
737 000115DF # err_code = code;
738 000115DF 0d ad04 effffff9dd movl 4(fp),_err_code
739 000115E7 # sgl_value_3 = MAX_POS; /* initial op4 data */
740 000115E7 0d 8f7fffffff effffff9d2 movl $2147483647,_sgl_value_3
741 000115F2 # sgl_value_4 = dbl_ld_acc.m;
742 000115F2 0d effffff9cc effffff9c7 movl _dbl_ld_acc,_sgl_value_4
743 000115FD # sgl_value_5 = dbl_ld_acc.l;
744 000115FD 0d effffff9c5 effffff9bc movl _dbl_ld_acc+4,_sgl_value_5
745 00011608 # sgl_value_6 = dbl_value_1.m;
746 00011608 0d effffff9b6 effffff9b1 movl _dbl_value_1,_sgl_value_6
747 00011613 # sgl_value_7 = dbl_value_1.l;
748 00011613 0d effffff9af effffff9a6 movl _dbl_value_1+4,_sgl_value_7
749 0001161E # asm("movl _test_no,r0"); /* r0 = test number */
750 0001161E 0d effffff9a0 50 movl _test_no,r0
751 00011625 # asm("movl _subtest,r1"); /* r1 = subtest number */
752 00011625 0d effffff999 51 movl _subtest,r1
753 0001162C # asm("movl _err_code,r2"); /* r2 = error code */
754 0001162C 0d effffff992 52 movl _err_code,r2
755 00011633 # asm("movl _cycle,r3"); /* r3 = cycle count */
756 00011633 0d effffff98b 53 movl _cycle,r3
757 0001163A # asm("movl _sgl_value_4,r4"); /* r4 = MSW of operand 1 */
758 0001163A 0d effffff984 54 movl _sgl_value_4,r4
759 00011641 # asm("movl _sgl_value_5,r5"); /* r5 = LSW of operand 1 */
760 00011641 0d effffff97d 55 movl _sgl_value_5,r5
761 00011648 # asm("movl _sgl_value_6,r6"); /* r6 = MSW of operand 2 */
762 00011648 0d effffff976 56 movl _sgl_value_6,r6
763 0001164F # asm("movl _sgl_value_7,r7"); /* r7 = LSW of operand 2 */
764 0001164F 0d effffff96f 57 movl _sgl_value_7,r7
765 00011656 # if( code == 1 ) {
766 00011656 1d ad04 01 cmpl 4(fp),$1
767 0001165A 21 1f jneq L469
768 0001165C # asm("movl _sgl_value_1,r8"); /* r8 = operand 3 */
769 0001165C 0d effffff962 58 movl _sgl_value_1,r8
770 00011663 # asm("movl _sgl_value_3,r9"); /* r9 = operand 2, initial */
771 00011663 0d effffff95b 59 movl _sgl_value_3,r9
772 0001166A # asm("movl _sgl_value_2,r10"); /* r10 = operand 2, final */
773 0001166A 0d effffff954 5a movl _sgl_value_2,r10
774 00011671 # asm("movl _index,r11"); /* r11 = data index */
775 00011671 0d effffff94d 5b movl _index,r11
776 00011678 # asm("halt"); /* HALT ... */
777 00011678 00 halt
778 00011679 # } else {
779 00011679 11 73 jbr L470
780 0001167B L469:
781 0001167B # sgl_value_1 = post_evt_acc.m;
782 0001167B 0d effffff943 effffff93e movl _post_evt_acc,_sgl_value_1
783 00011686 # sgl_value_2 = post_evt_acc.l;
784 00011686 0d effffff93c effffff933 movl _post_evt_acc+4,_sgl_value_2
785 00011691 # sgl_value_3 = dbl_expected.m;
786 00011691 0d effffff92d effffff928 movl _dbl_expected,_sgl_value_3
787 0001169C # sgl_value_4 = dbl_expected.l;
788 0001169C 0d effffff926 effffff91d movl _dbl_expected+4,_sgl_value_4
789 000116A7 # sgl_value_5 = dbl_value_2.m;
790 000116A7 0d effffff917 effffff912 movl _dbl_value_2,_sgl_value_5
791 000116B2 # sgl_value_6 = dbl_value_2.l;
792 000116B2 0d effffff910 effffff907 movl _dbl_value_2+4,_sgl_value_6
793 000116BD # asm("movl _sgl_value_1,r8"); /* r8 = MSW of final acc. */
794 000116BD 0d effffff901 58 movl _sgl_value_1,r8
795 000116C4 # asm("movl _sgl_value_2,r9"); /* r9 = LSW of final acc. */
796 000116C4 0d effffff8fa 59 movl _sgl_value_2,r9
797 000116CB # asm("movl _sgl_value_3,r10"); /* r10 = MSW of expected */
798 000116CB 0d effffff8f3 5a movl _sgl_value_3,r10
799 000116D2 # asm("movl _sgl_value_4,r11"); /* r11 = LSW of expected */
800 000116D2 0d effffff8ec 5b movl _sgl_value_4,r11
801 000116D9 # asm("movl _sgl_value_5,r12"); /* r12 = MSW of 2nd MULD op */
802 000116D9 0d effffff8e5 5c movl _sgl_value_5,r12
803 000116E0 # asm("movl _sgl_value_6,r13"); /* r13 = LSW of 2nd MULD op */
804 000116E0 0d effffff8de 5d movl _sgl_value_6,r13
805 000116E7 # asm("movl _index,r14"); /* r14 = data index */
806 000116E7 0d effffff8d7 5e movl _index,r14
807 000116EE # }
808 000116EE L470:
809 000116EE # asm("halt"); /* HALT ... */
810 000116EE 00 halt
811 000116EF # }
812 000116EF 40 ret#2
813 000116F0 .set L465,0x0
814 000116F0 L467:
815 000116F0 13 feec jbr L468
816 000116F3 .data
816 000226B7 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.