|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 000003a0 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _int_ovfl_test ! 6: 6 00000000 _int_ovfl_test: ! 7: 7 0000DAB0 0000 .word L381 ! 8: 8 0000DAB2 # ! 9: 9 0000DAB2 # #include "evt_defs.h" ! 10: 10 0000DAB2 # ! 11: 11 0000DAB2 # /* ! 12: 12 0000DAB2 # ******************************************************************** ! 13: 13 0000DAB2 # * ! 14: 14 0000DAB2 # * MONITOR FOR THE FPP INTEGER-OVERFLOW EVENT TEST ! 15: 15 0000DAB2 # * ! 16: 16 0000DAB2 # * This test will generate integer-overflow faults with the FPP. ! 17: 17 0000DAB2 # * There are 2 ways for the floating point to generate integer overflows: ! 18: 18 0000DAB2 # * -either with the convert floating to integer instructions (CVFL, CVDL), ! 19: 19 0000DAB2 # * or with the longword integer multiply instructions (MULL2, MULL3). ! 20: 20 0000DAB2 # * CVFL and CVDL can cause integer overflows because any floating point ! 21: 21 0000DAB2 # * accumulator larger than +(2**23)-1 or -2**23 will be too big to store ! 22: 22 0000DAB2 # * as a longword integer. ! 23: 23 0000DAB2 # * The test will cause the overflows with and without the integer ! 24: 24 0000DAB2 # * overflow event being enabled. If the event is enabled we'll get an ! 25: 25 0000DAB2 # * arithmetic trap (but the overflow bit (V) will NOT be set in the PSL. ! 26: 26 0000DAB2 # * If the event is disabled then no event will occur but the 'V' bit ! 27: 27 0000DAB2 # * will be set in the PSL. ! 28: 28 0000DAB2 # * The integer multiplys will only be tested if there is an active FPP ! 29: 29 0000DAB2 # * in the system. The converts will always be tested. ! 30: 30 0000DAB2 # * ! 31: 31 0000DAB2 # * 26-Mar-85 : written ! 32: 32 0000DAB2 # * 20-Jul-85 : added MULL2, MULL3 ! 33: 33 0000DAB2 # * ! 34: 34 0000DAB2 # ******************************************************************** ! 35: 35 0000DAB2 # */ ! 36: 36 0000DAB2 # int_ovfl_test() ! 37: 37 0000DAB2 # { ! 38: 38 0000DAB2 13 0126 jbr L383 ! 39: 39 0000DAB5 L384: ! 40: 40 0000DAB5 # event_msg = "Integer Overflow"; ! 41: 41 0000DAB5 .data 1 ! 42: 42 000003a0 * L385: ! 43: 43 000003a0 * 496E7465676572204F7665726 .ascii "Integer Overflow\0" ! 44: 66C6F7700 ! 45: 44 000003b1 * .text ! 46: 45 0000DAB5 0d 8f000003a0 effffffff0 movl $L385,_event_msg ! 47: 46 0000DAC0 # test_event = ARITH_CODE; /* expect an arithmetic fault */ ! 48: 47 0000DAC0 0d 34 efffffffe9 movl $52,_test_event ! 49: 48 0000DAC7 # exp_code = INT_OVFL_CODE; /* -specificly integer overflow */ ! 50: 49 0000DAC7 0d 01 efffffffe2 movl $1,_exp_code ! 51: 50 0000DACE # if( evt_inst ) { /* was the op-code specified? */ ! 52: 51 0000DACE 5d efffffffdc tstl _evt_inst ! 53: 52 0000DAD4 21 03 13 00dd jeql L386 ! 54: 53 0000DAD9 # if( evt_inst == CVFL_OP_CODE ) ! 55: 54 0000DAD9 1d efffffffd1 890086 cmpl _evt_inst,$134 ! 56: 55 0000DAE2 21 0a jneq L387 ! 57: 56 0000DAE4 # run_cvfl(); /* test the CVFL instruction */ ! 58: 57 0000DAE4 fe 04 ef000000f3 callf $4,_run_cvfl ! 59: 58 0000DAEB # else if( evt_inst == CVDL_OP_CODE ) ! 60: 59 0000DAEB 13 00c6 jbr L389 ! 61: 60 0000DAEE L387: ! 62: 61 0000DAEE 1d efffffffbc 890087 cmpl _evt_inst,$135 ! 63: 62 0000DAF7 21 0a jneq L390 ! 64: 63 0000DAF9 # run_cvdl(); /* test the CVDL instruction */ ! 65: 64 0000DAF9 fe 04 ef0000017a callf $4,_run_cvdl ! 66: 65 0000DB00 # else if( evt_inst == MULL2_OP_CODE ) { ! 67: 66 0000DB00 13 00b1 jbr L392 ! 68: 67 0000DB03 L390: ! 69: 68 0000DB03 1d efffffffa7 884c cmpl _evt_inst,$76 ! 70: 69 0000DB0B 21 31 jneq L393 ! 71: 70 0000DB0D # if( !no_fpp_wcs ) ! 72: 71 0000DB0D 5d efffffff9d tstl _no_fpp_wcs ! 73: 72 0000DB13 21 09 jneq L394 ! 74: 73 0000DB15 # run_mull2(); /* test the MULL2 instruction */ ! 75: 74 0000DB15 fe 04 ef000001fa callf $4,_run_mull2 ! 76: 75 0000DB1C # else { ! 77: 76 0000DB1C 11 1e jbr L396 ! 78: 77 0000DB1E L394: ! 79: 78 0000DB1E # if( (prt_hdrs) && (cycle == 1) ) ! 80: 79 0000DB1E 5d efffffff8c tstl _prt_hdrs ! 81: 80 0000DB24 31 16 jeql L397 ! 82: 81 0000DB26 1d efffffff84 01 cmpl _cycle,$1 ! 83: 82 0000DB2D 21 0d jneq L397 ! 84: 83 0000DB2F # writes("MULL2 is only tested with FPP hardware\n"); ! 85: 84 0000DB2F .data 1 ! 86: 85 000003b1 * L399: ! 87: 86 000003b1 * 4D554C4C32206973206F6E6C7 .ascii "MULL2 is only tested with FPP hardware\12\0" ! 88: 9207465737465642077697468 ! 89: 2046505020686172647761726 ! 90: 50A00 ! 91: 87 000003d9 * .text ! 92: 88 0000DB2F dd 8f000003b1 pushl $L399 ! 93: 89 0000DB35 fe 08 efffffff74 callf $8,_writes ! 94: 90 0000DB3C # } ! 95: 91 0000DB3C L397: ! 96: 92 0000DB3C L396: ! 97: 93 0000DB3C # } ! 98: 94 0000DB3C # else if( evt_inst == MULL3_OP_CODE ) { ! 99: 95 0000DB3C 11 76 jbr L400 ! 100: 96 0000DB3E L393: ! 101: 97 0000DB3E 1d efffffff6c 885c cmpl _evt_inst,$92 ! 102: 98 0000DB46 21 31 jneq L401 ! 103: 99 0000DB48 # if( !no_fpp_wcs ) ! 104: 100 0000DB48 5d efffffff62 tstl _no_fpp_wcs ! 105: 101 0000DB4E 21 09 jneq L402 ! 106: 102 0000DB50 # run_mull3(); /* test the MULL3 instruction */ ! 107: 103 0000DB50 fe 04 ef0000025b callf $4,_run_mull3 ! 108: 104 0000DB57 # else { ! 109: 105 0000DB57 11 1e jbr L404 ! 110: 106 0000DB59 L402: ! 111: 107 0000DB59 # if( (prt_hdrs) && (cycle == 1) ) ! 112: 108 0000DB59 5d efffffff51 tstl _prt_hdrs ! 113: 109 0000DB5F 31 16 jeql L405 ! 114: 110 0000DB61 1d efffffff49 01 cmpl _cycle,$1 ! 115: 111 0000DB68 21 0d jneq L405 ! 116: 112 0000DB6A # writes("MULL3 is only tested with FPP hardware\n"); ! 117: 113 0000DB6A .data 1 ! 118: 114 000003d9 * L406: ! 119: 115 000003d9 * 4D554C4C33206973206F6E6C7 .ascii "MULL3 is only tested with FPP hardware\12\0" ! 120: 9207465737465642077697468 ! 121: 2046505020686172647761726 ! 122: 50A00 ! 123: 116 00000401 * .text ! 124: 117 0000DB6A dd 8f000003d9 pushl $L406 ! 125: 118 0000DB70 fe 08 efffffff39 callf $8,_writes ! 126: 119 0000DB77 # } ! 127: 120 0000DB77 L405: ! 128: 121 0000DB77 L404: ! 129: 122 0000DB77 # } ! 130: 123 0000DB77 # else if( (prt_hdrs) && (cycle == 1) ) { ! 131: 124 0000DB77 11 3b jbr L407 ! 132: 125 0000DB79 L401: ! 133: 126 0000DB79 5d efffffff31 tstl _prt_hdrs ! 134: 127 0000DB7F 31 33 jeql L408 ! 135: 128 0000DB81 1d efffffff29 01 cmpl _cycle,$1 ! 136: 129 0000DB88 21 2a jneq L408 ! 137: 130 0000DB8A # writes( ! 138: 131 0000DB8A # "There are no INTEGER OVERFLOW faults with op-code "); ! 139: 132 0000DB8A .data 1 ! 140: 133 00000401 * L409: ! 141: 134 00000401 * 546865726520617265206E6F2 .ascii "There are no INTEGER OVERFLOW faults with op-code \0" ! 142: 0494E5445474552204F564552 ! 143: 464C4F57206661756C7473207 ! 144: 7697468206F702D636F646520 ! 145: 00 ! 146: 135 00000434 * .text ! 147: 136 0000DB8A dd 8f00000401 pushl $L409 ! 148: 137 0000DB90 fe 08 efffffff19 callf $8,_writes ! 149: 138 0000DB97 # writeh( evt_inst ); /* print the ersatz op-code */ ! 150: 139 0000DB97 dd efffffff13 pushl _evt_inst ! 151: 140 0000DB9D fe 08 efffffff0c callf $8,_writeh ! 152: 141 0000DBA4 # writec('\n'); ! 153: 142 0000DBA4 dd 0a pushl $10 ! 154: 143 0000DBA6 fe 08 efffffff03 callf $8,_writec ! 155: 144 0000DBAD # error = TRUE; /* needed for line feed spacing */ ! 156: 145 0000DBAD 0d 01 effffffefc movl $1,_error ! 157: 146 0000DBB4 # } ! 158: 147 0000DBB4 # } ! 159: 148 0000DBB4 L408: ! 160: 149 0000DBB4 L407: ! 161: 150 0000DBB4 L400: ! 162: 151 0000DBB4 L392: ! 163: 152 0000DBB4 L389: ! 164: 153 0000DBB4 # else { /* test all instructions */ ! 165: 154 0000DBB4 11 24 jbr L412 ! 166: 155 0000DBB6 L386: ! 167: 156 0000DBB6 # run_cvfl(); /* test the CVFL instruction */ ! 168: 157 0000DBB6 fe 04 ef00000021 callf $4,_run_cvfl ! 169: 158 0000DBBD # run_cvdl(); /* test the CVDL instruction */ ! 170: 159 0000DBBD fe 04 ef000000b6 callf $4,_run_cvdl ! 171: 160 0000DBC4 # if( !no_fpp_wcs ) { ! 172: 161 0000DBC4 5d effffffee6 tstl _no_fpp_wcs ! 173: 162 0000DBCA 21 0e jneq L413 ! 174: 163 0000DBCC # run_mull2(); /* test the MULL2 instruction */ ! 175: 164 0000DBCC fe 04 ef00000143 callf $4,_run_mull2 ! 176: 165 0000DBD3 # run_mull3(); /* test the MULL3 instruction */ ! 177: 166 0000DBD3 fe 04 ef000001d8 callf $4,_run_mull3 ! 178: 167 0000DBDA # } ! 179: 168 0000DBDA # } ! 180: 169 0000DBDA L413: ! 181: 170 0000DBDA L412: ! 182: 171 0000DBDA # } ! 183: 172 0000DBDA 40 ret#2 ! 184: 173 0000DBDB .set L381,0x0 ! 185: 174 0000DBDB L383: ! 186: 175 0000DBDB 13 fed7 jbr L384 ! 187: 176 0000DBDE .data ! 188: 177 000003a0 * .text ! 189: 178 0000DBDE .align 1 ! 190: 179 0000DBDE .globl _run_cvfl ! 191: 180 0000DBDE _run_cvfl: ! 192: 181 0000DBDE 0000 .word L414 ! 193: 182 0000DBE0 # ! 194: 183 0000DBE0 # ! 195: 184 0000DBE0 # /* ! 196: 185 0000DBE0 # ********************************************************************** ! 197: 186 0000DBE0 # * ! 198: 187 0000DBE0 # * SET UP TO TEST INTEGER OVERFLOW WITH THE CVFL INSTRUCTION ! 199: 188 0000DBE0 # * ! 200: 189 0000DBE0 # ********************************************************************** ! 201: 190 0000DBE0 # */ ! 202: 191 0000DBE0 # run_cvfl() ! 203: 192 0000DBE0 # { ! 204: 193 0000DBE0 13 0094 jbr L416 ! 205: 194 0000DBE3 L417: ! 206: 195 0000DBE3 # valid_test = TRUE; /* a test is being run */ ! 207: 196 0000DBE3 0d 01 effffffec6 movl $1,_valid_test ! 208: 197 0000DBEA # op_code = CVFL_OP_CODE; /* set the inst's op_code */ ! 209: 198 0000DBEA 0d 890086 effffffebd movl $134,_op_code ! 210: 199 0000DBF3 # op_name = "CVFL "; /* set the inst's name */ ! 211: 200 0000DBF3 .data 1 ! 212: 201 00000434 * L418: ! 213: 202 00000434 * 4356464C2000 .ascii "CVFL \0" ! 214: 203 0000043a * .text ! 215: 204 0000DBF3 0d 8f00000434 effffffeb2 movl $L418,_op_name ! 216: 205 0000DBFE # precision = SGL; ! 217: 206 0000DBFE 0d 01 effffffeab movl $1,_precision ! 218: 207 0000DC05 # acc_ld_size = SGL; /* load a single precision Acc. */ ! 219: 208 0000DC05 0d 01 effffffea4 movl $1,_acc_ld_size ! 220: 209 0000DC0C # sgl_op = TRUE; ! 221: 210 0000DC0C 0d 01 effffffe9d movl $1,_sgl_op ! 222: 211 0000DC13 # no_ops = 1; /* one operand */ ! 223: 212 0000DC13 0d 01 effffffe96 movl $1,_no_ops ! 224: 213 0000DC1A # data_ptr = cvfl_ov_dat; /* set the data ptr */ ! 225: 214 0000DC1A 0d 8f00000000 effffffe8b movl $_cvfl_ov_dat,_data_ptr ! 226: 215 0000DC25 # max_index = cvfl_ov_cnt; /* set the max index */ ! 227: 216 0000DC25 0d effffffe85 effffffe80 movl _cvfl_ov_cnt,_max_index ! 228: 217 0000DC30 # if( (prt_hdrs) && (cycle == 1) ) ! 229: 218 0000DC30 5d effffffe7a tstl _prt_hdrs ! 230: 219 0000DC36 31 16 jeql L419 ! 231: 220 0000DC38 1d effffffe72 01 cmpl _cycle,$1 ! 232: 221 0000DC3F 21 0d jneq L419 ! 233: 222 0000DC41 # writes( op_name ); ! 234: 223 0000DC41 dd effffffe69 pushl _op_name ! 235: 224 0000DC47 fe 08 effffffe62 callf $8,_writes ! 236: 225 0000DC4E # disable_mask = 0; /* don't disable any events */ ! 237: 226 0000DC4E L419: ! 238: 227 0000DC4E 4b effffffe5c clrw _disable_mask ! 239: 228 0000DC54 # evt_disabled = FALSE; /* expected event is enabled */ ! 240: 229 0000DC54 4d effffffe56 clrl _evt_disabled ! 241: 230 0000DC5A # test_inst(); ! 242: 231 0000DC5A fe 04 effffffe4f callf $4,_test_inst ! 243: 232 0000DC61 # disable_mask = PSL_EN_OVFL; /* disable the int ovfl event */ ! 244: 233 0000DC61 7f 20 effffffe48 cvtlw $32,_disable_mask ! 245: 234 0000DC68 # evt_disabled = TRUE; ! 246: 235 0000DC68 0d 01 effffffe41 movl $1,_evt_disabled ! 247: 236 0000DC6F # test_inst(); ! 248: 237 0000DC6F fe 04 effffffe3a callf $4,_test_inst ! 249: 238 0000DC76 # } ! 250: 239 0000DC76 40 ret#2 ! 251: 240 0000DC77 .set L414,0x0 ! 252: 241 0000DC77 L416: ! 253: 242 0000DC77 13 ff69 jbr L417 ! 254: 243 0000DC7A .data ! 255: 244 000003a0 * .text ! 256: 245 0000DC7A .align 1 ! 257: 246 0000DC7A .globl _run_cvdl ! 258: 247 0000DC7A _run_cvdl: ! 259: 248 0000DC7A 0000 .word L421 ! 260: 249 0000DC7C # ! 261: 250 0000DC7C # /* ! 262: 251 0000DC7C # ********************************************************************** ! 263: 252 0000DC7C # * ! 264: 253 0000DC7C # * SET UP TO TEST INTEGER OVERFLOW WITH THE CVDL INSTRUCTION ! 265: 254 0000DC7C # * ! 266: 255 0000DC7C # ********************************************************************** ! 267: 256 0000DC7C # */ ! 268: 257 0000DC7C # run_cvdl() ! 269: 258 0000DC7C # { ! 270: 259 0000DC7C 13 0094 jbr L423 ! 271: 260 0000DC7F L424: ! 272: 261 0000DC7F # valid_test = TRUE; /* a test is being run */ ! 273: 262 0000DC7F 0d 01 effffffe2a movl $1,_valid_test ! 274: 263 0000DC86 # op_code = CVDL_OP_CODE; /* set the inst's op_code */ ! 275: 264 0000DC86 0d 890087 effffffe21 movl $135,_op_code ! 276: 265 0000DC8F # op_name = "CVDL "; /* set the inst's name */ ! 277: 266 0000DC8F .data 1 ! 278: 267 0000043a * L425: ! 279: 268 0000043a * 4356444C2000 .ascii "CVDL \0" ! 280: 269 00000440 * .text ! 281: 270 0000DC8F 0d 8f0000043a effffffe16 movl $L425,_op_name ! 282: 271 0000DC9A # precision = DBL; ! 283: 272 0000DC9A 0d 02 effffffe0f movl $2,_precision ! 284: 273 0000DCA1 # acc_ld_size = DBL; /* load a double precision Acc. */ ! 285: 274 0000DCA1 0d 02 effffffe08 movl $2,_acc_ld_size ! 286: 275 0000DCA8 # sgl_op = TRUE; ! 287: 276 0000DCA8 0d 01 effffffe01 movl $1,_sgl_op ! 288: 277 0000DCAF # no_ops = 1; /* one operand */ ! 289: 278 0000DCAF 0d 01 effffffdfa movl $1,_no_ops ! 290: 279 0000DCB6 # data_ptr = cvdl_ov_dat; /* set the data ptr */ ! 291: 280 0000DCB6 0d 8f00000000 effffffdef movl $_cvdl_ov_dat,_data_ptr ! 292: 281 0000DCC1 # max_index = cvdl_ov_cnt; /* set the max index */ ! 293: 282 0000DCC1 0d effffffde9 effffffde4 movl _cvdl_ov_cnt,_max_index ! 294: 283 0000DCCC # if( (prt_hdrs) && (cycle == 1) ) ! 295: 284 0000DCCC 5d effffffdde tstl _prt_hdrs ! 296: 285 0000DCD2 31 16 jeql L426 ! 297: 286 0000DCD4 1d effffffdd6 01 cmpl _cycle,$1 ! 298: 287 0000DCDB 21 0d jneq L426 ! 299: 288 0000DCDD # writes( op_name ); ! 300: 289 0000DCDD dd effffffdcd pushl _op_name ! 301: 290 0000DCE3 fe 08 effffffdc6 callf $8,_writes ! 302: 291 0000DCEA # disable_mask = 0; /* don't disable any events */ ! 303: 292 0000DCEA L426: ! 304: 293 0000DCEA 4b effffffdc0 clrw _disable_mask ! 305: 294 0000DCF0 # evt_disabled = FALSE; /* expected event is enabled */ ! 306: 295 0000DCF0 4d effffffdba clrl _evt_disabled ! 307: 296 0000DCF6 # test_inst(); ! 308: 297 0000DCF6 fe 04 effffffdb3 callf $4,_test_inst ! 309: 298 0000DCFD # disable_mask = PSL_EN_OVFL; /* disable the int ovfl event */ ! 310: 299 0000DCFD 7f 20 effffffdac cvtlw $32,_disable_mask ! 311: 300 0000DD04 # evt_disabled = TRUE; ! 312: 301 0000DD04 0d 01 effffffda5 movl $1,_evt_disabled ! 313: 302 0000DD0B # test_inst(); ! 314: 303 0000DD0B fe 04 effffffd9e callf $4,_test_inst ! 315: 304 0000DD12 # } ! 316: 305 0000DD12 40 ret#2 ! 317: 306 0000DD13 .set L421,0x0 ! 318: 307 0000DD13 L423: ! 319: 308 0000DD13 13 ff69 jbr L424 ! 320: 309 0000DD16 .data ! 321: 310 000003a0 * .text ! 322: 311 0000DD16 .align 1 ! 323: 312 0000DD16 .globl _run_mull2 ! 324: 313 0000DD16 _run_mull2: ! 325: 314 0000DD16 0000 .word L427 ! 326: 315 0000DD18 # ! 327: 316 0000DD18 # ! 328: 317 0000DD18 # /* ! 329: 318 0000DD18 # ********************************************************************** ! 330: 319 0000DD18 # * ! 331: 320 0000DD18 # * SET UP TO TEST INTEGER OVERFLOW WITH THE MULL2 INSTRUCTION ! 332: 321 0000DD18 # * ! 333: 322 0000DD18 # ********************************************************************** ! 334: 323 0000DD18 # */ ! 335: 324 0000DD18 # run_mull2() ! 336: 325 0000DD18 # { ! 337: 326 0000DD18 13 0093 jbr L429 ! 338: 327 0000DD1B L430: ! 339: 328 0000DD1B # valid_test = TRUE; /* a test is being run */ ! 340: 329 0000DD1B 0d 01 effffffd8e movl $1,_valid_test ! 341: 330 0000DD22 # op_code = MULL2_OP_CODE; /* set the inst's op_code */ ! 342: 331 0000DD22 0d 884c effffffd86 movl $76,_op_code ! 343: 332 0000DD2A # op_name = "MULL2 "; /* set the inst's name */ ! 344: 333 0000DD2A .data 1 ! 345: 334 00000440 * L431: ! 346: 335 00000440 * 4D554C4C322000 .ascii "MULL2 \0" ! 347: 336 00000447 * .text ! 348: 337 0000DD2A 0d 8f00000440 effffffd7b movl $L431,_op_name ! 349: 338 0000DD35 # precision = SGL; ! 350: 339 0000DD35 0d 01 effffffd74 movl $1,_precision ! 351: 340 0000DD3C # acc_ld_size = DBL; /* load a double precision Acc. */ ! 352: 341 0000DD3C 0d 02 effffffd6d movl $2,_acc_ld_size ! 353: 342 0000DD43 # sgl_op = TRUE; ! 354: 343 0000DD43 0d 01 effffffd66 movl $1,_sgl_op ! 355: 344 0000DD4A # no_ops = 2; /* two operands */ ! 356: 345 0000DD4A 0d 02 effffffd5f movl $2,_no_ops ! 357: 346 0000DD51 # data_ptr = mull_ov_dat; /* set the data ptr */ ! 358: 347 0000DD51 0d 8f00000000 effffffd54 movl $_mull_ov_dat,_data_ptr ! 359: 348 0000DD5C # max_index = mull_ov_cnt; /* set the max index */ ! 360: 349 0000DD5C 0d effffffd4e effffffd49 movl _mull_ov_cnt,_max_index ! 361: 350 0000DD67 # if( (prt_hdrs) && (cycle == 1) ) ! 362: 351 0000DD67 5d effffffd43 tstl _prt_hdrs ! 363: 352 0000DD6D 31 16 jeql L432 ! 364: 353 0000DD6F 1d effffffd3b 01 cmpl _cycle,$1 ! 365: 354 0000DD76 21 0d jneq L432 ! 366: 355 0000DD78 # writes( op_name ); ! 367: 356 0000DD78 dd effffffd32 pushl _op_name ! 368: 357 0000DD7E fe 08 effffffd2b callf $8,_writes ! 369: 358 0000DD85 # disable_mask = 0; /* don't disable any events */ ! 370: 359 0000DD85 L432: ! 371: 360 0000DD85 4b effffffd25 clrw _disable_mask ! 372: 361 0000DD8B # evt_disabled = FALSE; /* expected event is enabled */ ! 373: 362 0000DD8B 4d effffffd1f clrl _evt_disabled ! 374: 363 0000DD91 # test_inst(); ! 375: 364 0000DD91 fe 04 effffffd18 callf $4,_test_inst ! 376: 365 0000DD98 # disable_mask = PSL_EN_OVFL; /* disable the int ovfl event */ ! 377: 366 0000DD98 7f 20 effffffd11 cvtlw $32,_disable_mask ! 378: 367 0000DD9F # evt_disabled = TRUE; ! 379: 368 0000DD9F 0d 01 effffffd0a movl $1,_evt_disabled ! 380: 369 0000DDA6 # test_inst(); ! 381: 370 0000DDA6 fe 04 effffffd03 callf $4,_test_inst ! 382: 371 0000DDAD # } ! 383: 372 0000DDAD 40 ret#2 ! 384: 373 0000DDAE .set L427,0x0 ! 385: 374 0000DDAE L429: ! 386: 375 0000DDAE 13 ff6a jbr L430 ! 387: 376 0000DDB1 .data ! 388: 377 000003a0 * .text ! 389: 378 0000DDB1 00 .align 1 ! 390: 379 0000DDB2 .globl _run_mull3 ! 391: 380 0000DDB2 _run_mull3: ! 392: 381 0000DDB2 0000 .word L433 ! 393: 382 0000DDB4 # ! 394: 383 0000DDB4 # ! 395: 384 0000DDB4 # ! 396: 385 0000DDB4 # /* ! 397: 386 0000DDB4 # ********************************************************************** ! 398: 387 0000DDB4 # * ! 399: 388 0000DDB4 # * SET UP TO TEST INTEGER OVERFLOW WITH THE MULL3 INSTRUCTION ! 400: 389 0000DDB4 # * ! 401: 390 0000DDB4 # ********************************************************************** ! 402: 391 0000DDB4 # */ ! 403: 392 0000DDB4 # run_mull3() ! 404: 393 0000DDB4 # { ! 405: 394 0000DDB4 13 0093 jbr L435 ! 406: 395 0000DDB7 L436: ! 407: 396 0000DDB7 # valid_test = TRUE; /* a test is being run */ ! 408: 397 0000DDB7 0d 01 effffffcf2 movl $1,_valid_test ! 409: 398 0000DDBE # op_code = MULL3_OP_CODE; /* set the inst's op_code */ ! 410: 399 0000DDBE 0d 885c effffffcea movl $92,_op_code ! 411: 400 0000DDC6 # op_name = "MULL3 "; /* set the inst's name */ ! 412: 401 0000DDC6 .data 1 ! 413: 402 00000447 * L437: ! 414: 403 00000447 * 4D554C4C332000 .ascii "MULL3 \0" ! 415: 404 0000044e * .text ! 416: 405 0000DDC6 0d 8f00000447 effffffcdf movl $L437,_op_name ! 417: 406 0000DDD1 # precision = SGL; ! 418: 407 0000DDD1 0d 01 effffffcd8 movl $1,_precision ! 419: 408 0000DDD8 # acc_ld_size = DBL; /* load a double precision Acc. */ ! 420: 409 0000DDD8 0d 02 effffffcd1 movl $2,_acc_ld_size ! 421: 410 0000DDDF # sgl_op = TRUE; ! 422: 411 0000DDDF 0d 01 effffffcca movl $1,_sgl_op ! 423: 412 0000DDE6 # no_ops = 3; /* three operands */ ! 424: 413 0000DDE6 0d 03 effffffcc3 movl $3,_no_ops ! 425: 414 0000DDED # data_ptr = mull_ov_dat; /* set the data ptr */ ! 426: 415 0000DDED 0d 8f00000000 effffffcb8 movl $_mull_ov_dat,_data_ptr ! 427: 416 0000DDF8 # max_index = mull_ov_cnt; /* set the max index */ ! 428: 417 0000DDF8 0d effffffcb2 effffffcad movl _mull_ov_cnt,_max_index ! 429: 418 0000DE03 # if( (prt_hdrs) && (cycle == 1) ) ! 430: 419 0000DE03 5d effffffca7 tstl _prt_hdrs ! 431: 420 0000DE09 31 16 jeql L438 ! 432: 421 0000DE0B 1d effffffc9f 01 cmpl _cycle,$1 ! 433: 422 0000DE12 21 0d jneq L438 ! 434: 423 0000DE14 # writes( op_name ); ! 435: 424 0000DE14 dd effffffc96 pushl _op_name ! 436: 425 0000DE1A fe 08 effffffc8f callf $8,_writes ! 437: 426 0000DE21 # disable_mask = 0; /* don't disable any events */ ! 438: 427 0000DE21 L438: ! 439: 428 0000DE21 4b effffffc89 clrw _disable_mask ! 440: 429 0000DE27 # evt_disabled = FALSE; /* expected event is enabled */ ! 441: 430 0000DE27 4d effffffc83 clrl _evt_disabled ! 442: 431 0000DE2D # test_inst(); ! 443: 432 0000DE2D fe 04 effffffc7c callf $4,_test_inst ! 444: 433 0000DE34 # disable_mask = PSL_EN_OVFL; /* disable the int ovfl event */ ! 445: 434 0000DE34 7f 20 effffffc75 cvtlw $32,_disable_mask ! 446: 435 0000DE3B # evt_disabled = TRUE; ! 447: 436 0000DE3B 0d 01 effffffc6e movl $1,_evt_disabled ! 448: 437 0000DE42 # test_inst(); ! 449: 438 0000DE42 fe 04 effffffc67 callf $4,_test_inst ! 450: 439 0000DE49 # } ! 451: 440 0000DE49 40 ret#2 ! 452: 441 0000DE4A .set L433,0x0 ! 453: 442 0000DE4A L435: ! 454: 443 0000DE4A 13 ff6a jbr L436 ! 455: 444 0000DE4D .data ! 456: 445 000003a0 * # ! 457: 446 000003a0 * # ! 458: 446 000003a0 * #
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.