|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 000003dc * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe3
6: 6 00000000 _pipe3:
7: 7 00010050 0000 .word L381
8: 8 00010052 #
9: 9 00010052 # #include "evt_defs.h"
10: 10 00010052 #
11: 11 00010052 # /*
12: 12 00010052 # *********************************************************************
13: 13 00010052 # * FPP PIPELINED EVENTS TEST #3
14: 14 00010052 # *
15: 15 00010052 # * This test will execute the following code: "LDF LOGF CMPF2 LOGF"
16: 16 00010052 # * with a reserved operand fault on the CMPF2. We will make sure that:
17: 17 00010052 # * 1. The fault is detected,
18: 18 00010052 # * 2. the 1st log operation completes, and
19: 19 00010052 # * 3. the 2nd log instruction is not executed.
20: 20 00010052 # *********************************************************************
21: 21 00010052 # */
22: 22 00010052 # pipe3()
23: 23 00010052 # {
24: 24 00010052 13 013f jbr L383
25: 25 00010055 L384:
26: 26 00010055 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
27: 27 00010055 ed 6d effffffff4 moval (r13),_pre_event_fp
28: 28 0001005C # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
29: 29 0001005C ed 6e efffffffed moval (r14),_pre_event_sp
30: 30 00010063 # precision = SGL;
31: 31 00010063 0d 01 efffffffe6 movl $1,_precision
32: 32 0001006A # test_event = RESOP_CODE; /* reserved op.fault expected */
33: 33 0001006A 0d 2d efffffffdf movl $45,_test_event
34: 34 00010071 # exp_event = FALSE; /* ... but not yet */
35: 35 00010071 4d efffffffd9 clrl _exp_event
36: 36 00010077 # asm("movab _pipe3_ret,_event_return"); /* post event addr */
37: 37 00010077 e9 ef000000dd efffffffce movab _pipe3_ret,_event_return
38: 38 00010082 # for( index = 0; index < max_pipe3_index; index++ ) {
39: 39 00010082 4d efffffffc8 clrl _index
40: 40 00010088 L387:
41: 41 00010088 1d efffffffc2 efffffffbd cmpl _index,_max_pipe3_index
42: 42 00010093 91 03 13 00fb jgeq L386
43: 43 00010098 # dbl_ld_acc = pipe3_data[index].op_1; /* get the data */
44: 44 00010098 5c 18 efffffffb1 50 mull3 $24,_index,r0
45: 45 000100A0 0c 8f00000000 50 addl2 $_pipe3_data,r0
46: 46 000100A7 0d a004 efffffffa5 movl 4(r0),_dbl_ld_acc+4
47: 47 000100AF 0d 60 efffffff9a movl (r0),_dbl_ld_acc
48: 48 000100B6 # dbl_expected = pipe3_data[index].exp;
49: 49 000100B6 5c 18 efffffff93 50 mull3 $24,_index,r0
50: 50 000100BE 0c 8f00000010 50 addl2 $_pipe3_data+16,r0
51: 51 000100C5 0d a004 efffffff87 movl 4(r0),_dbl_expected+4
52: 52 000100CD 0d 60 efffffff7c movl (r0),_dbl_expected
53: 53 000100D4 # dbl_value_1 = cmp2_resops[index].op_1; /* get reserved ops. */
54: 54 000100D4 48 04 efffffff75 50 shll $4,_index,r0
55: 55 000100DC 0c 8f00000000 50 addl2 $_cmp2_resops,r0
56: 56 000100E3 0d a004 efffffff69 movl 4(r0),_dbl_value_1+4
57: 57 000100EB 0d 60 efffffff5e movl (r0),_dbl_value_1
58: 58 000100F2 # dbl_value_2 = cmp2_resops[index].op_2;
59: 59 000100F2 48 04 efffffff57 50 shll $4,_index,r0
60: 60 000100FA 0c 8f00000008 50 addl2 $_cmp2_resops+8,r0
61: 61 00010101 0d a004 efffffff4b movl 4(r0),_dbl_value_2+4
62: 62 00010109 0d 60 efffffff40 movl (r0),_dbl_value_2
63: 63 00010110 # asm(".globl _pipe3_lp1");
64: 64 00010110 .globl _pipe3_lp1
65: 65 00010110 # asm("_pipe3_lp1:");
66: 66 00010110 _pipe3_lp1:
67: 67 00010110 # asm("bispsw $0x60"); /* enable ovfl,undfl */
68: 68 00010110 8b 8860 bispsw $0x60
69: 69 00010113 # asm("ldf _dbl_ld_acc"); /* load the Acc. */
70: 70 00010113 06 efffffff37 ldf _dbl_ld_acc
71: 71 00010119 # exp_event = test_event; /* expect event soon */
72: 72 00010119 0d efffffff31 efffffff2c movl _test_event,_exp_event
73: 73 00010124 # asm("logf"); /* get the log */
74: 74 00010124 35 logf
75: 75 00010125 # asm("cmpf2 _dbl_value_1,_dbl_value_2"); /* cause the event */
76: 76 00010125 46 efffffff25 efffffff20 cmpf2 _dbl_value_1,_dbl_value_2
77: 77 00010130 # asm("logf"); /* shouldn't get here*/
78: 78 00010130 35 logf
79: 79 00010131 # /*
80: 80 00010131 # * If we got to here then there was no event
81: 81 00010131 # */
82: 82 00010131 # if( force_loop )
83: 83 00010131 5d efffffff19 tstl _force_loop
84: 84 00010137 31 03 jeql L388
85: 85 00010139 # asm("brw _pipe3_lp1");; /* loop on the error */
86: Assemb00027810 # asm("brw _pipe3_lp1");; /* loop on the error */
87: "pipe300027810 86: WARNING: brw: destination label is external
88: 86 00010139 13 ffd4 brw _pipe3_lp1
89: 87 0001013C L388:
90: 88 0001013C # exp_event = FALSE; /* reset event expected flag */
91: 89 0001013C 4d efffffff0e clrl _exp_event
92: 90 00010142 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
93: 91 00010142 9b 8860 bicpsw $0x60
94: 92 00010145 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
95: 93 00010145 0d efffffff05 5d movl _pre_event_fp,fp
96: 94 0001014C # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
97: 95 0001014C 0d effffffefe 5e movl _pre_event_sp,sp
98: 96 00010153 # no_pipe3_evt();; /* report the error */
99: 97 00010153 fe 04 ef0000003e callf $4,_no_pipe3_evt
100: 98 0001015A # /*
101: 99 0001015A # * Come here after the event
102: 100 0001015A # */
103: 101 0001015A # asm(".globl _pipe3_ret");
104: 102 0001015A .globl _pipe3_ret
105: 103 0001015A # asm("_pipe3_ret:");
106: 104 0001015A _pipe3_ret:
107: 105 0001015A # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */
108: 106 0001015A 0d effffffef0 5d movl _pre_event_fp,fp
109: 107 00010161 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */
110: 108 00010161 0d effffffee9 5e movl _pre_event_sp,sp
111: 109 00010168 # if( force_loop )
112: 110 00010168 5d effffffee2 tstl _force_loop
113: 111 0001016E 31 03 jeql L390
114: 112 00010170 # asm("brw _pipe3_lp1");; /* loop on the error */
115: "pipe300027810 113: WARNING: brw: destination label is external
116: 113 00010170 13 ff9d brw _pipe3_lp1
117: 114 00010173 L390:
118: 115 00010173 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */
119: 116 00010173 9b 8860 bicpsw $0x60
120: 117 00010176 # if( post_evt_acc.m != dbl_expected.m )
121: 118 00010176 1d effffffed4 effffffecf cmpl _post_evt_acc,_dbl_expected
122: 119 00010181 31 07 jeql L391
123: 120 00010183 # bad_pipe3_result(); /* incorrect result error */
124: 121 00010183 fe 04 ef000000b0 callf $4,_bad_pipe3_result
125: 122 0001018A #
126: 123 0001018A # }
127: 124 0001018A L391:
128: 125 0001018A L385:
129: 126 0001018A 6d effffffec0 incl _index
130: 127 00010190 13 fef5 jbr L387
131: 128 00010193 L386:
132: 129 00010193 # }
133: 130 00010193 40 ret#2
134: 131 00010194 .set L381,0x0
135: 132 00010194 L383:
136: 133 00010194 13 febe jbr L384
137: 134 00010197 .data
138: 135 000003dc * .text
139: 136 00010197 00 .align 1
140: 137 00010198 .globl _no_pipe3_evt
141: 138 00010198 _no_pipe3_evt:
142: 139 00010198 0000 .word L393
143: 140 0001019A #
144: 141 0001019A #
145: 142 0001019A #
146: 143 0001019A # /****************************************************************************
147: 144 0001019A # * Report an "EVENT NOT DETECTED" error
148: 145 0001019A # *
149: 146 0001019A # * Cycle: xx. EVT test xx. subtest xx. No reserved operand fault. index = xx
150: 147 0001019A # * inst = LDF op_1, LOGF, CMPF2 op_2,op_3, LOGF (reserved op. fault on CMPF2)
151: 148 0001019A # * op_1 = xxxxxxxx, op_2 = xxxxxxxx, op_3 = xxxxxxxx
152: 149 0001019A # ****************************************************************************/
153: 150 0001019A # no_pipe3_evt()
154: 151 0001019A # {
155: 152 0001019A 13 0099 jbr L395
156: 153 0001019D L396:
157: 154 0001019D # errcnt++; /* bump the error count */
158: 155 0001019D 6d effffffead incl _errcnt
159: 156 000101A3 # if ( prt_error ) {
160: 157 000101A3 5d effffffea7 tstl _prt_error
161: 158 000101A9 31 64 jeql L397
162: 159 000101AB # print_pipe3_er( ". No reserved operand fault. " );
163: 160 000101AB .data 1
164: 161 000003dc * L399:
165: 162 000003dc * 2E204E6F20726573657276656 .ascii ". No reserved operand fault. \0"
166: 4206F706572616E6420666175
167: 6C742E2000
168: 163 000003fa * .text
169: 164 000101AB dd 8f000003dc pushl $L399
170: 165 000101B1 fe 08 ef00000130 callf $8,_print_pipe3_er
171: 166 000101B8 # writes("op_1 = ");
172: 167 000101B8 .data 1
173: 168 000003fa * L401:
174: 169 000003fa * 6F705F31203D2000 .ascii "op_1 = \0"
175: 170 00000402 * .text
176: 171 000101B8 dd 8f000003fa pushl $L401
177: 172 000101BE fe 08 effffffe8b callf $8,_writes
178: 173 000101C5 # write32h( dbl_ld_acc.m );
179: 174 000101C5 dd effffffe85 pushl _dbl_ld_acc
180: 175 000101CB fe 08 effffffe7e callf $8,_write32h
181: 176 000101D2 # writes(", op_2 = ");
182: 177 000101D2 .data 1
183: 178 00000402 * L403:
184: 179 00000402 * 2C2020206F705F32203D2000 .ascii ", op_2 = \0"
185: 180 0000040e * .text
186: 181 000101D2 dd 8f00000402 pushl $L403
187: 182 000101D8 fe 08 effffffe71 callf $8,_writes
188: 183 000101DF # write32h( dbl_value_1.m );
189: 184 000101DF dd effffffe6b pushl _dbl_value_1
190: 185 000101E5 fe 08 effffffe64 callf $8,_write32h
191: 186 000101EC # writes(", op_3 = ");
192: 187 000101EC .data 1
193: 188 0000040e * L404:
194: 189 0000040e * 2C2020206F705F33203D2000 .ascii ", op_3 = \0"
195: 190 0000041a * .text
196: 191 000101EC dd 8f0000040e pushl $L404
197: 192 000101F2 fe 08 effffffe57 callf $8,_writes
198: 193 000101F9 # write32h( dbl_value_2.m );
199: 194 000101F9 dd effffffe51 pushl _dbl_value_2
200: 195 000101FF fe 08 effffffe4a callf $8,_write32h
201: 196 00010206 # writec('\n');
202: 197 00010206 dd 0a pushl $10
203: 198 00010208 fe 08 effffffe41 callf $8,_writec
204: 199 0001020F # }
205: 200 0001020F # if ( halt_flg ) /* halt on error? */
206: 201 0001020F L397:
207: 202 0001020F 5d effffffe3b tstl _halt_flg
208: 203 00010215 31 09 jeql L406
209: 204 00010217 # pipe3_halt( 1 ); /* halt with a code of 1 */
210: 205 00010217 dd 01 pushl $1
211: 206 00010219 fe 08 ef00000174 callf $8,_pipe3_halt
212: 207 00010220 # if ( loop_on_err ) {
213: 208 00010220 L406:
214: 209 00010220 5d effffffe2a tstl _loop_on_err
215: 210 00010226 31 0d jeql L408
216: 211 00010228 # force_loop = TRUE; /* set the force loop flag */
217: 212 00010228 0d 01 effffffe21 movl $1,_force_loop
218: 213 0001022F # asm("jmp _pipe3_lp1"); /* and loop */
219: 214 0001022F 71 effffffedb jmp _pipe3_lp1
220: 215 00010235 # };
221: 216 00010235 L408:
222: 217 00010235 # }
223: 218 00010235 40 ret#2
224: 219 00010236 .set L393,0x0
225: 220 00010236 L395:
226: 221 00010236 13 ff64 jbr L396
227: 222 00010239 .data
228: 223 000003dc * .text
229: 224 00010239 00 .align 1
230: 225 0001023A .globl _bad_pipe3_result
231: 226 0001023A _bad_pipe3_result:
232: 227 0001023A 0000 .word L409
233: 228 0001023C #
234: 229 0001023C #
235: 230 0001023C #
236: 231 0001023C #
237: 232 0001023C # /****************************************************************************
238: 233 0001023C # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error
239: 234 0001023C # *
240: 235 0001023C # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. index = xx
241: 236 0001023C # * inst = LDF op_1, LOGF, CMPF2 op_2,op_3, LOGF (reserved op. fault on CMPF2)
242: 237 0001023C # * The 2nd LOGF should not be executed.
243: 238 0001023C # * op_1 = xxxxxxxx, final Acc. = xxxxxxxx, expected = xxxxxxxx
244: 239 0001023C # ****************************************************************************/
245: 240 0001023C # bad_pipe3_result()
246: 241 0001023C # {
247: 242 0001023C 13 00a6 jbr L411
248: 243 0001023F L412:
249: 244 0001023F # errcnt++; /* bump the error count */
250: 245 0001023F 6d effffffe0b incl _errcnt
251: 246 00010245 # if ( prt_error ) {
252: 247 00010245 5d effffffe05 tstl _prt_error
253: 248 0001024B 31 71 jeql L413
254: 249 0001024D # print_pipe3_er( ". Bad final Accumulator. " );
255: 250 0001024D .data 1
256: 251 0000041a * L414:
257: 252 0000041a * 2E204261642066696E616C204 .ascii ". Bad final Accumulator. \0"
258: 16363756D756C61746F722E20
259: 00
260: 253 00000434 * .text
261: 254 0001024D dd 8f0000041a pushl $L414
262: 255 00010253 fe 08 ef0000008e callf $8,_print_pipe3_er
263: 256 0001025A # writes("The 2nd LOGF should not be executed\n");
264: 257 0001025A .data 1
265: 258 00000434 * L415:
266: 259 00000434 * 54686520326E64204C4F47462 .ascii "The 2nd LOGF should not be executed\12\0"
267: 073686F756C64206E6F742062
268: 652065786563757465640A00
269: 260 00000459 * .text
270: 261 0001025A dd 8f00000434 pushl $L415
271: 262 00010260 fe 08 effffffde9 callf $8,_writes
272: 263 00010267 # writes("op_1 = ");
273: 264 00010267 .data 1
274: 265 00000459 * L416:
275: 266 00000459 * 6F705F31203D2000 .ascii "op_1 = \0"
276: 267 00000461 * .text
277: 268 00010267 dd 8f00000459 pushl $L416
278: 269 0001026D fe 08 effffffddc callf $8,_writes
279: 270 00010274 # write32h( dbl_ld_acc.m );
280: 271 00010274 dd effffffdd6 pushl _dbl_ld_acc
281: 272 0001027A fe 08 effffffdcf callf $8,_write32h
282: 273 00010281 # writes(", final Acc. = ");
283: 274 00010281 .data 1
284: 275 00000461 * L417:
285: 276 00000461 * 2C20202066696E616C2041636 .ascii ", final Acc. = \0"
286: 32E203D2000
287: 277 00000473 * .text
288: 278 00010281 dd 8f00000461 pushl $L417
289: 279 00010287 fe 08 effffffdc2 callf $8,_writes
290: 280 0001028E # write32h( post_evt_acc.m );
291: 281 0001028E dd effffffdbc pushl _post_evt_acc
292: 282 00010294 fe 08 effffffdb5 callf $8,_write32h
293: 283 0001029B # writes(", expected = ");
294: 284 0001029B .data 1
295: 285 00000473 * L418:
296: 286 00000473 * 2C20202065787065637465642 .ascii ", expected = \0"
297: 020203D2000
298: 287 00000485 * .text
299: 288 0001029B dd 8f00000473 pushl $L418
300: 289 000102A1 fe 08 effffffda8 callf $8,_writes
301: 290 000102A8 # write32h( dbl_expected.m );
302: 291 000102A8 dd effffffda2 pushl _dbl_expected
303: 292 000102AE fe 08 effffffd9b callf $8,_write32h
304: 293 000102B5 # writec('\n');
305: 294 000102B5 dd 0a pushl $10
306: 295 000102B7 fe 08 effffffd92 callf $8,_writec
307: 296 000102BE # }
308: 297 000102BE # if ( halt_flg ) /* halt on error? */
309: 298 000102BE L413:
310: 299 000102BE 5d effffffd8c tstl _halt_flg
311: 300 000102C4 31 09 jeql L419
312: 301 000102C6 # pipe3_halt( 2 ); /* halt with a code of 2 */
313: 302 000102C6 dd 02 pushl $2
314: 303 000102C8 fe 08 ef000000c5 callf $8,_pipe3_halt
315: 304 000102CF # if ( loop_on_err ) {
316: 305 000102CF L419:
317: 306 000102CF 5d effffffd7b tstl _loop_on_err
318: 307 000102D5 31 0d jeql L420
319: 308 000102D7 # force_loop = TRUE; /* set the force loop flag */
320: 309 000102D7 0d 01 effffffd72 movl $1,_force_loop
321: 310 000102DE # asm("jmp _pipe3_lp1"); /* and loop */
322: 311 000102DE 71 effffffe2c jmp _pipe3_lp1
323: 312 000102E4 # };
324: 313 000102E4 L420:
325: 314 000102E4 # }
326: 315 000102E4 40 ret#2
327: 316 000102E5 .set L409,0x0
328: 317 000102E5 L411:
329: 318 000102E5 13 ff57 jbr L412
330: 319 000102E8 .data
331: 320 000003dc * .text
332: 321 000102E8 .align 1
333: 322 000102E8 .globl _print_pipe3_er
334: 323 000102E8 _print_pipe3_er:
335: 324 000102E8 0000 .word L421
336: 325 000102EA #
337: 326 000102EA #
338: 327 000102EA #
339: 328 000102EA #
340: 329 000102EA #
341: 330 000102EA #
342: 331 000102EA # /****************************************************************************
343: 332 000102EA # * Report an error message of the form:
344: 333 000102EA # *
345: 334 000102EA # * Cycle: xx. EVT test xx. subtest xx. <your message here>. index = xx
346: 335 000102EA # * inst = LDF op_1, LOGF, CMPF2 op_2,op_3, LOGF (reserved op. fault on CMPF2)
347: 336 000102EA # ****************************************************************************/
348: 337 000102EA # print_pipe3_er( msg )
349: 338 000102EA # char *msg; /* error message to print */
350: 339 000102EA # {
351: 340 000102EA 13 00a3 jbr L423
352: 341 000102ED L424:
353: 342 000102ED # if( errcnt == 1 ) /* 1st error? */
354: 343 000102ED 1d effffffd5d 01 cmpl _errcnt,$1
355: 344 000102F4 21 0d jneq L425
356: 345 000102F6 # writes(" \n"); /* start a new print line */
357: 346 000102F6 .data 1
358: 347 00000485 * L426:
359: 348 00000485 * 200A00 .ascii " \12\0"
360: 349 00000488 * .text
361: 350 000102F6 dd 8f00000485 pushl $L426
362: 351 000102FC fe 08 effffffd4d callf $8,_writes
363: 352 00010303 # writes("Cycle: ");
364: 353 00010303 L425:
365: 354 00010303 .data 1
366: 355 00000488 * L427:
367: 356 00000488 * 4379636C653A2000 .ascii "Cycle: \0"
368: 357 00000490 * .text
369: 358 00010303 dd 8f00000488 pushl $L427
370: 359 00010309 fe 08 effffffd40 callf $8,_writes
371: 360 00010310 # writed( cycle );
372: 361 00010310 dd effffffd3a pushl _cycle
373: 362 00010316 fe 08 effffffd33 callf $8,_writed
374: 363 0001031D # writes(" EVT test ");
375: 364 0001031D .data 1
376: 365 00000490 * L429:
377: 366 00000490 * 202045565420746573742000 .ascii " EVT test \0"
378: 367 0000049c * .text
379: 368 0001031D dd 8f00000490 pushl $L429
380: 369 00010323 fe 08 effffffd26 callf $8,_writes
381: 370 0001032A # writed( test_no );
382: 371 0001032A dd effffffd20 pushl _test_no
383: 372 00010330 fe 08 effffffd19 callf $8,_writed
384: 373 00010337 # writes(". subtest ");
385: 374 00010337 .data 1
386: 375 0000049c * L430:
387: 376 0000049c * 2E20737562746573742000 .ascii ". subtest \0"
388: 377 000004a7 * .text
389: 378 00010337 dd 8f0000049c pushl $L430
390: 379 0001033D fe 08 effffffd0c callf $8,_writes
391: 380 00010344 # writed( subtest );
392: 381 00010344 dd effffffd06 pushl _subtest
393: 382 0001034A fe 08 effffffcff callf $8,_writed
394: 383 00010351 # writes( msg ); /* print the message */
395: 384 00010351 dd ad04 pushl 4(fp)
396: 385 00010354 fe 08 effffffcf5 callf $8,_writes
397: 386 0001035B # writes(" index = ");
398: 387 0001035B .data 1
399: 388 000004a7 * L431:
400: 389 000004a7 * 20696E646578203D2000 .ascii " index = \0"
401: 390 000004b1 * .text
402: 391 0001035B dd 8f000004a7 pushl $L431
403: 392 00010361 fe 08 effffffce8 callf $8,_writes
404: 393 00010368 # writed( index );
405: 394 00010368 dd effffffce2 pushl _index
406: 395 0001036E fe 08 effffffcdb callf $8,_writed
407: 396 00010375 # writes("\ninst = LDF op_1, LOGF, CMPF2 op_2,op_3, LOGF");
408: 397 00010375 .data 1
409: 398 000004b1 * L432:
410: 399 000004b1 * 0A696E7374203D204C4446206 .ascii "\12inst = LDF op_1, LOGF, CMPF2 op_2,op_3, LOGF\0"
411: F705F312C204C4F47462C2043
412: 4D504632206F705F322C6F705
413: F332C204C4F474600
414: 400 000004df * .text
415: 401 00010375 dd 8f000004b1 pushl $L432
416: 402 0001037B fe 08 effffffcce callf $8,_writes
417: 403 00010382 # writes(" (reserved op. fault on CMPF2)\n");
418: 404 00010382 .data 1
419: 405 000004df * L433:
420: 406 000004df * 20287265736572766564206F7 .ascii " (reserved op. fault on CMPF2)\12\0"
421: 02E206661756C74206F6E2043
422: 4D504632290A00
423: 407 000004ff * .text
424: 408 00010382 dd 8f000004df pushl $L433
425: 409 00010388 fe 08 effffffcc1 callf $8,_writes
426: 410 0001038F # }
427: 411 0001038F 40 ret#2
428: 412 00010390 .set L421,0x0
429: 413 00010390 L423:
430: 414 00010390 13 ff5a jbr L424
431: 415 00010393 .data
432: 416 000003dc * .text
433: 417 00010393 00 .align 1
434: 418 00010394 .globl _pipe3_halt
435: 419 00010394 _pipe3_halt:
436: 420 00010394 0000 .word L434
437: 421 00010396 #
438: 422 00010396 #
439: 423 00010396 #
440: 424 00010396 # /****************************************************************************
441: 425 00010396 # * halt on error routine
442: 426 00010396 # ****************************************************************************/
443: 427 00010396 # pipe3_halt( code )
444: 428 00010396 # int code; /* error code to halt with */
445: 429 00010396 # {
446: 430 00010396 13 008f jbr L436
447: 431 00010399 L437:
448: 432 00010399 # err_code = code;
449: 433 00010399 0d ad04 effffffcaf movl 4(fp),_err_code
450: 434 000103A1 # sgl_value_1 = dbl_ld_acc.m;
451: 435 000103A1 0d effffffca9 effffffca4 movl _dbl_ld_acc,_sgl_value_1
452: 436 000103AC # asm("movl _test_no,r0"); /* r0 = test number */
453: 437 000103AC 0d effffffc9e 50 movl _test_no,r0
454: 438 000103B3 # asm("movl _subtest,r1"); /* r1 = subtest number */
455: 439 000103B3 0d effffffc97 51 movl _subtest,r1
456: 440 000103BA # asm("movl _err_code,r2"); /* r2 = error code */
457: 441 000103BA 0d effffffc90 52 movl _err_code,r2
458: 442 000103C1 # asm("movl _cycle,r3"); /* r3 = cycle count */
459: 443 000103C1 0d effffffc89 53 movl _cycle,r3
460: 444 000103C8 # asm("movl _sgl_value_1,r4"); /* r4 = initial operand */
461: 445 000103C8 0d effffffc82 54 movl _sgl_value_1,r4
462: 446 000103CF # if( code == 1 ) {
463: 447 000103CF 1d ad04 01 cmpl 4(fp),$1
464: 448 000103D3 21 26 jneq L438
465: 449 000103D5 # sgl_value_2 = dbl_value_1.m;
466: 450 000103D5 0d effffffc75 effffffc70 movl _dbl_value_1,_sgl_value_2
467: 451 000103E0 # sgl_value_3 = dbl_value_2.m;
468: 452 000103E0 0d effffffc6a effffffc65 movl _dbl_value_2,_sgl_value_3
469: 453 000103EB # asm("movl _sgl_value_2,r5"); /* r5 = 1st CMPF2 operand */
470: 454 000103EB 0d effffffc5f 55 movl _sgl_value_2,r5
471: 455 000103F2 # asm("movl _sgl_value_3,r6"); /* r6 = 2nd CMPF2 operand */
472: 456 000103F2 0d effffffc58 56 movl _sgl_value_3,r6
473: 457 000103F9 # } else {
474: 458 000103F9 11 24 jbr L439
475: 459 000103FB L438:
476: 460 000103FB # sgl_value_2 = post_evt_acc.m;
477: 461 000103FB 0d effffffc4f effffffc4a movl _post_evt_acc,_sgl_value_2
478: 462 00010406 # sgl_value_3 = dbl_expected.m;
479: 463 00010406 0d effffffc44 effffffc3f movl _dbl_expected,_sgl_value_3
480: 464 00010411 # asm("movl _sgl_value_2,r5"); /* r5 = final accumulator */
481: 465 00010411 0d effffffc39 55 movl _sgl_value_2,r5
482: 466 00010418 # asm("movl _sgl_value_3,r6"); /* r6 = expected accumulator */
483: 467 00010418 0d effffffc32 56 movl _sgl_value_3,r6
484: 468 0001041F # }
485: 469 0001041F L439:
486: 470 0001041F # asm("movl _index,r7"); /* r7 = data index */
487: 471 0001041F 0d effffffc2b 57 movl _index,r7
488: 472 00010426 # asm("halt"); /* HALT ... */
489: 473 00010426 00 halt
490: 474 00010427 # }
491: 475 00010427 40 ret#2
492: 476 00010428 .set L434,0x0
493: 477 00010428 L436:
494: 478 00010428 13 ff6e jbr L437
495: 479 0001042B .data
496: 479 0002047B .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.