|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 000003d0 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _pipe8 ! 6: 6 00000000 _pipe8: ! 7: 7 00011CBC 0000 .word L381 ! 8: 8 00011CBE # ! 9: 9 00011CBE # #include "evt_defs.h" ! 10: 10 00011CBE # ! 11: 11 00011CBE # /* ! 12: 12 00011CBE # ********************************************************************* ! 13: 13 00011CBE # * FPP PIPELINED EVENTS TEST #8 ! 14: 14 00011CBE # * ! 15: 15 00011CBE # * This test will execute the following code: "LDF EXPF CVLF" ! 16: 16 00011CBE # * with an underflow fault on the EXPF. We will make sure that: ! 17: 17 00011CBE # * 1. The fault is detected, and ! 18: 18 00011CBE # * 2. the convert long to float instruction is not executed. ! 19: 19 00011CBE # ********************************************************************* ! 20: 20 00011CBE # */ ! 21: 21 00011CBE # pipe8() ! 22: 22 00011CBE # { ! 23: 23 00011CBE 13 00fe jbr L383 ! 24: 24 00011CC1 L384: ! 25: 25 00011CC1 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */ ! 26: 26 00011CC1 ed 6d effffffff4 moval (r13),_pre_event_fp ! 27: 27 00011CC8 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */ ! 28: 28 00011CC8 ed 6e efffffffed moval (r14),_pre_event_sp ! 29: 29 00011CCF # precision = SGL; ! 30: 30 00011CCF 0d 01 efffffffe6 movl $1,_precision ! 31: 31 00011CD6 # test_event = ARITH_CODE; /* expect an arithmetic fault */ ! 32: 32 00011CD6 0d 34 efffffffdf movl $52,_test_event ! 33: 33 00011CDD # exp_code = FLT_UNDFL_CODE; /* - an specificly underflow */ ! 34: 34 00011CDD 0d 05 efffffffd8 movl $5,_exp_code ! 35: 35 00011CE4 # exp_event = FALSE; /* ... but not yet */ ! 36: 36 00011CE4 4d efffffffd2 clrl _exp_event ! 37: 37 00011CEA # asm("movab _pipe8_ret,_event_return"); /* set event return address */ ! 38: 38 00011CEA e9 ef00000084 efffffffc7 movab _pipe8_ret,_event_return ! 39: 39 00011CF5 # max_index = exf_u_cnt; /* set max operand index */ ! 40: 40 00011CF5 0d efffffffc1 efffffffbc movl _exf_u_cnt,_max_index ! 41: 41 00011D00 # for( index = 0; index < max_index; index++ ) ! 42: 42 00011D00 4d efffffffb6 clrl _index ! 43: 43 00011D06 L387: ! 44: 44 00011D06 1d efffffffb0 efffffffab cmpl _index,_max_index ! 45: 45 00011D11 91 03 13 00a8 jgeq L386 ! 46: 46 00011D16 # { ! 47: 47 00011D16 # dbl_ld_acc = exf_u_dat[index].op_1; /* get the data */ ! 48: 48 00011D16 48 04 efffffff9f 50 shll $4,_index,r0 ! 49: 49 00011D1E 0c 8f00000000 50 addl2 $_exf_u_dat,r0 ! 50: 50 00011D25 0d a004 efffffff93 movl 4(r0),_dbl_ld_acc+4 ! 51: 51 00011D2D 0d 60 efffffff88 movl (r0),_dbl_ld_acc ! 52: 52 00011D34 # asm(".globl _pipe8_lp1"); ! 53: 53 00011D34 .globl _pipe8_lp1 ! 54: 54 00011D34 # asm("_pipe8_lp1:"); ! 55: 55 00011D34 _pipe8_lp1: ! 56: 56 00011D34 # asm("bispsw $0x60"); /* enable ovfl,undfl */ ! 57: 57 00011D34 8b 8860 bispsw $0x60 ! 58: 58 00011D37 # asm("ldf _dbl_ld_acc"); /* load the Acc. */ ! 59: 59 00011D37 06 efffffff7f ldf _dbl_ld_acc ! 60: 60 00011D3D # exp_event = test_event; /* expect event soon */ ! 61: 61 00011D3D 0d efffffff79 efffffff74 movl _test_event,_exp_event ! 62: 62 00011D48 # asm("expf"); /* get undfl. event */ ! 63: 63 00011D48 55 expf ! 64: 64 00011D49 # asm("cvlf $2"); /* queue the convert */ ! 65: 65 00011D49 76 02 cvlf $2 ! 66: 66 00011D4B # /* ! 67: 67 00011D4B # * If we got to here then there was no event ! 68: 68 00011D4B # */ ! 69: 69 00011D4B # if( force_loop ) ! 70: 70 00011D4B 5d efffffff6b tstl _force_loop ! 71: 71 00011D51 31 03 jeql L388 ! 72: 72 00011D53 # asm("brw _pipe8_lp1");; /* loop on the error */ ! 73: Assemb0002947C # asm("brw _pipe8_lp1");; /* loop on the error */ ! 74: "pipe80002947C 73: WARNING: brw: destination label is external ! 75: 73 00011D53 13 ffde brw _pipe8_lp1 ! 76: 74 00011D56 L388: ! 77: 75 00011D56 # exp_event = FALSE; /* reset event expected flag */ ! 78: 76 00011D56 4d efffffff60 clrl _exp_event ! 79: 77 00011D5C # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */ ! 80: 78 00011D5C 0d efffffff5a 5d movl _pre_event_fp,fp ! 81: 79 00011D63 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */ ! 82: 80 00011D63 0d efffffff53 5e movl _pre_event_sp,sp ! 83: 81 00011D6A # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */ ! 84: 82 00011D6A 9b 8860 bicpsw $0x60 ! 85: 83 00011D6D # no_pipe8_evt();; /* report the error */ ! 86: 84 00011D6D fe 04 ef0000004e callf $4,_no_pipe8_evt ! 87: 85 00011D74 # /* ! 88: 86 00011D74 # * Come here after the event ! 89: 87 00011D74 # */ ! 90: 88 00011D74 # asm(".globl _pipe8_ret"); ! 91: 89 00011D74 .globl _pipe8_ret ! 92: 90 00011D74 # asm("_pipe8_ret:"); ! 93: 91 00011D74 _pipe8_ret: ! 94: 92 00011D74 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */ ! 95: 93 00011D74 0d efffffff42 5d movl _pre_event_fp,fp ! 96: 94 00011D7B # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */ ! 97: 95 00011D7B 0d efffffff3b 5e movl _pre_event_sp,sp ! 98: 96 00011D82 # if( force_loop ) ! 99: 97 00011D82 5d efffffff34 tstl _force_loop ! 100: 98 00011D88 31 03 jeql L390 ! 101: 99 00011D8A # asm("brw _pipe8_lp1");; /* loop on the error */ ! 102: "pipe80002947C 100: WARNING: brw: destination label is external ! 103: 100 00011D8A 13 ffa7 brw _pipe8_lp1 ! 104: 101 00011D8D L390: ! 105: 102 00011D8D # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */ ! 106: 103 00011D8D 9b 8860 bicpsw $0x60 ! 107: 104 00011D90 # if( post_evt_acc.m == 0x41000000 ) /* is the Acc. = floating 2? */ ! 108: 105 00011D90 1d efffffff26 8f41000000 cmpl _post_evt_acc,$1090519040 ! 109: 106 00011D9B 21 09 jneq L391 ! 110: 107 00011D9D # pipe8_queue_er(); /* queue not cleared error */ ! 111: 108 00011D9D fe 04 ef00000134 callf $4,_pipe8_queue_er ! 112: 109 00011DA4 # else if( post_evt_acc.m ) /* is the Acc. non zero? */ ! 113: 110 00011DA4 11 0f jbr L393 ! 114: 111 00011DA6 L391: ! 115: 112 00011DA6 5d efffffff10 tstl _post_evt_acc ! 116: 113 00011DAC 31 07 jeql L394 ! 117: 114 00011DAE # bad_pipe8_result(); /* incorrect result error */ ! 118: 115 00011DAE fe 04 ef00000079 callf $4,_bad_pipe8_result ! 119: 116 00011DB5 # ! 120: 117 00011DB5 # } ! 121: 118 00011DB5 L394: ! 122: 119 00011DB5 L393: ! 123: 120 00011DB5 L385: ! 124: 121 00011DB5 6d efffffff01 incl _index ! 125: 122 00011DBB 13 ff48 jbr L387 ! 126: 123 00011DBE L386: ! 127: 124 00011DBE # } ! 128: 125 00011DBE 40 ret#2 ! 129: 126 00011DBF .set L381,0x0 ! 130: 127 00011DBF L383: ! 131: 128 00011DBF 13 feff jbr L384 ! 132: 129 00011DC2 .data ! 133: 130 000003d0 * .text ! 134: 131 00011DC2 .align 1 ! 135: 132 00011DC2 .globl _no_pipe8_evt ! 136: 133 00011DC2 _no_pipe8_evt: ! 137: 134 00011DC2 0000 .word L396 ! 138: 135 00011DC4 # ! 139: 136 00011DC4 # ! 140: 137 00011DC4 # ! 141: 138 00011DC4 # /**************************************************************************** ! 142: 139 00011DC4 # * Report an "EVENT NOT DETECTED" error ! 143: 140 00011DC4 # * ! 144: 141 00011DC4 # * Cycle: xx. EVT test xx. subtest xx. No underflow fault detected. index = xx ! 145: 142 00011DC4 # * inst = LDD op_1, EXPF, CVLF '2' (underflow fault on EXPF) ! 146: 143 00011DC4 # * op_1 = xxxxxxxx ! 147: 144 00011DC4 # ****************************************************************************/ ! 148: 145 00011DC4 # no_pipe8_evt() ! 149: 146 00011DC4 # { ! 150: 147 00011DC4 11 65 jbr L398 ! 151: 148 00011DC6 L399: ! 152: 149 00011DC6 # errcnt++; /* bump the error count */ ! 153: 150 00011DC6 6d effffffef0 incl _errcnt ! 154: 151 00011DCC # if ( prt_error ) ! 155: 152 00011DCC 5d effffffeea tstl _prt_error ! 156: 153 00011DD2 31 30 jeql L400 ! 157: 154 00011DD4 # { ! 158: 155 00011DD4 # print_pipe8_er( ". No underflow fault detected." ); ! 159: 156 00011DD4 .data 1 ! 160: 157 000003d0 * L402: ! 161: 158 000003d0 * 2E204E6F20756E646572666C6 .ascii ". No underflow fault detected.\0" ! 162: F77206661756C742064657465 ! 163: 637465642E00 ! 164: 159 000003ef * .text ! 165: 160 00011DD4 dd 8f000003d0 pushl $L402 ! 166: 161 00011DDA fe 08 ef000001a1 callf $8,_print_pipe8_er ! 167: 162 00011DE1 # writes("op_1 = "); ! 168: 163 00011DE1 .data 1 ! 169: 164 000003ef * L404: ! 170: 165 000003ef * 6F705F31203D2000 .ascii "op_1 = \0" ! 171: 166 000003f7 * .text ! 172: 167 00011DE1 dd 8f000003ef pushl $L404 ! 173: 168 00011DE7 fe 08 effffffece callf $8,_writes ! 174: 169 00011DEE # write32h( dbl_ld_acc.m ); ! 175: 170 00011DEE dd effffffec8 pushl _dbl_ld_acc ! 176: 171 00011DF4 fe 08 effffffec1 callf $8,_write32h ! 177: 172 00011DFB # writec('\n'); ! 178: 173 00011DFB dd 0a pushl $10 ! 179: 174 00011DFD fe 08 effffffeb8 callf $8,_writec ! 180: 175 00011E04 # } ! 181: 176 00011E04 # if ( halt_flg ) /* halt on error? */ ! 182: 177 00011E04 L400: ! 183: 178 00011E04 5d effffffeb2 tstl _halt_flg ! 184: 179 00011E0A 31 09 jeql L407 ! 185: 180 00011E0C # pipe8_halt( 1 ); /* halt with a code of 1 */ ! 186: 181 00011E0C dd 01 pushl $1 ! 187: 182 00011E0E fe 08 ef0000020b callf $8,_pipe8_halt ! 188: 183 00011E15 # if ( loop_on_err ) ! 189: 184 00011E15 L407: ! 190: 185 00011E15 5d effffffea1 tstl _loop_on_err ! 191: 186 00011E1B 31 0d jeql L409 ! 192: 187 00011E1D # { ! 193: 188 00011E1D # force_loop = TRUE; /* set the force loop flag */ ! 194: 189 00011E1D 0d 01 effffffe98 movl $1,_force_loop ! 195: 190 00011E24 # asm("jmp _pipe8_lp1"); /* and loop */ ! 196: 191 00011E24 71 efffffff0a jmp _pipe8_lp1 ! 197: 192 00011E2A # }; ! 198: 193 00011E2A L409: ! 199: 194 00011E2A # } ! 200: 195 00011E2A 40 ret#2 ! 201: 196 00011E2B .set L396,0x0 ! 202: 197 00011E2B L398: ! 203: 198 00011E2B 11 99 jbr L399 ! 204: 199 00011E2D .data ! 205: 200 000003d0 * .text ! 206: 201 00011E2D 00 .align 1 ! 207: 202 00011E2E .globl _bad_pipe8_result ! 208: 203 00011E2E _bad_pipe8_result: ! 209: 204 00011E2E 0000 .word L410 ! 210: 205 00011E30 # ! 211: 206 00011E30 # ! 212: 207 00011E30 # ! 213: 208 00011E30 # ! 214: 209 00011E30 # /**************************************************************************** ! 215: 210 00011E30 # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error ! 216: 211 00011E30 # * ! 217: 212 00011E30 # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. index = xx ! 218: 213 00011E30 # * inst = LDD op_1, EXPF, CVLF '2' (underflow fault on EXPF) ! 219: 214 00011E30 # * The 'Convert '2' to Floating Point' should not be executed. ! 220: 215 00011E30 # * op_1 = xxxxxxxx, final Acc. = xxxxxxxx, expected = xxxxxxxx ! 221: 216 00011E30 # ****************************************************************************/ ! 222: 217 00011E30 # bad_pipe8_result() ! 223: 218 00011E30 # { ! 224: 219 00011E30 13 00a2 jbr L412 ! 225: 220 00011E33 L413: ! 226: 221 00011E33 # errcnt++; /* bump the error count */ ! 227: 222 00011E33 6d effffffe83 incl _errcnt ! 228: 223 00011E39 # if ( prt_error ) ! 229: 224 00011E39 5d effffffe7d tstl _prt_error ! 230: 225 00011E3F 31 6d jeql L414 ! 231: 226 00011E41 # { ! 232: 227 00011E41 # print_pipe8_er( ". Bad final Accumulator" ); ! 233: 228 00011E41 .data 1 ! 234: 229 000003f7 * L415: ! 235: 230 000003f7 * 2E204261642066696E616C204 .ascii ". Bad final Accumulator\0" ! 236: 16363756D756C61746F7200 ! 237: 231 0000040f * .text ! 238: 232 00011E41 dd 8f000003f7 pushl $L415 ! 239: 233 00011E47 fe 08 ef00000134 callf $8,_print_pipe8_er ! 240: 234 00011E4E # writes( ! 241: 235 00011E4E # "The 'Convert '2' to Floating Point' should not be executed\n"); ! 242: 236 00011E4E .data 1 ! 243: 237 0000040f * L416: ! 244: 238 0000040f * 5468652027436F6E766572742 .ascii "The 'Convert '2' to Floating Point' should not be executed\12\0" ! 245: 027322720746F20466C6F6174 ! 246: 696E6720506F696E742720736 ! 247: 86F756C64206E6F7420626520 ! 248: 65786563757465640A00 ! 249: 239 0000044b * .text ! 250: 240 00011E4E dd 8f0000040f pushl $L416 ! 251: 241 00011E54 fe 08 effffffe61 callf $8,_writes ! 252: 242 00011E5B # writes("op_1 = "); ! 253: 243 00011E5B .data 1 ! 254: 244 0000044b * L417: ! 255: 245 0000044b * 6F705F31203D2000 .ascii "op_1 = \0" ! 256: 246 00000453 * .text ! 257: 247 00011E5B dd 8f0000044b pushl $L417 ! 258: 248 00011E61 fe 08 effffffe54 callf $8,_writes ! 259: 249 00011E68 # write32h( dbl_ld_acc.m ); ! 260: 250 00011E68 dd effffffe4e pushl _dbl_ld_acc ! 261: 251 00011E6E fe 08 effffffe47 callf $8,_write32h ! 262: 252 00011E75 # writes(", final Acc. = "); ! 263: 253 00011E75 .data 1 ! 264: 254 00000453 * L418: ! 265: 255 00000453 * 2C20202066696E616C2041636 .ascii ", final Acc. = \0" ! 266: 32E203D2000 ! 267: 256 00000465 * .text ! 268: 257 00011E75 dd 8f00000453 pushl $L418 ! 269: 258 00011E7B fe 08 effffffe3a callf $8,_writes ! 270: 259 00011E82 # write32h( post_evt_acc.m ); ! 271: 260 00011E82 dd effffffe34 pushl _post_evt_acc ! 272: 261 00011E88 fe 08 effffffe2d callf $8,_write32h ! 273: 262 00011E8F # writes(", expected = "); ! 274: 263 00011E8F .data 1 ! 275: 264 00000465 * L419: ! 276: 265 00000465 * 2C20202065787065637465642 .ascii ", expected = \0" ! 277: 020203D2000 ! 278: 266 00000477 * .text ! 279: 267 00011E8F dd 8f00000465 pushl $L419 ! 280: 268 00011E95 fe 08 effffffe20 callf $8,_writes ! 281: 269 00011E9C # write32h( 0 ); /* the expected result = 0 */ ! 282: 270 00011E9C dd 00 pushl $0 ! 283: 271 00011E9E fe 08 effffffe17 callf $8,_write32h ! 284: 272 00011EA5 # writec('\n'); ! 285: 273 00011EA5 dd 0a pushl $10 ! 286: 274 00011EA7 fe 08 effffffe0e callf $8,_writec ! 287: 275 00011EAE # } ! 288: 276 00011EAE # if ( halt_flg ) /* halt on error? */ ! 289: 277 00011EAE L414: ! 290: 278 00011EAE 5d effffffe08 tstl _halt_flg ! 291: 279 00011EB4 31 09 jeql L420 ! 292: 280 00011EB6 # pipe8_halt( 2 ); /* halt with a code of 2 */ ! 293: 281 00011EB6 dd 02 pushl $2 ! 294: 282 00011EB8 fe 08 ef00000161 callf $8,_pipe8_halt ! 295: 283 00011EBF # if ( loop_on_err ) ! 296: 284 00011EBF L420: ! 297: 285 00011EBF 5d effffffdf7 tstl _loop_on_err ! 298: 286 00011EC5 31 0d jeql L421 ! 299: 287 00011EC7 # { ! 300: 288 00011EC7 # force_loop = TRUE; /* set the force loop flag */ ! 301: 289 00011EC7 0d 01 effffffdee movl $1,_force_loop ! 302: 290 00011ECE # asm("jmp _pipe8_lp1"); /* and loop */ ! 303: 291 00011ECE 71 effffffe60 jmp _pipe8_lp1 ! 304: 292 00011ED4 # }; ! 305: 293 00011ED4 L421: ! 306: 294 00011ED4 # } ! 307: 295 00011ED4 40 ret#2 ! 308: 296 00011ED5 .set L410,0x0 ! 309: 297 00011ED5 L412: ! 310: 298 00011ED5 13 ff5b jbr L413 ! 311: 299 00011ED8 .data ! 312: 300 000003d0 * .text ! 313: 301 00011ED8 .align 1 ! 314: 302 00011ED8 .globl _pipe8_queue_er ! 315: 303 00011ED8 _pipe8_queue_er: ! 316: 304 00011ED8 0000 .word L422 ! 317: 305 00011EDA # ! 318: 306 00011EDA # ! 319: 307 00011EDA # ! 320: 308 00011EDA # ! 321: 309 00011EDA # ! 322: 310 00011EDA # /**************************************************************************** ! 323: 311 00011EDA # * Report an "FPP queue not cleared" message ! 324: 312 00011EDA # * ! 325: 313 00011EDA # * Cycle: xx. EVT test xx. subtest xx. Fpp queue not cleared. index = xx ! 326: 314 00011EDA # * inst = LDD op_1, EXPF, CVLF '2' (underflow fault on EXPF) ! 327: 315 00011EDA # * The 'Convert '2' to Floating Point' was apparently executed. ! 328: 316 00011EDA # * op_1 = xxxxxxxx, final Acc. = xxxxxxxx, expected = xxxxxxxx ! 329: 317 00011EDA # ****************************************************************************/ ! 330: 318 00011EDA # pipe8_queue_er() ! 331: 319 00011EDA # { ! 332: 320 00011EDA 13 00a2 jbr L424 ! 333: 321 00011EDD L425: ! 334: 322 00011EDD # errcnt++; /* bump the error count */ ! 335: 323 00011EDD 6d effffffdd9 incl _errcnt ! 336: 324 00011EE3 # if ( prt_error ) ! 337: 325 00011EE3 5d effffffdd3 tstl _prt_error ! 338: 326 00011EE9 31 6d jeql L426 ! 339: 327 00011EEB # { ! 340: 328 00011EEB # print_pipe8_er( ". Fpp queue not cleared" ); ! 341: 329 00011EEB .data 1 ! 342: 330 00000477 * L427: ! 343: 331 00000477 * 2E20467070207175657565206 .ascii ". Fpp queue not cleared\0" ! 344: E6F7420636C656172656400 ! 345: 332 0000048f * .text ! 346: 333 00011EEB dd 8f00000477 pushl $L427 ! 347: 334 00011EF1 fe 08 ef0000008a callf $8,_print_pipe8_er ! 348: 335 00011EF8 # writes( ! 349: 336 00011EF8 # "The 'Convert '2' to Floating Point' was apparently executed.\n"); ! 350: 337 00011EF8 .data 1 ! 351: 338 0000048f * L428: ! 352: 339 0000048f * 5468652027436F6E766572742 .ascii "The 'Convert '2' to Floating Point' was apparently executed.\12\0" ! 353: 027322720746F20466C6F6174 ! 354: 696E6720506F696E742720776 ! 355: 173206170706172656E746C79 ! 356: 2065786563757465642E0A00 ! 357: 340 000004cd * .text ! 358: 341 00011EF8 dd 8f0000048f pushl $L428 ! 359: 342 00011EFE fe 08 effffffdb7 callf $8,_writes ! 360: 343 00011F05 # writes("op_1 = "); ! 361: 344 00011F05 .data 1 ! 362: 345 000004cd * L429: ! 363: 346 000004cd * 6F705F31203D2000 .ascii "op_1 = \0" ! 364: 347 000004d5 * .text ! 365: 348 00011F05 dd 8f000004cd pushl $L429 ! 366: 349 00011F0B fe 08 effffffdaa callf $8,_writes ! 367: 350 00011F12 # write32h( dbl_ld_acc.m ); ! 368: 351 00011F12 dd effffffda4 pushl _dbl_ld_acc ! 369: 352 00011F18 fe 08 effffffd9d callf $8,_write32h ! 370: 353 00011F1F # writes(", final Acc. = "); ! 371: 354 00011F1F .data 1 ! 372: 355 000004d5 * L430: ! 373: 356 000004d5 * 2C20202066696E616C2041636 .ascii ", final Acc. = \0" ! 374: 32E203D2000 ! 375: 357 000004e7 * .text ! 376: 358 00011F1F dd 8f000004d5 pushl $L430 ! 377: 359 00011F25 fe 08 effffffd90 callf $8,_writes ! 378: 360 00011F2C # write32h( post_evt_acc.m ); ! 379: 361 00011F2C dd effffffd8a pushl _post_evt_acc ! 380: 362 00011F32 fe 08 effffffd83 callf $8,_write32h ! 381: 363 00011F39 # writes(", expected = "); ! 382: 364 00011F39 .data 1 ! 383: 365 000004e7 * L431: ! 384: 366 000004e7 * 2C20202065787065637465642 .ascii ", expected = \0" ! 385: 020203D2000 ! 386: 367 000004f9 * .text ! 387: 368 00011F39 dd 8f000004e7 pushl $L431 ! 388: 369 00011F3F fe 08 effffffd76 callf $8,_writes ! 389: 370 00011F46 # write32h( 0 ); /* expected result = 0 */ ! 390: 371 00011F46 dd 00 pushl $0 ! 391: 372 00011F48 fe 08 effffffd6d callf $8,_write32h ! 392: 373 00011F4F # writec('\n'); ! 393: 374 00011F4F dd 0a pushl $10 ! 394: 375 00011F51 fe 08 effffffd64 callf $8,_writec ! 395: 376 00011F58 # } ! 396: 377 00011F58 # if ( halt_flg ) /* halt on error? */ ! 397: 378 00011F58 L426: ! 398: 379 00011F58 5d effffffd5e tstl _halt_flg ! 399: 380 00011F5E 31 09 jeql L432 ! 400: 381 00011F60 # pipe8_halt( 3 ); /* halt with a code of 3 */ ! 401: 382 00011F60 dd 03 pushl $3 ! 402: 383 00011F62 fe 08 ef000000b7 callf $8,_pipe8_halt ! 403: 384 00011F69 # if ( loop_on_err ) ! 404: 385 00011F69 L432: ! 405: 386 00011F69 5d effffffd4d tstl _loop_on_err ! 406: 387 00011F6F 31 0d jeql L433 ! 407: 388 00011F71 # { ! 408: 389 00011F71 # force_loop = TRUE; /* set the force loop flag */ ! 409: 390 00011F71 0d 01 effffffd44 movl $1,_force_loop ! 410: 391 00011F78 # asm("jmp _pipe8_lp1"); /* and loop */ ! 411: 392 00011F78 71 effffffdb6 jmp _pipe8_lp1 ! 412: 393 00011F7E # }; ! 413: 394 00011F7E L433: ! 414: 395 00011F7E # } ! 415: 396 00011F7E 40 ret#2 ! 416: 397 00011F7F .set L422,0x0 ! 417: 398 00011F7F L424: ! 418: 399 00011F7F 13 ff5b jbr L425 ! 419: 400 00011F82 .data ! 420: 401 000003d0 * .text ! 421: 402 00011F82 .align 1 ! 422: 403 00011F82 .globl _print_pipe8_er ! 423: 404 00011F82 _print_pipe8_er: ! 424: 405 00011F82 0000 .word L434 ! 425: 406 00011F84 # ! 426: 407 00011F84 # ! 427: 408 00011F84 # ! 428: 409 00011F84 # ! 429: 410 00011F84 # /**************************************************************************** ! 430: 411 00011F84 # * Report an error message of the form: ! 431: 412 00011F84 # * ! 432: 413 00011F84 # * Cycle: xx. EVT test xx. subtest xx. <your message here> index = xx ! 433: 414 00011F84 # * inst = LDD op_1, EXPF, CVLF '2' (underflow fault on EXPF) ! 434: 415 00011F84 # ****************************************************************************/ ! 435: 416 00011F84 # print_pipe8_er( msg ) ! 436: 417 00011F84 # char *msg; /* error message to print */ ! 437: 418 00011F84 # { ! 438: 419 00011F84 13 0096 jbr L436 ! 439: 420 00011F87 L437: ! 440: 421 00011F87 # if( errcnt == 1 ) /* 1st error? */ ! 441: 422 00011F87 1d effffffd2f 01 cmpl _errcnt,$1 ! 442: 423 00011F8E 21 0d jneq L438 ! 443: 424 00011F90 # writes(" \n"); /* start a new print line */ ! 444: 425 00011F90 .data 1 ! 445: 426 000004f9 * L439: ! 446: 427 000004f9 * 200A00 .ascii " \12\0" ! 447: 428 000004fc * .text ! 448: 429 00011F90 dd 8f000004f9 pushl $L439 ! 449: 430 00011F96 fe 08 effffffd1f callf $8,_writes ! 450: 431 00011F9D # writes("Cycle: "); ! 451: 432 00011F9D L438: ! 452: 433 00011F9D .data 1 ! 453: 434 000004fc * L440: ! 454: 435 000004fc * 4379636C653A2000 .ascii "Cycle: \0" ! 455: 436 00000504 * .text ! 456: 437 00011F9D dd 8f000004fc pushl $L440 ! 457: 438 00011FA3 fe 08 effffffd12 callf $8,_writes ! 458: 439 00011FAA # writed( cycle ); ! 459: 440 00011FAA dd effffffd0c pushl _cycle ! 460: 441 00011FB0 fe 08 effffffd05 callf $8,_writed ! 461: 442 00011FB7 # writes(" EVT test "); ! 462: 443 00011FB7 .data 1 ! 463: 444 00000504 * L442: ! 464: 445 00000504 * 202045565420746573742000 .ascii " EVT test \0" ! 465: 446 00000510 * .text ! 466: 447 00011FB7 dd 8f00000504 pushl $L442 ! 467: 448 00011FBD fe 08 effffffcf8 callf $8,_writes ! 468: 449 00011FC4 # writed( test_no ); ! 469: 450 00011FC4 dd effffffcf2 pushl _test_no ! 470: 451 00011FCA fe 08 effffffceb callf $8,_writed ! 471: 452 00011FD1 # writes(". subtest "); ! 472: 453 00011FD1 .data 1 ! 473: 454 00000510 * L443: ! 474: 455 00000510 * 2E20737562746573742000 .ascii ". subtest \0" ! 475: 456 0000051b * .text ! 476: 457 00011FD1 dd 8f00000510 pushl $L443 ! 477: 458 00011FD7 fe 08 effffffcde callf $8,_writes ! 478: 459 00011FDE # writed( subtest ); ! 479: 460 00011FDE dd effffffcd8 pushl _subtest ! 480: 461 00011FE4 fe 08 effffffcd1 callf $8,_writed ! 481: 462 00011FEB # writes( msg ); /* print the message */ ! 482: 463 00011FEB dd ad04 pushl 4(fp) ! 483: 464 00011FEE fe 08 effffffcc7 callf $8,_writes ! 484: 465 00011FF5 # writes(" index = "); ! 485: 466 00011FF5 .data 1 ! 486: 467 0000051b * L444: ! 487: 468 0000051b * 20696E646578203D2000 .ascii " index = \0" ! 488: 469 00000525 * .text ! 489: 470 00011FF5 dd 8f0000051b pushl $L444 ! 490: 471 00011FFB fe 08 effffffcba callf $8,_writes ! 491: 472 00012002 # writed( index ); ! 492: 473 00012002 dd effffffcb4 pushl _index ! 493: 474 00012008 fe 08 effffffcad callf $8,_writed ! 494: 475 0001200F # writes( ! 495: 476 0001200F # "\ninst = LDD op_1, EXPF, CVLF '2' (underflow fault on EXPF)\n"); ! 496: 477 0001200F .data 1 ! 497: 478 00000525 * L445: ! 498: 479 00000525 * 0A696E7374203D204C4444206 .ascii "\12inst = LDD op_1, EXPF, CVLF '2' (underflow fault on EXPF)\12\0" ! 499: F705F312C20455850462C2043 ! 500: 564C462027322720202020287 ! 501: 56E646572666C6F7720666175 ! 502: 6C74206F6E2045585046290A0 ! 503: 0 ! 504: 480 00000564 * .text ! 505: 481 0001200F dd 8f00000525 pushl $L445 ! 506: 482 00012015 fe 08 effffffca0 callf $8,_writes ! 507: 483 0001201C # } ! 508: 484 0001201C 40 ret#2 ! 509: 485 0001201D .set L434,0x0 ! 510: 486 0001201D L436: ! 511: 487 0001201D 13 ff67 jbr L437 ! 512: 488 00012020 .data ! 513: 489 000003d0 * .text ! 514: 490 00012020 .align 1 ! 515: 491 00012020 .globl _pipe8_halt ! 516: 492 00012020 _pipe8_halt: ! 517: 493 00012020 0000 .word L446 ! 518: 494 00012022 # ! 519: 495 00012022 # ! 520: 496 00012022 # ! 521: 497 00012022 # /**************************************************************************** ! 522: 498 00012022 # * halt on error routine ! 523: 499 00012022 # ****************************************************************************/ ! 524: 500 00012022 # pipe8_halt( code ) ! 525: 501 00012022 # int code; /* error code to halt with */ ! 526: 502 00012022 # { ! 527: 503 00012022 11 63 jbr L448 ! 528: 504 00012024 L449: ! 529: 505 00012024 # err_code = code; ! 530: 506 00012024 0d ad04 effffffc90 movl 4(fp),_err_code ! 531: 507 0001202C # sgl_value_1 = dbl_ld_acc.m; ! 532: 508 0001202C 0d effffffc8a effffffc85 movl _dbl_ld_acc,_sgl_value_1 ! 533: 509 00012037 # sgl_value_2 = post_evt_acc.m; ! 534: 510 00012037 0d effffffc7f effffffc7a movl _post_evt_acc,_sgl_value_2 ! 535: 511 00012042 # sgl_value_3 = dbl_expected.m; ! 536: 512 00012042 0d effffffc74 effffffc6f movl _dbl_expected,_sgl_value_3 ! 537: 513 0001204D # asm("movl _test_no,r0"); /* r0 = test number */ ! 538: 514 0001204D 0d effffffc69 50 movl _test_no,r0 ! 539: 515 00012054 # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 540: 516 00012054 0d effffffc62 51 movl _subtest,r1 ! 541: 517 0001205B # asm("movl _err_code,r2"); /* r2 = error code */ ! 542: 518 0001205B 0d effffffc5b 52 movl _err_code,r2 ! 543: 519 00012062 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 544: 520 00012062 0d effffffc54 53 movl _cycle,r3 ! 545: 521 00012069 # asm("movl _sgl_value_1,r4"); /* r4 = initial operand */ ! 546: 522 00012069 0d effffffc4d 54 movl _sgl_value_1,r4 ! 547: 523 00012070 # asm("movl _sgl_value_2,r5"); /* r5 = final accumulator */ ! 548: 524 00012070 0d effffffc46 55 movl _sgl_value_2,r5 ! 549: 525 00012077 # asm("movl _sgl_value_3,r6"); /* r6 = expected accumulator */ ! 550: 526 00012077 0d effffffc3f 56 movl _sgl_value_3,r6 ! 551: 527 0001207E # asm("movl _index,r7"); /* r7 = data index */ ! 552: 528 0001207E 0d effffffc38 57 movl _index,r7 ! 553: 529 00012085 # asm("halt"); /* HALT ... */ ! 554: 530 00012085 00 halt ! 555: 531 00012086 # } ! 556: 532 00012086 40 ret#2 ! 557: 533 00012087 .set L446,0x0 ! 558: 534 00012087 L448: ! 559: 535 00012087 11 9b jbr L449 ! 560: 536 00012089 .data ! 561: 536 00023D45 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.