|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 000005c8 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _pipe7 ! 6: 6 00000000 _pipe7: ! 7: 7 000116F4 0000 .word L381 ! 8: 8 000116F6 # ! 9: 9 000116F6 # #include "evt_defs.h" ! 10: 10 000116F6 # #define MAX_POS 0x7fffffff; ! 11: 11 000116F6 # ! 12: 12 000116F6 # /* ! 13: 13 000116F6 # ********************************************************************* ! 14: 14 000116F6 # * FPP PIPELINED EVENTS TEST #7 ! 15: 15 000116F6 # * ! 16: 16 000116F6 # * This test will execute the following code: "LDF DIVF MULL3 NEGF" ! 17: 17 000116F6 # * with an integer overflow fault on the MULL3. We will make sure that: ! 18: 18 000116F6 # * 1. The fault is detected, ! 19: 19 000116F6 # * 2. the floating divide operation completes, ! 20: 20 000116F6 # * 3. and that the negate doesn't complete ! 21: 21 000116F6 # ********************************************************************* ! 22: 22 000116F6 # */ ! 23: 23 000116F6 # pipe7() ! 24: 24 000116F6 # { ! 25: 25 000116F6 13 0166 jbr L383 ! 26: 26 000116F9 L384: ! 27: 27 000116F9 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */ ! 28: 28 000116F9 ed 6d effffffff4 moval (r13),_pre_event_fp ! 29: 29 00011700 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */ ! 30: 30 00011700 ed 6e efffffffed moval (r14),_pre_event_sp ! 31: 31 00011707 # precision = SGL; ! 32: 32 00011707 0d 01 efffffffe6 movl $1,_precision ! 33: 33 0001170E # test_event = ARITH_CODE; /* expect an arithmetic fault */ ! 34: 34 0001170E 0d 34 efffffffdf movl $52,_test_event ! 35: 35 00011715 # exp_code = INT_OVFL_CODE; /* -specificly int overflow */ ! 36: 36 00011715 0d 01 efffffffd8 movl $1,_exp_code ! 37: 37 0001171C # exp_event = FALSE; /* ... but not yet */ ! 38: 38 0001171C 4d efffffffd2 clrl _exp_event ! 39: 39 00011722 # asm("movab _pipe7_ret,_event_return"); /* post event addr */ ! 40: 40 00011722 e9 ef000000df efffffffc7 movab _pipe7_ret,_event_return ! 41: 41 0001172D # for( index = 0; index < max_pipe7_index; index++ ) ! 42: 42 0001172D 4d efffffffc1 clrl _index ! 43: 43 00011733 L387: ! 44: 44 00011733 1d efffffffbb efffffffb6 cmpl _index,_max_pipe7_index ! 45: 45 0001173E 91 03 13 011b jgeq L386 ! 46: 46 00011743 # { ! 47: 47 00011743 # dbl_ld_acc = pipe7_data[index].op_1; /* get the data */ ! 48: 48 00011743 5c 18 efffffffaa 50 mull3 $24,_index,r0 ! 49: 49 0001174B 0c 8f00000000 50 addl2 $_pipe7_data,r0 ! 50: 50 00011752 0d a004 efffffff9e movl 4(r0),_dbl_ld_acc+4 ! 51: 51 0001175A 0d 60 efffffff93 movl (r0),_dbl_ld_acc ! 52: 52 00011761 # dbl_value_1 = pipe7_data[index].op_2; ! 53: 53 00011761 5c 18 efffffff8c 50 mull3 $24,_index,r0 ! 54: 54 00011769 0c 8f00000008 50 addl2 $_pipe7_data+8,r0 ! 55: 55 00011770 0d a004 efffffff80 movl 4(r0),_dbl_value_1+4 ! 56: 56 00011778 0d 60 efffffff75 movl (r0),_dbl_value_1 ! 57: 57 0001177F # dbl_expected = pipe7_data[index].exp; ! 58: 58 0001177F 5c 18 efffffff6e 50 mull3 $24,_index,r0 ! 59: 59 00011787 0c 8f00000010 50 addl2 $_pipe7_data+16,r0 ! 60: 60 0001178E 0d a004 efffffff62 movl 4(r0),_dbl_expected+4 ! 61: 61 00011796 0d 60 efffffff57 movl (r0),_dbl_expected ! 62: 62 0001179D # sgl_value_1 = 0x12345; /* get overflow data */ ! 63: 63 0001179D 0d 8f00012345 efffffff4c movl $74565,_sgl_value_1 ! 64: 64 000117A8 # sgl_value_2 = MAX_POS; ! 65: 65 000117A8 0d 8f7fffffff efffffff41 movl $2147483647,_sgl_value_2 ! 66: 66 000117B3 # asm("bispsw $0x60"); /* enable ovfl,undfl */ ! 67: 67 000117B3 8b 8860 bispsw $0x60 ! 68: 68 000117B6 # asm(".globl _pipe7_lp1"); ! 69: 69 000117B6 .globl _pipe7_lp1 ! 70: 70 000117B6 # asm("_pipe7_lp1:"); ! 71: 71 000117B6 _pipe7_lp1: ! 72: 72 000117B6 # asm("ldf _dbl_ld_acc"); /* load the Acc. */ ! 73: 73 000117B6 06 efffffff38 ldf _dbl_ld_acc ! 74: 74 000117BC # exp_event = test_event; /* expect event soon */ ! 75: 75 000117BC 0d efffffff32 efffffff2d movl _test_event,_exp_event ! 76: 76 000117C7 # asm("divf _dbl_value_1"); /* divide by op.#2 */ ! 77: 77 000117C7 f6 efffffff27 divf _dbl_value_1 ! 78: 78 000117CD # asm("mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3"); ! 79: 79 000117CD 5c efffffff21 efffffff1c mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3 ! 80: efffffff17 ! 81: 80 000117DD # asm("negf"); ! 82: 81 000117DD b6 negf ! 83: 82 000117DE # /* ! 84: 83 000117DE # * If we got to here then there was no event ! 85: 84 000117DE # */ ! 86: 85 000117DE # if( force_loop ) ! 87: 86 000117DE 5d efffffff10 tstl _force_loop ! 88: 87 000117E4 31 03 jeql L388 ! 89: 88 000117E6 # asm("brw _pipe7_lp1");; /* loop on the error */ ! 90: Assemb00028EB4 # asm("brw _pipe7_lp1");; /* loop on the error */ ! 91: "pipe700028EB4 89: WARNING: brw: destination label is external ! 92: 89 000117E6 13 ffcd brw _pipe7_lp1 ! 93: 90 000117E9 L388: ! 94: 91 000117E9 # exp_event = FALSE; /* reset event expected flag */ ! 95: 92 000117E9 4d efffffff05 clrl _exp_event ! 96: 93 000117EF # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */ ! 97: 94 000117EF 0d effffffeff 5d movl _pre_event_fp,fp ! 98: 95 000117F6 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */ ! 99: 96 000117F6 0d effffffef8 5e movl _pre_event_sp,sp ! 100: 97 000117FD # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */ ! 101: 98 000117FD 9b 8860 bicpsw $0x60 ! 102: 99 00011800 # no_pipe7_evt();; /* report the error */ ! 103: 100 00011800 fe 04 ef0000005b callf $4,_no_pipe7_evt ! 104: 101 00011807 # /* ! 105: 102 00011807 # * Come here after the event ! 106: 103 00011807 # */ ! 107: 104 00011807 # asm(".globl _pipe7_ret"); ! 108: 105 00011807 .globl _pipe7_ret ! 109: 106 00011807 # asm("_pipe7_ret:"); ! 110: 107 00011807 _pipe7_ret: ! 111: 108 00011807 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */ ! 112: 109 00011807 0d effffffee7 5d movl _pre_event_fp,fp ! 113: 110 0001180E # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */ ! 114: 111 0001180E 0d effffffee0 5e movl _pre_event_sp,sp ! 115: 112 00011815 # if( force_loop ) ! 116: 113 00011815 5d effffffed9 tstl _force_loop ! 117: 114 0001181B 31 03 jeql L390 ! 118: 115 0001181D # asm("brw _pipe7_lp1");; /* loop on the error */ ! 119: "pipe700028EB4 116: WARNING: brw: destination label is external ! 120: 116 0001181D 13 ff96 brw _pipe7_lp1 ! 121: 117 00011820 L390: ! 122: 118 00011820 # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */ ! 123: 119 00011820 9b 8860 bicpsw $0x60 ! 124: 120 00011823 # if( post_evt_acc.m == (dbl_expected.m ^ 0x80000000) ) ! 125: 121 00011823 dc 8f80000000 effffffec6 xorl3 $-2147483648,_dbl_expected,r0 ! 126: 50 ! 127: 122 0001182F 1d effffffebf 50 cmpl _post_evt_acc,r0 ! 128: 123 00011836 21 09 jneq L391 ! 129: 124 00011838 # pipe7_queue_er(); /* fpp queue not cleared */ ! 130: 125 00011838 fe 04 ef00000215 callf $4,_pipe7_queue_er ! 131: 126 0001183F # else if( post_evt_acc.m != dbl_expected.m ) ! 132: 127 0001183F 11 14 jbr L393 ! 133: 128 00011841 L391: ! 134: 129 00011841 1d effffffead effffffea8 cmpl _post_evt_acc,_dbl_expected ! 135: 130 0001184C 31 07 jeql L394 ! 136: 131 0001184E # bad_pipe7_result(); /* incorrect result error */ ! 137: 132 0001184E fe 04 ef000000e5 callf $4,_bad_pipe7_result ! 138: 133 00011855 # } ! 139: 134 00011855 L394: ! 140: 135 00011855 L393: ! 141: 136 00011855 L385: ! 142: 137 00011855 6d effffffe99 incl _index ! 143: 138 0001185B 13 fed5 jbr L387 ! 144: 139 0001185E L386: ! 145: 140 0001185E # } ! 146: 141 0001185E 40 ret#2 ! 147: 142 0001185F .set L381,0x0 ! 148: 143 0001185F L383: ! 149: 144 0001185F 13 fe97 jbr L384 ! 150: 145 00011862 .data ! 151: 146 000005c8 * .text ! 152: 147 00011862 .align 1 ! 153: 148 00011862 .globl _no_pipe7_evt ! 154: 149 00011862 _no_pipe7_evt: ! 155: 150 00011862 0000 .word L396 ! 156: 151 00011864 # ! 157: 152 00011864 # ! 158: 153 00011864 # ! 159: 154 00011864 # /**************************************************************************** ! 160: 155 00011864 # * Report an "EVENT NOT DETECTED" error ! 161: 156 00011864 # * ! 162: 157 00011864 # * Cycle: xx. EVT test xx. subtest xx. no integer overflow fault. index = xx ! 163: 158 00011864 # * inst = LDF op1, DIVF op2, MULL3 op3,op4,op5, NEGF (int. overflow on MULL3) ! 164: 159 00011864 # * op1 = xxxxxxxx, op2 = xxxxxxxx ! 165: 160 00011864 # * op3 = xxxxxxxx, op4 = xxxxxxxx, op5 = xxxxxxxx ! 166: 161 00011864 # ****************************************************************************/ ! 167: 162 00011864 # no_pipe7_evt() ! 168: 163 00011864 # { ! 169: 164 00011864 13 00d0 jbr L398 ! 170: 165 00011867 L399: ! 171: 166 00011867 # errcnt++; /* bump the error count */ ! 172: 167 00011867 6d effffffe87 incl _errcnt ! 173: 168 0001186D # if ( prt_error ) ! 174: 169 0001186D 5d effffffe81 tstl _prt_error ! 175: 170 00011873 21 03 13 0098 jeql L400 ! 176: 171 00011878 # { ! 177: 172 00011878 # print_pipe7_er( ". no integer overflow fault."); ! 178: 173 00011878 .data 1 ! 179: 174 000005c8 * L402: ! 180: 175 000005c8 * 2E206E6F20696E74656765722 .ascii ". no integer overflow fault.\0" ! 181: 06F766572666C6F7720666175 ! 182: 6C742E00 ! 183: 176 000005e5 * .text ! 184: 177 00011878 dd 8f000005c8 pushl $L402 ! 185: 178 0001187E fe 08 ef000002e9 callf $8,_print_pipe7_er ! 186: 179 00011885 # writes("op1 = "); ! 187: 180 00011885 .data 1 ! 188: 181 000005e5 * L404: ! 189: 182 000005e5 * 6F7031203D2000 .ascii "op1 = \0" ! 190: 183 000005ec * .text ! 191: 184 00011885 dd 8f000005e5 pushl $L404 ! 192: 185 0001188B fe 08 effffffe62 callf $8,_writes ! 193: 186 00011892 # write32h( dbl_ld_acc.m ); ! 194: 187 00011892 dd effffffe5c pushl _dbl_ld_acc ! 195: 188 00011898 fe 08 effffffe55 callf $8,_write32h ! 196: 189 0001189F # writes(", op2 = "); ! 197: 190 0001189F .data 1 ! 198: 191 000005ec * L406: ! 199: 192 000005ec * 2C20206F7032203D2000 .ascii ", op2 = \0" ! 200: 193 000005f6 * .text ! 201: 194 0001189F dd 8f000005ec pushl $L406 ! 202: 195 000118A5 fe 08 effffffe48 callf $8,_writes ! 203: 196 000118AC # write32h( dbl_value_1.m ); ! 204: 197 000118AC dd effffffe42 pushl _dbl_value_1 ! 205: 198 000118B2 fe 08 effffffe3b callf $8,_write32h ! 206: 199 000118B9 # writes("\nop3 = "); ! 207: 200 000118B9 .data 1 ! 208: 201 000005f6 * L407: ! 209: 202 000005f6 * 0A6F7033203D2000 .ascii "\12op3 = \0" ! 210: 203 000005fe * .text ! 211: 204 000118B9 dd 8f000005f6 pushl $L407 ! 212: 205 000118BF fe 08 effffffe2e callf $8,_writes ! 213: 206 000118C6 # write32h( sgl_value_1 ); ! 214: 207 000118C6 dd effffffe28 pushl _sgl_value_1 ! 215: 208 000118CC fe 08 effffffe21 callf $8,_write32h ! 216: 209 000118D3 # writes(", op4 = "); ! 217: 210 000118D3 .data 1 ! 218: 211 000005fe * L408: ! 219: 212 000005fe * 2C20206F7034203D2000 .ascii ", op4 = \0" ! 220: 213 00000608 * .text ! 221: 214 000118D3 dd 8f000005fe pushl $L408 ! 222: 215 000118D9 fe 08 effffffe14 callf $8,_writes ! 223: 216 000118E0 # write32h( sgl_value_2 ); ! 224: 217 000118E0 dd effffffe0e pushl _sgl_value_2 ! 225: 218 000118E6 fe 08 effffffe07 callf $8,_write32h ! 226: 219 000118ED # writes(", op5 = "); ! 227: 220 000118ED .data 1 ! 228: 221 00000608 * L409: ! 229: 222 00000608 * 2C20206F7035203D2000 .ascii ", op5 = \0" ! 230: 223 00000612 * .text ! 231: 224 000118ED dd 8f00000608 pushl $L409 ! 232: 225 000118F3 fe 08 effffffdfa callf $8,_writes ! 233: 226 000118FA # write32h( sgl_value_3 ); ! 234: 227 000118FA dd effffffdf4 pushl _sgl_value_3 ! 235: 228 00011900 fe 08 effffffded callf $8,_write32h ! 236: 229 00011907 # writec('\n'); ! 237: 230 00011907 dd 0a pushl $10 ! 238: 231 00011909 fe 08 effffffde4 callf $8,_writec ! 239: 232 00011910 # } ! 240: 233 00011910 # if ( halt_flg ) /* halt on error? */ ! 241: 234 00011910 L400: ! 242: 235 00011910 5d effffffdde tstl _halt_flg ! 243: 236 00011916 31 09 jeql L411 ! 244: 237 00011918 # pipe7_halt( 1 ); ! 245: 238 00011918 dd 01 pushl $1 ! 246: 239 0001191A fe 08 ef000002f9 callf $8,_pipe7_halt ! 247: 240 00011921 # if ( loop_on_err ) ! 248: 241 00011921 L411: ! 249: 242 00011921 5d effffffdcd tstl _loop_on_err ! 250: 243 00011927 31 0d jeql L413 ! 251: 244 00011929 # { ! 252: 245 00011929 # force_loop = TRUE; /* set the force loop flag */ ! 253: 246 00011929 0d 01 effffffdc4 movl $1,_force_loop ! 254: 247 00011930 # asm("jmp _pipe7_lp1"); /* and loop */ ! 255: 248 00011930 71 effffffe80 jmp _pipe7_lp1 ! 256: 249 00011936 # }; ! 257: 250 00011936 L413: ! 258: 251 00011936 # } ! 259: 252 00011936 40 ret#2 ! 260: 253 00011937 .set L396,0x0 ! 261: 254 00011937 L398: ! 262: 255 00011937 13 ff2d jbr L399 ! 263: 256 0001193A .data ! 264: 257 000005c8 * .text ! 265: 258 0001193A .align 1 ! 266: 259 0001193A .globl _bad_pipe7_result ! 267: 260 0001193A _bad_pipe7_result: ! 268: 261 0001193A 0000 .word L414 ! 269: 262 0001193C # ! 270: 263 0001193C # ! 271: 264 0001193C # ! 272: 265 0001193C # ! 273: 266 0001193C # /**************************************************************************** ! 274: 267 0001193C # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error ! 275: 268 0001193C # * ! 276: 269 0001193C # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. index = xx ! 277: 270 0001193C # * inst = LDF op1, DIVF op2, MULL3 op3,op4,op5, NEGF (int. overflow on MULL3) ! 278: 271 0001193C # * The NEGF should not have been executed. ! 279: 272 0001193C # * op1 = xxxxxxxx, final Acc. = xxxxxxxx, op3 = xxxxxxxx ! 280: 273 0001193C # * op2 = xxxxxxxx, expected = xxxxxxxx, op4 = xxxxxxxx, op5 = xxxxxxxx ! 281: 274 0001193C # ****************************************************************************/ ! 282: 275 0001193C # bad_pipe7_result() ! 283: 276 0001193C # { ! 284: 277 0001193C 13 0111 jbr L416 ! 285: 278 0001193F L417: ! 286: 279 0001193F # errcnt++; /* bump the error count */ ! 287: 280 0001193F 6d effffffdaf incl _errcnt ! 288: 281 00011945 # if ( prt_error ) ! 289: 282 00011945 5d effffffda9 tstl _prt_error ! 290: 283 0001194B 21 03 13 00d9 jeql L418 ! 291: 284 00011950 # { ! 292: 285 00011950 # print_pipe7_er(". Bad final Accumulator."); ! 293: 286 00011950 .data 1 ! 294: 287 00000612 * L419: ! 295: 288 00000612 * 2E204261642066696E616C204 .ascii ". Bad final Accumulator.\0" ! 296: 16363756D756C61746F722E00 ! 297: 289 0000062b * .text ! 298: 290 00011950 dd 8f00000612 pushl $L419 ! 299: 291 00011956 fe 08 ef00000211 callf $8,_print_pipe7_er ! 300: 292 0001195D # writes("The NEGF should not have been executed.\n"); ! 301: 293 0001195D .data 1 ! 302: 294 0000062b * L420: ! 303: 295 0000062b * 546865204E4547462073686F7 .ascii "The NEGF should not have been executed.\12\0" ! 304: 56C64206E6F74206861766520 ! 305: 6265656E20657865637574656 ! 306: 42E0A00 ! 307: 296 00000654 * .text ! 308: 297 0001195D dd 8f0000062b pushl $L420 ! 309: 298 00011963 fe 08 effffffd8a callf $8,_writes ! 310: 299 0001196A # writes("op1 = "); ! 311: 300 0001196A .data 1 ! 312: 301 00000654 * L421: ! 313: 302 00000654 * 6F7031203D2000 .ascii "op1 = \0" ! 314: 303 0000065b * .text ! 315: 304 0001196A dd 8f00000654 pushl $L421 ! 316: 305 00011970 fe 08 effffffd7d callf $8,_writes ! 317: 306 00011977 # write32h( dbl_value_1.m ); ! 318: 307 00011977 dd effffffd77 pushl _dbl_value_1 ! 319: 308 0001197D fe 08 effffffd70 callf $8,_write32h ! 320: 309 00011984 # writes(", final Acc. = "); ! 321: 310 00011984 .data 1 ! 322: 311 0000065b * L422: ! 323: 312 0000065b * 2C202066696E616C204163632 .ascii ", final Acc. = \0" ! 324: E203D2000 ! 325: 313 0000066c * .text ! 326: 314 00011984 dd 8f0000065b pushl $L422 ! 327: 315 0001198A fe 08 effffffd63 callf $8,_writes ! 328: 316 00011991 # write32h( post_evt_acc.m ); ! 329: 317 00011991 dd effffffd5d pushl _post_evt_acc ! 330: 318 00011997 fe 08 effffffd56 callf $8,_write32h ! 331: 319 0001199E # writes(", op3 = "); ! 332: 320 0001199E .data 1 ! 333: 321 0000066c * L423: ! 334: 322 0000066c * 2C20206F7033203D2000 .ascii ", op3 = \0" ! 335: 323 00000676 * .text ! 336: 324 0001199E dd 8f0000066c pushl $L423 ! 337: 325 000119A4 fe 08 effffffd49 callf $8,_writes ! 338: 326 000119AB # write32h( sgl_value_1 ); ! 339: 327 000119AB dd effffffd43 pushl _sgl_value_1 ! 340: 328 000119B1 fe 08 effffffd3c callf $8,_write32h ! 341: 329 000119B8 # writes("\nop2 = "); ! 342: 330 000119B8 .data 1 ! 343: 331 00000676 * L424: ! 344: 332 00000676 * 0A6F7032203D2000 .ascii "\12op2 = \0" ! 345: 333 0000067e * .text ! 346: 334 000119B8 dd 8f00000676 pushl $L424 ! 347: 335 000119BE fe 08 effffffd2f callf $8,_writes ! 348: 336 000119C5 # write32h( dbl_value_2.m ); ! 349: 337 000119C5 dd effffffd29 pushl _dbl_value_2 ! 350: 338 000119CB fe 08 effffffd22 callf $8,_write32h ! 351: 339 000119D2 # writes(", expected = "); ! 352: 340 000119D2 .data 1 ! 353: 341 0000067e * L425: ! 354: 342 0000067e * 2C20202020657870656374656 .ascii ", expected = \0" ! 355: 4203D2000 ! 356: 343 0000068f * .text ! 357: 344 000119D2 dd 8f0000067e pushl $L425 ! 358: 345 000119D8 fe 08 effffffd15 callf $8,_writes ! 359: 346 000119DF # write32h( dbl_expected.m ); ! 360: 347 000119DF dd effffffd0f pushl _dbl_expected ! 361: 348 000119E5 fe 08 effffffd08 callf $8,_write32h ! 362: 349 000119EC # writes(", op4 = "); ! 363: 350 000119EC .data 1 ! 364: 351 0000068f * L426: ! 365: 352 0000068f * 2C20206F7034203D2000 .ascii ", op4 = \0" ! 366: 353 00000699 * .text ! 367: 354 000119EC dd 8f0000068f pushl $L426 ! 368: 355 000119F2 fe 08 effffffcfb callf $8,_writes ! 369: 356 000119F9 # write32h( sgl_value_2 ); ! 370: 357 000119F9 dd effffffcf5 pushl _sgl_value_2 ! 371: 358 000119FF fe 08 effffffcee callf $8,_write32h ! 372: 359 00011A06 # writes(", op5 = "); ! 373: 360 00011A06 .data 1 ! 374: 361 00000699 * L427: ! 375: 362 00000699 * 2C20206F7035203D2000 .ascii ", op5 = \0" ! 376: 363 000006a3 * .text ! 377: 364 00011A06 dd 8f00000699 pushl $L427 ! 378: 365 00011A0C fe 08 effffffce1 callf $8,_writes ! 379: 366 00011A13 # write32h( sgl_value_3 ); ! 380: 367 00011A13 dd effffffcdb pushl _sgl_value_3 ! 381: 368 00011A19 fe 08 effffffcd4 callf $8,_write32h ! 382: 369 00011A20 # writec('\n'); ! 383: 370 00011A20 dd 0a pushl $10 ! 384: 371 00011A22 fe 08 effffffccb callf $8,_writec ! 385: 372 00011A29 # } ! 386: 373 00011A29 # if ( halt_flg ) /* halt on error? */ ! 387: 374 00011A29 L418: ! 388: 375 00011A29 5d effffffcc5 tstl _halt_flg ! 389: 376 00011A2F 31 09 jeql L428 ! 390: 377 00011A31 # pipe7_halt( 2 ); ! 391: 378 00011A31 dd 02 pushl $2 ! 392: 379 00011A33 fe 08 ef000001e0 callf $8,_pipe7_halt ! 393: 380 00011A3A # if ( loop_on_err ) ! 394: 381 00011A3A L428: ! 395: 382 00011A3A 5d effffffcb4 tstl _loop_on_err ! 396: 383 00011A40 31 0d jeql L429 ! 397: 384 00011A42 # { ! 398: 385 00011A42 # force_loop = TRUE; /* set the force loop flag */ ! 399: 386 00011A42 0d 01 effffffcab movl $1,_force_loop ! 400: 387 00011A49 # asm("jmp _pipe7_lp1"); /* and loop */ ! 401: 388 00011A49 71 effffffd67 jmp _pipe7_lp1 ! 402: 389 00011A4F # }; ! 403: 390 00011A4F L429: ! 404: 391 00011A4F # } ! 405: 392 00011A4F 40 ret#2 ! 406: 393 00011A50 .set L414,0x0 ! 407: 394 00011A50 L416: ! 408: 395 00011A50 13 feec jbr L417 ! 409: 396 00011A53 .data ! 410: 397 000005c8 * .text ! 411: 398 00011A53 00 .align 1 ! 412: 399 00011A54 .globl _pipe7_queue_er ! 413: 400 00011A54 _pipe7_queue_er: ! 414: 401 00011A54 0000 .word L430 ! 415: 402 00011A56 # ! 416: 403 00011A56 # ! 417: 404 00011A56 # ! 418: 405 00011A56 # ! 419: 406 00011A56 # ! 420: 407 00011A56 # /**************************************************************************** ! 421: 408 00011A56 # * Report an "FPP Queue apparently not cleared" error ! 422: 409 00011A56 # * ! 423: 410 00011A56 # * Cycle: xx. EVT test xx. subtest xx. too many instructions run. index = xx ! 424: 411 00011A56 # * inst = LDF op1, DIVF op2, MULL3 op3,op4,op5, NEGF (int. overflow on MULL3) ! 425: 412 00011A56 # * The NEGF should not have been executed but apparently was. ! 426: 413 00011A56 # * op1 = xxxxxxxx, final Acc. = xxxxxxxx, op3 = xxxxxxxx ! 427: 414 00011A56 # * op2 = xxxxxxxx, expected = xxxxxxxx, op4 = xxxxxxxx, op5 = xxxxxxxx ! 428: 415 00011A56 # ****************************************************************************/ ! 429: 416 00011A56 # pipe7_queue_er() ! 430: 417 00011A56 # { ! 431: 418 00011A56 13 0111 jbr L432 ! 432: 419 00011A59 L433: ! 433: 420 00011A59 # errcnt++; /* bump the error count */ ! 434: 421 00011A59 6d effffffc95 incl _errcnt ! 435: 422 00011A5F # if ( prt_error ) ! 436: 423 00011A5F 5d effffffc8f tstl _prt_error ! 437: 424 00011A65 21 03 13 00d9 jeql L434 ! 438: 425 00011A6A # { ! 439: 426 00011A6A # print_pipe7_er(". Fpp Queue not cleared."); ! 440: 427 00011A6A .data 1 ! 441: 428 000006a3 * L435: ! 442: 429 000006a3 * 2E20467070205175657565206 .ascii ". Fpp Queue not cleared.\0" ! 443: E6F7420636C65617265642E00 ! 444: 430 000006bc * .text ! 445: 431 00011A6A dd 8f000006a3 pushl $L435 ! 446: 432 00011A70 fe 08 ef000000f7 callf $8,_print_pipe7_er ! 447: 433 00011A77 # writes( ! 448: 434 00011A77 # "The NEGF should not have been executed but apparently was.\n"); ! 449: 435 00011A77 .data 1 ! 450: 436 000006bc * L436: ! 451: 437 000006bc * 546865204E4547462073686F7 .ascii "The NEGF should not have been executed but apparently was.\12\0" ! 452: 56C64206E6F74206861766520 ! 453: 6265656E20657865637574656 ! 454: 420627574206170706172656E ! 455: 746C79207761732E0A00 ! 456: 438 000006f8 * .text ! 457: 439 00011A77 dd 8f000006bc pushl $L436 ! 458: 440 00011A7D fe 08 effffffc70 callf $8,_writes ! 459: 441 00011A84 # writes("op1 = "); ! 460: 442 00011A84 .data 1 ! 461: 443 000006f8 * L437: ! 462: 444 000006f8 * 6F7031203D2000 .ascii "op1 = \0" ! 463: 445 000006ff * .text ! 464: 446 00011A84 dd 8f000006f8 pushl $L437 ! 465: 447 00011A8A fe 08 effffffc63 callf $8,_writes ! 466: 448 00011A91 # write32h( dbl_value_1.m ); ! 467: 449 00011A91 dd effffffc5d pushl _dbl_value_1 ! 468: 450 00011A97 fe 08 effffffc56 callf $8,_write32h ! 469: 451 00011A9E # writes(", final Acc. = "); ! 470: 452 00011A9E .data 1 ! 471: 453 000006ff * L438: ! 472: 454 000006ff * 2C202066696E616C204163632 .ascii ", final Acc. = \0" ! 473: E203D2000 ! 474: 455 00000710 * .text ! 475: 456 00011A9E dd 8f000006ff pushl $L438 ! 476: 457 00011AA4 fe 08 effffffc49 callf $8,_writes ! 477: 458 00011AAB # write32h( post_evt_acc.m ); ! 478: 459 00011AAB dd effffffc43 pushl _post_evt_acc ! 479: 460 00011AB1 fe 08 effffffc3c callf $8,_write32h ! 480: 461 00011AB8 # writes(", op3 = "); ! 481: 462 00011AB8 .data 1 ! 482: 463 00000710 * L439: ! 483: 464 00000710 * 2C20206F7033203D2000 .ascii ", op3 = \0" ! 484: 465 0000071a * .text ! 485: 466 00011AB8 dd 8f00000710 pushl $L439 ! 486: 467 00011ABE fe 08 effffffc2f callf $8,_writes ! 487: 468 00011AC5 # write32h( sgl_value_1 ); ! 488: 469 00011AC5 dd effffffc29 pushl _sgl_value_1 ! 489: 470 00011ACB fe 08 effffffc22 callf $8,_write32h ! 490: 471 00011AD2 # writes("\nop2 = "); ! 491: 472 00011AD2 .data 1 ! 492: 473 0000071a * L440: ! 493: 474 0000071a * 0A6F7032203D2000 .ascii "\12op2 = \0" ! 494: 475 00000722 * .text ! 495: 476 00011AD2 dd 8f0000071a pushl $L440 ! 496: 477 00011AD8 fe 08 effffffc15 callf $8,_writes ! 497: 478 00011ADF # write32h( dbl_value_2.m ); ! 498: 479 00011ADF dd effffffc0f pushl _dbl_value_2 ! 499: 480 00011AE5 fe 08 effffffc08 callf $8,_write32h ! 500: 481 00011AEC # writes(", expected = "); ! 501: 482 00011AEC .data 1 ! 502: 483 00000722 * L441: ! 503: 484 00000722 * 2C20202020657870656374656 .ascii ", expected = \0" ! 504: 4203D2000 ! 505: 485 00000733 * .text ! 506: 486 00011AEC dd 8f00000722 pushl $L441 ! 507: 487 00011AF2 fe 08 effffffbfb callf $8,_writes ! 508: 488 00011AF9 # write32h( dbl_expected.m ); ! 509: 489 00011AF9 dd effffffbf5 pushl _dbl_expected ! 510: 490 00011AFF fe 08 effffffbee callf $8,_write32h ! 511: 491 00011B06 # writes(", op4 = "); ! 512: 492 00011B06 .data 1 ! 513: 493 00000733 * L442: ! 514: 494 00000733 * 2C20206F7034203D2000 .ascii ", op4 = \0" ! 515: 495 0000073d * .text ! 516: 496 00011B06 dd 8f00000733 pushl $L442 ! 517: 497 00011B0C fe 08 effffffbe1 callf $8,_writes ! 518: 498 00011B13 # write32h( sgl_value_2 ); ! 519: 499 00011B13 dd effffffbdb pushl _sgl_value_2 ! 520: 500 00011B19 fe 08 effffffbd4 callf $8,_write32h ! 521: 501 00011B20 # writes(", op5 = "); ! 522: 502 00011B20 .data 1 ! 523: 503 0000073d * L443: ! 524: 504 0000073d * 2C20206F7035203D2000 .ascii ", op5 = \0" ! 525: 505 00000747 * .text ! 526: 506 00011B20 dd 8f0000073d pushl $L443 ! 527: 507 00011B26 fe 08 effffffbc7 callf $8,_writes ! 528: 508 00011B2D # write32h( sgl_value_3 ); ! 529: 509 00011B2D dd effffffbc1 pushl _sgl_value_3 ! 530: 510 00011B33 fe 08 effffffbba callf $8,_write32h ! 531: 511 00011B3A # writec('\n'); ! 532: 512 00011B3A dd 0a pushl $10 ! 533: 513 00011B3C fe 08 effffffbb1 callf $8,_writec ! 534: 514 00011B43 # } ! 535: 515 00011B43 # if ( halt_flg ) /* halt on error? */ ! 536: 516 00011B43 L434: ! 537: 517 00011B43 5d effffffbab tstl _halt_flg ! 538: 518 00011B49 31 09 jeql L444 ! 539: 519 00011B4B # pipe7_halt( 3 ); ! 540: 520 00011B4B dd 03 pushl $3 ! 541: 521 00011B4D fe 08 ef000000c6 callf $8,_pipe7_halt ! 542: 522 00011B54 # if ( loop_on_err ) ! 543: 523 00011B54 L444: ! 544: 524 00011B54 5d effffffb9a tstl _loop_on_err ! 545: 525 00011B5A 31 0d jeql L445 ! 546: 526 00011B5C # { ! 547: 527 00011B5C # force_loop = TRUE; /* set the force loop flag */ ! 548: 528 00011B5C 0d 01 effffffb91 movl $1,_force_loop ! 549: 529 00011B63 # asm("jmp _pipe7_lp1"); /* and loop */ ! 550: 530 00011B63 71 effffffc4d jmp _pipe7_lp1 ! 551: 531 00011B69 # }; ! 552: 532 00011B69 L445: ! 553: 533 00011B69 # } ! 554: 534 00011B69 40 ret#2 ! 555: 535 00011B6A .set L430,0x0 ! 556: 536 00011B6A L432: ! 557: 537 00011B6A 13 feec jbr L433 ! 558: 538 00011B6D .data ! 559: 539 000005c8 * .text ! 560: 540 00011B6D 00 .align 1 ! 561: 541 00011B6E .globl _print_pipe7_er ! 562: 542 00011B6E _print_pipe7_er: ! 563: 543 00011B6E 0000 .word L446 ! 564: 544 00011B70 # ! 565: 545 00011B70 # ! 566: 546 00011B70 # ! 567: 547 00011B70 # /**************************************************************************** ! 568: 548 00011B70 # * print an error message of the form: ! 569: 549 00011B70 # * ! 570: 550 00011B70 # * Cycle: xx. EVT test xx. subtest xx. <your message here> index = xx ! 571: 551 00011B70 # * inst = LDF op1, DIVF op2, MULL3 op3,op4,op5, NEGF (int. overflow on MULL3) ! 572: 552 00011B70 # ****************************************************************************/ ! 573: 553 00011B70 # print_pipe7_er( msg ) ! 574: 554 00011B70 # char *msg; /* error message to print */ ! 575: 555 00011B70 # { ! 576: 556 00011B70 13 00a3 jbr L448 ! 577: 557 00011B73 L449: ! 578: 558 00011B73 # if( errcnt == 1 ) /* 1st error? */ ! 579: 559 00011B73 1d effffffb7b 01 cmpl _errcnt,$1 ! 580: 560 00011B7A 21 0d jneq L450 ! 581: 561 00011B7C # writes(" \n"); /* start a new print line */ ! 582: 562 00011B7C .data 1 ! 583: 563 00000747 * L451: ! 584: 564 00000747 * 200A00 .ascii " \12\0" ! 585: 565 0000074a * .text ! 586: 566 00011B7C dd 8f00000747 pushl $L451 ! 587: 567 00011B82 fe 08 effffffb6b callf $8,_writes ! 588: 568 00011B89 # writes("Cycle: "); ! 589: 569 00011B89 L450: ! 590: 570 00011B89 .data 1 ! 591: 571 0000074a * L452: ! 592: 572 0000074a * 4379636C653A2000 .ascii "Cycle: \0" ! 593: 573 00000752 * .text ! 594: 574 00011B89 dd 8f0000074a pushl $L452 ! 595: 575 00011B8F fe 08 effffffb5e callf $8,_writes ! 596: 576 00011B96 # writed( cycle ); ! 597: 577 00011B96 dd effffffb58 pushl _cycle ! 598: 578 00011B9C fe 08 effffffb51 callf $8,_writed ! 599: 579 00011BA3 # writes(" EVT test "); ! 600: 580 00011BA3 .data 1 ! 601: 581 00000752 * L454: ! 602: 582 00000752 * 202045565420746573742000 .ascii " EVT test \0" ! 603: 583 0000075e * .text ! 604: 584 00011BA3 dd 8f00000752 pushl $L454 ! 605: 585 00011BA9 fe 08 effffffb44 callf $8,_writes ! 606: 586 00011BB0 # writed( test_no ); ! 607: 587 00011BB0 dd effffffb3e pushl _test_no ! 608: 588 00011BB6 fe 08 effffffb37 callf $8,_writed ! 609: 589 00011BBD # writes(". subtest "); ! 610: 590 00011BBD .data 1 ! 611: 591 0000075e * L455: ! 612: 592 0000075e * 2E20737562746573742000 .ascii ". subtest \0" ! 613: 593 00000769 * .text ! 614: 594 00011BBD dd 8f0000075e pushl $L455 ! 615: 595 00011BC3 fe 08 effffffb2a callf $8,_writes ! 616: 596 00011BCA # writed( subtest ); ! 617: 597 00011BCA dd effffffb24 pushl _subtest ! 618: 598 00011BD0 fe 08 effffffb1d callf $8,_writed ! 619: 599 00011BD7 # writes( msg ); /* print the error message */ ! 620: 600 00011BD7 dd ad04 pushl 4(fp) ! 621: 601 00011BDA fe 08 effffffb13 callf $8,_writes ! 622: 602 00011BE1 # writes(" index = "); ! 623: 603 00011BE1 .data 1 ! 624: 604 00000769 * L456: ! 625: 605 00000769 * 20696E646578203D2000 .ascii " index = \0" ! 626: 606 00000773 * .text ! 627: 607 00011BE1 dd 8f00000769 pushl $L456 ! 628: 608 00011BE7 fe 08 effffffb06 callf $8,_writes ! 629: 609 00011BEE # writed( index ); ! 630: 610 00011BEE dd effffffb00 pushl _index ! 631: 611 00011BF4 fe 08 effffffaf9 callf $8,_writed ! 632: 612 00011BFB # writes("\ninst = LDF op1, DIVF op2, MULL3 op3,op4,op5, NEGF"); ! 633: 613 00011BFB .data 1 ! 634: 614 00000773 * L457: ! 635: 615 00000773 * 0A696E7374203D204C4446206 .ascii "\12inst = LDF op1, DIVF op2, MULL3 op3,op4,op5, NEGF\0" ! 636: F70312C2044495646206F7032 ! 637: 2C204D554C4C33206F70332C6 ! 638: F70342C6F70352C204E454746 ! 639: 00 ! 640: 616 000007a6 * .text ! 641: 617 00011BFB dd 8f00000773 pushl $L457 ! 642: 618 00011C01 fe 08 effffffaec callf $8,_writes ! 643: 619 00011C08 # writes(" (int. overflow on MULL3)\n"); ! 644: 620 00011C08 .data 1 ! 645: 621 000007a6 * L458: ! 646: 622 000007a6 * 202028696E742E206F7665726 .ascii " (int. overflow on MULL3)\12\0" ! 647: 66C6F77206F6E204D554C4C33 ! 648: 290A00 ! 649: 623 000007c2 * .text ! 650: 624 00011C08 dd 8f000007a6 pushl $L458 ! 651: 625 00011C0E fe 08 effffffadf callf $8,_writes ! 652: 626 00011C15 # } ! 653: 627 00011C15 40 ret#2 ! 654: 628 00011C16 .set L446,0x0 ! 655: 629 00011C16 L448: ! 656: 630 00011C16 13 ff5a jbr L449 ! 657: 631 00011C19 .data ! 658: 632 000005c8 * .text ! 659: 633 00011C19 00 .align 1 ! 660: 634 00011C1A .globl _pipe7_halt ! 661: 635 00011C1A _pipe7_halt: ! 662: 636 00011C1A 0000 .word L459 ! 663: 637 00011C1C # ! 664: 638 00011C1C # ! 665: 639 00011C1C # ! 666: 640 00011C1C # /**************************************************************************** ! 667: 641 00011C1C # * Halt on Error routine ! 668: 642 00011C1C # ****************************************************************************/ ! 669: 643 00011C1C # pipe7_halt( code ) ! 670: 644 00011C1C # int code; /* error code to halt with */ ! 671: 645 00011C1C # { ! 672: 646 00011C1C 13 0099 jbr L461 ! 673: 647 00011C1F L462: ! 674: 648 00011C1F # err_code = code; ! 675: 649 00011C1F 0d ad04 effffffacd movl 4(fp),_err_code ! 676: 650 00011C27 # sgl_value_4 = dbl_ld_acc.m; ! 677: 651 00011C27 0d effffffac7 effffffac2 movl _dbl_ld_acc,_sgl_value_4 ! 678: 652 00011C32 # sgl_value_5 = dbl_value_1.m; ! 679: 653 00011C32 0d effffffabc effffffab7 movl _dbl_value_1,_sgl_value_5 ! 680: 654 00011C3D # asm("movl _test_no,r0"); /* r0 = test number */ ! 681: 655 00011C3D 0d effffffab1 50 movl _test_no,r0 ! 682: 656 00011C44 # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 683: 657 00011C44 0d effffffaaa 51 movl _subtest,r1 ! 684: 658 00011C4B # asm("movl _err_code,r2"); /* r2 = error code */ ! 685: 659 00011C4B 0d effffffaa3 52 movl _err_code,r2 ! 686: 660 00011C52 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 687: 661 00011C52 0d effffffa9c 53 movl _cycle,r3 ! 688: 662 00011C59 # asm("movl _sgl_value_4,r4"); /* r4 = floating operand 1 */ ! 689: 663 00011C59 0d effffffa95 54 movl _sgl_value_4,r4 ! 690: 664 00011C60 # asm("movl _sgl_value_5,r5"); /* r5 = floating operand 2 */ ! 691: 665 00011C60 0d effffffa8e 55 movl _sgl_value_5,r5 ! 692: 666 00011C67 # asm("movl _sgl_value_1,r6"); /* r6 = integer operand 1 */ ! 693: 667 00011C67 0d effffffa87 56 movl _sgl_value_1,r6 ! 694: 668 00011C6E # asm("movl _sgl_value_2,r7"); /* r7 = integer operand 2 */ ! 695: 669 00011C6E 0d effffffa80 57 movl _sgl_value_2,r7 ! 696: 670 00011C75 # asm("movl _sgl_value_3,r8"); /* r8 = final int. value */ ! 697: 671 00011C75 0d effffffa79 58 movl _sgl_value_3,r8 ! 698: 672 00011C7C # if( code == 1 ) ! 699: 673 00011C7C 1d ad04 01 cmpl 4(fp),$1 ! 700: 674 00011C80 21 09 jneq L463 ! 701: 675 00011C82 # asm("movl _index,r9"); /* r9 = data index */ ! 702: 676 00011C82 0d effffffa6c 59 movl _index,r9 ! 703: 677 00011C89 # else { ! 704: 678 00011C89 11 2b jbr L464 ! 705: 679 00011C8B L463: ! 706: 680 00011C8B # sgl_value_6 = post_evt_acc.m; ! 707: 681 00011C8B 0d effffffa63 effffffa5e movl _post_evt_acc,_sgl_value_6 ! 708: 682 00011C96 # sgl_value_7 = dbl_expected.m; ! 709: 683 00011C96 0d effffffa58 effffffa53 movl _dbl_expected,_sgl_value_7 ! 710: 684 00011CA1 # asm("movl _sgl_value_6,r9"); /* r9 = final accumulator */ ! 711: 685 00011CA1 0d effffffa4d 59 movl _sgl_value_6,r9 ! 712: 686 00011CA8 # asm("movl _sgl_value_7,r10"); /* r10 = expected acc. */ ! 713: 687 00011CA8 0d effffffa46 5a movl _sgl_value_7,r10 ! 714: 688 00011CAF # asm("movl _index,r11"); /* r11 = data index */ ! 715: 689 00011CAF 0d effffffa3f 5b movl _index,r11 ! 716: 690 00011CB6 # } ! 717: 691 00011CB6 L464: ! 718: 692 00011CB6 # asm("halt");; /* HALT ... */ ! 719: 693 00011CB6 00 halt ! 720: 694 00011CB7 # } ! 721: 695 00011CB7 40 ret#2 ! 722: 696 00011CB8 .set L459,0x0 ! 723: 697 00011CB8 L461: ! 724: 698 00011CB8 13 ff64 jbr L462 ! 725: 699 00011CBB .data ! 726: 699 000233AF .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.