|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 00000688 * .text
4 00000000 .align 1
5 00000000 .globl _pipe14
6 00000000 _pipe14:
7 0001386C 0000 .word L381
8 0001386E #
9 0001386E # #include "evt_defs.h"
10 0001386E #
11 0001386E # /*
12 0001386E # *********************************************************************
13 0001386E # * FPP PIPELINED EVENTS TEST #14
14 0001386E # *
15 0001386E # * This test will execute the following code: "LDD DIVD MULL3 NEGD"
16 0001386E # * with an integer overflow fault on the MULL3. We will make sure that:
17 0001386E # * 1. The fault is detected, and
18 0001386E # * 2. the NEGD instruction is not executed.
19 0001386E # *
20 0001386E # * NOTE: This instruction uses the same data as pipe1
21 0001386E # *********************************************************************
22 0001386E # */
23 0001386E # pipe14()
24 0001386E # {
25 0001386E 13 0171 jbr L383
26 00013871 L384:
27 00013871 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
28 00013871 ed 6d effffffff4 moval (r13),_pre_event_fp
29 00013878 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
30 00013878 ed 6e efffffffed moval (r14),_pre_event_sp
31 0001387F # precision = DBL;
32 0001387F 0d 02 efffffffe6 movl $2,_precision
33 00013886 # test_event = ARITH_CODE; /* expect an arithmetic fault */
34 00013886 0d 34 efffffffdf movl $52,_test_event
35 0001388D # exp_code = INT_OVFL_CODE; /* - specificly underflow */
36 0001388D 0d 01 efffffffd8 movl $1,_exp_code
37 00013894 # exp_event = FALSE; /* ... but not yet */
38 00013894 4d efffffffd2 clrl _exp_event
39 0001389A # asm("movab _pipe14_ret,_event_return"); /* set event return address */
40 0001389A e9 ef000000d0 efffffffc7 movab _pipe14_ret,_event_return
41 000138A5 # for( index = 0; index < max_pipe1_index; index++ )
42 000138A5 4d efffffffc1 clrl _index
43 000138AB L387:
44 000138AB 1d efffffffbb efffffffb6 cmpl _index,_max_pipe1_index
45 000138B6 91 03 13 0126 jgeq L386
46 000138BB # {
47 000138BB # dbl_ld_acc = pipe1_data[index].op_1; /* get operand 1 */
48 000138BB 5c 18 efffffffaa 50 mull3 $24,_index,r0
49 000138C3 0c 8f00000000 50 addl2 $_pipe1_data,r0
50 000138CA 0d a004 efffffff9e movl 4(r0),_dbl_ld_acc+4
51 000138D2 0d 60 efffffff93 movl (r0),_dbl_ld_acc
52 000138D9 # dbl_value_1 = pipe1_data[index].op_2; /* get operand 2 */
53 000138D9 5c 18 efffffff8c 50 mull3 $24,_index,r0
54 000138E1 0c 8f00000008 50 addl2 $_pipe1_data+8,r0
55 000138E8 0d a004 efffffff80 movl 4(r0),_dbl_value_1+4
56 000138F0 0d 60 efffffff75 movl (r0),_dbl_value_1
57 000138F7 # dbl_expected = pipe1_data[index].exp; /* get expected Acc. */
58 000138F7 5c 18 efffffff6e 50 mull3 $24,_index,r0
59 000138FF 0c 8f00000010 50 addl2 $_pipe1_data+16,r0
60 00013906 0d a004 efffffff62 movl 4(r0),_dbl_expected+4
61 0001390E 0d 60 efffffff57 movl (r0),_dbl_expected
62 00013915 # asm("bispsw $0x60"); /* enable ovfl,undfl */
63 00013915 8b 8860 bispsw $0x60
64 00013918 # asm(".globl _pipe14_lp1");
65 00013918 .globl _pipe14_lp1
66 00013918 # asm("_pipe14_lp1:");
67 00013918 _pipe14_lp1:
68 00013918 # asm("movl $0x40404040,r0"); /* get the 'mull3' */
69 00013918 0d 8f40404040 50 movl $0x40404040,r0
70 0001391F # asm("movl $0x55005500,r2"); /* data patterns */
71 0001391F 0d 8f55005500 52 movl $0x55005500,r2
72 00013926 # asm("ldd _dbl_ld_acc"); /* load the Acc. */
73 00013926 07 efffffff40 ldd _dbl_ld_acc
74 0001392C # exp_event = test_event; /* expect event soon */
75 0001392C 0d efffffff3a efffffff35 movl _test_event,_exp_event
76 00013937 # asm("divd _dbl_value_1"); /* do the divide */
77 00013937 f7 efffffff2f divd _dbl_value_1
78 0001393D # asm("mull3 r0,r2,_dbl_value_3"); /* trigger the fault */
79 0001393D 5c 50 52 efffffff27 mull3 r0,r2,_dbl_value_3
80 00013945 # asm("nop"); /* shouldn't get here*/
81 00013945 10 nop
82 00013946 # asm("negd"); /* shouldn't get here*/
83 00013946 b7 negd
84 00013947 # /*
85 00013947 # * If we got to here then there was no event
86 00013947 # */
87 00013947 # if( force_loop )
88 00013947 5d efffffff1f tstl _force_loop
89 0001394D 31 03 jeql L388
90 0001394F # asm("brw _pipe14_lp1");; /* loop on the error */
Assemb0002B570 # asm("brw _pipe14_lp1");; /* loop on the error */
"pipe100013870 e 91: WARNING: brw: destination label is external
91 0001394F 13 ffc6 brw _pipe14_lp1
92 00013952 L388:
93 00013952 # exp_event = FALSE; /* reset event expected flag */
94 00013952 4d efffffff14 clrl _exp_event
95 00013958 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
96 00013958 0d efffffff0e 5d movl _pre_event_fp,fp
97 0001395F # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
98 0001395F 0d efffffff07 5e movl _pre_event_sp,sp
99 00013966 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
100 00013966 9b 8860 bicpsw $0x60
101 00013969 # no_pipe14_evt();; /* report the error */
102 00013969 fe 04 ef00000076 callf $4,_no_pipe14_evt
103 00013970 # /*
104 00013970 # * Come here after the event
105 00013970 # */
106 00013970 # asm(".globl _pipe14_ret");
107 00013970 .globl _pipe14_ret
108 00013970 # asm("_pipe14_ret:");
109 00013970 _pipe14_ret:
110 00013970 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
111 00013970 0d effffffef6 5d movl _pre_event_fp,fp
112 00013977 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
113 00013977 0d effffffeef 5e movl _pre_event_sp,sp
114 0001397E # if( force_loop )
115 0001397E 5d effffffee8 tstl _force_loop
116 00013984 31 03 jeql L390
117 00013986 # asm("brw _pipe14_lp1");; /* loop on the error */
"pipe100013870 e 118: WARNING: brw: destination label is external
118 00013986 13 ff8f brw _pipe14_lp1
119 00013989 L390:
120 00013989 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
121 00013989 9b 8860 bicpsw $0x60
122 0001398C # if( (post_evt_acc.m == (dbl_expected.m ^ 0x80000000)) &&
123 0001398C # (post_evt_acc.l == dbl_expected.l) ) /* was Acc. negated? */
124 0001398C dc 8f80000000 effffffed5 xorl3 $-2147483648,_dbl_expected,r0
50
125 00013998 1d effffffece 50 cmpl _post_evt_acc,r0
126 0001399F 21 16 jneq L391
127 000139A1 1d effffffec9 effffffec4 cmpl _post_evt_acc+4,_dbl_expected+4
128 000139AC 21 09 jneq L391
129 000139AE # pipe14_queue_er(); /* queue not cleared error */
130 000139AE fe 04 ef00000273 callf $4,_pipe14_queue_er
131 000139B5 # else if( (post_evt_acc.m != dbl_expected.m) ||
132 000139B5 11 21 jbr L393
133 000139B7 L391:
134 000139B7 # (post_evt_acc.l != dbl_expected.l) ) /* Acc. = exp.? */
135 000139B7 1d effffffeaf effffffeaa cmpl _post_evt_acc,_dbl_expected
136 000139C2 21 0d jneq L9999
137 000139C4 1d effffffea6 effffffea1 cmpl _post_evt_acc+4,_dbl_expected+4
138 000139CF 31 07 jeql L394
139 000139D1 L9999:
140 000139D1 # bad_pipe14_result(); /* incorrect result error */
141 000139D1 fe 04 ef000000f8 callf $4,_bad_pipe14_result
142 000139D8 #
143 000139D8 # }
144 000139D8 L394:
145 000139D8 L393:
146 000139D8 L385:
147 000139D8 6d effffffe8e incl _index
148 000139DE 13 feca jbr L387
149 000139E1 L386:
150 000139E1 # }
151 000139E1 40 ret#2
152 000139E2 .set L381,0x0
153 000139E2 L383:
154 000139E2 13 fe8c jbr L384
155 000139E5 .data
156 00000688 * .text
157 000139E5 00 .align 1
158 000139E6 .globl _no_pipe14_evt
159 000139E6 _no_pipe14_evt:
160 000139E6 0000 .word L396
161 000139E8 #
162 000139E8 #
163 000139E8 #
164 000139E8 # /****************************************************************************
165 000139E8 # * Report an "EVENT NOT DETECTED" error
166 000139E8 # *
167 000139E8 # * Cycle: xx. EVT test xx. subtest xx. No overflow fault seen. index = xx
168 000139E8 # * inst = LDD op1; DIVD op2; MULL3,op3,op4,op5; NEGD (integer overflow on MULL3)
169 000139E8 # * op1 = xxxxxxxx xxxxxxxx, op3 = xxxxxxxx
170 000139E8 # * op2 = xxxxxxxx xxxxxxxx, op4 = xxxxxxxx
171 000139E8 # ****************************************************************************/
172 000139E8 # no_pipe14_evt()
173 000139E8 # {
174 000139E8 13 00e2 jbr L398
175 000139EB L399:
176 000139EB # errcnt++; /* bump the error count */
177 000139EB 6d effffffe7b incl _errcnt
178 000139F1 # if ( prt_error )
179 000139F1 5d effffffe75 tstl _prt_error
180 000139F7 21 03 13 00aa jeql L400
181 000139FC # {
182 000139FC # print_pipe14_er( ". No overflow fault seen." );
183 000139FC .data 1
184 00000688 * L402:
185 00000688 * 2E204E6F206F766572666C6F7 .ascii ". No overflow fault seen.\0"
7206661756C74207365656E2E
00
186 000006a2 * .text
187 000139FC dd 8f00000688 pushl $L402
188 00013A02 fe 08 ef00000377 callf $8,_print_pipe14_er
189 00013A09 # writes("op1 = ");
190 00013A09 .data 1
191 000006a2 * L404:
192 000006a2 * 6F7031203D2000 .ascii "op1 = \0"
193 000006a9 * .text
194 00013A09 dd 8f000006a2 pushl $L404
195 00013A0F fe 08 effffffe56 callf $8,_writes
196 00013A16 # write32h( dbl_ld_acc.m );
197 00013A16 dd effffffe50 pushl _dbl_ld_acc
198 00013A1C fe 08 effffffe49 callf $8,_write32h
199 00013A23 # writec(' ');
200 00013A23 dd 20 pushl $32
201 00013A25 fe 08 effffffe40 callf $8,_writec
202 00013A2C # write32h( dbl_ld_acc.l );
203 00013A2C dd effffffe3e pushl _dbl_ld_acc+4
204 00013A32 fe 08 effffffe33 callf $8,_write32h
205 00013A39 # writes(", op3 = ");
206 00013A39 .data 1
207 000006a9 * L407:
208 000006a9 * 2C2020206F7033203D2000 .ascii ", op3 = \0"
209 000006b4 * .text
210 00013A39 dd 8f000006a9 pushl $L407
211 00013A3F fe 08 effffffe26 callf $8,_writes
212 00013A46 # write32h( 0x40404040 );
213 00013A46 dd 8f40404040 pushl $1077952576
214 00013A4C fe 08 effffffe19 callf $8,_write32h
215 00013A53 # writes("\nop2 = ");
216 00013A53 .data 1
217 000006b4 * L408:
218 000006b4 * 0A6F7032203D2000 .ascii "\12op2 = \0"
219 000006bc * .text
220 00013A53 dd 8f000006b4 pushl $L408
221 00013A59 fe 08 effffffe0c callf $8,_writes
222 00013A60 # write32h( dbl_value_1.m );
223 00013A60 dd effffffe06 pushl _dbl_value_1
224 00013A66 fe 08 effffffdff callf $8,_write32h
225 00013A6D # writec(' ');
226 00013A6D dd 20 pushl $32
227 00013A6F fe 08 effffffdf6 callf $8,_writec
228 00013A76 # write32h( dbl_value_1.l );
229 00013A76 dd effffffdf4 pushl _dbl_value_1+4
230 00013A7C fe 08 effffffde9 callf $8,_write32h
231 00013A83 # writes(", op4 = ");
232 00013A83 .data 1
233 000006bc * L409:
234 000006bc * 2C2020206F7034203D2000 .ascii ", op4 = \0"
235 000006c7 * .text
236 00013A83 dd 8f000006bc pushl $L409
237 00013A89 fe 08 effffffddc callf $8,_writes
238 00013A90 # write32h( 0x55005500 );
239 00013A90 dd 8f55005500 pushl $1426085120
240 00013A96 fe 08 effffffdcf callf $8,_write32h
241 00013A9D # writec('\n');
242 00013A9D dd 0a pushl $10
243 00013A9F fe 08 effffffdc6 callf $8,_writec
244 00013AA6 # }
245 00013AA6 # if ( halt_flg ) /* halt on error? */
246 00013AA6 L400:
247 00013AA6 5d effffffdc0 tstl _halt_flg
248 00013AAC 31 09 jeql L410
249 00013AAE # pipe14_halt( 1 ); /* halt with a code of 1 */
250 00013AAE dd 01 pushl $1
251 00013AB0 fe 08 ef00000375 callf $8,_pipe14_halt
252 00013AB7 # if ( loop_on_err )
253 00013AB7 L410:
254 00013AB7 5d effffffdaf tstl _loop_on_err
255 00013ABD 31 0d jeql L412
256 00013ABF # {
257 00013ABF # force_loop = TRUE; /* set the force loop flag */
258 00013ABF 0d 01 effffffda6 movl $1,_force_loop
259 00013AC6 # asm("jmp _pipe14_lp1"); /* and loop */
260 00013AC6 71 effffffe4c jmp _pipe14_lp1
261 00013ACC # };
262 00013ACC L412:
263 00013ACC # }
264 00013ACC 40 ret#2
265 00013ACD .set L396,0x0
266 00013ACD L398:
267 00013ACD 13 ff1b jbr L399
268 00013AD0 .data
269 00000688 * .text
270 00013AD0 .align 1
271 00013AD0 .globl _bad_pipe14_result
272 00013AD0 _bad_pipe14_result:
273 00013AD0 0000 .word L413
274 00013AD2 #
275 00013AD2 #
276 00013AD2 #
277 00013AD2 #
278 00013AD2 # /****************************************************************************
279 00013AD2 # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error
280 00013AD2 # *
281 00013AD2 # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. indexd = xx
282 00013AD2 # * inst = LDD op1; DIVD op2; MULL3,op3,op4,op5; NEGD (integer overflow on MULL3)
283 00013AD2 # * The NEGD instruction should not be executed.
284 00013AD2 # * op1 = xxxxxxxx xxxxxxxx, final Acc. = xxxxxxxx xxxxxxxx, op3 = xxxxxxxx
285 00013AD2 # * op2 = xxxxxxxx xxxxxxxx, expected = xxxxxxxx xxxxxxxx, op4 = xxxxxxxx
286 00013AD2 # ****************************************************************************/
287 00013AD2 # bad_pipe14_result()
288 00013AD2 # {
289 00013AD2 13 014f jbr L415
290 00013AD5 L416:
291 00013AD5 # errcnt++; /* bump the error count */
292 00013AD5 6d effffffd91 incl _errcnt
293 00013ADB # if ( prt_error )
294 00013ADB 5d effffffd8b tstl _prt_error
295 00013AE1 21 03 13 0117 jeql L417
296 00013AE6 # {
297 00013AE6 # print_pipe14_er( ". Bad final Accumulator" );
298 00013AE6 .data 1
299 000006c7 * L418:
300 000006c7 * 2E204261642066696E616C204 .ascii ". Bad final Accumulator\0"
16363756D756C61746F7200
301 000006df * .text
302 00013AE6 dd 8f000006c7 pushl $L418
303 00013AEC fe 08 ef0000028d callf $8,_print_pipe14_er
304 00013AF3 # writes(
305 00013AF3 # "The NEGD INSTRUCTION should not be executed\n");
306 00013AF3 .data 1
307 000006df * L419:
308 000006df * 546865204E45474420494E535 .ascii "The NEGD INSTRUCTION should not be executed\12\0"
452554354494F4E2073686F75
6C64206E6F742062652065786
563757465640A00
309 0000070c * .text
310 00013AF3 dd 8f000006df pushl $L419
311 00013AF9 fe 08 effffffd6c callf $8,_writes
312 00013B00 # writes("op1 = ");
313 00013B00 .data 1
314 0000070c * L420:
315 0000070c * 6F7031203D2000 .ascii "op1 = \0"
316 00000713 * .text
317 00013B00 dd 8f0000070c pushl $L420
318 00013B06 fe 08 effffffd5f callf $8,_writes
319 00013B0D # write32h( dbl_ld_acc.m );
320 00013B0D dd effffffd59 pushl _dbl_ld_acc
321 00013B13 fe 08 effffffd52 callf $8,_write32h
322 00013B1A # writec(' ');
323 00013B1A dd 20 pushl $32
324 00013B1C fe 08 effffffd49 callf $8,_writec
325 00013B23 # write32h( dbl_ld_acc.l );
326 00013B23 dd effffffd47 pushl _dbl_ld_acc+4
327 00013B29 fe 08 effffffd3c callf $8,_write32h
328 00013B30 # writes(", final Acc. = ");
329 00013B30 .data 1
330 00000713 * L421:
331 00000713 * 2C202066696E616C204163632 .ascii ", final Acc. = \0"
E203D2000
332 00000724 * .text
333 00013B30 dd 8f00000713 pushl $L421
334 00013B36 fe 08 effffffd2f callf $8,_writes
335 00013B3D # write32h( post_evt_acc.m );
336 00013B3D dd effffffd29 pushl _post_evt_acc
337 00013B43 fe 08 effffffd22 callf $8,_write32h
338 00013B4A # writec(' ');
339 00013B4A dd 20 pushl $32
340 00013B4C fe 08 effffffd19 callf $8,_writec
341 00013B53 # write32h( post_evt_acc.l );
342 00013B53 dd effffffd17 pushl _post_evt_acc+4
343 00013B59 fe 08 effffffd0c callf $8,_write32h
344 00013B60 # writes(", op3 = ");
345 00013B60 .data 1
346 00000724 * L422:
347 00000724 * 2C20206F7033203D2000 .ascii ", op3 = \0"
348 0000072e * .text
349 00013B60 dd 8f00000724 pushl $L422
350 00013B66 fe 08 effffffcff callf $8,_writes
351 00013B6D # write32h( 0x40404040 );
352 00013B6D dd 8f40404040 pushl $1077952576
353 00013B73 fe 08 effffffcf2 callf $8,_write32h
354 00013B7A # writes("\nop2 = ");
355 00013B7A .data 1
356 0000072e * L423:
357 0000072e * 0A6F7032203D2000 .ascii "\12op2 = \0"
358 00000736 * .text
359 00013B7A dd 8f0000072e pushl $L423
360 00013B80 fe 08 effffffce5 callf $8,_writes
361 00013B87 # write32h( dbl_value_1.m );
362 00013B87 dd effffffcdf pushl _dbl_value_1
363 00013B8D fe 08 effffffcd8 callf $8,_write32h
364 00013B94 # writec(' ');
365 00013B94 dd 20 pushl $32
366 00013B96 fe 08 effffffccf callf $8,_writec
367 00013B9D # write32h( dbl_value_1.l );
368 00013B9D dd effffffccd pushl _dbl_value_1+4
369 00013BA3 fe 08 effffffcc2 callf $8,_write32h
370 00013BAA # writes(", expected = ");
371 00013BAA .data 1
372 00000736 * L424:
373 00000736 * 2C20202020657870656374656 .ascii ", expected = \0"
4203D2000
374 00000747 * .text
375 00013BAA dd 8f00000736 pushl $L424
376 00013BB0 fe 08 effffffcb5 callf $8,_writes
377 00013BB7 # write32h( dbl_expected.m );
378 00013BB7 dd effffffcaf pushl _dbl_expected
379 00013BBD fe 08 effffffca8 callf $8,_write32h
380 00013BC4 # writec(' ');
381 00013BC4 dd 20 pushl $32
382 00013BC6 fe 08 effffffc9f callf $8,_writec
383 00013BCD # write32h( dbl_expected.l );
384 00013BCD dd effffffc9d pushl _dbl_expected+4
385 00013BD3 fe 08 effffffc92 callf $8,_write32h
386 00013BDA # writes(", op4 = ");
387 00013BDA .data 1
388 00000747 * L425:
389 00000747 * 2C20206F7034203D2000 .ascii ", op4 = \0"
390 00000751 * .text
391 00013BDA dd 8f00000747 pushl $L425
392 00013BE0 fe 08 effffffc85 callf $8,_writes
393 00013BE7 # write32h( 0x55005500 );
394 00013BE7 dd 8f55005500 pushl $1426085120
395 00013BED fe 08 effffffc78 callf $8,_write32h
396 00013BF4 # writec('\n');
397 00013BF4 dd 0a pushl $10
398 00013BF6 fe 08 effffffc6f callf $8,_writec
399 00013BFD # }
400 00013BFD # if ( halt_flg ) /* halt on error? */
401 00013BFD L417:
402 00013BFD 5d effffffc69 tstl _halt_flg
403 00013C03 31 09 jeql L426
404 00013C05 # pipe14_halt( 2 ); /* halt with a code of 2 */
405 00013C05 dd 02 pushl $2
406 00013C07 fe 08 ef0000021e callf $8,_pipe14_halt
407 00013C0E # if ( loop_on_err )
408 00013C0E L426:
409 00013C0E 5d effffffc58 tstl _loop_on_err
410 00013C14 31 0d jeql L427
411 00013C16 # {
412 00013C16 # force_loop = TRUE; /* set the force loop flag */
413 00013C16 0d 01 effffffc4f movl $1,_force_loop
414 00013C1D # asm("jmp _pipe14_lp1"); /* and loop */
415 00013C1D 71 effffffcf5 jmp _pipe14_lp1
416 00013C23 # };
417 00013C23 L427:
418 00013C23 # }
419 00013C23 40 ret#2
420 00013C24 .set L413,0x0
421 00013C24 L415:
422 00013C24 13 feae jbr L416
423 00013C27 .data
424 00000688 * .text
425 00013C27 00 .align 1
426 00013C28 .globl _pipe14_queue_er
427 00013C28 _pipe14_queue_er:
428 00013C28 0000 .word L428
429 00013C2A #
430 00013C2A #
431 00013C2A #
432 00013C2A #
433 00013C2A #
434 00013C2A # /****************************************************************************
435 00013C2A # * Report an "FPP queue not cleared" message
436 00013C2A # *
437 00013C2A # * Cycle: xx. EVT test xx. subtest xx. Fpp queue not cleared. index = xx
438 00013C2A # * inst = LDD op1; DIVD op2; MULL3,op3,op4,op5; NEGD (integer overflow on MULL3)
439 00013C2A # * The NEGD instruction was apparently executed.
440 00013C2A # * op1 = xxxxxxxx xxxxxxxx, final Acc. = xxxxxxxx xxxxxxxx, op3 = xxxxxxxx
441 00013C2A # * op2 = xxxxxxxx xxxxxxxx, expected = xxxxxxxx xxxxxxxx, op4 = xxxxxxxx
442 00013C2A # ****************************************************************************/
443 00013C2A # pipe14_queue_er()
444 00013C2A # {
445 00013C2A 13 014f jbr L430
446 00013C2D L431:
447 00013C2D # errcnt++; /* bump the error count */
448 00013C2D 6d effffffc39 incl _errcnt
449 00013C33 # if ( prt_error )
450 00013C33 5d effffffc33 tstl _prt_error
451 00013C39 21 03 13 0117 jeql L432
452 00013C3E # {
453 00013C3E # print_pipe14_er( ". Fpp queue not cleared" );
454 00013C3E .data 1
455 00000751 * L433:
456 00000751 * 2E20467070207175657565206 .ascii ". Fpp queue not cleared\0"
E6F7420636C656172656400
457 00000769 * .text
458 00013C3E dd 8f00000751 pushl $L433
459 00013C44 fe 08 ef00000135 callf $8,_print_pipe14_er
460 00013C4B # writes(
461 00013C4B # "The 2nd load double instruction was apparently executed.\n");
462 00013C4B .data 1
463 00000769 * L434:
464 00000769 * 54686520326E64206C6F61642 .ascii "The 2nd load double instruction was apparently executed.\12\0"
0646F75626C6520696E737472
756374696F6E2077617320617
0706172656E746C7920657865
63757465642E0A00
465 000007a3 * .text
466 00013C4B dd 8f00000769 pushl $L434
467 00013C51 fe 08 effffffc14 callf $8,_writes
468 00013C58 # writes("op1 = ");
469 00013C58 .data 1
470 000007a3 * L435:
471 000007a3 * 6F7031203D2000 .ascii "op1 = \0"
472 000007aa * .text
473 00013C58 dd 8f000007a3 pushl $L435
474 00013C5E fe 08 effffffc07 callf $8,_writes
475 00013C65 # write32h( dbl_ld_acc.m );
476 00013C65 dd effffffc01 pushl _dbl_ld_acc
477 00013C6B fe 08 effffffbfa callf $8,_write32h
478 00013C72 # writec(' ');
479 00013C72 dd 20 pushl $32
480 00013C74 fe 08 effffffbf1 callf $8,_writec
481 00013C7B # write32h( dbl_ld_acc.l );
482 00013C7B dd effffffbef pushl _dbl_ld_acc+4
483 00013C81 fe 08 effffffbe4 callf $8,_write32h
484 00013C88 # writes(", final Acc. = ");
485 00013C88 .data 1
486 000007aa * L436:
487 000007aa * 2C202066696E616C204163632 .ascii ", final Acc. = \0"
E203D2000
488 000007bb * .text
489 00013C88 dd 8f000007aa pushl $L436
490 00013C8E fe 08 effffffbd7 callf $8,_writes
491 00013C95 # write32h( post_evt_acc.m );
492 00013C95 dd effffffbd1 pushl _post_evt_acc
493 00013C9B fe 08 effffffbca callf $8,_write32h
494 00013CA2 # writec(' ');
495 00013CA2 dd 20 pushl $32
496 00013CA4 fe 08 effffffbc1 callf $8,_writec
497 00013CAB # write32h( post_evt_acc.l );
498 00013CAB dd effffffbbf pushl _post_evt_acc+4
499 00013CB1 fe 08 effffffbb4 callf $8,_write32h
500 00013CB8 # writes(", op3 = ");
501 00013CB8 .data 1
502 000007bb * L437:
503 000007bb * 2C20206F7033203D2000 .ascii ", op3 = \0"
504 000007c5 * .text
505 00013CB8 dd 8f000007bb pushl $L437
506 00013CBE fe 08 effffffba7 callf $8,_writes
507 00013CC5 # write32h( 0x40404040 );
508 00013CC5 dd 8f40404040 pushl $1077952576
509 00013CCB fe 08 effffffb9a callf $8,_write32h
510 00013CD2 # writes("\nop2 = ");
511 00013CD2 .data 1
512 000007c5 * L438:
513 000007c5 * 0A6F7032203D2000 .ascii "\12op2 = \0"
514 000007cd * .text
515 00013CD2 dd 8f000007c5 pushl $L438
516 00013CD8 fe 08 effffffb8d callf $8,_writes
517 00013CDF # write32h( dbl_value_1.m );
518 00013CDF dd effffffb87 pushl _dbl_value_1
519 00013CE5 fe 08 effffffb80 callf $8,_write32h
520 00013CEC # writec(' ');
521 00013CEC dd 20 pushl $32
522 00013CEE fe 08 effffffb77 callf $8,_writec
523 00013CF5 # write32h( dbl_value_1.l );
524 00013CF5 dd effffffb75 pushl _dbl_value_1+4
525 00013CFB fe 08 effffffb6a callf $8,_write32h
526 00013D02 # writes(", expected = ");
527 00013D02 .data 1
528 000007cd * L439:
529 000007cd * 2C20202020657870656374656 .ascii ", expected = \0"
4203D2000
530 000007de * .text
531 00013D02 dd 8f000007cd pushl $L439
532 00013D08 fe 08 effffffb5d callf $8,_writes
533 00013D0F # write32h( dbl_expected.m );
534 00013D0F dd effffffb57 pushl _dbl_expected
535 00013D15 fe 08 effffffb50 callf $8,_write32h
536 00013D1C # writec(' ');
537 00013D1C dd 20 pushl $32
538 00013D1E fe 08 effffffb47 callf $8,_writec
539 00013D25 # write32h( dbl_expected.l );
540 00013D25 dd effffffb45 pushl _dbl_expected+4
541 00013D2B fe 08 effffffb3a callf $8,_write32h
542 00013D32 # writes(", op4 = ");
543 00013D32 .data 1
544 000007de * L440:
545 000007de * 2C20206F7034203D2000 .ascii ", op4 = \0"
546 000007e8 * .text
547 00013D32 dd 8f000007de pushl $L440
548 00013D38 fe 08 effffffb2d callf $8,_writes
549 00013D3F # write32h( 0x55005500 );
550 00013D3F dd 8f55005500 pushl $1426085120
551 00013D45 fe 08 effffffb20 callf $8,_write32h
552 00013D4C # writec('\n');
553 00013D4C dd 0a pushl $10
554 00013D4E fe 08 effffffb17 callf $8,_writec
555 00013D55 # }
556 00013D55 # if ( halt_flg ) /* halt on error? */
557 00013D55 L432:
558 00013D55 5d effffffb11 tstl _halt_flg
559 00013D5B 31 09 jeql L441
560 00013D5D # pipe14_halt( 3 ); /* halt with a code of 3 */
561 00013D5D dd 03 pushl $3
562 00013D5F fe 08 ef000000c6 callf $8,_pipe14_halt
563 00013D66 # if ( loop_on_err )
564 00013D66 L441:
565 00013D66 5d effffffb00 tstl _loop_on_err
566 00013D6C 31 0d jeql L442
567 00013D6E # {
568 00013D6E # force_loop = TRUE; /* set the force loop flag */
569 00013D6E 0d 01 effffffaf7 movl $1,_force_loop
570 00013D75 # asm("jmp _pipe14_lp1"); /* and loop */
571 00013D75 71 effffffb9d jmp _pipe14_lp1
572 00013D7B # };
573 00013D7B L442:
574 00013D7B # }
575 00013D7B 40 ret#2
576 00013D7C .set L428,0x0
577 00013D7C L430:
578 00013D7C 13 feae jbr L431
579 00013D7F .data
580 00000688 * .text
581 00013D7F 00 .align 1
582 00013D80 .globl _print_pipe14_er
583 00013D80 _print_pipe14_er:
584 00013D80 0000 .word L443
585 00013D82 #
586 00013D82 #
587 00013D82 #
588 00013D82 #
589 00013D82 # /****************************************************************************
590 00013D82 # * Report an error message of the form:
591 00013D82 # *
592 00013D82 # * Cycle: xx. EVT test xx. subtest xx. <your message here> index = xx
593 00013D82 # * inst = LDD op1; DIVD op2; MULL3,op3,op4,op5; NEGD (integer overflow on MULL3)
594 00013D82 # ****************************************************************************/
595 00013D82 # print_pipe14_er( msg )
596 00013D82 # char *msg; /* error message to print */
597 00013D82 # {
598 00013D82 13 00a3 jbr L445
599 00013D85 L446:
600 00013D85 # if( errcnt == 1 ) /* 1st error? */
601 00013D85 1d effffffae1 01 cmpl _errcnt,$1
602 00013D8C 21 0d jneq L447
603 00013D8E # writes("\n\n"); /* start a new print line */
604 00013D8E .data 1
605 000007e8 * L448:
606 000007e8 * 0A0A00 .ascii "\12\12\0"
607 000007eb * .text
608 00013D8E dd 8f000007e8 pushl $L448
609 00013D94 fe 08 effffffad1 callf $8,_writes
610 00013D9B # writes("Cycle: ");
611 00013D9B L447:
612 00013D9B .data 1
613 000007eb * L449:
614 000007eb * 4379636C653A2000 .ascii "Cycle: \0"
615 000007f3 * .text
616 00013D9B dd 8f000007eb pushl $L449
617 00013DA1 fe 08 effffffac4 callf $8,_writes
618 00013DA8 # writed( cycle );
619 00013DA8 dd effffffabe pushl _cycle
620 00013DAE fe 08 effffffab7 callf $8,_writed
621 00013DB5 # writes(" EVT test ");
622 00013DB5 .data 1
623 000007f3 * L451:
624 000007f3 * 202045565420746573742000 .ascii " EVT test \0"
625 000007ff * .text
626 00013DB5 dd 8f000007f3 pushl $L451
627 00013DBB fe 08 effffffaaa callf $8,_writes
628 00013DC2 # writed( test_no );
629 00013DC2 dd effffffaa4 pushl _test_no
630 00013DC8 fe 08 effffffa9d callf $8,_writed
631 00013DCF # writes(". subtest ");
632 00013DCF .data 1
633 000007ff * L452:
634 000007ff * 2E20737562746573742000 .ascii ". subtest \0"
635 0000080a * .text
636 00013DCF dd 8f000007ff pushl $L452
637 00013DD5 fe 08 effffffa90 callf $8,_writes
638 00013DDC # writed( subtest );
639 00013DDC dd effffffa8a pushl _subtest
640 00013DE2 fe 08 effffffa83 callf $8,_writed
641 00013DE9 # writes( msg ); /* print the message */
642 00013DE9 dd ad04 pushl 4(fp)
643 00013DEC fe 08 effffffa79 callf $8,_writes
644 00013DF3 # writes(" index = ");
645 00013DF3 .data 1
646 0000080a * L453:
647 0000080a * 20696E646578203D2000 .ascii " index = \0"
648 00000814 * .text
649 00013DF3 dd 8f0000080a pushl $L453
650 00013DF9 fe 08 effffffa6c callf $8,_writes
651 00013E00 # writed( index );
652 00013E00 dd effffffa66 pushl _index
653 00013E06 fe 08 effffffa5f callf $8,_writed
654 00013E0D # writes("\ninst = LDD op1; DIVD op2; MULL3,op3,op4,op5; NEGD");
655 00013E0D .data 1
656 00000814 * L454:
657 00000814 * 0A696E7374203D204C4444206 .ascii "\12inst = LDD op1; DIVD op2; MULL3,op3,op4,op5; NEGD\0"
F70313B2044495644206F7032
3B204D554C4C332C6F70332C6
F70342C6F70353B204E454744
00
658 00000847 * .text
659 00013E0D dd 8f00000814 pushl $L454
660 00013E13 fe 08 effffffa52 callf $8,_writes
661 00013E1A # writes(" (integer overflow on MULL3)\n");
662 00013E1A .data 1
663 00000847 * L455:
664 00000847 * 2028696E7465676572206F766 .ascii " (integer overflow on MULL3)\12\0"
572666C6F77206F6E204D554C
4C33290A00
665 00000865 * .text
666 00013E1A dd 8f00000847 pushl $L455
667 00013E20 fe 08 effffffa45 callf $8,_writes
668 00013E27 # }
669 00013E27 40 ret#2
670 00013E28 .set L443,0x0
671 00013E28 L445:
672 00013E28 13 ff5a jbr L446
673 00013E2B .data
674 00000688 * .text
675 00013E2B 00 .align 1
676 00013E2C .globl _pipe14_halt
677 00013E2C _pipe14_halt:
678 00013E2C 0000 .word L456
679 00013E2E #
680 00013E2E #
681 00013E2E #
682 00013E2E # /****************************************************************************
683 00013E2E # * halt on error routine
684 00013E2E # ****************************************************************************/
685 00013E2E # pipe14_halt( code )
686 00013E2E # int code; /* error code to halt with */
687 00013E2E # {
688 00013E2E 13 00bd jbr L458
689 00013E31 L459:
690 00013E31 # err_code = code;
691 00013E31 0d ad04 effffffa33 movl 4(fp),_err_code
692 00013E39 # sgl_value_1 = dbl_ld_acc.m;
693 00013E39 0d effffffa2d effffffa28 movl _dbl_ld_acc,_sgl_value_1
694 00013E44 # sgl_value_2 = dbl_ld_acc.l;
695 00013E44 0d effffffa26 effffffa1d movl _dbl_ld_acc+4,_sgl_value_2
696 00013E4F # sgl_value_3 = dbl_value_1.m;
697 00013E4F 0d effffffa17 effffffa12 movl _dbl_value_1,_sgl_value_3
698 00013E5A # sgl_value_4 = dbl_value_1.l;
699 00013E5A 0d effffffa10 effffffa07 movl _dbl_value_1+4,_sgl_value_4
700 00013E65 # sgl_value_5 = post_evt_acc.m;
701 00013E65 0d effffffa01 effffff9fc movl _post_evt_acc,_sgl_value_5
702 00013E70 # sgl_value_6 = post_evt_acc.l;
703 00013E70 0d effffff9fa effffff9f1 movl _post_evt_acc+4,_sgl_value_6
704 00013E7B # sgl_value_7 = dbl_expected.m;
705 00013E7B 0d effffff9eb effffff9e6 movl _dbl_expected,_sgl_value_7
706 00013E86 # sgl_value_8 = dbl_expected.l;
707 00013E86 0d effffff9e4 effffff9db movl _dbl_expected+4,_sgl_value_8
708 00013E91 # asm("movl _test_no,r0"); /* r0 = test number */
709 00013E91 0d effffff9d5 50 movl _test_no,r0
710 00013E98 # asm("movl _subtest,r1"); /* r1 = subtest number */
711 00013E98 0d effffff9ce 51 movl _subtest,r1
712 00013E9F # asm("movl _err_code,r2"); /* r2 = error code */
713 00013E9F 0d effffff9c7 52 movl _err_code,r2
714 00013EA6 # asm("movl _cycle,r3"); /* r3 = cycle count */
715 00013EA6 0d effffff9c0 53 movl _cycle,r3
716 00013EAD # asm("movl _sgl_value_1,r4"); /* r4 = MSW of 1st load. */
717 00013EAD 0d effffff9b9 54 movl _sgl_value_1,r4
718 00013EB4 # asm("movl _sgl_value_2,r5"); /* r5 = LSW of 1st load. */
719 00013EB4 0d effffff9b2 55 movl _sgl_value_2,r5
720 00013EBB # asm("movl _sgl_value_3,r6"); /* r6 = MSW of 2nd load. */
721 00013EBB 0d effffff9ab 56 movl _sgl_value_3,r6
722 00013EC2 # asm("movl _sgl_value_4,r7"); /* r7 = LSW of 2nd load. */
723 00013EC2 0d effffff9a4 57 movl _sgl_value_4,r7
724 00013EC9 # asm("movl _sgl_value_5,r8"); /* r8 = MSW of final Acc. */
725 00013EC9 0d effffff99d 58 movl _sgl_value_5,r8
726 00013ED0 # asm("movl _sgl_value_6,r9"); /* r9 = LSW of final Acc. */
727 00013ED0 0d effffff996 59 movl _sgl_value_6,r9
728 00013ED7 # asm("movl _sgl_value_7,r10"); /* r10 = MSW of exp. Acc. */
729 00013ED7 0d effffff98f 5a movl _sgl_value_7,r10
730 00013EDE # asm("movl _sgl_value_8,r11"); /* r11 = LSW of exp. Acc. */
731 00013EDE 0d effffff988 5b movl _sgl_value_8,r11
732 00013EE5 # asm("movl _index,r12"); /* r12 = data index */
733 00013EE5 0d effffff981 5c movl _index,r12
734 00013EEC # asm("halt"); /* HALT ... */
735 00013EEC 00 halt
736 00013EED # }
737 00013EED 40 ret#2
738 00013EEE .set L456,0x0
739 00013EEE L458:
740 00013EEE 13 ff40 jbr L459
741 00013EF1 .data
741 0002775D .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.