|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000504 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _pipe12 ! 6: 6 00000000 _pipe12: ! 7: 7 00012F00 0000 .word L381 ! 8: 8 00012F02 # ! 9: 9 00012F02 # ! 10: 10 00012F02 # #include "evt_defs.h" ! 11: 11 00012F02 # ! 12: 12 00012F02 # /* ! 13: 13 00012F02 # ********************************************************************* ! 14: 14 00012F02 # * FPP PIPELINED EVENTS TEST #12 ! 15: 15 00012F02 # * ! 16: 16 00012F02 # * This test will execute the following code: "LDD CVDF LDD" ! 17: 17 00012F02 # * with an overflow fault on the CVDF. We will make sure that: ! 18: 18 00012F02 # * 1. The fault is detected, and ! 19: 19 00012F02 # * 2. the 2nd load instruction is not executed. ! 20: 20 00012F02 # ********************************************************************* ! 21: 21 00012F02 # */ ! 22: 22 00012F02 # pipe12() ! 23: 23 00012F02 # { ! 24: 24 00012F02 13 0125 jbr L383 ! 25: 25 00012F05 L384: ! 26: 26 00012F05 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */ ! 27: 27 00012F05 ed 6d effffffff4 moval (r13),_pre_event_fp ! 28: 28 00012F0C # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */ ! 29: 29 00012F0C ed 6e efffffffed moval (r14),_pre_event_sp ! 30: 30 00012F13 # precision = DBL; ! 31: 31 00012F13 0d 02 efffffffe6 movl $2,_precision ! 32: 32 00012F1A # test_event = ARITH_CODE; /* expect an arithmetic fault */ ! 33: 33 00012F1A 0d 34 efffffffdf movl $52,_test_event ! 34: 34 00012F21 # exp_code = FLT_OVFL_CODE; /* - specificly underflow */ ! 35: 35 00012F21 0d 04 efffffffd8 movl $4,_exp_code ! 36: 36 00012F28 # exp_event = FALSE; /* ... but not yet */ ! 37: 37 00012F28 4d efffffffd2 clrl _exp_event ! 38: 38 00012F2E # asm("movab _pipe12_ret,_event_return"); /* set event return address */ ! 39: 39 00012F2E e9 ef0000009e efffffffc7 movab _pipe12_ret,_event_return ! 40: 40 00012F39 # max_index = cvdf_ov_cnt; /* set max operand index */ ! 41: 41 00012F39 0d efffffffc1 efffffffbc movl _cvdf_ov_cnt,_max_index ! 42: 42 00012F44 # for( index = 0; index < max_index; index++ ) ! 43: 43 00012F44 4d efffffffb6 clrl _index ! 44: 44 00012F4A L387: ! 45: 45 00012F4A 1d efffffffb0 efffffffab cmpl _index,_max_index ! 46: 46 00012F55 91 03 13 00cf jgeq L386 ! 47: 47 00012F5A # { ! 48: 48 00012F5A # dbl_ld_acc = cvdf_ov_dat[index].op_1; /* get the Acc data */ ! 49: 49 00012F5A 48 04 efffffff9f 50 shll $4,_index,r0 ! 50: 50 00012F62 0c 8f00000000 50 addl2 $_cvdf_ov_dat,r0 ! 51: 51 00012F69 0d a004 efffffff93 movl 4(r0),_dbl_ld_acc+4 ! 52: 52 00012F71 0d 60 efffffff88 movl (r0),_dbl_ld_acc ! 53: 53 00012F78 # dbl_value_1.m = 0x12345678; /* dummy load data */ ! 54: 54 00012F78 0d 8f12345678 efffffff7d movl $305419896,_dbl_value_1 ! 55: 55 00012F83 # dbl_value_1.l = 0xfedcba98; ! 56: 56 00012F83 0d 8ffedcba98 efffffff76 movl $-19088744,_dbl_value_1+4 ! 57: 57 00012F8E # asm(".globl _pipe12_lp1"); ! 58: 58 00012F8E .globl _pipe12_lp1 ! 59: 59 00012F8E # asm("_pipe12_lp1:"); ! 60: 60 00012F8E _pipe12_lp1: ! 61: 61 00012F8E # asm("bispsw $0x60"); /* enable ovfl&undfl */ ! 62: 62 00012F8E 8b 8860 bispsw $0x60 ! 63: 63 00012F91 # asm("ldd _dbl_ld_acc"); /* load the Acc. */ ! 64: 64 00012F91 07 efffffff69 ldd _dbl_ld_acc ! 65: 65 00012F97 # exp_event = test_event; /* expect event soon */ ! 66: 66 00012F97 0d efffffff63 efffffff5e movl _test_event,_exp_event ! 67: 67 00012FA2 # asm("cvdf"); /* trigger the event */ ! 68: 68 00012FA2 a6 cvdf ! 69: 69 00012FA3 # asm("ldd _dbl_value_1"); /* we shouldn't get to here */ ! 70: 70 00012FA3 07 efffffff57 ldd _dbl_value_1 ! 71: 71 00012FA9 # /* ! 72: 72 00012FA9 # * If we got to here then there was no event ! 73: 73 00012FA9 # */ ! 74: 74 00012FA9 # if( force_loop ) ! 75: 75 00012FA9 5d efffffff51 tstl _force_loop ! 76: 76 00012FAF 31 03 jeql L388 ! 77: 77 00012FB1 # asm("brw _pipe12_lp1");; /* loop on the error */ ! 78: Assemb0002A6C0 # asm("brw _pipe12_lp1");; /* loop on the error */ ! 79: "pipe100012F02 e 78: WARNING: brw: destination label is external ! 80: 78 00012FB1 13 ffda brw _pipe12_lp1 ! 81: 79 00012FB4 L388: ! 82: 80 00012FB4 # exp_event = FALSE; /* reset event expected flag */ ! 83: 81 00012FB4 4d efffffff46 clrl _exp_event ! 84: 82 00012FBA # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */ ! 85: 83 00012FBA 9b 8860 bicpsw $0x60 ! 86: 84 00012FBD # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */ ! 87: 85 00012FBD 0d efffffff3d 5d movl _pre_event_fp,fp ! 88: 86 00012FC4 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */ ! 89: 87 00012FC4 0d efffffff36 5e movl _pre_event_sp,sp ! 90: 88 00012FCB # no_pipe12_evt();; /* report the error */ ! 91: 89 00012FCB fe 04 ef0000005c callf $4,_no_pipe12_evt ! 92: 90 00012FD2 # /* ! 93: 91 00012FD2 # * Come here after the event ! 94: 92 00012FD2 # */ ! 95: 93 00012FD2 # asm(".globl _pipe12_ret"); ! 96: 94 00012FD2 .globl _pipe12_ret ! 97: 95 00012FD2 # asm("_pipe12_ret:"); ! 98: 96 00012FD2 _pipe12_ret: ! 99: 97 00012FD2 # asm("movl _pre_event_fp,fp"); /* restore the frame pointer */ ! 100: 98 00012FD2 0d efffffff28 5d movl _pre_event_fp,fp ! 101: 99 00012FD9 # asm("movl _pre_event_sp,sp"); /* restore the stack pointer */ ! 102: 100 00012FD9 0d efffffff21 5e movl _pre_event_sp,sp ! 103: 101 00012FE0 # if( force_loop ) ! 104: 102 00012FE0 5d efffffff1a tstl _force_loop ! 105: 103 00012FE6 31 03 jeql L390 ! 106: 104 00012FE8 # asm("brw _pipe12_lp1");; /* loop on the error */ ! 107: "pipe100012F02 e 105: WARNING: brw: destination label is external ! 108: 105 00012FE8 13 ffa3 brw _pipe12_lp1 ! 109: 106 00012FEB L390: ! 110: 107 00012FEB # asm("bicpsw $0x60"); /* disable ovfl & undfl evts */ ! 111: 108 00012FEB 9b 8860 bicpsw $0x60 ! 112: 109 00012FEE # if( (post_evt_acc.m == dbl_value_1.m) && /* was the 2nd 'LDD' */ ! 113: 110 00012FEE # (post_evt_acc.l == dbl_value_1.l) ) /* executed? */ ! 114: 111 00012FEE 1d efffffff0c efffffff07 cmpl _post_evt_acc,_dbl_value_1 ! 115: 112 00012FF9 21 16 jneq L391 ! 116: 113 00012FFB 1d efffffff03 effffffefe cmpl _post_evt_acc+4,_dbl_value_1+4 ! 117: 114 00013006 21 09 jneq L391 ! 118: 115 00013008 # pipe12_queue_er(); /* queue not cleared error */ ! 119: 116 00013008 fe 04 ef00000195 callf $4,_pipe12_queue_er ! 120: 117 0001300F # else if( post_evt_acc.m ) /* was the Acc. cleared? */ ! 121: 118 0001300F 11 0f jbr L393 ! 122: 119 00013011 L391: ! 123: 120 00013011 5d effffffee9 tstl _post_evt_acc ! 124: 121 00013017 31 07 jeql L394 ! 125: 122 00013019 # bad_pipe12_result(); /* incorrect result error */ ! 126: 123 00013019 fe 04 ef00000090 callf $4,_bad_pipe12_result ! 127: 124 00013020 # ! 128: 125 00013020 # } ! 129: 126 00013020 L394: ! 130: 127 00013020 L393: ! 131: 128 00013020 L385: ! 132: 129 00013020 6d effffffeda incl _index ! 133: 130 00013026 13 ff21 jbr L387 ! 134: 131 00013029 L386: ! 135: 132 00013029 # } ! 136: 133 00013029 40 ret#2 ! 137: 134 0001302A .set L381,0x0 ! 138: 135 0001302A L383: ! 139: 136 0001302A 13 fed8 jbr L384 ! 140: 137 0001302D .data ! 141: 138 00000504 * .text ! 142: 139 0001302D 00 .align 1 ! 143: 140 0001302E .globl _no_pipe12_evt ! 144: 141 0001302E _no_pipe12_evt: ! 145: 142 0001302E 0000 .word L396 ! 146: 143 00013030 # ! 147: 144 00013030 # ! 148: 145 00013030 # ! 149: 146 00013030 # /**************************************************************************** ! 150: 147 00013030 # * Report an "EVENT NOT DETECTED" error ! 151: 148 00013030 # * ! 152: 149 00013030 # * Cycle: xx. EVT test xx. subtest xx. No overflow fault seen. index = xx ! 153: 150 00013030 # * inst = LDD op1, CVDF, LDD op2 (overflow fault on the CVDF) ! 154: 151 00013030 # * op1 = xxxxxxxx xxxxxxxx ! 155: 152 00013030 # ****************************************************************************/ ! 156: 153 00013030 # no_pipe12_evt() ! 157: 154 00013030 # { ! 158: 155 00013030 11 7b jbr L398 ! 159: 156 00013032 L399: ! 160: 157 00013032 # errcnt++; /* bump the error count */ ! 161: 158 00013032 6d effffffec8 incl _errcnt ! 162: 159 00013038 # if ( prt_error ) ! 163: 160 00013038 5d effffffec2 tstl _prt_error ! 164: 161 0001303E 31 46 jeql L400 ! 165: 162 00013040 # { ! 166: 163 00013040 # print_pipe12_er( ". No overflow fault seen." ); ! 167: 164 00013040 .data 1 ! 168: 165 00000504 * L402: ! 169: 166 00000504 * 2E204E6F206F766572666C6F7 .ascii ". No overflow fault seen.\0" ! 170: 7206661756C74207365656E2E ! 171: 00 ! 172: 167 0000051e * .text ! 173: 168 00013040 dd 8f00000504 pushl $L402 ! 174: 169 00013046 fe 08 ef00000273 callf $8,_print_pipe12_er ! 175: 170 0001304D # writes("op1 = "); ! 176: 171 0001304D .data 1 ! 177: 172 0000051e * L404: ! 178: 173 0000051e * 6F7031203D2000 .ascii "op1 = \0" ! 179: 174 00000525 * .text ! 180: 175 0001304D dd 8f0000051e pushl $L404 ! 181: 176 00013053 fe 08 effffffea6 callf $8,_writes ! 182: 177 0001305A # write32h( dbl_ld_acc.m ); ! 183: 178 0001305A dd effffffea0 pushl _dbl_ld_acc ! 184: 179 00013060 fe 08 effffffe99 callf $8,_write32h ! 185: 180 00013067 # writec(' '); ! 186: 181 00013067 dd 20 pushl $32 ! 187: 182 00013069 fe 08 effffffe90 callf $8,_writec ! 188: 183 00013070 # write32h( dbl_ld_acc.l ); ! 189: 184 00013070 dd effffffe8e pushl _dbl_ld_acc+4 ! 190: 185 00013076 fe 08 effffffe83 callf $8,_write32h ! 191: 186 0001307D # writec('\n'); ! 192: 187 0001307D dd 0a pushl $10 ! 193: 188 0001307F fe 08 effffffe7a callf $8,_writec ! 194: 189 00013086 # } ! 195: 190 00013086 # if ( halt_flg ) /* halt on error? */ ! 196: 191 00013086 L400: ! 197: 192 00013086 5d effffffe74 tstl _halt_flg ! 198: 193 0001308C 31 09 jeql L407 ! 199: 194 0001308E # pipe12_halt( 1 ); /* halt with a code of 1 */ ! 200: 195 0001308E dd 01 pushl $1 ! 201: 196 00013090 fe 08 ef000002c7 callf $8,_pipe12_halt ! 202: 197 00013097 # if ( loop_on_err ) ! 203: 198 00013097 L407: ! 204: 199 00013097 5d effffffe63 tstl _loop_on_err ! 205: 200 0001309D 31 0d jeql L409 ! 206: 201 0001309F # { ! 207: 202 0001309F # force_loop = TRUE; /* set the force loop flag */ ! 208: 203 0001309F 0d 01 effffffe5a movl $1,_force_loop ! 209: 204 000130A6 # asm("jmp _pipe12_lp1"); /* and loop */ ! 210: 205 000130A6 71 effffffee2 jmp _pipe12_lp1 ! 211: 206 000130AC # }; ! 212: 207 000130AC L409: ! 213: 208 000130AC # } ! 214: 209 000130AC 40 ret#2 ! 215: 210 000130AD .set L396,0x0 ! 216: 211 000130AD L398: ! 217: 212 000130AD 11 83 jbr L399 ! 218: 213 000130AF .data ! 219: 214 00000504 * .text ! 220: 215 000130AF 00 .align 1 ! 221: 216 000130B0 .globl _bad_pipe12_result ! 222: 217 000130B0 _bad_pipe12_result: ! 223: 218 000130B0 0000 .word L410 ! 224: 219 000130B2 # ! 225: 220 000130B2 # ! 226: 221 000130B2 # ! 227: 222 000130B2 # ! 228: 223 000130B2 # /**************************************************************************** ! 229: 224 000130B2 # * Report an "BAD ACCUMULATOR AFTER THE EVENT" error ! 230: 225 000130B2 # * ! 231: 226 000130B2 # * Cycle: xx. EVT test xx. subtest xx. Bad final Accumulator. index = xx ! 232: 227 000130B2 # * inst = LDD op1, CVDF, LDD op2 (overflow fault on the CVDF) ! 233: 228 000130B2 # * The 2nd LOAD DOUBLE instruction should not be executed. ! 234: 229 000130B2 # * op1 = xxxxxxxx xxxxxxxx, final Acc. = xxxxxxxx ! 235: 230 000130B2 # * op2 = xxxxxxxx xxxxxxxx, expected = xxxxxxxx ! 236: 231 000130B2 # ****************************************************************************/ ! 237: 232 000130B2 # bad_pipe12_result() ! 238: 233 000130B2 # { ! 239: 234 000130B2 13 00eb jbr L412 ! 240: 235 000130B5 L413: ! 241: 236 000130B5 # errcnt++; /* bump the error count */ ! 242: 237 000130B5 6d effffffe45 incl _errcnt ! 243: 238 000130BB # if ( prt_error ) ! 244: 239 000130BB 5d effffffe3f tstl _prt_error ! 245: 240 000130C1 21 03 13 00b3 jeql L414 ! 246: 241 000130C6 # { ! 247: 242 000130C6 # print_pipe12_er( ". Bad final Accumulator" ); ! 248: 243 000130C6 .data 1 ! 249: 244 00000525 * L415: ! 250: 245 00000525 * 2E204261642066696E616C204 .ascii ". Bad final Accumulator\0" ! 251: 16363756D756C61746F7200 ! 252: 246 0000053d * .text ! 253: 247 000130C6 dd 8f00000525 pushl $L415 ! 254: 248 000130CC fe 08 ef000001ed callf $8,_print_pipe12_er ! 255: 249 000130D3 # writes( ! 256: 250 000130D3 # "The 2nd LOAD DOUBLE INSTRUCTION should not be executed\n"); ! 257: 251 000130D3 .data 1 ! 258: 252 0000053d * L416: ! 259: 253 0000053d * 54686520326E64204C4F41442 .ascii "The 2nd LOAD DOUBLE INSTRUCTION should not be executed\12\0" ! 260: 0444F55424C4520494E535452 ! 261: 554354494F4E2073686F756C6 ! 262: 4206E6F742062652065786563 ! 263: 757465640A00 ! 264: 254 00000575 * .text ! 265: 255 000130D3 dd 8f0000053d pushl $L416 ! 266: 256 000130D9 fe 08 effffffe20 callf $8,_writes ! 267: 257 000130E0 # writes("op1 = "); ! 268: 258 000130E0 .data 1 ! 269: 259 00000575 * L417: ! 270: 260 00000575 * 6F7031203D2000 .ascii "op1 = \0" ! 271: 261 0000057c * .text ! 272: 262 000130E0 dd 8f00000575 pushl $L417 ! 273: 263 000130E6 fe 08 effffffe13 callf $8,_writes ! 274: 264 000130ED # write32h( dbl_ld_acc.m ); ! 275: 265 000130ED dd effffffe0d pushl _dbl_ld_acc ! 276: 266 000130F3 fe 08 effffffe06 callf $8,_write32h ! 277: 267 000130FA # writec(' '); ! 278: 268 000130FA dd 20 pushl $32 ! 279: 269 000130FC fe 08 effffffdfd callf $8,_writec ! 280: 270 00013103 # write32h( dbl_ld_acc.l ); ! 281: 271 00013103 dd effffffdfb pushl _dbl_ld_acc+4 ! 282: 272 00013109 fe 08 effffffdf0 callf $8,_write32h ! 283: 273 00013110 # writes(", final Acc. = "); ! 284: 274 00013110 .data 1 ! 285: 275 0000057c * L418: ! 286: 276 0000057c * 2C2066696E616C204163632E2 .ascii ", final Acc. = \0" ! 287: 03D2000 ! 288: 277 0000058c * .text ! 289: 278 00013110 dd 8f0000057c pushl $L418 ! 290: 279 00013116 fe 08 effffffde3 callf $8,_writes ! 291: 280 0001311D # write32h( post_evt_acc.m ); ! 292: 281 0001311D dd effffffddd pushl _post_evt_acc ! 293: 282 00013123 fe 08 effffffdd6 callf $8,_write32h ! 294: 283 0001312A # writes("op2 = "); ! 295: 284 0001312A .data 1 ! 296: 285 0000058c * L419: ! 297: 286 0000058c * 6F7032203D2000 .ascii "op2 = \0" ! 298: 287 00000593 * .text ! 299: 288 0001312A dd 8f0000058c pushl $L419 ! 300: 289 00013130 fe 08 effffffdc9 callf $8,_writes ! 301: 290 00013137 # write32h( dbl_value_1.m ); ! 302: 291 00013137 dd effffffdc3 pushl _dbl_value_1 ! 303: 292 0001313D fe 08 effffffdbc callf $8,_write32h ! 304: 293 00013144 # writec(' '); ! 305: 294 00013144 dd 20 pushl $32 ! 306: 295 00013146 fe 08 effffffdb3 callf $8,_writec ! 307: 296 0001314D # write32h( dbl_value_1.l ); ! 308: 297 0001314D dd effffffdb1 pushl _dbl_value_1+4 ! 309: 298 00013153 fe 08 effffffda6 callf $8,_write32h ! 310: 299 0001315A # writes(", expected = "); ! 311: 300 0001315A .data 1 ! 312: 301 00000593 * L420: ! 313: 302 00000593 * 2C20202065787065637465642 .ascii ", expected = \0" ! 314: 03D2000 ! 315: 303 000005a3 * .text ! 316: 304 0001315A dd 8f00000593 pushl $L420 ! 317: 305 00013160 fe 08 effffffd99 callf $8,_writes ! 318: 306 00013167 # write32h( 0 ); /* expected = floating '0.0' */ ! 319: 307 00013167 dd 00 pushl $0 ! 320: 308 00013169 fe 08 effffffd90 callf $8,_write32h ! 321: 309 00013170 # writec('\n'); ! 322: 310 00013170 dd 0a pushl $10 ! 323: 311 00013172 fe 08 effffffd87 callf $8,_writec ! 324: 312 00013179 # } ! 325: 313 00013179 # if ( halt_flg ) /* halt on error? */ ! 326: 314 00013179 L414: ! 327: 315 00013179 5d effffffd81 tstl _halt_flg ! 328: 316 0001317F 31 09 jeql L421 ! 329: 317 00013181 # pipe12_halt( 2 ); /* halt with a code of 2 */ ! 330: 318 00013181 dd 02 pushl $2 ! 331: 319 00013183 fe 08 ef000001d4 callf $8,_pipe12_halt ! 332: 320 0001318A # if ( loop_on_err ) ! 333: 321 0001318A L421: ! 334: 322 0001318A 5d effffffd70 tstl _loop_on_err ! 335: 323 00013190 31 0d jeql L422 ! 336: 324 00013192 # { ! 337: 325 00013192 # force_loop = TRUE; /* set the force loop flag */ ! 338: 326 00013192 0d 01 effffffd67 movl $1,_force_loop ! 339: 327 00013199 # asm("jmp _pipe12_lp1"); /* and loop */ ! 340: 328 00013199 71 effffffdef jmp _pipe12_lp1 ! 341: 329 0001319F # }; ! 342: 330 0001319F L422: ! 343: 331 0001319F # } ! 344: 332 0001319F 40 ret#2 ! 345: 333 000131A0 .set L410,0x0 ! 346: 334 000131A0 L412: ! 347: 335 000131A0 13 ff12 jbr L413 ! 348: 336 000131A3 .data ! 349: 337 00000504 * .text ! 350: 338 000131A3 00 .align 1 ! 351: 339 000131A4 .globl _pipe12_queue_er ! 352: 340 000131A4 _pipe12_queue_er: ! 353: 341 000131A4 0000 .word L423 ! 354: 342 000131A6 # ! 355: 343 000131A6 # ! 356: 344 000131A6 # ! 357: 345 000131A6 # ! 358: 346 000131A6 # ! 359: 347 000131A6 # /**************************************************************************** ! 360: 348 000131A6 # * Report an "FPP queue not cleared" message ! 361: 349 000131A6 # * ! 362: 350 000131A6 # * Cycle: xx. EVT test xx. subtest xx. Fpp queue not cleared. index = xx ! 363: 351 000131A6 # * inst = LDD op1, CVDF, LDD op2 (overflow fault on the CVDF) ! 364: 352 000131A6 # * The 2nd load double instruction was apparently executed. ! 365: 353 000131A6 # * op1 = xxxxxxxx xxxxxxxx, final Acc. = xxxxxxxx xxxxxxxx ! 366: 354 000131A6 # * op2 = xxxxxxxx xxxxxxxx, expected = xxxxxxxx xxxxxxxx ! 367: 355 000131A6 # ****************************************************************************/ ! 368: 356 000131A6 # pipe12_queue_er() ! 369: 357 000131A6 # { ! 370: 358 000131A6 13 0113 jbr L425 ! 371: 359 000131A9 L426: ! 372: 360 000131A9 # errcnt++; /* bump the error count */ ! 373: 361 000131A9 6d effffffd51 incl _errcnt ! 374: 362 000131AF # if ( prt_error ) ! 375: 363 000131AF 5d effffffd4b tstl _prt_error ! 376: 364 000131B5 21 03 13 00db jeql L427 ! 377: 365 000131BA # { ! 378: 366 000131BA # print_pipe12_er( ". Fpp queue not cleared" ); ! 379: 367 000131BA .data 1 ! 380: 368 000005a3 * L428: ! 381: 369 000005a3 * 2E20467070207175657565206 .ascii ". Fpp queue not cleared\0" ! 382: E6F7420636C656172656400 ! 383: 370 000005bb * .text ! 384: 371 000131BA dd 8f000005a3 pushl $L428 ! 385: 372 000131C0 fe 08 ef000000f9 callf $8,_print_pipe12_er ! 386: 373 000131C7 # writes( ! 387: 374 000131C7 # "The 2nd load double instruction was apparently executed.\n"); ! 388: 375 000131C7 .data 1 ! 389: 376 000005bb * L429: ! 390: 377 000005bb * 54686520326E64206C6F61642 .ascii "The 2nd load double instruction was apparently executed.\12\0" ! 391: 0646F75626C6520696E737472 ! 392: 756374696F6E2077617320617 ! 393: 0706172656E746C7920657865 ! 394: 63757465642E0A00 ! 395: 378 000005f5 * .text ! 396: 379 000131C7 dd 8f000005bb pushl $L429 ! 397: 380 000131CD fe 08 effffffd2c callf $8,_writes ! 398: 381 000131D4 # writes("op1 = "); ! 399: 382 000131D4 .data 1 ! 400: 383 000005f5 * L430: ! 401: 384 000005f5 * 6F7031203D2000 .ascii "op1 = \0" ! 402: 385 000005fc * .text ! 403: 386 000131D4 dd 8f000005f5 pushl $L430 ! 404: 387 000131DA fe 08 effffffd1f callf $8,_writes ! 405: 388 000131E1 # write32h( dbl_ld_acc.m ); ! 406: 389 000131E1 dd effffffd19 pushl _dbl_ld_acc ! 407: 390 000131E7 fe 08 effffffd12 callf $8,_write32h ! 408: 391 000131EE # writec(' '); ! 409: 392 000131EE dd 20 pushl $32 ! 410: 393 000131F0 fe 08 effffffd09 callf $8,_writec ! 411: 394 000131F7 # write32h( dbl_ld_acc.l ); ! 412: 395 000131F7 dd effffffd07 pushl _dbl_ld_acc+4 ! 413: 396 000131FD fe 08 effffffcfc callf $8,_write32h ! 414: 397 00013204 # writes(", final Acc. = "); ! 415: 398 00013204 .data 1 ! 416: 399 000005fc * L431: ! 417: 400 000005fc * 2C2066696E616C204163632E2 .ascii ", final Acc. = \0" ! 418: 03D2000 ! 419: 401 0000060c * .text ! 420: 402 00013204 dd 8f000005fc pushl $L431 ! 421: 403 0001320A fe 08 effffffcef callf $8,_writes ! 422: 404 00013211 # write32h( post_evt_acc.m ); ! 423: 405 00013211 dd effffffce9 pushl _post_evt_acc ! 424: 406 00013217 fe 08 effffffce2 callf $8,_write32h ! 425: 407 0001321E # writec(' '); ! 426: 408 0001321E dd 20 pushl $32 ! 427: 409 00013220 fe 08 effffffcd9 callf $8,_writec ! 428: 410 00013227 # write32h( post_evt_acc.l ); ! 429: 411 00013227 dd effffffcd7 pushl _post_evt_acc+4 ! 430: 412 0001322D fe 08 effffffccc callf $8,_write32h ! 431: 413 00013234 # writes("\nop2 = "); ! 432: 414 00013234 .data 1 ! 433: 415 0000060c * L432: ! 434: 416 0000060c * 0A6F7032203D2000 .ascii "\12op2 = \0" ! 435: 417 00000614 * .text ! 436: 418 00013234 dd 8f0000060c pushl $L432 ! 437: 419 0001323A fe 08 effffffcbf callf $8,_writes ! 438: 420 00013241 # write32h( dbl_value_1.m ); ! 439: 421 00013241 dd effffffcb9 pushl _dbl_value_1 ! 440: 422 00013247 fe 08 effffffcb2 callf $8,_write32h ! 441: 423 0001324E # writec(' '); ! 442: 424 0001324E dd 20 pushl $32 ! 443: 425 00013250 fe 08 effffffca9 callf $8,_writec ! 444: 426 00013257 # write32h( dbl_value_1.l ); ! 445: 427 00013257 dd effffffca7 pushl _dbl_value_1+4 ! 446: 428 0001325D fe 08 effffffc9c callf $8,_write32h ! 447: 429 00013264 # writes(", expected = "); ! 448: 430 00013264 .data 1 ! 449: 431 00000614 * L433: ! 450: 432 00000614 * 2C20202065787065637465642 .ascii ", expected = \0" ! 451: 03D2000 ! 452: 433 00000624 * .text ! 453: 434 00013264 dd 8f00000614 pushl $L433 ! 454: 435 0001326A fe 08 effffffc8f callf $8,_writes ! 455: 436 00013271 # write32h( 0x ); /* expected = floating '0' */ ! 456: 437 00013271 dd 00 pushl $0 ! 457: 438 00013273 fe 08 effffffc86 callf $8,_write32h ! 458: 439 0001327A # writec(' '); ! 459: 440 0001327A dd 20 pushl $32 ! 460: 441 0001327C fe 08 effffffc7d callf $8,_writec ! 461: 442 00013283 # write32h( 0 ); ! 462: 443 00013283 dd 00 pushl $0 ! 463: 444 00013285 fe 08 effffffc74 callf $8,_write32h ! 464: 445 0001328C # writec('\n'); ! 465: 446 0001328C dd 0a pushl $10 ! 466: 447 0001328E fe 08 effffffc6b callf $8,_writec ! 467: 448 00013295 # } ! 468: 449 00013295 # if ( halt_flg ) /* halt on error? */ ! 469: 450 00013295 L427: ! 470: 451 00013295 5d effffffc65 tstl _halt_flg ! 471: 452 0001329B 31 09 jeql L434 ! 472: 453 0001329D # pipe12_halt( 3 ); /* halt with a code of 3 */ ! 473: 454 0001329D dd 03 pushl $3 ! 474: 455 0001329F fe 08 ef000000b8 callf $8,_pipe12_halt ! 475: 456 000132A6 # if ( loop_on_err ) ! 476: 457 000132A6 L434: ! 477: 458 000132A6 5d effffffc54 tstl _loop_on_err ! 478: 459 000132AC 31 0d jeql L435 ! 479: 460 000132AE # { ! 480: 461 000132AE # force_loop = TRUE; /* set the force loop flag */ ! 481: 462 000132AE 0d 01 effffffc4b movl $1,_force_loop ! 482: 463 000132B5 # asm("jmp _pipe12_lp1"); /* and loop */ ! 483: 464 000132B5 71 effffffcd3 jmp _pipe12_lp1 ! 484: 465 000132BB # }; ! 485: 466 000132BB L435: ! 486: 467 000132BB # } ! 487: 468 000132BB 40 ret#2 ! 488: 469 000132BC .set L423,0x0 ! 489: 470 000132BC L425: ! 490: 471 000132BC 13 feea jbr L426 ! 491: 472 000132BF .data ! 492: 473 00000504 * .text ! 493: 474 000132BF 00 .align 1 ! 494: 475 000132C0 .globl _print_pipe12_er ! 495: 476 000132C0 _print_pipe12_er: ! 496: 477 000132C0 0000 .word L436 ! 497: 478 000132C2 # ! 498: 479 000132C2 # ! 499: 480 000132C2 # ! 500: 481 000132C2 # ! 501: 482 000132C2 # /**************************************************************************** ! 502: 483 000132C2 # * Report an error message of the form: ! 503: 484 000132C2 # * ! 504: 485 000132C2 # * Cycle: xx. EVT test xx. subtest xx. <your message here> index = xx ! 505: 486 000132C2 # * inst = LDD op1, CVDF, LDD op2 (overflow fault on the CVDF) ! 506: 487 000132C2 # ****************************************************************************/ ! 507: 488 000132C2 # print_pipe12_er( msg ) ! 508: 489 000132C2 # char *msg; /* error message to print */ ! 509: 490 000132C2 # { ! 510: 491 000132C2 13 0096 jbr L438 ! 511: 492 000132C5 L439: ! 512: 493 000132C5 # if( errcnt == 1 ) /* 1st error? */ ! 513: 494 000132C5 1d effffffc35 01 cmpl _errcnt,$1 ! 514: 495 000132CC 21 0d jneq L440 ! 515: 496 000132CE # writes(" \n"); /* start a new print line */ ! 516: 497 000132CE .data 1 ! 517: 498 00000624 * L441: ! 518: 499 00000624 * 200A00 .ascii " \12\0" ! 519: 500 00000627 * .text ! 520: 501 000132CE dd 8f00000624 pushl $L441 ! 521: 502 000132D4 fe 08 effffffc25 callf $8,_writes ! 522: 503 000132DB # writes("Cycle: "); ! 523: 504 000132DB L440: ! 524: 505 000132DB .data 1 ! 525: 506 00000627 * L442: ! 526: 507 00000627 * 4379636C653A2000 .ascii "Cycle: \0" ! 527: 508 0000062f * .text ! 528: 509 000132DB dd 8f00000627 pushl $L442 ! 529: 510 000132E1 fe 08 effffffc18 callf $8,_writes ! 530: 511 000132E8 # writed( cycle ); ! 531: 512 000132E8 dd effffffc12 pushl _cycle ! 532: 513 000132EE fe 08 effffffc0b callf $8,_writed ! 533: 514 000132F5 # writes(" EVT test "); ! 534: 515 000132F5 .data 1 ! 535: 516 0000062f * L444: ! 536: 517 0000062f * 202045565420746573742000 .ascii " EVT test \0" ! 537: 518 0000063b * .text ! 538: 519 000132F5 dd 8f0000062f pushl $L444 ! 539: 520 000132FB fe 08 effffffbfe callf $8,_writes ! 540: 521 00013302 # writed( test_no ); ! 541: 522 00013302 dd effffffbf8 pushl _test_no ! 542: 523 00013308 fe 08 effffffbf1 callf $8,_writed ! 543: 524 0001330F # writes(". subtest "); ! 544: 525 0001330F .data 1 ! 545: 526 0000063b * L445: ! 546: 527 0000063b * 2E20737562746573742000 .ascii ". subtest \0" ! 547: 528 00000646 * .text ! 548: 529 0001330F dd 8f0000063b pushl $L445 ! 549: 530 00013315 fe 08 effffffbe4 callf $8,_writes ! 550: 531 0001331C # writed( subtest ); ! 551: 532 0001331C dd effffffbde pushl _subtest ! 552: 533 00013322 fe 08 effffffbd7 callf $8,_writed ! 553: 534 00013329 # writes( msg ); /* print the message */ ! 554: 535 00013329 dd ad04 pushl 4(fp) ! 555: 536 0001332C fe 08 effffffbcd callf $8,_writes ! 556: 537 00013333 # writes(" index = "); ! 557: 538 00013333 .data 1 ! 558: 539 00000646 * L446: ! 559: 540 00000646 * 20696E646578203D2000 .ascii " index = \0" ! 560: 541 00000650 * .text ! 561: 542 00013333 dd 8f00000646 pushl $L446 ! 562: 543 00013339 fe 08 effffffbc0 callf $8,_writes ! 563: 544 00013340 # writed( index ); ! 564: 545 00013340 dd effffffbba pushl _index ! 565: 546 00013346 fe 08 effffffbb3 callf $8,_writed ! 566: 547 0001334D # writes( ! 567: 548 0001334D # "\ninst = LDD op1, CVDF, LDD op2 (overflow fault on the CVDF)\n"); ! 568: 549 0001334D .data 1 ! 569: 550 00000650 * L447: ! 570: 551 00000650 * 0A696E7374203D204C4444206 .ascii "\12inst = LDD op1, CVDF, LDD op2 (overflow fault on the CVDF)\12\0" ! 571: F70312C20435644462C204C44 ! 572: 44206F703220202020286F766 ! 573: 572666C6F77206661756C7420 ! 574: 6F6E207468652043564446290 ! 575: A00 ! 576: 552 00000690 * .text ! 577: 553 0001334D dd 8f00000650 pushl $L447 ! 578: 554 00013353 fe 08 effffffba6 callf $8,_writes ! 579: 555 0001335A # } ! 580: 556 0001335A 40 ret#2 ! 581: 557 0001335B .set L436,0x0 ! 582: 558 0001335B L438: ! 583: 559 0001335B 13 ff67 jbr L439 ! 584: 560 0001335E .data ! 585: 561 00000504 * .text ! 586: 562 0001335E .align 1 ! 587: 563 0001335E .globl _pipe12_halt ! 588: 564 0001335E _pipe12_halt: ! 589: 565 0001335E 0000 .word L448 ! 590: 566 00013360 # ! 591: 567 00013360 # ! 592: 568 00013360 # ! 593: 569 00013360 # /**************************************************************************** ! 594: 570 00013360 # * halt on error routine ! 595: 571 00013360 # ****************************************************************************/ ! 596: 572 00013360 # pipe12_halt( code ) ! 597: 573 00013360 # int code; /* error code to halt with */ ! 598: 574 00013360 # { ! 599: 575 00013360 13 009b jbr L450 ! 600: 576 00013363 L451: ! 601: 577 00013363 # err_code = code; ! 602: 578 00013363 0d ad04 effffffb95 movl 4(fp),_err_code ! 603: 579 0001336B # sgl_value_1 = dbl_ld_acc.m; ! 604: 580 0001336B 0d effffffb8f effffffb8a movl _dbl_ld_acc,_sgl_value_1 ! 605: 581 00013376 # sgl_value_2 = dbl_ld_acc.l; ! 606: 582 00013376 0d effffffb88 effffffb7f movl _dbl_ld_acc+4,_sgl_value_2 ! 607: 583 00013381 # sgl_value_3 = dbl_value_1.m; ! 608: 584 00013381 0d effffffb79 effffffb74 movl _dbl_value_1,_sgl_value_3 ! 609: 585 0001338C # sgl_value_4 = dbl_value_1.l; ! 610: 586 0001338C 0d effffffb72 effffffb69 movl _dbl_value_1+4,_sgl_value_4 ! 611: 587 00013397 # sgl_value_5 = post_evt_acc.m; ! 612: 588 00013397 0d effffffb63 effffffb5e movl _post_evt_acc,_sgl_value_5 ! 613: 589 000133A2 # sgl_value_6 = post_evt_acc.l; ! 614: 590 000133A2 0d effffffb5c effffffb53 movl _post_evt_acc+4,_sgl_value_6 ! 615: 591 000133AD # asm("movl _test_no,r0"); /* r0 = test number */ ! 616: 592 000133AD 0d effffffb4d 50 movl _test_no,r0 ! 617: 593 000133B4 # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 618: 594 000133B4 0d effffffb46 51 movl _subtest,r1 ! 619: 595 000133BB # asm("movl _err_code,r2"); /* r2 = error code */ ! 620: 596 000133BB 0d effffffb3f 52 movl _err_code,r2 ! 621: 597 000133C2 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 622: 598 000133C2 0d effffffb38 53 movl _cycle,r3 ! 623: 599 000133C9 # asm("movl _sgl_value_1,r4"); /* r4 = MSW of 1st load. */ ! 624: 600 000133C9 0d effffffb31 54 movl _sgl_value_1,r4 ! 625: 601 000133D0 # asm("movl _sgl_value_2,r5"); /* r5 = LSW of 1st load. */ ! 626: 602 000133D0 0d effffffb2a 55 movl _sgl_value_2,r5 ! 627: 603 000133D7 # asm("movl _sgl_value_3,r6"); /* r6 = MSW of 2nd load. */ ! 628: 604 000133D7 0d effffffb23 56 movl _sgl_value_3,r6 ! 629: 605 000133DE # asm("movl _sgl_value_4,r7"); /* r7 = LSW of 2nd load. */ ! 630: 606 000133DE 0d effffffb1c 57 movl _sgl_value_4,r7 ! 631: 607 000133E5 # asm("movl _sgl_value_5,r8"); /* r8 = MSW of final Acc. */ ! 632: 608 000133E5 0d effffffb15 58 movl _sgl_value_5,r8 ! 633: 609 000133EC # asm("movl _sgl_value_6,r9"); /* r9 = LSW of final Acc. */ ! 634: 610 000133EC 0d effffffb0e 59 movl _sgl_value_6,r9 ! 635: 611 000133F3 # asm("clrl r10"); /* r10 = expected ( '0' ) */ ! 636: 612 000133F3 4d 5a clrl r10 ! 637: 613 000133F5 # asm("movl _index,r11"); /* r11 = data index */ ! 638: 614 000133F5 0d effffffb05 5b movl _index,r11 ! 639: 615 000133FC # asm("halt"); /* HALT ... */ ! 640: 616 000133FC 00 halt ! 641: 617 000133FD # } ! 642: 618 000133FD 40 ret#2 ! 643: 619 000133FE .set L448,0x0 ! 644: 620 000133FE L450: ! 645: 621 000133FE 13 ff62 jbr L451 ! 646: 622 00013401 .data ! 647: 622 00026301 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.