|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 000005c4 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _pipe4 ! 6: 6 00000000 _pipe4: ! 7: 7 0001042C 0000 .word L381 ! 8: 8 0001042E # ! 9: 9 0001042E # #include "evt_defs.h" ! 10: 10 0001042E # ! 11: 11 0001042E # /* ! 12: 12 0001042E # ********************************************************************* ! 13: 13 0001042E # * FPP PIPELINED EVENTS TEST #4 ! 14: 14 0001042E # * ! 15: 15 0001042E # * This test will execute the following code: "LDF MULF MULL3 NEGF" ! 16: 16 0001042E # * with an alignment fault on the MULL3. We will make sure that: ! 17: 17 0001042E # * 1. The fault is detected, ! 18: 18 0001042E # * 2. the floating multiply operation completes, ! 19: 19 0001042E # * 3. the negate instruction is not executed. ! 20: 20 0001042E # ********************************************************************* ! 21: 21 0001042E # */ ! 22: 22 0001042E # pipe4() ! 23: 23 0001042E # { ! 24: 24 0001042E 13 015d jbr L383 ! 25: 25 00010431 L384: ! 26: 26 00010431 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */ ! 27: 27 00010431 ed 6d effffffff4 moval (r13),_pre_event_fp ! 28: 28 00010438 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */ ! 29: 29 00010438 ed 6e efffffffed moval (r14),_pre_event_sp ! 30: 30 0001043F # precision = SGL; ! 31: 31 0001043F 0d 01 efffffffe6 movl $1,_precision ! 32: 32 00010446 # test_event = ALIGN_CODE; /* alignment fault expected */ ! 33: 33 00010446 0d 35 efffffffdf movl $53,_test_event ! 34: 34 0001044D # exp_event = FALSE; /* ... but not yet */ ! 35: 35 0001044D 4d efffffffd9 clrl _exp_event ! 36: 36 00010453 # asm("movab _pipe4_ret,_event_return"); /* post event addr */ ! 37: 37 00010453 e9 ef000000dd efffffffce movab _pipe4_ret,_event_return ! 38: 38 0001045E # for( index = 0; index < max_pipe4_index; index++ ) ! 39: 39 0001045E 4d efffffffc8 clrl _index ! 40: 40 00010464 L387: ! 41: 41 00010464 1d efffffffc2 efffffffbd cmpl _index,_max_pipe4_index ! 42: 42 0001046F 91 03 13 0119 jgeq L386 ! 43: 43 00010474 # { ! 44: 44 00010474 # dbl_ld_acc = pipe4_data[index].op_1; /* get the data */ ! 45: 45 00010474 5c 18 efffffffb1 50 mull3 $24,_index,r0 ! 46: 46 0001047C 0c 8f00000000 50 addl2 $_pipe4_data,r0 ! 47: 47 00010483 0d a004 efffffffa5 movl 4(r0),_dbl_ld_acc+4 ! 48: 48 0001048B 0d 60 efffffff9a movl (r0),_dbl_ld_acc ! 49: 49 00010492 # dbl_value_1 = pipe4_data[index].op_2; ! 50: 50 00010492 5c 18 efffffff93 50 mull3 $24,_index,r0 ! 51: 51 0001049A 0c 8f00000008 50 addl2 $_pipe4_data+8,r0 ! 52: 52 000104A1 0d a004 efffffff87 movl 4(r0),_dbl_value_1+4 ! 53: 53 000104A9 0d 60 efffffff7c movl (r0),_dbl_value_1 ! 54: 54 000104B0 # dbl_expected = pipe4_data[index].exp; ! 55: 55 000104B0 5c 18 efffffff75 50 mull3 $24,_index,r0 ! 56: 56 000104B8 0c 8f00000010 50 addl2 $_pipe4_data+16,r0 ! 57: 57 000104BF 0d a004 efffffff69 movl 4(r0),_dbl_expected+4 ! 58: 58 000104C7 0d 60 efffffff5e movl (r0),_dbl_expected ! 59: 59 000104CE # sgl_value_1 = 0x12345; ! 60: 60 000104CE 0d 8f00012345 efffffff53 movl $74565,_sgl_value_1 ! 61: 61 000104D9 # sgl_value_2 = -12345; ! 62: 62 000104D9 0d 89cfc7 efffffff4a movl $-12345,_sgl_value_2 ! 63: 63 000104E2 # asm(".globl _pipe4_lp1"); ! 64: 64 000104E2 .globl _pipe4_lp1 ! 65: 65 000104E2 # asm("_pipe4_lp1:"); ! 66: 66 000104E2 _pipe4_lp1: ! 67: 67 000104E2 # asm("bispsw $0x60"); /* enable ovfl & undfl */ ! 68: 68 000104E2 8b 8860 bispsw $0x60 ! 69: 69 000104E5 # asm("ldf _dbl_ld_acc"); /* load the Acc. */ ! 70: 70 000104E5 06 efffffff41 ldf _dbl_ld_acc ! 71: 71 000104EB # exp_event = test_event; /* expect event soon */ ! 72: 72 000104EB 0d efffffff3b efffffff36 movl _test_event,_exp_event ! 73: 73 000104F6 # asm("mulf _dbl_value_1"); ! 74: 74 000104F6 e6 efffffff30 mulf _dbl_value_1 ! 75: 75 000104FC # asm("mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3+3"); ! 76: 76 000104FC 5c efffffff2a efffffff25 mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3+3 ! 77: efffffff23 ! 78: 77 0001050C # asm("negf"); ! 79: 78 0001050C b6 negf ! 80: 79 0001050D # /* ! 81: 80 0001050D # * If we got to here then there was no event ! 82: 81 0001050D # */ ! 83: 82 0001050D # if( force_loop ) ! 84: 83 0001050D 5d efffffff19 tstl _force_loop ! 85: 84 00010513 31 03 jeql L388 ! 86: 85 00010515 # asm("brw _pipe4_lp1");; /* loop on the error */ ! 87: Assemb00027BEC # asm("brw _pipe4_lp1");; /* loop on the error */ ! 88: "pipe400027BEC 86: WARNING: brw: destination label is external ! 89: 86 00010515 13 ffca brw _pipe4_lp1 ! 90: 87 00010518 L388: ! 91: 88 00010518 # exp_event = FALSE; /* reset event expected flag */ ! 92: 89 00010518 4d efffffff0e clrl _exp_event ! 93: 90 0001051E # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */ ! 94: 91 0001051E 0d efffffff08 5d movl _pre_event_fp,fp ! 95: 92 00010525 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */ ! 96: 93 00010525 0d efffffff01 5e movl _pre_event_sp,sp ! 97: 94 0001052C # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */ ! 98: 95 0001052C 9b 8860 bicpsw $0x60 ! 99: 96 0001052F # no_pipe4_evt();; /* report the error */ ! 100: 97 0001052F fe 04 ef0000005c callf $4,_no_pipe4_evt ! 101: 98 00010536 # /* ! 102: 99 00010536 # * Come here after the event ! 103: 100 00010536 # */ ! 104: 101 00010536 # asm(".globl _pipe4_ret"); ! 105: 102 00010536 .globl _pipe4_ret ! 106: 103 00010536 # asm("_pipe4_ret:"); ! 107: 104 00010536 _pipe4_ret: ! 108: 105 00010536 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */ ! 109: 106 00010536 0d effffffef0 5d movl _pre_event_fp,fp ! 110: 107 0001053D # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */ ! 111: 108 0001053D 0d effffffee9 5e movl _pre_event_sp,sp ! 112: 109 00010544 # if( force_loop ) ! 113: 110 00010544 5d effffffee2 tstl _force_loop ! 114: 111 0001054A 31 03 jeql L390 ! 115: 112 0001054C # asm("brw _pipe4_lp1");; /* loop on the error */ ! 116: "pipe400027BEC 113: WARNING: brw: destination label is external ! 117: 113 0001054C 13 ff93 brw _pipe4_lp1 ! 118: 114 0001054F L390: ! 119: 115 0001054F # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */ ! 120: 116 0001054F 9b 8860 bicpsw $0x60 ! 121: 117 00010552 # if( post_evt_acc.m == (dbl_expected.m ^ 0x80000000) ) ! 122: 118 00010552 dc 8f80000000 effffffecf xorl3 $-2147483648,_dbl_expected,r0 ! 123: 50 ! 124: 119 0001055E 1d effffffec8 50 cmpl _post_evt_acc,r0 ! 125: 120 00010565 21 09 jneq L391 ! 126: 121 00010567 # pipe4_queue_er(); /* fpp queue not cleared */ ! 127: 122 00010567 fe 04 ef00000216 callf $4,_pipe4_queue_er ! 128: 123 0001056E # else if( post_evt_acc.m != dbl_expected.m ) ! 129: 124 0001056E 11 14 jbr L393 ! 130: 125 00010570 L391: ! 131: 126 00010570 1d effffffeb6 effffffeb1 cmpl _post_evt_acc,_dbl_expected ! 132: 127 0001057B 31 07 jeql L394 ! 133: 128 0001057D # bad_pipe4_result(); /* incorrect result error */ ! 134: 129 0001057D fe 04 ef000000e6 callf $4,_bad_pipe4_result ! 135: 130 00010584 # } ! 136: 131 00010584 L394: ! 137: 132 00010584 L393: ! 138: 133 00010584 L385: ! 139: 134 00010584 6d effffffea2 incl _index ! 140: 135 0001058A 13 fed7 jbr L387 ! 141: 136 0001058D L386: ! 142: 137 0001058D # } ! 143: 138 0001058D 40 ret#2 ! 144: 139 0001058E .set L381,0x0 ! 145: 140 0001058E L383: ! 146: 141 0001058E 13 fea0 jbr L384 ! 147: 142 00010591 .data ! 148: 143 000005c4 * .text ! 149: 144 00010591 00 .align 1 ! 150: 145 00010592 .globl _no_pipe4_evt ! 151: 146 00010592 _no_pipe4_evt: ! 152: 147 00010592 0000 .word L396 ! 153: 148 00010594 # ! 154: 149 00010594 # ! 155: 150 00010594 # ! 156: 151 00010594 # /**************************************************************************** ! 157: 152 00010594 # * Report an "EVENT NOT DETECTED" error ! 158: 153 00010594 # * ! 159: 154 00010594 # * Cycle: xx. EVT test xx. subtest xx. no alignment fault. index = xx ! 160: 155 00010594 # * inst = LDF op1, MULF op2, MULL3 op3,op4,op5 (alignment fault on MULL3) ! 161: 156 00010594 # * op1 = xxxxxxxx, op2 = xxxxxxxx ! 162: 157 00010594 # * op3 = xxxxxxxx, op4 = xxxxxxxx, addr op5 = xxxxxxxx ! 163: 158 00010594 # ****************************************************************************/ ! 164: 159 00010594 # no_pipe4_evt() ! 165: 160 00010594 # { ! 166: 161 00010594 13 00d0 jbr L398 ! 167: 162 00010597 L399: ! 168: 163 00010597 # errcnt++; /* bump the error count */ ! 169: 164 00010597 6d effffffe8f incl _errcnt ! 170: 165 0001059D # if ( prt_error ) ! 171: 166 0001059D 5d effffffe89 tstl _prt_error ! 172: 167 000105A3 21 03 13 0098 jeql L400 ! 173: 168 000105A8 # { ! 174: 169 000105A8 # print_pipe4_er( ". no alignment fault."); ! 175: 170 000105A8 .data 1 ! 176: 171 000005c4 * L402: ! 177: 172 000005c4 * 2E206E6F20616C69676E6D656 .ascii ". no alignment fault.\0" ! 178: E74206661756C742E00 ! 179: 173 000005da * .text ! 180: 174 000105A8 dd 8f000005c4 pushl $L402 ! 181: 175 000105AE fe 08 ef000002e9 callf $8,_print_pipe4_er ! 182: 176 000105B5 # writes("op1 = "); ! 183: 177 000105B5 .data 1 ! 184: 178 000005da * L404: ! 185: 179 000005da * 6F7031203D2000 .ascii "op1 = \0" ! 186: 180 000005e1 * .text ! 187: 181 000105B5 dd 8f000005da pushl $L404 ! 188: 182 000105BB fe 08 effffffe6a callf $8,_writes ! 189: 183 000105C2 # write32h( dbl_ld_acc.m ); ! 190: 184 000105C2 dd effffffe64 pushl _dbl_ld_acc ! 191: 185 000105C8 fe 08 effffffe5d callf $8,_write32h ! 192: 186 000105CF # writes(", op2 = "); ! 193: 187 000105CF .data 1 ! 194: 188 000005e1 * L406: ! 195: 189 000005e1 * 2C20206F7032203D2000 .ascii ", op2 = \0" ! 196: 190 000005eb * .text ! 197: 191 000105CF dd 8f000005e1 pushl $L406 ! 198: 192 000105D5 fe 08 effffffe50 callf $8,_writes ! 199: 193 000105DC # write32h( dbl_value_1.m ); ! 200: 194 000105DC dd effffffe4a pushl _dbl_value_1 ! 201: 195 000105E2 fe 08 effffffe43 callf $8,_write32h ! 202: 196 000105E9 # writes("\nop3 = "); ! 203: 197 000105E9 .data 1 ! 204: 198 000005eb * L407: ! 205: 199 000005eb * 0A6F7033203D2000 .ascii "\12op3 = \0" ! 206: 200 000005f3 * .text ! 207: 201 000105E9 dd 8f000005eb pushl $L407 ! 208: 202 000105EF fe 08 effffffe36 callf $8,_writes ! 209: 203 000105F6 # write32h( sgl_value_1 ); ! 210: 204 000105F6 dd effffffe30 pushl _sgl_value_1 ! 211: 205 000105FC fe 08 effffffe29 callf $8,_write32h ! 212: 206 00010603 # writes(", op4 = "); ! 213: 207 00010603 .data 1 ! 214: 208 000005f3 * L408: ! 215: 209 000005f3 * 2C20206F7034203D2000 .ascii ", op4 = \0" ! 216: 210 000005fd * .text ! 217: 211 00010603 dd 8f000005f3 pushl $L408 ! 218: 212 00010609 fe 08 effffffe1c callf $8,_writes ! 219: 213 00010610 # write32h( sgl_value_2 ); ! 220: 214 00010610 dd effffffe16 pushl _sgl_value_2 ! 221: 215 00010616 fe 08 effffffe0f callf $8,_write32h ! 222: 216 0001061D # writes(", addr of op5 = "); ! 223: 217 0001061D .data 1 ! 224: 218 000005fd * L409: ! 225: 219 000005fd * 2C202061646472206F66206F7 .ascii ", addr of op5 = \0" ! 226: 035203D2000 ! 227: 220 0000060f * .text ! 228: 221 0001061D dd 8f000005fd pushl $L409 ! 229: 222 00010623 fe 08 effffffe02 callf $8,_writes ! 230: 223 0001062A # write32h( ( (int)&sgl_value_3 )+1 ); ! 231: 224 0001062A dd 8f00000001 pushl $_sgl_value_3+1 ! 232: 225 00010630 fe 08 effffffdf5 callf $8,_write32h ! 233: 226 00010637 # writec('\n'); ! 234: 227 00010637 dd 0a pushl $10 ! 235: 228 00010639 fe 08 effffffdec callf $8,_writec ! 236: 229 00010640 # } ! 237: 230 00010640 # if ( halt_flg ) /* halt on error? */ ! 238: 231 00010640 L400: ! 239: 232 00010640 5d effffffde6 tstl _halt_flg ! 240: 233 00010646 31 09 jeql L411 ! 241: 234 00010648 # pipe4_halt( 1 ); ! 242: 235 00010648 dd 01 pushl $1 ! 243: 236 0001064A fe 08 ef000002f9 callf $8,_pipe4_halt ! 244: 237 00010651 # if ( loop_on_err ) ! 245: 238 00010651 L411: ! 246: 239 00010651 5d effffffdd5 tstl _loop_on_err ! 247: 240 00010657 31 0d jeql L413 ! 248: 241 00010659 # { ! 249: 242 00010659 # force_loop = TRUE; /* set the force loop flag */ ! 250: 243 00010659 0d 01 effffffdcc movl $1,_force_loop ! 251: 244 00010660 # asm("jmp _pipe4_lp1"); /* and loop */ ! 252: 245 00010660 71 effffffe7c jmp _pipe4_lp1 ! 253: 246 00010666 # }; ! 254: 247 00010666 L413: ! 255: 248 00010666 # } ! 256: 249 00010666 40 ret#2 ! 257: 250 00010667 .set L396,0x0 ! 258: 251 00010667 L398: ! 259: 252 00010667 13 ff2d jbr L399 ! 260: 253 0001066A .data ! 261: 254 000005c4 * .text ! 262: 255 0001066A .align 1 ! 263: 256 0001066A .globl _bad_pipe4_result ! 264: 257 0001066A _bad_pipe4_result: ! 265: 258 0001066A 0000 .word L414 ! 266: 259 0001066C # ! 267: 260 0001066C # ! 268: 261 0001066C # ! 269: 262 0001066C # ! 270: 263 0001066C # /**************************************************************************** ! 271: 264 0001066C # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error ! 272: 265 0001066C # * ! 273: 266 0001066C # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. index = xx ! 274: 267 0001066C # * inst = LDF op1, MULF op2, MULL3 op3,op4,op5 (alignment fault on MULL3) ! 275: 268 0001066C # * The NEGF should not have been executed. ! 276: 269 0001066C # * op1 = xxxxxxxx, op2 = xxxxxxxx, final Acc. = xxxxxxxx, expected = xxxxxxxx ! 277: 270 0001066C # * op3 = xxxxxxxx, op4 = xxxxxxxx, addr op5 = xxxxxxxx ! 278: 271 0001066C # ****************************************************************************/ ! 279: 272 0001066C # bad_pipe4_result() ! 280: 273 0001066C # { ! 281: 274 0001066C 13 0111 jbr L416 ! 282: 275 0001066F L417: ! 283: 276 0001066F # errcnt++; /* bump the error count */ ! 284: 277 0001066F 6d effffffdb7 incl _errcnt ! 285: 278 00010675 # if ( prt_error ) ! 286: 279 00010675 5d effffffdb1 tstl _prt_error ! 287: 280 0001067B 21 03 13 00d9 jeql L418 ! 288: 281 00010680 # { ! 289: 282 00010680 # print_pipe4_er(". Bad final Accumulator."); ! 290: 283 00010680 .data 1 ! 291: 284 0000060f * L419: ! 292: 285 0000060f * 2E204261642066696E616C204 .ascii ". Bad final Accumulator.\0" ! 293: 16363756D756C61746F722E00 ! 294: 286 00000628 * .text ! 295: 287 00010680 dd 8f0000060f pushl $L419 ! 296: 288 00010686 fe 08 ef00000211 callf $8,_print_pipe4_er ! 297: 289 0001068D # writes("The NEGF should not have been executed.\n"); ! 298: 290 0001068D .data 1 ! 299: 291 00000628 * L420: ! 300: 292 00000628 * 546865204E4547462073686F7 .ascii "The NEGF should not have been executed.\12\0" ! 301: 56C64206E6F74206861766520 ! 302: 6265656E20657865637574656 ! 303: 42E0A00 ! 304: 293 00000651 * .text ! 305: 294 0001068D dd 8f00000628 pushl $L420 ! 306: 295 00010693 fe 08 effffffd92 callf $8,_writes ! 307: 296 0001069A # writes("op1 = "); ! 308: 297 0001069A .data 1 ! 309: 298 00000651 * L421: ! 310: 299 00000651 * 6F7031203D2000 .ascii "op1 = \0" ! 311: 300 00000658 * .text ! 312: 301 0001069A dd 8f00000651 pushl $L421 ! 313: 302 000106A0 fe 08 effffffd85 callf $8,_writes ! 314: 303 000106A7 # write32h( dbl_value_1.m ); ! 315: 304 000106A7 dd effffffd7f pushl _dbl_value_1 ! 316: 305 000106AD fe 08 effffffd78 callf $8,_write32h ! 317: 306 000106B4 # writes(", op2 = "); ! 318: 307 000106B4 .data 1 ! 319: 308 00000658 * L422: ! 320: 309 00000658 * 2C206F7032203D2000 .ascii ", op2 = \0" ! 321: 310 00000661 * .text ! 322: 311 000106B4 dd 8f00000658 pushl $L422 ! 323: 312 000106BA fe 08 effffffd6b callf $8,_writes ! 324: 313 000106C1 # write32h( dbl_value_2.m ); ! 325: 314 000106C1 dd effffffd65 pushl _dbl_value_2 ! 326: 315 000106C7 fe 08 effffffd5e callf $8,_write32h ! 327: 316 000106CE # writes(", final Acc. = "); ! 328: 317 000106CE .data 1 ! 329: 318 00000661 * L423: ! 330: 319 00000661 * 2C2066696E616C204163632E2 .ascii ", final Acc. = \0" ! 331: 03D2000 ! 332: 320 00000671 * .text ! 333: 321 000106CE dd 8f00000661 pushl $L423 ! 334: 322 000106D4 fe 08 effffffd51 callf $8,_writes ! 335: 323 000106DB # write32h( post_evt_acc.m ); ! 336: 324 000106DB dd effffffd4b pushl _post_evt_acc ! 337: 325 000106E1 fe 08 effffffd44 callf $8,_write32h ! 338: 326 000106E8 # writes(", expected = "); ! 339: 327 000106E8 .data 1 ! 340: 328 00000671 * L424: ! 341: 329 00000671 * 2C20657870656374656420202 .ascii ", expected = \0" ! 342: 03D2000 ! 343: 330 00000681 * .text ! 344: 331 000106E8 dd 8f00000671 pushl $L424 ! 345: 332 000106EE fe 08 effffffd37 callf $8,_writes ! 346: 333 000106F5 # write32h( dbl_expected.m ); ! 347: 334 000106F5 dd effffffd31 pushl _dbl_expected ! 348: 335 000106FB fe 08 effffffd2a callf $8,_write32h ! 349: 336 00010702 # writes("\nop3 = "); ! 350: 337 00010702 .data 1 ! 351: 338 00000681 * L425: ! 352: 339 00000681 * 0A6F7033203D2000 .ascii "\12op3 = \0" ! 353: 340 00000689 * .text ! 354: 341 00010702 dd 8f00000681 pushl $L425 ! 355: 342 00010708 fe 08 effffffd1d callf $8,_writes ! 356: 343 0001070F # write32h( sgl_value_1 ); ! 357: 344 0001070F dd effffffd17 pushl _sgl_value_1 ! 358: 345 00010715 fe 08 effffffd10 callf $8,_write32h ! 359: 346 0001071C # writes(", op4 = "); ! 360: 347 0001071C .data 1 ! 361: 348 00000689 * L426: ! 362: 349 00000689 * 2C206F7034203D2000 .ascii ", op4 = \0" ! 363: 350 00000692 * .text ! 364: 351 0001071C dd 8f00000689 pushl $L426 ! 365: 352 00010722 fe 08 effffffd03 callf $8,_writes ! 366: 353 00010729 # write32h( sgl_value_2 ); ! 367: 354 00010729 dd effffffcfd pushl _sgl_value_2 ! 368: 355 0001072F fe 08 effffffcf6 callf $8,_write32h ! 369: 356 00010736 # writes(", addr of op5 = "); ! 370: 357 00010736 .data 1 ! 371: 358 00000692 * L427: ! 372: 359 00000692 * 2C20202061646472206F66206 .ascii ", addr of op5 = \0" ! 373: F7035203D2000 ! 374: 360 000006a5 * .text ! 375: 361 00010736 dd 8f00000692 pushl $L427 ! 376: 362 0001073C fe 08 effffffce9 callf $8,_writes ! 377: 363 00010743 # write32h( ( (int)&sgl_value_3 )+1 ); ! 378: 364 00010743 dd 8f00000001 pushl $_sgl_value_3+1 ! 379: 365 00010749 fe 08 effffffcdc callf $8,_write32h ! 380: 366 00010750 # writec('\n'); ! 381: 367 00010750 dd 0a pushl $10 ! 382: 368 00010752 fe 08 effffffcd3 callf $8,_writec ! 383: 369 00010759 # } ! 384: 370 00010759 # if ( halt_flg ) /* halt on error? */ ! 385: 371 00010759 L418: ! 386: 372 00010759 5d effffffccd tstl _halt_flg ! 387: 373 0001075F 31 09 jeql L428 ! 388: 374 00010761 # pipe4_halt( 2 ); ! 389: 375 00010761 dd 02 pushl $2 ! 390: 376 00010763 fe 08 ef000001e0 callf $8,_pipe4_halt ! 391: 377 0001076A # if ( loop_on_err ) ! 392: 378 0001076A L428: ! 393: 379 0001076A 5d effffffcbc tstl _loop_on_err ! 394: 380 00010770 31 0d jeql L429 ! 395: 381 00010772 # { ! 396: 382 00010772 # force_loop = TRUE; /* set the force loop flag */ ! 397: 383 00010772 0d 01 effffffcb3 movl $1,_force_loop ! 398: 384 00010779 # asm("jmp _pipe4_lp1"); /* and loop */ ! 399: 385 00010779 71 effffffd63 jmp _pipe4_lp1 ! 400: 386 0001077F # }; ! 401: 387 0001077F L429: ! 402: 388 0001077F # } ! 403: 389 0001077F 40 ret#2 ! 404: 390 00010780 .set L414,0x0 ! 405: 391 00010780 L416: ! 406: 392 00010780 13 feec jbr L417 ! 407: 393 00010783 .data ! 408: 394 000005c4 * .text ! 409: 395 00010783 00 .align 1 ! 410: 396 00010784 .globl _pipe4_queue_er ! 411: 397 00010784 _pipe4_queue_er: ! 412: 398 00010784 0000 .word L430 ! 413: 399 00010786 # ! 414: 400 00010786 # ! 415: 401 00010786 # ! 416: 402 00010786 # ! 417: 403 00010786 # ! 418: 404 00010786 # /**************************************************************************** ! 419: 405 00010786 # * Report an "FPP Queue apparently not cleared" error ! 420: 406 00010786 # * ! 421: 407 00010786 # * Cycle: xx. EVT test xx. subtest xx. Fpp Queue not cleared. index = xx ! 422: 408 00010786 # * inst = LDF op1, MULF op2, MULL3 op3,op4,op5, NEGF (alignment fault on MULL3) ! 423: 409 00010786 # * The NEGF should not have been executed but apparently was. ! 424: 410 00010786 # * op1 = xxxxxxxx, op2 = xxxxxxxx, final Acc. = xxxxxxxx, expected = xxxxxxxx ! 425: 411 00010786 # * op3 = xxxxxxxx, op4 = xxxxxxxx, addr op5 = xxxxxxxx ! 426: 412 00010786 # ****************************************************************************/ ! 427: 413 00010786 # pipe4_queue_er() ! 428: 414 00010786 # { ! 429: 415 00010786 13 0111 jbr L432 ! 430: 416 00010789 L433: ! 431: 417 00010789 # errcnt++; /* bump the error count */ ! 432: 418 00010789 6d effffffc9d incl _errcnt ! 433: 419 0001078F # if ( prt_error ) ! 434: 420 0001078F 5d effffffc97 tstl _prt_error ! 435: 421 00010795 21 03 13 00d9 jeql L434 ! 436: 422 0001079A # { ! 437: 423 0001079A # print_pipe4_er(". Fpp Queue not cleared."); ! 438: 424 0001079A .data 1 ! 439: 425 000006a5 * L435: ! 440: 426 000006a5 * 2E20467070205175657565206 .ascii ". Fpp Queue not cleared.\0" ! 441: E6F7420636C65617265642E00 ! 442: 427 000006be * .text ! 443: 428 0001079A dd 8f000006a5 pushl $L435 ! 444: 429 000107A0 fe 08 ef000000f7 callf $8,_print_pipe4_er ! 445: 430 000107A7 # writes( ! 446: 431 000107A7 # "The NEGF should not have been executed but apparently was.\n"); ! 447: 432 000107A7 .data 1 ! 448: 433 000006be * L436: ! 449: 434 000006be * 546865204E4547462073686F7 .ascii "The NEGF should not have been executed but apparently was.\12\0" ! 450: 56C64206E6F74206861766520 ! 451: 6265656E20657865637574656 ! 452: 420627574206170706172656E ! 453: 746C79207761732E0A00 ! 454: 435 000006fa * .text ! 455: 436 000107A7 dd 8f000006be pushl $L436 ! 456: 437 000107AD fe 08 effffffc78 callf $8,_writes ! 457: 438 000107B4 # writes("op1 = "); ! 458: 439 000107B4 .data 1 ! 459: 440 000006fa * L437: ! 460: 441 000006fa * 6F7031203D2000 .ascii "op1 = \0" ! 461: 442 00000701 * .text ! 462: 443 000107B4 dd 8f000006fa pushl $L437 ! 463: 444 000107BA fe 08 effffffc6b callf $8,_writes ! 464: 445 000107C1 # write32h( dbl_value_1.m ); ! 465: 446 000107C1 dd effffffc65 pushl _dbl_value_1 ! 466: 447 000107C7 fe 08 effffffc5e callf $8,_write32h ! 467: 448 000107CE # writes(", op2 = "); ! 468: 449 000107CE .data 1 ! 469: 450 00000701 * L438: ! 470: 451 00000701 * 2C206F7032203D2000 .ascii ", op2 = \0" ! 471: 452 0000070a * .text ! 472: 453 000107CE dd 8f00000701 pushl $L438 ! 473: 454 000107D4 fe 08 effffffc51 callf $8,_writes ! 474: 455 000107DB # write32h( dbl_value_2.m ); ! 475: 456 000107DB dd effffffc4b pushl _dbl_value_2 ! 476: 457 000107E1 fe 08 effffffc44 callf $8,_write32h ! 477: 458 000107E8 # writes(", final Acc. = "); ! 478: 459 000107E8 .data 1 ! 479: 460 0000070a * L439: ! 480: 461 0000070a * 2C2066696E616C204163632E2 .ascii ", final Acc. = \0" ! 481: 03D2000 ! 482: 462 0000071a * .text ! 483: 463 000107E8 dd 8f0000070a pushl $L439 ! 484: 464 000107EE fe 08 effffffc37 callf $8,_writes ! 485: 465 000107F5 # write32h( post_evt_acc.m ); ! 486: 466 000107F5 dd effffffc31 pushl _post_evt_acc ! 487: 467 000107FB fe 08 effffffc2a callf $8,_write32h ! 488: 468 00010802 # writes(", expected = "); ! 489: 469 00010802 .data 1 ! 490: 470 0000071a * L440: ! 491: 471 0000071a * 2C20657870656374656420202 .ascii ", expected = \0" ! 492: 03D2000 ! 493: 472 0000072a * .text ! 494: 473 00010802 dd 8f0000071a pushl $L440 ! 495: 474 00010808 fe 08 effffffc1d callf $8,_writes ! 496: 475 0001080F # write32h( dbl_expected.m ); ! 497: 476 0001080F dd effffffc17 pushl _dbl_expected ! 498: 477 00010815 fe 08 effffffc10 callf $8,_write32h ! 499: 478 0001081C # writes("\nop3 = "); ! 500: 479 0001081C .data 1 ! 501: 480 0000072a * L441: ! 502: 481 0000072a * 0A6F7033203D2000 .ascii "\12op3 = \0" ! 503: 482 00000732 * .text ! 504: 483 0001081C dd 8f0000072a pushl $L441 ! 505: 484 00010822 fe 08 effffffc03 callf $8,_writes ! 506: 485 00010829 # write32h( sgl_value_1 ); ! 507: 486 00010829 dd effffffbfd pushl _sgl_value_1 ! 508: 487 0001082F fe 08 effffffbf6 callf $8,_write32h ! 509: 488 00010836 # writes(", op4 = "); ! 510: 489 00010836 .data 1 ! 511: 490 00000732 * L442: ! 512: 491 00000732 * 2C206F7034203D2000 .ascii ", op4 = \0" ! 513: 492 0000073b * .text ! 514: 493 00010836 dd 8f00000732 pushl $L442 ! 515: 494 0001083C fe 08 effffffbe9 callf $8,_writes ! 516: 495 00010843 # write32h( sgl_value_2 ); ! 517: 496 00010843 dd effffffbe3 pushl _sgl_value_2 ! 518: 497 00010849 fe 08 effffffbdc callf $8,_write32h ! 519: 498 00010850 # writes(", addr of op5 = "); ! 520: 499 00010850 .data 1 ! 521: 500 0000073b * L443: ! 522: 501 0000073b * 2C20202061646472206F66206 .ascii ", addr of op5 = \0" ! 523: F7035203D2000 ! 524: 502 0000074e * .text ! 525: 503 00010850 dd 8f0000073b pushl $L443 ! 526: 504 00010856 fe 08 effffffbcf callf $8,_writes ! 527: 505 0001085D # write32h( ( (int)&sgl_value_3 )+1 ); ! 528: 506 0001085D dd 8f00000001 pushl $_sgl_value_3+1 ! 529: 507 00010863 fe 08 effffffbc2 callf $8,_write32h ! 530: 508 0001086A # writec('\n'); ! 531: 509 0001086A dd 0a pushl $10 ! 532: 510 0001086C fe 08 effffffbb9 callf $8,_writec ! 533: 511 00010873 # } ! 534: 512 00010873 # if ( halt_flg ) /* halt on error? */ ! 535: 513 00010873 L434: ! 536: 514 00010873 5d effffffbb3 tstl _halt_flg ! 537: 515 00010879 31 09 jeql L444 ! 538: 516 0001087B # pipe4_halt( 3 ); ! 539: 517 0001087B dd 03 pushl $3 ! 540: 518 0001087D fe 08 ef000000c6 callf $8,_pipe4_halt ! 541: 519 00010884 # if ( loop_on_err ) ! 542: 520 00010884 L444: ! 543: 521 00010884 5d effffffba2 tstl _loop_on_err ! 544: 522 0001088A 31 0d jeql L445 ! 545: 523 0001088C # { ! 546: 524 0001088C # force_loop = TRUE; /* set the force loop flag */ ! 547: 525 0001088C 0d 01 effffffb99 movl $1,_force_loop ! 548: 526 00010893 # asm("jmp _pipe4_lp1"); /* and loop */ ! 549: 527 00010893 71 effffffc49 jmp _pipe4_lp1 ! 550: 528 00010899 # }; ! 551: 529 00010899 L445: ! 552: 530 00010899 # } ! 553: 531 00010899 40 ret#2 ! 554: 532 0001089A .set L430,0x0 ! 555: 533 0001089A L432: ! 556: 534 0001089A 13 feec jbr L433 ! 557: 535 0001089D .data ! 558: 536 000005c4 * .text ! 559: 537 0001089D 00 .align 1 ! 560: 538 0001089E .globl _print_pipe4_er ! 561: 539 0001089E _print_pipe4_er: ! 562: 540 0001089E 0000 .word L446 ! 563: 541 000108A0 # ! 564: 542 000108A0 # ! 565: 543 000108A0 # ! 566: 544 000108A0 # /**************************************************************************** ! 567: 545 000108A0 # * print an error message of the form: ! 568: 546 000108A0 # * ! 569: 547 000108A0 # * Cycle: xx. EVT test xx. subtest xx. <your message here> index = xx ! 570: 548 000108A0 # * inst = LDF op1; MULF op2; MULL3 op3,op4,op5; NEGF; (alignment fault on MULL3) ! 571: 549 000108A0 # ****************************************************************************/ ! 572: 550 000108A0 # print_pipe4_er( msg ) ! 573: 551 000108A0 # char *msg; /* error message to print */ ! 574: 552 000108A0 # { ! 575: 553 000108A0 13 00a3 jbr L448 ! 576: 554 000108A3 L449: ! 577: 555 000108A3 # if( errcnt == 1 ) /* 1st error? */ ! 578: 556 000108A3 1d effffffb83 01 cmpl _errcnt,$1 ! 579: 557 000108AA 21 0d jneq L450 ! 580: 558 000108AC # writes(" \n"); /* start a new print line */ ! 581: 559 000108AC .data 1 ! 582: 560 0000074e * L451: ! 583: 561 0000074e * 200A00 .ascii " \12\0" ! 584: 562 00000751 * .text ! 585: 563 000108AC dd 8f0000074e pushl $L451 ! 586: 564 000108B2 fe 08 effffffb73 callf $8,_writes ! 587: 565 000108B9 # writes("Cycle: "); ! 588: 566 000108B9 L450: ! 589: 567 000108B9 .data 1 ! 590: 568 00000751 * L452: ! 591: 569 00000751 * 4379636C653A2000 .ascii "Cycle: \0" ! 592: 570 00000759 * .text ! 593: 571 000108B9 dd 8f00000751 pushl $L452 ! 594: 572 000108BF fe 08 effffffb66 callf $8,_writes ! 595: 573 000108C6 # writed( cycle ); ! 596: 574 000108C6 dd effffffb60 pushl _cycle ! 597: 575 000108CC fe 08 effffffb59 callf $8,_writed ! 598: 576 000108D3 # writes(" EVT test "); ! 599: 577 000108D3 .data 1 ! 600: 578 00000759 * L454: ! 601: 579 00000759 * 202045565420746573742000 .ascii " EVT test \0" ! 602: 580 00000765 * .text ! 603: 581 000108D3 dd 8f00000759 pushl $L454 ! 604: 582 000108D9 fe 08 effffffb4c callf $8,_writes ! 605: 583 000108E0 # writed( test_no ); ! 606: 584 000108E0 dd effffffb46 pushl _test_no ! 607: 585 000108E6 fe 08 effffffb3f callf $8,_writed ! 608: 586 000108ED # writes(". subtest "); ! 609: 587 000108ED .data 1 ! 610: 588 00000765 * L455: ! 611: 589 00000765 * 2E20737562746573742000 .ascii ". subtest \0" ! 612: 590 00000770 * .text ! 613: 591 000108ED dd 8f00000765 pushl $L455 ! 614: 592 000108F3 fe 08 effffffb32 callf $8,_writes ! 615: 593 000108FA # writed( subtest ); ! 616: 594 000108FA dd effffffb2c pushl _subtest ! 617: 595 00010900 fe 08 effffffb25 callf $8,_writed ! 618: 596 00010907 # writes( msg ); /* print the error message */ ! 619: 597 00010907 dd ad04 pushl 4(fp) ! 620: 598 0001090A fe 08 effffffb1b callf $8,_writes ! 621: 599 00010911 # writes(" index = "); ! 622: 600 00010911 .data 1 ! 623: 601 00000770 * L456: ! 624: 602 00000770 * 20696E646578203D2000 .ascii " index = \0" ! 625: 603 0000077a * .text ! 626: 604 00010911 dd 8f00000770 pushl $L456 ! 627: 605 00010917 fe 08 effffffb0e callf $8,_writes ! 628: 606 0001091E # writed( index ); ! 629: 607 0001091E dd effffffb08 pushl _index ! 630: 608 00010924 fe 08 effffffb01 callf $8,_writed ! 631: 609 0001092B # writes("\ninst = LDF op1; MULF op2; MULL3 op3,op4,op5; NEGF"); ! 632: 610 0001092B .data 1 ! 633: 611 0000077a * L457: ! 634: 612 0000077a * 0A696E7374203D204C4446206 .ascii "\12inst = LDF op1; MULF op2; MULL3 op3,op4,op5; NEGF\0" ! 635: F70313B204D554C46206F7032 ! 636: 3B204D554C4C33206F70332C6 ! 637: F70342C6F70353B204E454746 ! 638: 00 ! 639: 613 000007ad * .text ! 640: 614 0001092B dd 8f0000077a pushl $L457 ! 641: 615 00010931 fe 08 effffffaf4 callf $8,_writes ! 642: 616 00010938 # writes(" (alignment fault on MULL3)\n"); ! 643: 617 00010938 .data 1 ! 644: 618 000007ad * L458: ! 645: 619 000007ad * 2028616C69676E6D656E74206 .ascii " (alignment fault on MULL3)\12\0" ! 646: 661756C74206F6E204D554C4C ! 647: 33290A00 ! 648: 620 000007ca * .text ! 649: 621 00010938 dd 8f000007ad pushl $L458 ! 650: 622 0001093E fe 08 effffffae7 callf $8,_writes ! 651: 623 00010945 # } ! 652: 624 00010945 40 ret#2 ! 653: 625 00010946 .set L446,0x0 ! 654: 626 00010946 L448: ! 655: 627 00010946 13 ff5a jbr L449 ! 656: 628 00010949 .data ! 657: 629 000005c4 * .text ! 658: 630 00010949 00 .align 1 ! 659: 631 0001094A .globl _pipe4_halt ! 660: 632 0001094A _pipe4_halt: ! 661: 633 0001094A 0000 .word L459 ! 662: 634 0001094C # ! 663: 635 0001094C # ! 664: 636 0001094C # ! 665: 637 0001094C # /**************************************************************************** ! 666: 638 0001094C # * Halt on Error routine ! 667: 639 0001094C # ****************************************************************************/ ! 668: 640 0001094C # pipe4_halt( code ) ! 669: 641 0001094C # int code; /* error code to halt with */ ! 670: 642 0001094C # { ! 671: 643 0001094C 13 009b jbr L461 ! 672: 644 0001094F L462: ! 673: 645 0001094F # err_code = code; ! 674: 646 0001094F 0d ad04 effffffad5 movl 4(fp),_err_code ! 675: 647 00010957 # sgl_value_4 = dbl_ld_acc.m; ! 676: 648 00010957 0d effffffacf effffffaca movl _dbl_ld_acc,_sgl_value_4 ! 677: 649 00010962 # sgl_value_5 = dbl_value_1.m; ! 678: 650 00010962 0d effffffac4 effffffabf movl _dbl_value_1,_sgl_value_5 ! 679: 651 0001096D # asm("movl _test_no,r0"); /* r0 = test number */ ! 680: 652 0001096D 0d effffffab9 50 movl _test_no,r0 ! 681: 653 00010974 # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 682: 654 00010974 0d effffffab2 51 movl _subtest,r1 ! 683: 655 0001097B # asm("movl _err_code,r2"); /* r2 = error code */ ! 684: 656 0001097B 0d effffffaab 52 movl _err_code,r2 ! 685: 657 00010982 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 686: 658 00010982 0d effffffaa4 53 movl _cycle,r3 ! 687: 659 00010989 # asm("movl _sgl_value_4,r4"); /* r4 = floating operand 1 */ ! 688: 660 00010989 0d effffffa9d 54 movl _sgl_value_4,r4 ! 689: 661 00010990 # asm("movl _sgl_value_5,r5"); /* r5 = floating operand 2 */ ! 690: 662 00010990 0d effffffa96 55 movl _sgl_value_5,r5 ! 691: 663 00010997 # asm("movl _sgl_value_1,r6"); /* r6 = integer operand 1 */ ! 692: 664 00010997 0d effffffa8f 56 movl _sgl_value_1,r6 ! 693: 665 0001099E # asm("movl _sgl_value_2,r7"); /* r7 = integer operand 2 */ ! 694: 666 0001099E 0d effffffa88 57 movl _sgl_value_2,r7 ! 695: 667 000109A5 # asm("moval _sgl_value_3,r8"); ! 696: 668 000109A5 ed effffffa81 58 moval _sgl_value_3,r8 ! 697: 669 000109AC # asm("incl r8"); /* r8 = addr causing event */ ! 698: 670 000109AC 6d 58 incl r8 ! 699: 671 000109AE # if( code == 1 ) ! 700: 672 000109AE 1d ad04 01 cmpl 4(fp),$1 ! 701: 673 000109B2 21 09 jneq L463 ! 702: 674 000109B4 # asm("movl _index,r9"); /* r9 = data index */ ! 703: 675 000109B4 0d effffffa72 59 movl _index,r9 ! 704: 676 000109BB # else { ! 705: 677 000109BB 11 2b jbr L464 ! 706: 678 000109BD L463: ! 707: 679 000109BD # sgl_value_6 = post_evt_acc.m; ! 708: 680 000109BD 0d effffffa69 effffffa64 movl _post_evt_acc,_sgl_value_6 ! 709: 681 000109C8 # sgl_value_7 = dbl_expected.m; ! 710: 682 000109C8 0d effffffa5e effffffa59 movl _dbl_expected,_sgl_value_7 ! 711: 683 000109D3 # asm("movl _sgl_value_6,r9"); /* r9 = final accumulator */ ! 712: 684 000109D3 0d effffffa53 59 movl _sgl_value_6,r9 ! 713: 685 000109DA # asm("movl _sgl_value_7,r10"); /* r10 = expected acc. */ ! 714: 686 000109DA 0d effffffa4c 5a movl _sgl_value_7,r10 ! 715: 687 000109E1 # asm("movl _index,r11"); /* r11 = data index */ ! 716: 688 000109E1 0d effffffa45 5b movl _index,r11 ! 717: 689 000109E8 # } ! 718: 690 000109E8 L464: ! 719: 691 000109E8 # asm("halt");; /* HALT ... */ ! 720: 692 000109E8 00 halt ! 721: 693 000109E9 # } ! 722: 694 000109E9 40 ret#2 ! 723: 695 000109EA .set L459,0x0 ! 724: 696 000109EA L461: ! 725: 697 000109EA 13 ff62 jbr L462 ! 726: 698 000109ED .data ! 727: 698 00020E19 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.