|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000aac * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _pushd ! 6: 6 00000000 _pushd: ! 7: 7 0001F650 0000 .word L215 ! 8: 8 0001F652 # #include "fpp_defs.h" ! 9: 9 0001F652 # ! 10: 10 0001F652 # ! 11: 11 0001F652 # /*************************************************************************** ! 12: 12 0001F652 # * ! 13: 13 0001F652 # * PUSHD - PUSH FLOATING POINT DOUBLE-PRECISION OPERAND ONTO STACK ! 14: 14 0001F652 # * ! 15: 15 0001F652 # * PUSHD TEST MONITOR ! 16: 16 0001F652 # * ! 17: 17 0001F652 # * Load a double precision operand into the accumulator and then push it ! 18: 18 0001F652 # * onto the stack. ! 19: 19 0001F652 # ***************************************************************************/ ! 20: 20 0001F652 # pushd() ! 21: 21 0001F652 # { ! 22: 22 0001F652 11 42 jbr L217 ! 23: 23 0001F654 L218: ! 24: 24 0001F654 # asm(".globl _pushd_t"); ! 25: 25 0001F654 .globl _pushd_t ! 26: 26 0001F654 # asm("_pushd_t:"); /* entry address */ ! 27: 27 0001F654 _pushd_t: ! 28: 28 0001F654 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */ ! 29: 29 0001F654 1d effffffff6 01 cmpl _cycle,$1 ! 30: 30 0001F65B 21 15 jneq L219 ! 31: 31 0001F65D 5d efffffffed tstl _prt_hdrs ! 32: 32 0001F663 31 0d jeql L219 ! 33: 33 0001F665 # writes(" PUSHD"); ! 34: 34 0001F665 .data 1 ! 35: 35 00000aac * L221: ! 36: 36 00000aac * 20505553484400 .ascii " PUSHD\0" ! 37: 37 00000ab3 * .text ! 38: 38 0001F665 dd 8f00000aac pushl $L221 ! 39: 39 0001F66B fe 08 efffffffde callf $8,_writes ! 40: 40 0001F672 # pushd_1(); /* ldd/pushd data patterns */ ! 41: 41 0001F672 L219: ! 42: 42 0001F672 fe 04 ef0000001f callf $4,_pushd_1 ! 43: 43 0001F679 # pushd_2(); /* register corruption test */ ! 44: 44 0001F679 fe 04 ef000004b4 callf $4,_pushd_2 ! 45: 45 0001F680 # if( !no_fpp_wcs ) ! 46: 46 0001F680 5d efffffffca tstl _no_fpp_wcs ! 47: 47 0001F686 21 07 jneq L224 ! 48: 48 0001F688 # pushd_3(); /* PSL test */ ! 49: 49 0001F688 fe 04 ef000006ab callf $4,_pushd_3 ! 50: 50 0001F68F # asm("jmp *return"); /* return to the test monitor */ ! 51: 51 0001F68F L224: ! 52: 52 0001F68F 71 ffffffffbb jmp *return ! 53: 53 0001F695 # } ! 54: 54 0001F695 40 ret#2 ! 55: 55 0001F696 .set L215,0x0 ! 56: 56 0001F696 L217: ! 57: 57 0001F696 11 bc jbr L218 ! 58: 58 0001F698 .data ! 59: 59 00000aac * .text ! 60: 60 0001F698 .align 1 ! 61: 61 0001F698 .globl _pushd_1 ! 62: 62 0001F698 _pushd_1: ! 63: 63 0001F698 0000 .word L226 ! 64: 64 0001F69A # ! 65: 65 0001F69A # ! 66: 66 0001F69A # ! 67: 67 0001F69A # /************************************************************************ ! 68: 68 0001F69A # * ! 69: 69 0001F69A # * SUBTEST 1 - load / push / pop / compare ! 70: 70 0001F69A # * ! 71: 71 0001F69A # ************************************************************************/ ! 72: 72 0001F69A # pushd_1() ! 73: 73 0001F69A # { ! 74: 74 0001F69A 13 0494 jbr L228 ! 75: 75 0001F69D L229: ! 76: 76 0001F69D # force_loop = FALSE; ! 77: 77 0001F69D 4d efffffffad clrl _force_loop ! 78: 78 0001F6A3 # index = 0; ! 79: 79 0001F6A3 4d efffffffa7 clrl _index ! 80: 80 0001F6A9 # subtest = 1; ! 81: 81 0001F6A9 0d 01 efffffffa0 movl $1,_subtest ! 82: 82 0001F6B0 # do { ! 83: 83 0001F6B0 L232: ! 84: 84 0001F6B0 # dbl_ld_acc = ldd_1_data[index].ld; /* get data to load */ ! 85: 85 0001F6B0 48 04 efffffff99 50 shll $4,_index,r0 ! 86: 86 0001F6B8 0c 8f00000000 50 addl2 $_ldd_1_data,r0 ! 87: 87 0001F6BF 0d a004 efffffff8d movl 4(r0),_dbl_ld_acc+4 ! 88: 88 0001F6C7 0d 60 efffffff82 movl (r0),_dbl_ld_acc ! 89: 89 0001F6CE # dbl_expected = ldd_1_data[index].exp; /* get expected results */ ! 90: 90 0001F6CE 48 04 efffffff7b 50 shll $4,_index,r0 ! 91: 91 0001F6D6 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 92: 92 0001F6DD 0d a004 efffffff6f movl 4(r0),_dbl_expected+4 ! 93: 93 0001F6E5 0d 60 efffffff64 movl (r0),_dbl_expected ! 94: 94 0001F6EC # if( !(dbl_ld_acc.m & 0x7f800000) ) { ! 95: 95 0001F6EC 3d 8f7f800000 efffffff59 bitl $2139095040,_dbl_ld_acc ! 96: 96 0001F6F7 21 0c jneq L233 ! 97: 97 0001F6F9 # dbl_expected.m = 0; ! 98: 98 0001F6F9 4d efffffff51 clrl _dbl_expected ! 99: 99 0001F6FF # dbl_expected.l = 0; /* ignore bad 0's */ ! 100: 100 0001F6FF 4d efffffff4f clrl _dbl_expected+4 ! 101: 101 0001F705 # } ! 102: 102 0001F705 # /* ! 103: 103 0001F705 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 104: 104 0001F705 # * The force loop flag is set after the first error. ! 105: 105 0001F705 # */ ! 106: 106 0001F705 # asm("_pushd_1_lp1:"); ! 107: 107 0001F705 L233: ! 108: 108 0001F705 _pushd_1_lp1: ! 109: 109 0001F705 # asm("moval (sp),_pre_event_sp"); /* save the pre-push SP */ ! 110: 110 0001F705 ed 6e efffffff44 moval (sp),_pre_event_sp ! 111: 111 0001F70C # asm("ldd _dbl_ld_acc"); /* LOAD the (dbl) value */ ! 112: 112 0001F70C 07 efffffff3e ldd _dbl_ld_acc ! 113: 113 0001F712 # asm("pushd"); /* PUSH the data */ ! 114: 114 0001F712 67 pushd ! 115: 115 0001F713 # asm("moval (sp),_post_event_sp"); /* save the post-push SP */ ! 116: 116 0001F713 ed 6e efffffff36 moval (sp),_post_event_sp ! 117: 117 0001F71A # asm("movl (sp)+,_pop_val_1"); /* POP the MS word */ ! 118: 118 0001F71A 0d 8e efffffff2f movl (sp)+,_pop_val_1 ! 119: 119 0001F721 # asm("movl (sp)+,_pop_val_2"); /* POP the LS word */ ! 120: 120 0001F721 0d 8e efffffff28 movl (sp)+,_pop_val_2 ! 121: 121 0001F728 # asm("std _dbl_st_acc"); /* save the acc */ ! 122: 122 0001F728 27 efffffff22 std _dbl_st_acc ! 123: 123 0001F72E # if( force_loop ) ! 124: 124 0001F72E 5d efffffff1c tstl _force_loop ! 125: 125 0001F734 31 02 jeql L234 ! 126: 126 0001F736 # asm("brb _pushd_1_lp1"); /* run the loop again */ ! 127: 127 0001F736 11 cd brb _pushd_1_lp1 ! 128: 128 0001F738 # sgl_dummy1 = pre_event_sp - 8; /* get expected final SP */ ! 129: 129 0001F738 L234: ! 130: 130 0001F738 3c 08 efffffff11 50 subl3 $8,_pre_event_sp,r0 ! 131: 131 0001F740 0d 50 efffffff09 movl r0,_sgl_dummy1 ! 132: 132 0001F747 # sgl_value_7 = post_event_sp - pre_event_sp; /* get amount pushed */ ! 133: 133 0001F747 3c efffffff03 effffffefe subl3 _pre_event_sp,_post_event_sp,r0 ! 134: 50 ! 135: 134 0001F753 0d 50 effffffef6 movl r0,_sgl_value_7 ! 136: 135 0001F75A # if( (dbl_expected.m != pop_val_1) || /* verify stack data */ ! 137: 136 0001F75A # (dbl_expected.l != pop_val_2) || ! 138: 137 0001F75A # (post_event_sp != sgl_dummy1) ) { ! 139: 138 0001F75A 1d effffffef0 effffffeeb cmpl _dbl_expected,_pop_val_1 ! 140: 139 0001F765 21 1d jneq L9999 ! 141: 140 0001F767 1d effffffee7 effffffede cmpl _dbl_expected+4,_pop_val_2 ! 142: 141 0001F772 21 10 jneq L9999 ! 143: 142 0001F774 1d effffffed6 effffffed1 cmpl _post_event_sp,_sgl_dummy1 ! 144: 143 0001F77F 21 03 13 0138 jeql L235 ! 145: 144 0001F784 L9999: ! 146: 145 0001F784 # errcnt++; /* bump the error count */ ! 147: 146 0001F784 6d effffffec6 incl _errcnt ! 148: 147 0001F78A # if ( prt_error ) { ! 149: 148 0001F78A 5d effffffec0 tstl _prt_error ! 150: 149 0001F790 21 03 13 0104 jeql L236 ! 151: 150 0001F795 # writes("\ncycle: "); ! 152: 151 0001F795 .data 1 ! 153: 152 00000ab3 * L237: ! 154: 153 00000ab3 * 0A6379636C653A2000 .ascii "\12cycle: \0" ! 155: 154 00000abc * .text ! 156: 155 0001F795 dd 8f00000ab3 pushl $L237 ! 157: 156 0001F79B fe 08 effffffeae callf $8,_writes ! 158: 157 0001F7A2 # writed( cycle ); ! 159: 158 0001F7A2 dd effffffea8 pushl _cycle ! 160: 159 0001F7A8 fe 08 effffffea1 callf $8,_writed ! 161: 160 0001F7AF # writes(" PUSHD test "); ! 162: 161 0001F7AF .data 1 ! 163: 162 00000abc * L239: ! 164: 163 00000abc * 2020505553484420746573742 .ascii " PUSHD test \0" ! 165: 000 ! 166: 164 00000aca * .text ! 167: 165 0001F7AF dd 8f00000abc pushl $L239 ! 168: 166 0001F7B5 fe 08 effffffe94 callf $8,_writes ! 169: 167 0001F7BC # writed( test_no ); ! 170: 168 0001F7BC dd effffffe8e pushl _test_no ! 171: 169 0001F7C2 fe 08 effffffe87 callf $8,_writed ! 172: 170 0001F7C9 # writes(", subtest 1 (Cache Data) - WRONG DATA PUSHED\n"); ! 173: 171 0001F7C9 .data 1 ! 174: 172 00000aca * L240: ! 175: 173 00000aca * 2C20737562746573742031202 .ascii ", subtest 1 (Cache Data) - WRONG DATA PUSHED\12\0" ! 176: 8436163686520446174612920 ! 177: 2D2057524F4E4720444154412 ! 178: 05055534845440A00 ! 179: 174 00000af8 * .text ! 180: 175 0001F7C9 dd 8f00000aca pushl $L240 ! 181: 176 0001F7CF fe 08 effffffe7a callf $8,_writes ! 182: 177 0001F7D6 # print_pushd_data(); ! 183: 178 0001F7D6 fe 04 ef00000773 callf $4,_print_pushd_data ! 184: 179 0001F7DD # writes(", data pushed = "); ! 185: 180 0001F7DD .data 1 ! 186: 181 00000af8 * L242: ! 187: 182 00000af8 * 2C20206461746120707573686 .ascii ", data pushed = \0" ! 188: 564203D2000 ! 189: 183 00000b0a * .text ! 190: 184 0001F7DD dd 8f00000af8 pushl $L242 ! 191: 185 0001F7E3 fe 08 effffffe66 callf $8,_writes ! 192: 186 0001F7EA # write32h( pop_val_1 ); ! 193: 187 0001F7EA dd effffffe60 pushl _pop_val_1 ! 194: 188 0001F7F0 fe 08 effffffe59 callf $8,_write32h ! 195: 189 0001F7F7 # writec(' '); ! 196: 190 0001F7F7 dd 20 pushl $32 ! 197: 191 0001F7F9 fe 08 effffffe50 callf $8,_writec ! 198: 192 0001F800 # write32h( pop_val_2 ); ! 199: 193 0001F800 dd effffffe4a pushl _pop_val_2 ! 200: 194 0001F806 fe 08 effffffe43 callf $8,_write32h ! 201: 195 0001F80D # writes(", index = "); ! 202: 196 0001F80D .data 1 ! 203: 197 00000b0a * L245: ! 204: 198 00000b0a * 2C2020696E646578203D2000 .ascii ", index = \0" ! 205: 199 00000b16 * .text ! 206: 200 0001F80D dd 8f00000b0a pushl $L245 ! 207: 201 0001F813 fe 08 effffffe36 callf $8,_writes ! 208: 202 0001F81A # writed( index ); ! 209: 203 0001F81A dd effffffe30 pushl _index ! 210: 204 0001F820 fe 08 effffffe29 callf $8,_writed ! 211: 205 0001F827 # writec('\n'); ! 212: 206 0001F827 dd 0a pushl $10 ! 213: 207 0001F829 fe 08 effffffe20 callf $8,_writec ! 214: 208 0001F830 # writes(" final Acc = "); ! 215: 209 0001F830 .data 1 ! 216: 210 00000b16 * L246: ! 217: 211 00000b16 * 202066696E616C20416363203 .ascii " final Acc = \0" ! 218: D2000 ! 219: 212 00000b25 * .text ! 220: 213 0001F830 dd 8f00000b16 pushl $L246 ! 221: 214 0001F836 fe 08 effffffe13 callf $8,_writes ! 222: 215 0001F83D # write32h( dbl_st_acc.m ); ! 223: 216 0001F83D dd effffffe0d pushl _dbl_st_acc ! 224: 217 0001F843 fe 08 effffffe06 callf $8,_write32h ! 225: 218 0001F84A # writec(' '); ! 226: 219 0001F84A dd 20 pushl $32 ! 227: 220 0001F84C fe 08 effffffdfd callf $8,_writec ! 228: 221 0001F853 # write32h( dbl_st_acc.l ); ! 229: 222 0001F853 dd effffffdfb pushl _dbl_st_acc+4 ! 230: 223 0001F859 fe 08 effffffdf0 callf $8,_write32h ! 231: 224 0001F860 # writes(", exp. data = "); ! 232: 225 0001F860 .data 1 ! 233: 226 00000b25 * L247: ! 234: 227 00000b25 * 2C202020206578702E2064617 .ascii ", exp. data = \0" ! 235: 461203D2000 ! 236: 228 00000b37 * .text ! 237: 229 0001F860 dd 8f00000b25 pushl $L247 ! 238: 230 0001F866 fe 08 effffffde3 callf $8,_writes ! 239: 231 0001F86D # write32h( dbl_expected.m ); ! 240: 232 0001F86D dd effffffddd pushl _dbl_expected ! 241: 233 0001F873 fe 08 effffffdd6 callf $8,_write32h ! 242: 234 0001F87A # writec(' '); ! 243: 235 0001F87A dd 20 pushl $32 ! 244: 236 0001F87C fe 08 effffffdcd callf $8,_writec ! 245: 237 0001F883 # write32h( dbl_expected.l ); ! 246: 238 0001F883 dd effffffdcb pushl _dbl_expected+4 ! 247: 239 0001F889 fe 08 effffffdc0 callf $8,_write32h ! 248: 240 0001F890 # writec('\n'); ! 249: 241 0001F890 dd 0a pushl $10 ! 250: 242 0001F892 fe 08 effffffdb7 callf $8,_writec ! 251: 243 0001F899 # } ! 252: 244 0001F899 # if ( halt_flg ) /* halt on error? */ ! 253: 245 0001F899 L236: ! 254: 246 0001F899 5d effffffdb1 tstl _halt_flg ! 255: 247 0001F89F 31 09 jeql L248 ! 256: 248 0001F8A1 # pushd_er_halt( BAD_STORE_HLT ); ! 257: 249 0001F8A1 dd 09 pushl $9 ! 258: 250 0001F8A3 fe 08 ef000006de callf $8,_pushd_er_halt ! 259: 251 0001F8AA # if ( loop_on_err ) ! 260: 252 0001F8AA L248: ! 261: 253 0001F8AA 5d effffffda0 tstl _loop_on_err ! 262: 254 0001F8B0 31 0a jeql L250 ! 263: 255 0001F8B2 # { ! 264: 256 0001F8B2 # force_loop = TRUE; /* set the force loop flag */ ! 265: 257 0001F8B2 0d 01 effffffd97 movl $1,_force_loop ! 266: 258 0001F8B9 # asm("brw _pushd_1_lp1"); /* and loop on the error */ ! 267: 259 0001F8B9 13 fe49 brw _pushd_1_lp1 ! 268: 260 0001F8BC # } /* end of loop-on-error */ ! 269: 261 0001F8BC # } /* end of data compare error */ ! 270: 262 0001F8BC L250: ! 271: 263 0001F8BC # if( ( post_event_sp - pre_event_sp ) == 2 ) {/* ver stack data */ ! 272: 264 0001F8BC L235: ! 273: 265 0001F8BC 3c effffffd8e effffffd89 subl3 _pre_event_sp,_post_event_sp,r0 ! 274: 50 ! 275: 266 0001F8C8 1d 50 02 cmpl r0,$2 ! 276: 267 0001F8CB 31 03 13 00f2 jneq L251 ! 277: 268 0001F8D0 # errcnt++; /* bump the error count */ ! 278: 269 0001F8D0 6d effffffd7a incl _errcnt ! 279: 270 0001F8D6 # if ( prt_error ) { ! 280: 271 0001F8D6 5d effffffd74 tstl _prt_error ! 281: 272 0001F8DC 21 03 13 00be jeql L252 ! 282: 273 0001F8E1 # writes("\ncycle: "); ! 283: 274 0001F8E1 .data 1 ! 284: 275 00000b37 * L253: ! 285: 276 00000b37 * 0A6379636C653A2000 .ascii "\12cycle: \0" ! 286: 277 00000b40 * .text ! 287: 278 0001F8E1 dd 8f00000b37 pushl $L253 ! 288: 279 0001F8E7 fe 08 effffffd62 callf $8,_writes ! 289: 280 0001F8EE # writed( cycle ); ! 290: 281 0001F8EE dd effffffd5c pushl _cycle ! 291: 282 0001F8F4 fe 08 effffffd55 callf $8,_writed ! 292: 283 0001F8FB # writes(" PUSHD test "); ! 293: 284 0001F8FB .data 1 ! 294: 285 00000b40 * L254: ! 295: 286 00000b40 * 2020505553484420746573742 .ascii " PUSHD test \0" ! 296: 000 ! 297: 287 00000b4e * .text ! 298: 288 0001F8FB dd 8f00000b40 pushl $L254 ! 299: 289 0001F901 fe 08 effffffd48 callf $8,_writes ! 300: 290 0001F908 # writed( test_no ); ! 301: 291 0001F908 dd effffffd42 pushl _test_no ! 302: 292 0001F90E fe 08 effffffd3b callf $8,_writed ! 303: 293 0001F915 # writes(", subtest 1 (Data Pat.) - WRONG PUSH COUNT\n"); ! 304: 294 0001F915 .data 1 ! 305: 295 00000b4e * L255: ! 306: 296 00000b4e * 2C20737562746573742031202 .ascii ", subtest 1 (Data Pat.) - WRONG PUSH COUNT\12\0" ! 307: 844617461205061742E29202D ! 308: 2057524F4E472050555348204 ! 309: 34F554E540A00 ! 310: 297 00000b7a * .text ! 311: 298 0001F915 dd 8f00000b4e pushl $L255 ! 312: 299 0001F91B fe 08 effffffd2e callf $8,_writes ! 313: 300 0001F922 # print_pushd_data(); ! 314: 301 0001F922 fe 04 ef00000627 callf $4,_print_pushd_data ! 315: 302 0001F929 # writes(", "); ! 316: 303 0001F929 .data 1 ! 317: 304 00000b7a * L256: ! 318: 305 00000b7a * 2C202000 .ascii ", \0" ! 319: 306 00000b7e * .text ! 320: 307 0001F929 dd 8f00000b7a pushl $L256 ! 321: 308 0001F92F fe 08 effffffd1a callf $8,_writes ! 322: 309 0001F936 # writed( sgl_value_7 ); ! 323: 310 0001F936 dd effffffd14 pushl _sgl_value_7 ! 324: 311 0001F93C fe 08 effffffd0d callf $8,_writed ! 325: 312 0001F943 # writes(" longwords pushed, "); ! 326: 313 0001F943 .data 1 ! 327: 314 00000b7e * L257: ! 328: 315 00000b7e * 206C6F6E67776F72647320707 .ascii " longwords pushed, \0" ! 329: 5736865642C202000 ! 330: 316 00000b93 * .text ! 331: 317 0001F943 dd 8f00000b7e pushl $L257 ! 332: 318 0001F949 fe 08 effffffd00 callf $8,_writes ! 333: 319 0001F950 # writes("2 expected"); ! 334: 320 0001F950 .data 1 ! 335: 321 00000b93 * L258: ! 336: 322 00000b93 * .ascii "" ! 337: 323 00000b93 * 3220657870656374656400 .ascii "2 expected\0" ! 338: 324 00000b9e * .text ! 339: 325 0001F950 dd 8f00000b93 pushl $L258 ! 340: 326 0001F956 fe 08 effffffcf3 callf $8,_writes ! 341: 327 0001F95D # writec('\n'); ! 342: 328 0001F95D dd 0a pushl $10 ! 343: 329 0001F95F fe 08 effffffcea callf $8,_writec ! 344: 330 0001F966 # writes(" final Acc = "); ! 345: 331 0001F966 .data 1 ! 346: 332 00000b9e * L259: ! 347: 333 00000b9e * 202066696E616C20416363203 .ascii " final Acc = \0" ! 348: D2000 ! 349: 334 00000bad * .text ! 350: 335 0001F966 dd 8f00000b9e pushl $L259 ! 351: 336 0001F96C fe 08 effffffcdd callf $8,_writes ! 352: 337 0001F973 # write32h( dbl_st_acc.m ); ! 353: 338 0001F973 dd effffffcd7 pushl _dbl_st_acc ! 354: 339 0001F979 fe 08 effffffcd0 callf $8,_write32h ! 355: 340 0001F980 # writec(' '); ! 356: 341 0001F980 dd 20 pushl $32 ! 357: 342 0001F982 fe 08 effffffcc7 callf $8,_writec ! 358: 343 0001F989 # write32h( dbl_st_acc.l ); ! 359: 344 0001F989 dd effffffcc5 pushl _dbl_st_acc+4 ! 360: 345 0001F98F fe 08 effffffcba callf $8,_write32h ! 361: 346 0001F996 # writec('\n'); ! 362: 347 0001F996 dd 0a pushl $10 ! 363: 348 0001F998 fe 08 effffffcb1 callf $8,_writec ! 364: 349 0001F99F # } ! 365: 350 0001F99F # if ( halt_flg ) /* halt on error? */ ! 366: 351 0001F99F L252: ! 367: 352 0001F99F 5d effffffcab tstl _halt_flg ! 368: 353 0001F9A5 31 09 jeql L260 ! 369: 354 0001F9A7 # pushd_er_halt( PUSH_CNT_HLT ); ! 370: 355 0001F9A7 dd 08 pushl $8 ! 371: 356 0001F9A9 fe 08 ef000005d8 callf $8,_pushd_er_halt ! 372: 357 0001F9B0 # if ( loop_on_err ) ! 373: 358 0001F9B0 L260: ! 374: 359 0001F9B0 5d effffffc9a tstl _loop_on_err ! 375: 360 0001F9B6 31 0a jeql L261 ! 376: 361 0001F9B8 # { ! 377: 362 0001F9B8 # force_loop = TRUE; /* set the force loop flag */ ! 378: 363 0001F9B8 0d 01 effffffc91 movl $1,_force_loop ! 379: 364 0001F9BF # asm("brw _pushd_1_lp1"); /* and loop on the error */ ! 380: 365 0001F9BF 13 fd43 brw _pushd_1_lp1 ! 381: 366 0001F9C2 # } /* end of loop-on-error */ ! 382: 367 0001F9C2 # } /* end of push count error */ ! 383: 368 0001F9C2 L261: ! 384: 369 0001F9C2 # if( ( dbl_st_acc.m != dbl_expected.m ) && ! 385: 370 0001F9C2 L251: ! 386: 371 0001F9C2 # ( dbl_st_acc.l != dbl_expected.l ) ) { ! 387: 372 0001F9C2 1d effffffc88 effffffc83 cmpl _dbl_st_acc,_dbl_expected ! 388: 373 0001F9CD 21 03 13 0145 jeql L262 ! 389: 374 0001F9D2 1d effffffc7c effffffc77 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 390: 375 0001F9DD 31 f0 jeql L262 ! 391: 376 0001F9DF # errcnt++; /* bump the error count */ ! 392: 377 0001F9DF 6d effffffc6b incl _errcnt ! 393: 378 0001F9E5 # if ( prt_error ) ! 394: 379 0001F9E5 5d effffffc65 tstl _prt_error ! 395: 380 0001F9EB 21 03 13 0104 jeql L263 ! 396: 381 0001F9F0 # { ! 397: 382 0001F9F0 # writes("\ncycle: "); ! 398: 383 0001F9F0 .data 1 ! 399: 384 00000bad * L264: ! 400: 385 00000bad * 0A6379636C653A2000 .ascii "\12cycle: \0" ! 401: 386 00000bb6 * .text ! 402: 387 0001F9F0 dd 8f00000bad pushl $L264 ! 403: 388 0001F9F6 fe 08 effffffc53 callf $8,_writes ! 404: 389 0001F9FD # writed( cycle ); ! 405: 390 0001F9FD dd effffffc4d pushl _cycle ! 406: 391 0001FA03 fe 08 effffffc46 callf $8,_writed ! 407: 392 0001FA0A # writes(" PUSHD test "); ! 408: 393 0001FA0A .data 1 ! 409: 394 00000bb6 * L265: ! 410: 395 00000bb6 * 2020505553484420746573742 .ascii " PUSHD test \0" ! 411: 000 ! 412: 396 00000bc4 * .text ! 413: 397 0001FA0A dd 8f00000bb6 pushl $L265 ! 414: 398 0001FA10 fe 08 effffffc39 callf $8,_writes ! 415: 399 0001FA17 # writed( test_no ); ! 416: 400 0001FA17 dd effffffc33 pushl _test_no ! 417: 401 0001FA1D fe 08 effffffc2c callf $8,_writed ! 418: 402 0001FA24 # writes(", subtest 1 (Acc. Corr.) - BAD FINAL ACC\n"); ! 419: 403 0001FA24 .data 1 ! 420: 404 00000bc4 * L266: ! 421: 405 00000bc4 * 2C20737562746573742031202 .ascii ", subtest 1 (Acc. Corr.) - BAD FINAL ACC\12\0" ! 422: 84163632E20436F72722E2920 ! 423: 2D204241442046494E414C204 ! 424: 143430A00 ! 425: 406 00000bee * .text ! 426: 407 0001FA24 dd 8f00000bc4 pushl $L266 ! 427: 408 0001FA2A fe 08 effffffc1f callf $8,_writes ! 428: 409 0001FA31 # print_pushd_data(); ! 429: 410 0001FA31 fe 04 ef00000518 callf $4,_print_pushd_data ! 430: 411 0001FA38 # writes(", data pushed = "); ! 431: 412 0001FA38 .data 1 ! 432: 413 00000bee * L267: ! 433: 414 00000bee * 2C20206461746120707573686 .ascii ", data pushed = \0" ! 434: 564203D2000 ! 435: 415 00000c00 * .text ! 436: 416 0001FA38 dd 8f00000bee pushl $L267 ! 437: 417 0001FA3E fe 08 effffffc0b callf $8,_writes ! 438: 418 0001FA45 # write32h( pop_val_1 ); ! 439: 419 0001FA45 dd effffffc05 pushl _pop_val_1 ! 440: 420 0001FA4B fe 08 effffffbfe callf $8,_write32h ! 441: 421 0001FA52 # writec(' '); ! 442: 422 0001FA52 dd 20 pushl $32 ! 443: 423 0001FA54 fe 08 effffffbf5 callf $8,_writec ! 444: 424 0001FA5B # write32h( pop_val_2 ); ! 445: 425 0001FA5B dd effffffbef pushl _pop_val_2 ! 446: 426 0001FA61 fe 08 effffffbe8 callf $8,_write32h ! 447: 427 0001FA68 # writes(", index = "); ! 448: 428 0001FA68 .data 1 ! 449: 429 00000c00 * L268: ! 450: 430 00000c00 * 2C2020696E646578203D2000 .ascii ", index = \0" ! 451: 431 00000c0c * .text ! 452: 432 0001FA68 dd 8f00000c00 pushl $L268 ! 453: 433 0001FA6E fe 08 effffffbdb callf $8,_writes ! 454: 434 0001FA75 # writed( index ); ! 455: 435 0001FA75 dd effffffbd5 pushl _index ! 456: 436 0001FA7B fe 08 effffffbce callf $8,_writed ! 457: 437 0001FA82 # writec('\n'); ! 458: 438 0001FA82 dd 0a pushl $10 ! 459: 439 0001FA84 fe 08 effffffbc5 callf $8,_writec ! 460: 440 0001FA8B # writes(" final Acc = "); ! 461: 441 0001FA8B .data 1 ! 462: 442 00000c0c * L269: ! 463: 443 00000c0c * 202066696E616C20416363203 .ascii " final Acc = \0" ! 464: D2000 ! 465: 444 00000c1b * .text ! 466: 445 0001FA8B dd 8f00000c0c pushl $L269 ! 467: 446 0001FA91 fe 08 effffffbb8 callf $8,_writes ! 468: 447 0001FA98 # write32h( dbl_st_acc.m ); ! 469: 448 0001FA98 dd effffffbb2 pushl _dbl_st_acc ! 470: 449 0001FA9E fe 08 effffffbab callf $8,_write32h ! 471: 450 0001FAA5 # writec(' '); ! 472: 451 0001FAA5 dd 20 pushl $32 ! 473: 452 0001FAA7 fe 08 effffffba2 callf $8,_writec ! 474: 453 0001FAAE # write32h( dbl_st_acc.l ); ! 475: 454 0001FAAE dd effffffba0 pushl _dbl_st_acc+4 ! 476: 455 0001FAB4 fe 08 effffffb95 callf $8,_write32h ! 477: 456 0001FABB # writes(", Acc expected = "); ! 478: 457 0001FABB .data 1 ! 479: 458 00000c1b * L270: ! 480: 459 00000c1b * 2C20204163632065787065637 .ascii ", Acc expected = \0" ! 481: 46564203D2000 ! 482: 460 00000c2e * .text ! 483: 461 0001FABB dd 8f00000c1b pushl $L270 ! 484: 462 0001FAC1 fe 08 effffffb88 callf $8,_writes ! 485: 463 0001FAC8 # write32h( dbl_expected.m ); ! 486: 464 0001FAC8 dd effffffb82 pushl _dbl_expected ! 487: 465 0001FACE fe 08 effffffb7b callf $8,_write32h ! 488: 466 0001FAD5 # writec(' '); ! 489: 467 0001FAD5 dd 20 pushl $32 ! 490: 468 0001FAD7 fe 08 effffffb72 callf $8,_writec ! 491: 469 0001FADE # write32h( dbl_expected.l ); ! 492: 470 0001FADE dd effffffb70 pushl _dbl_expected+4 ! 493: 471 0001FAE4 fe 08 effffffb65 callf $8,_write32h ! 494: 472 0001FAEB # writec('\n'); ! 495: 473 0001FAEB dd 0a pushl $10 ! 496: 474 0001FAED fe 08 effffffb5c callf $8,_writec ! 497: 475 0001FAF4 # } ! 498: 476 0001FAF4 # if ( halt_flg ) /* halt on error? */ ! 499: 477 0001FAF4 L263: ! 500: 478 0001FAF4 5d effffffb56 tstl _halt_flg ! 501: 479 0001FAFA 31 09 jeql L271 ! 502: 480 0001FAFC # pushd_er_halt( BAD_ACC_HLT ); ! 503: 481 0001FAFC dd 01 pushl $1 ! 504: 482 0001FAFE fe 08 ef00000483 callf $8,_pushd_er_halt ! 505: 483 0001FB05 # if ( loop_on_err ) ! 506: 484 0001FB05 L271: ! 507: 485 0001FB05 5d effffffb45 tstl _loop_on_err ! 508: 486 0001FB0B 31 0a jeql L272 ! 509: 487 0001FB0D # { ! 510: 488 0001FB0D # force_loop = TRUE; /* set the force loop flag */ ! 511: 489 0001FB0D 0d 01 effffffb3c movl $1,_force_loop ! 512: 490 0001FB14 # asm("brw _pushd_1_lp1"); /* and loop on the error */ ! 513: 491 0001FB14 13 fbee brw _pushd_1_lp1 ! 514: 492 0001FB17 # } /* end of loop-on-error */ ! 515: 493 0001FB17 # } /* end of acc corr error */ ! 516: 494 0001FB17 L272: ! 517: 495 0001FB17 # } while( index++ < max_ldd_1_index ); ! 518: 496 0001FB17 L262: ! 519: 497 0001FB17 L231: ! 520: 498 0001FB17 0d effffffb33 50 movl _index,r0 ! 521: 499 0001FB1E 6d effffffb2c incl _index ! 522: 500 0001FB24 1d 50 effffffb25 cmpl r0,_max_ldd_1_index ! 523: 501 0001FB2B 81 03 13 fb80 jlss L232 ! 524: 502 0001FB30 L230: ! 525: 503 0001FB30 # } /* end of subtest 1 */ ! 526: 504 0001FB30 40 ret#2 ! 527: 505 0001FB31 .set L226,0x0 ! 528: 506 0001FB31 L228: ! 529: 507 0001FB31 13 fb69 jbr L229 ! 530: 508 0001FB34 .data ! 531: 509 00000aac * .text ! 532: 510 0001FB34 .align 1 ! 533: 511 0001FB34 .globl _pushd_2 ! 534: 512 0001FB34 _pushd_2: ! 535: 513 0001FB34 0000 .word L273 ! 536: 514 0001FB36 # ! 537: 515 0001FB36 # ! 538: 516 0001FB36 # ! 539: 517 0001FB36 # /************************************************************************ ! 540: 518 0001FB36 # * ! 541: 519 0001FB36 # * SUBTEST 2 - register corruption test ! 542: 520 0001FB36 # * ! 543: 521 0001FB36 # ************************************************************************/ ! 544: 522 0001FB36 # pushd_2() ! 545: 523 0001FB36 # { ! 546: 524 0001FB36 13 01fe jbr L275 ! 547: 525 0001FB39 L276: ! 548: 526 0001FB39 # force_loop = FALSE; ! 549: 527 0001FB39 4d effffffb11 clrl _force_loop ! 550: 528 0001FB3F # subtest = 2; ! 551: 529 0001FB3F 0d 02 effffffb0a movl $2,_subtest ! 552: 530 0001FB46 # index = 0; ! 553: 531 0001FB46 4d effffffb04 clrl _index ! 554: 532 0001FB4C # do ! 555: 533 0001FB4C L279: ! 556: 534 0001FB4C # { ! 557: 535 0001FB4C # fill_reg_buf( load_regs ); /* Set the values that */ ! 558: 536 0001FB4C dd 8f00000000 pushl $_load_regs ! 559: 537 0001FB52 fe 08 effffffaf7 callf $8,_fill_reg_buf ! 560: 538 0001FB59 # dbl_ld_acc = ldd_1_data[index].ld; /* get data to load */ ! 561: 539 0001FB59 48 04 effffffaf0 50 shll $4,_index,r0 ! 562: 540 0001FB61 0c 8f00000000 50 addl2 $_ldd_1_data,r0 ! 563: 541 0001FB68 0d a004 effffffae4 movl 4(r0),_dbl_ld_acc+4 ! 564: 542 0001FB70 0d 60 effffffad9 movl (r0),_dbl_ld_acc ! 565: 543 0001FB77 # dbl_expected = ldd_1_data[index].exp; /* get expected results */ ! 566: 544 0001FB77 48 04 effffffad2 50 shll $4,_index,r0 ! 567: 545 0001FB7F 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 568: 546 0001FB86 0d a004 effffffac6 movl 4(r0),_dbl_expected+4 ! 569: 547 0001FB8E 0d 60 effffffabb movl (r0),_dbl_expected ! 570: 548 0001FB95 # /* ! 571: 549 0001FB95 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 572: 550 0001FB95 # * The force loop flag is set after the first error. ! 573: 551 0001FB95 # */ ! 574: 552 0001FB95 # asm("_pushd_2_lp1:"); ! 575: 553 0001FB95 _pushd_2_lp1: ! 576: 554 0001FB95 # asm("ldd _dbl_ld_acc"); /* LOAD the (dbl) value */ ! 577: 555 0001FB95 07 effffffab5 ldd _dbl_ld_acc ! 578: 556 0001FB9B # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */ ! 579: 557 0001FB9B ab 891fff effffffaac loadr $0x1fff,_load_regs ! 580: 558 0001FBA4 # asm("nop"); ! 581: 559 0001FBA4 10 nop ! 582: 560 0001FBA5 # asm("pushd"); /* push the accumulator */ ! 583: 561 0001FBA5 67 pushd ! 584: 562 0001FBA6 # asm("nop"); ! 585: 563 0001FBA6 10 nop ! 586: 564 0001FBA7 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */ ! 587: 565 0001FBA7 bb 891fff effffffaa0 storer $0x1fff,_store_regs ! 588: 566 0001FBB0 # if( force_loop ) ! 589: 567 0001FBB0 5d effffffa9a tstl _force_loop ! 590: 568 0001FBB6 31 02 jeql L281 ! 591: 569 0001FBB8 # asm("brb _pushd_2_lp1");; /* run the loop again */ ! 592: 570 0001FBB8 11 db brb _pushd_2_lp1 ! 593: 571 0001FBBA L281: ! 594: 572 0001FBBA # index2 = 0; ! 595: 573 0001FBBA 4d effffffa90 clrl _index2 ! 596: 574 0001FBC0 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) ) ! 597: 575 0001FBC0 L282: ! 598: 576 0001FBC0 0d effffffa8a 50 movl _index2,r0 ! 599: 577 0001FBC7 0d effffffa83 51 movl _index2,r1 ! 600: 578 0001FBCE 1d 40effffffa7b cmpl _load_regs[r0],_store_regs[r1] ! 601: 41effffffa75 ! 602: 579 0001FBDB 21 11 jneq L283 ! 603: 580 0001FBDD 1d effffffa6d 0d cmpl _index2,$13 ! 604: 581 0001FBE4 81 08 jgeq L283 ! 605: 582 0001FBE6 # index2++; /* check reg values */ ! 606: 583 0001FBE6 6d effffffa64 incl _index2 ! 607: 584 0001FBEC 11 d2 jbr L282 ! 608: 585 0001FBEE L283: ! 609: 586 0001FBEE # if( index2 < 13 ) { /* error if index2 < 13 */ ! 610: 587 0001FBEE 1d effffffa5c 0d cmpl _index2,$13 ! 611: 588 0001FBF5 91 03 13 0123 jgeq L284 ! 612: 589 0001FBFA # errcnt++; /* bump the error count */ ! 613: 590 0001FBFA 6d effffffa50 incl _errcnt ! 614: 591 0001FC00 # if ( prt_error ) { ! 615: 592 0001FC00 5d effffffa4a tstl _prt_error ! 616: 593 0001FC06 21 03 13 00ec jeql L285 ! 617: 594 0001FC0B # writes("\ncycle: "); ! 618: 595 0001FC0B .data 1 ! 619: 596 00000c2e * L286: ! 620: 597 00000c2e * 0A6379636C653A2000 .ascii "\12cycle: \0" ! 621: 598 00000c37 * .text ! 622: 599 0001FC0B dd 8f00000c2e pushl $L286 ! 623: 600 0001FC11 fe 08 effffffa38 callf $8,_writes ! 624: 601 0001FC18 # writed( cycle ); ! 625: 602 0001FC18 dd effffffa32 pushl _cycle ! 626: 603 0001FC1E fe 08 effffffa2b callf $8,_writed ! 627: 604 0001FC25 # writes(" PUSHD test "); ! 628: 605 0001FC25 .data 1 ! 629: 606 00000c37 * L287: ! 630: 607 00000c37 * 2020505553484420746573742 .ascii " PUSHD test \0" ! 631: 000 ! 632: 608 00000c45 * .text ! 633: 609 0001FC25 dd 8f00000c37 pushl $L287 ! 634: 610 0001FC2B fe 08 effffffa1e callf $8,_writes ! 635: 611 0001FC32 # writed( test_no ); ! 636: 612 0001FC32 dd effffffa18 pushl _test_no ! 637: 613 0001FC38 fe 08 effffffa11 callf $8,_writed ! 638: 614 0001FC3F # writes(", subtest 2 - A REGISTER WAS MODIFIED\n"); ! 639: 615 0001FC3F .data 1 ! 640: 616 00000c45 * L288: ! 641: 617 00000c45 * 2C20737562746573742032202 .ascii ", subtest 2 - A REGISTER WAS MODIFIED\12\0" ! 642: D204120524547495354455220 ! 643: 574153204D4F4449464945440 ! 644: A00 ! 645: 618 00000c6c * .text ! 646: 619 0001FC3F dd 8f00000c45 pushl $L288 ! 647: 620 0001FC45 fe 08 effffffa04 callf $8,_writes ! 648: 621 0001FC4C # print_pushd_data(); ! 649: 622 0001FC4C fe 04 ef000002fd callf $4,_print_pushd_data ! 650: 623 0001FC53 # writes(", pushed = "); ! 651: 624 0001FC53 .data 1 ! 652: 625 00000c6c * L289: ! 653: 626 00000c6c * 2C2020707573686564203D200 .ascii ", pushed = \0" ! 654: 0 ! 655: 627 00000c79 * .text ! 656: 628 0001FC53 dd 8f00000c6c pushl $L289 ! 657: 629 0001FC59 fe 08 effffff9f0 callf $8,_writes ! 658: 630 0001FC60 # write32h( dbl_ld_acc.m ); ! 659: 631 0001FC60 dd effffff9ea pushl _dbl_ld_acc ! 660: 632 0001FC66 fe 08 effffff9e3 callf $8,_write32h ! 661: 633 0001FC6D # writec(' '); ! 662: 634 0001FC6D dd 20 pushl $32 ! 663: 635 0001FC6F fe 08 effffff9da callf $8,_writec ! 664: 636 0001FC76 # write32h( dbl_ld_acc.l ); ! 665: 637 0001FC76 dd effffff9d8 pushl _dbl_ld_acc+4 ! 666: 638 0001FC7C fe 08 effffff9cd callf $8,_write32h ! 667: 639 0001FC83 # writec('\n'); ! 668: 640 0001FC83 dd 0a pushl $10 ! 669: 641 0001FC85 fe 08 effffff9c4 callf $8,_writec ! 670: 642 0001FC8C # writes("register "); /* print the information */ ! 671: 643 0001FC8C .data 1 ! 672: 644 00000c79 * L290: ! 673: 645 00000c79 * 72656769737465722000 .ascii "register \0" ! 674: 646 00000c83 * .text ! 675: 647 0001FC8C dd 8f00000c79 pushl $L290 ! 676: 648 0001FC92 fe 08 effffff9b7 callf $8,_writes ! 677: 649 0001FC99 # writed( index2 ); /* about the corrupted */ ! 678: 650 0001FC99 dd effffff9b1 pushl _index2 ! 679: 651 0001FC9F fe 08 effffff9aa callf $8,_writed ! 680: 652 0001FCA6 # writes(" = "); /* register */ ! 681: 653 0001FCA6 .data 1 ! 682: 654 00000c83 * L291: ! 683: 655 00000c83 * 203D2000 .ascii " = \0" ! 684: 656 00000c87 * .text ! 685: 657 0001FCA6 dd 8f00000c83 pushl $L291 ! 686: 658 0001FCAC fe 08 effffff99d callf $8,_writes ! 687: 659 0001FCB3 # write32h( store_regs[index2] ); ! 688: 660 0001FCB3 0d effffff997 50 movl _index2,r0 ! 689: 661 0001FCBA dd 40effffff98f pushl _store_regs[r0] ! 690: 662 0001FCC1 fe 08 effffff988 callf $8,_write32h ! 691: 663 0001FCC8 # writes(", should be = "); ! 692: 664 0001FCC8 .data 1 ! 693: 665 00000c87 * L292: ! 694: 666 00000c87 * 2C202073686F756C642062652 .ascii ", should be = \0" ! 695: 03D2000 ! 696: 667 00000c97 * .text ! 697: 668 0001FCC8 dd 8f00000c87 pushl $L292 ! 698: 669 0001FCCE fe 08 effffff97b callf $8,_writes ! 699: 670 0001FCD5 # write32h( load_regs[index2] ); ! 700: 671 0001FCD5 0d effffff975 50 movl _index2,r0 ! 701: 672 0001FCDC dd 40effffff96d pushl _load_regs[r0] ! 702: 673 0001FCE3 fe 08 effffff966 callf $8,_write32h ! 703: 674 0001FCEA # writes("\n"); ! 704: 675 0001FCEA .data 1 ! 705: 676 00000c97 * L293: ! 706: 677 00000c97 * 0A00 .ascii "\12\0" ! 707: 678 00000c99 * .text ! 708: 679 0001FCEA dd 8f00000c97 pushl $L293 ! 709: 680 0001FCF0 fe 08 effffff959 callf $8,_writes ! 710: 681 0001FCF7 # } ! 711: 682 0001FCF7 # if ( halt_flg ) /* halt on error? */ ! 712: 683 0001FCF7 L285: ! 713: 684 0001FCF7 5d effffff953 tstl _halt_flg ! 714: 685 0001FCFD 31 09 jeql L294 ! 715: 686 0001FCFF # pushd_er_halt( BAD_REG_HLT ); ! 716: 687 0001FCFF dd 02 pushl $2 ! 717: 688 0001FD01 fe 08 ef00000280 callf $8,_pushd_er_halt ! 718: 689 0001FD08 # if ( loop_on_err ) { ! 719: 690 0001FD08 L294: ! 720: 691 0001FD08 5d effffff942 tstl _loop_on_err ! 721: 692 0001FD0E 31 0d jeql L295 ! 722: 693 0001FD10 # force_loop = TRUE; /* set the force loop flag */ ! 723: 694 0001FD10 0d 01 effffff939 movl $1,_force_loop ! 724: 695 0001FD17 # asm("jmp _pushd_2_lp1"); /* and loop */ ! 725: 696 0001FD17 71 effffffe78 jmp _pushd_2_lp1 ! 726: 697 0001FD1D # } /* end of loop-on-error */ ! 727: 698 0001FD1D # } /* end of compare error */ ! 728: 699 0001FD1D L295: ! 729: 700 0001FD1D # } while( index++ < max_ldd_1_index ); ! 730: 701 0001FD1D L284: ! 731: 702 0001FD1D L278: ! 732: 703 0001FD1D 0d effffff92d 50 movl _index,r0 ! 733: 704 0001FD24 6d effffff926 incl _index ! 734: 705 0001FD2A 1d 50 effffff91f cmpl r0,_max_ldd_1_index ! 735: 706 0001FD31 81 03 13 fe16 jlss L279 ! 736: 707 0001FD36 L277: ! 737: 708 0001FD36 # } /* end of subtest 2 */ ! 738: 709 0001FD36 40 ret#2 ! 739: 710 0001FD37 .set L273,0x0 ! 740: 711 0001FD37 L275: ! 741: 712 0001FD37 13 fdff jbr L276 ! 742: 713 0001FD3A .data ! 743: 714 00000aac * .text ! 744: 715 0001FD3A .align 1 ! 745: 716 0001FD3A .globl _pushd_3 ! 746: 717 0001FD3A _pushd_3: ! 747: 718 0001FD3A 0000 .word L296 ! 748: 719 0001FD3C # ! 749: 720 0001FD3C # ! 750: 721 0001FD3C # ! 751: 722 0001FD3C # /************************************************************************ ! 752: 723 0001FD3C # * ! 753: 724 0001FD3C # * SUBTEST 3 - PUSHD status test ! 754: 725 0001FD3C # * ! 755: 726 0001FD3C # ************************************************************************/ ! 756: 727 0001FD3C # pushd_3() ! 757: 728 0001FD3C # { ! 758: 729 0001FD3C 13 020d jbr L298 ! 759: 730 0001FD3F L299: ! 760: 731 0001FD3F # force_loop = FALSE; ! 761: 732 0001FD3F 4d effffff90b clrl _force_loop ! 762: 733 0001FD45 # subtest = 3; ! 763: 734 0001FD45 0d 03 effffff904 movl $3,_subtest ! 764: 735 0001FD4C # index = 0; ! 765: 736 0001FD4C 4d effffff8fe clrl _index ! 766: 737 0001FD52 # do { ! 767: 738 0001FD52 L302: ! 768: 739 0001FD52 # dbl_ld_acc = ldd_1_data[index].ld; /* get the operand */ ! 769: 740 0001FD52 48 04 effffff8f7 50 shll $4,_index,r0 ! 770: 741 0001FD5A 0c 8f00000000 50 addl2 $_ldd_1_data,r0 ! 771: 742 0001FD61 0d a004 effffff8eb movl 4(r0),_dbl_ld_acc+4 ! 772: 743 0001FD69 0d 60 effffff8e0 movl (r0),_dbl_ld_acc ! 773: 744 0001FD70 # status_index = 0; /* clear the status index */ ! 774: 745 0001FD70 4d effffff8da clrl _status_index ! 775: 746 0001FD76 # do { ! 776: 747 0001FD76 L305: ! 777: 748 0001FD76 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */ ! 778: 749 0001FD76 0d effffff8d4 50 movl _status_index,r0 ! 779: 750 0001FD7D 0d 40effffff8cc movl _status_array[r0],_sgl_dummy1 ! 780: effffff8c7 ! 781: 751 0001FD89 # /* ! 782: 752 0001FD89 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 783: 753 0001FD89 # * The force loop flag is set after the first error. ! 784: 754 0001FD89 # */ ! 785: 755 0001FD89 # asm("_pushd_3_lp1:"); ! 786: 756 0001FD89 _pushd_3_lp1: ! 787: 757 0001FD89 # asm("ldd _dbl_ld_acc"); /* load the operand */ ! 788: 758 0001FD89 07 effffff8c1 ldd _dbl_ld_acc ! 789: 759 0001FD8F # asm("tstl _sgl_dummy1"); /* generate initial status */ ! 790: 760 0001FD8F 5d effffff8bb tstl _sgl_dummy1 ! 791: 761 0001FD95 # asm("movpsl _init_psl"); /* save the initial status */ ! 792: 762 0001FD95 cd effffff8b5 movpsl _init_psl ! 793: 763 0001FD9B # asm("nop"); ! 794: 764 0001FD9B 10 nop ! 795: 765 0001FD9C # asm("pushd"); /* push the accumulator */ ! 796: 766 0001FD9C 67 pushd ! 797: 767 0001FD9D # asm("nop"); ! 798: 768 0001FD9D 10 nop ! 799: 769 0001FD9E # asm("movpsl _psl_val"); /* save the final status */ ! 800: 770 0001FD9E cd effffff8ac movpsl _psl_val ! 801: 771 0001FDA4 # asm("std _dbl_st_acc"); /* save the acc */ ! 802: 772 0001FDA4 27 effffff8a6 std _dbl_st_acc ! 803: 773 0001FDAA # if( force_loop ) /* loop? */ ! 804: 774 0001FDAA 5d effffff8a0 tstl _force_loop ! 805: 775 0001FDB0 31 02 jeql L306 ! 806: 776 0001FDB2 # asm("brb _pushd_3_lp1");; /* run the loop again */ ! 807: 777 0001FDB2 11 d5 brb _pushd_3_lp1 ! 808: 778 0001FDB4 L306: ! 809: 779 0001FDB4 # exp_psl = init_psl; /* get the initial PSL */ ! 810: 780 0001FDB4 0d effffff896 effffff891 movl _init_psl,_exp_psl ! 811: 781 0001FDBF # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */ ! 812: 782 0001FDBF ac 88f3 effffff889 andl2 $-13,_exp_psl ! 813: 783 0001FDC7 # if( !(dbl_ld_acc.m & 0x7f800000) ) ! 814: 784 0001FDC7 3d 8f7f800000 effffff87e bitl $2139095040,_dbl_ld_acc ! 815: 785 0001FDD2 21 09 jneq L307 ! 816: 786 0001FDD4 # exp_psl |= PSL_Z; /* expect the ZERO bit set */ ! 817: 787 0001FDD4 8c 04 effffff875 orl2 $4,_exp_psl ! 818: 788 0001FDDB # else if( dbl_ld_acc.m & 0x80000000 ) ! 819: 789 0001FDDB 11 14 jbr L308 ! 820: 790 0001FDDD L307: ! 821: 791 0001FDDD 3d 8f80000000 effffff868 bitl $-2147483648,_dbl_ld_acc ! 822: 792 0001FDE8 31 07 jeql L309 ! 823: 793 0001FDEA # exp_psl |= PSL_N; /* expect the NEG bit set */ ! 824: 794 0001FDEA 8c 08 effffff85f orl2 $8,_exp_psl ! 825: 795 0001FDF1 # if( psl_val != exp_psl ) { /* COMPARE the values */ ! 826: 796 0001FDF1 L309: ! 827: 797 0001FDF1 L308: ! 828: 798 0001FDF1 1d effffff859 effffff854 cmpl _psl_val,_exp_psl ! 829: 799 0001FDFC 21 03 13 011c jeql L310 ! 830: 800 0001FE01 # errcnt++; /* bump the error count */ ! 831: 801 0001FE01 6d effffff849 incl _errcnt ! 832: 802 0001FE07 # if ( prt_error ) { ! 833: 803 0001FE07 5d effffff843 tstl _prt_error ! 834: 804 0001FE0D 21 03 13 00e5 jeql L311 ! 835: 805 0001FE12 # writes(" \n"); /* start a new print line */ ! 836: 806 0001FE12 .data 1 ! 837: 807 00000c99 * L312: ! 838: 808 00000c99 * 200A00 .ascii " \12\0" ! 839: 809 00000c9c * .text ! 840: 810 0001FE12 dd 8f00000c99 pushl $L312 ! 841: 811 0001FE18 fe 08 effffff831 callf $8,_writes ! 842: 812 0001FE1F # writes("cycle: "); ! 843: 813 0001FE1F .data 1 ! 844: 814 00000c9c * L313: ! 845: 815 00000c9c * 6379636C653A2000 .ascii "cycle: \0" ! 846: 816 00000ca4 * .text ! 847: 817 0001FE1F dd 8f00000c9c pushl $L313 ! 848: 818 0001FE25 fe 08 effffff824 callf $8,_writes ! 849: 819 0001FE2C # writed( cycle ); ! 850: 820 0001FE2C dd effffff81e pushl _cycle ! 851: 821 0001FE32 fe 08 effffff817 callf $8,_writed ! 852: 822 0001FE39 # writes(" PUSHD test "); ! 853: 823 0001FE39 .data 1 ! 854: 824 00000ca4 * L314: ! 855: 825 00000ca4 * 2020505553484420746573742 .ascii " PUSHD test \0" ! 856: 000 ! 857: 826 00000cb2 * .text ! 858: 827 0001FE39 dd 8f00000ca4 pushl $L314 ! 859: 828 0001FE3F fe 08 effffff80a callf $8,_writes ! 860: 829 0001FE46 # writed( test_no ); ! 861: 830 0001FE46 dd effffff804 pushl _test_no ! 862: 831 0001FE4C fe 08 effffff7fd callf $8,_writed ! 863: 832 0001FE53 # writes(", subtest 3 - INCORRECT FINAL PSL\n"); ! 864: 833 0001FE53 .data 1 ! 865: 834 00000cb2 * L315: ! 866: 835 00000cb2 * 2C20737562746573742033202 .ascii ", subtest 3 - INCORRECT FINAL PSL\12\0" ! 867: 02D20494E434F525245435420 ! 868: 46494E414C2050534C0A00 ! 869: 836 00000cd6 * .text ! 870: 837 0001FE53 dd 8f00000cb2 pushl $L315 ! 871: 838 0001FE59 fe 08 effffff7f0 callf $8,_writes ! 872: 839 0001FE60 # print_pushd_data(); ! 873: 840 0001FE60 fe 04 ef000000e9 callf $4,_print_pushd_data ! 874: 841 0001FE67 # writes(", pushed = "); ! 875: 842 0001FE67 .data 1 ! 876: 843 00000cd6 * L316: ! 877: 844 00000cd6 * 2C2020707573686564203D200 .ascii ", pushed = \0" ! 878: 0 ! 879: 845 00000ce3 * .text ! 880: 846 0001FE67 dd 8f00000cd6 pushl $L316 ! 881: 847 0001FE6D fe 08 effffff7dc callf $8,_writes ! 882: 848 0001FE74 # write32h( dbl_ld_acc.m ); ! 883: 849 0001FE74 dd effffff7d6 pushl _dbl_ld_acc ! 884: 850 0001FE7A fe 08 effffff7cf callf $8,_write32h ! 885: 851 0001FE81 # writec(' '); ! 886: 852 0001FE81 dd 20 pushl $32 ! 887: 853 0001FE83 fe 08 effffff7c6 callf $8,_writec ! 888: 854 0001FE8A # write32h( dbl_ld_acc.l ); ! 889: 855 0001FE8A dd effffff7c4 pushl _dbl_ld_acc+4 ! 890: 856 0001FE90 fe 08 effffff7b9 callf $8,_write32h ! 891: 857 0001FE97 # writec('\n'); ! 892: 858 0001FE97 dd 0a pushl $10 ! 893: 859 0001FE99 fe 08 effffff7b0 callf $8,_writec ! 894: 860 0001FEA0 # writes("initial PSL = "); ! 895: 861 0001FEA0 .data 1 ! 896: 862 00000ce3 * L317: ! 897: 863 00000ce3 * 696E697469616C2050534C203 .ascii "initial PSL = \0" ! 898: D2000 ! 899: 864 00000cf2 * .text ! 900: 865 0001FEA0 dd 8f00000ce3 pushl $L317 ! 901: 866 0001FEA6 fe 08 effffff7a3 callf $8,_writes ! 902: 867 0001FEAD # write32h( init_psl ); ! 903: 868 0001FEAD dd effffff79d pushl _init_psl ! 904: 869 0001FEB3 fe 08 effffff796 callf $8,_write32h ! 905: 870 0001FEBA # writes(", final PSL = "); ! 906: 871 0001FEBA .data 1 ! 907: 872 00000cf2 * L318: ! 908: 873 00000cf2 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0" ! 909: 03D2000 ! 910: 874 00000d02 * .text ! 911: 875 0001FEBA dd 8f00000cf2 pushl $L318 ! 912: 876 0001FEC0 fe 08 effffff789 callf $8,_writes ! 913: 877 0001FEC7 # write32h( psl_val ); ! 914: 878 0001FEC7 dd effffff783 pushl _psl_val ! 915: 879 0001FECD fe 08 effffff77c callf $8,_write32h ! 916: 880 0001FED4 # writes(", expected PSL = "); ! 917: 881 0001FED4 .data 1 ! 918: 882 00000d02 * L319: ! 919: 883 00000d02 * 2C20206578706563746564205 .ascii ", expected PSL = \0" ! 920: 0534C203D2000 ! 921: 884 00000d15 * .text ! 922: 885 0001FED4 dd 8f00000d02 pushl $L319 ! 923: 886 0001FEDA fe 08 effffff76f callf $8,_writes ! 924: 887 0001FEE1 # write32h( exp_psl ); ! 925: 888 0001FEE1 dd effffff769 pushl _exp_psl ! 926: 889 0001FEE7 fe 08 effffff762 callf $8,_write32h ! 927: 890 0001FEEE # writec('\n'); ! 928: 891 0001FEEE dd 0a pushl $10 ! 929: 892 0001FEF0 fe 08 effffff759 callf $8,_writec ! 930: 893 0001FEF7 # } ! 931: 894 0001FEF7 # if ( halt_flg ) /* halt on error? */ ! 932: 895 0001FEF7 L311: ! 933: 896 0001FEF7 5d effffff753 tstl _halt_flg ! 934: 897 0001FEFD 31 09 jeql L320 ! 935: 898 0001FEFF # pushd_er_halt( BAD_PSL_HLT ); ! 936: 899 0001FEFF dd 03 pushl $3 ! 937: 900 0001FF01 fe 08 ef00000080 callf $8,_pushd_er_halt ! 938: 901 0001FF08 # if ( loop_on_err ) { ! 939: 902 0001FF08 L320: ! 940: 903 0001FF08 5d effffff742 tstl _loop_on_err ! 941: 904 0001FF0E 31 0d jeql L321 ! 942: 905 0001FF10 # force_loop = TRUE; /* set the force loop flag */ ! 943: 906 0001FF10 0d 01 effffff739 movl $1,_force_loop ! 944: 907 0001FF17 # asm("jmp _pushd_3_lp1"); /* and loop */ ! 945: 908 0001FF17 71 effffffe6c jmp _pushd_3_lp1 ! 946: 909 0001FF1D # }; /* end of loop-on-error */ ! 947: 910 0001FF1D L321: ! 948: 911 0001FF1D # } /* end of compare error */ ! 949: 912 0001FF1D # } while( ++status_index < 3 ); ! 950: 913 0001FF1D L310: ! 951: 914 0001FF1D L304: ! 952: 915 0001FF1D 6d effffff72d incl _status_index ! 953: 916 0001FF23 0d effffff727 50 movl _status_index,r0 ! 954: 917 0001FF2A 1d 50 03 cmpl r0,$3 ! 955: 918 0001FF2D 81 03 13 fe44 jlss L305 ! 956: 919 0001FF32 L303: ! 957: 920 0001FF32 # } while( index++ < max_ldd_1_index ); ! 958: 921 0001FF32 L301: ! 959: 922 0001FF32 0d effffff718 50 movl _index,r0 ! 960: 923 0001FF39 6d effffff711 incl _index ! 961: 924 0001FF3F 1d 50 effffff70a cmpl r0,_max_ldd_1_index ! 962: 925 0001FF46 81 03 13 fe07 jlss L302 ! 963: 926 0001FF4B L300: ! 964: 927 0001FF4B # } /* end of subtest 3 */ ! 965: 928 0001FF4B 40 ret#2 ! 966: 929 0001FF4C .set L296,0x0 ! 967: 930 0001FF4C L298: ! 968: 931 0001FF4C 13 fdf0 jbr L299 ! 969: 932 0001FF4F .data ! 970: 933 00000aac * .text ! 971: 934 0001FF4F 00 .align 1 ! 972: 935 0001FF50 .globl _print_pushd_data ! 973: 936 0001FF50 _print_pushd_data: ! 974: 937 0001FF50 0000 .word L322 ! 975: 938 0001FF52 # ! 976: 939 0001FF52 # ! 977: 940 0001FF52 # ! 978: 941 0001FF52 # /************************************************************************** ! 979: 942 0001FF52 # * ! 980: 943 0001FF52 # * PRINT THE DATA AND STORE RESULTS ! 981: 944 0001FF52 # * ! 982: 945 0001FF52 # * initial Acc = xxxxxxxx xxxxxxxx, stored = xxxxxxxx xxxxxxxx, index = xx ! 983: 946 0001FF52 # * operand = xxxxxxxx xxxxxxxx, expected = xxxxxxxx xxxxxxxx ! 984: 947 0001FF52 # **************************************************************************/ ! 985: 948 0001FF52 # print_pushd_data() ! 986: 949 0001FF52 # { ! 987: 950 0001FF52 11 31 jbr L324 ! 988: 951 0001FF54 L325: ! 989: 952 0001FF54 # writes("initial Acc = "); ! 990: 953 0001FF54 .data 1 ! 991: 954 00000d15 * L326: ! 992: 955 00000d15 * 696E697469616C20416363203 .ascii "initial Acc = \0" ! 993: D2000 ! 994: 956 00000d24 * .text ! 995: 957 0001FF54 dd 8f00000d15 pushl $L326 ! 996: 958 0001FF5A fe 08 effffff6ef callf $8,_writes ! 997: 959 0001FF61 # write32h( dbl_ld_acc.m ); ! 998: 960 0001FF61 dd effffff6e9 pushl _dbl_ld_acc ! 999: 961 0001FF67 fe 08 effffff6e2 callf $8,_write32h ! 1000: 962 0001FF6E # writec(' '); ! 1001: 963 0001FF6E dd 20 pushl $32 ! 1002: 964 0001FF70 fe 08 effffff6d9 callf $8,_writec ! 1003: 965 0001FF77 # write32h( dbl_ld_acc.l ); ! 1004: 966 0001FF77 dd effffff6d7 pushl _dbl_ld_acc+4 ! 1005: 967 0001FF7D fe 08 effffff6cc callf $8,_write32h ! 1006: 968 0001FF84 # } ! 1007: 969 0001FF84 40 ret#2 ! 1008: 970 0001FF85 .set L322,0x0 ! 1009: 971 0001FF85 L324: ! 1010: 972 0001FF85 11 cd jbr L325 ! 1011: 973 0001FF87 .data ! 1012: 974 00000aac * .text ! 1013: 975 0001FF87 00 .align 1 ! 1014: 976 0001FF88 .globl _pushd_er_halt ! 1015: 977 0001FF88 _pushd_er_halt: ! 1016: 978 0001FF88 0000 .word L327 ! 1017: 979 0001FF8A # ! 1018: 980 0001FF8A # ! 1019: 981 0001FF8A # ! 1020: 982 0001FF8A # /************************************************************************** ! 1021: 983 0001FF8A # * ! 1022: 984 0001FF8A # * HALT ON ERROR ROUTINE ! 1023: 985 0001FF8A # * ! 1024: 986 0001FF8A # **************************************************************************/ ! 1025: 987 0001FF8A # pushd_er_halt( halt_code ) ! 1026: 988 0001FF8A # int halt_code; ! 1027: 989 0001FF8A # { ! 1028: 990 0001FF8A 13 0169 jbr L329 ! 1029: 991 0001FF8D L330: ! 1030: 992 0001FF8D # sgl_value_1 = dbl_ld_acc.m; ! 1031: 993 0001FF8D 0d effffff6bd effffff6b8 movl _dbl_ld_acc,_sgl_value_1 ! 1032: 994 0001FF98 # sgl_value_2 = dbl_ld_acc.l; ! 1033: 995 0001FF98 0d effffff6b6 effffff6ad movl _dbl_ld_acc+4,_sgl_value_2 ! 1034: 996 0001FFA3 # sgl_value_3 = dbl_st_acc.m; ! 1035: 997 0001FFA3 0d effffff6a7 effffff6a2 movl _dbl_st_acc,_sgl_value_3 ! 1036: 998 0001FFAE # sgl_value_4 = dbl_st_acc.l; ! 1037: 999 0001FFAE 0d effffff6a0 effffff697 movl _dbl_st_acc+4,_sgl_value_4 ! 1038: 1000 0001FFB9 # sgl_value_5 = pop_val_1; ! 1039: 1001 0001FFB9 0d effffff691 effffff68c movl _pop_val_1,_sgl_value_5 ! 1040: 1002 0001FFC4 # sgl_value_6 = pop_val_2; ! 1041: 1003 0001FFC4 0d effffff686 effffff681 movl _pop_val_2,_sgl_value_6 ! 1042: 1004 0001FFCF # sgl_dummy1 = halt_code; /* get the error type */ ! 1043: 1005 0001FFCF 0d ad04 effffff679 movl 4(fp),_sgl_dummy1 ! 1044: 1006 0001FFD7 # asm("movl _test_no,r0"); /* r0 = test number */ ! 1045: 1007 0001FFD7 0d effffff673 50 movl _test_no,r0 ! 1046: 1008 0001FFDE # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 1047: 1009 0001FFDE 0d effffff66c 51 movl _subtest,r1 ! 1048: 1010 0001FFE5 # asm("movl _sgl_dummy1,r2"); /* r2 = error code */ ! 1049: 1011 0001FFE5 0d effffff665 52 movl _sgl_dummy1,r2 ! 1050: 1012 0001FFEC # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 1051: 1013 0001FFEC 0d effffff65e 53 movl _cycle,r3 ! 1052: 1014 0001FFF3 # asm("movl _sgl_value_1,r4"); /* r4 = MS loaded */ ! 1053: 1015 0001FFF3 0d effffff657 54 movl _sgl_value_1,r4 ! 1054: 1016 0001FFFA # asm("movl _sgl_value_2,r5"); /* r5 = LS loaded */ ! 1055: 1017 0001FFFA 0d effffff650 55 movl _sgl_value_2,r5 ! 1056: 1018 00020001 # asm("movl _sgl_value_3,r6"); /* r6 = MS stored */ ! 1057: 1019 00020001 0d effffff649 56 movl _sgl_value_3,r6 ! 1058: 1020 00020008 # asm("movl _sgl_value_4,r7"); /* r7 = LS stored */ ! 1059: 1021 00020008 0d effffff642 57 movl _sgl_value_4,r7 ! 1060: 1022 0002000F # asm("movl _sgl_value_5,r8"); /* r8 = MS popped */ ! 1061: 1023 0002000F 0d effffff63b 58 movl _sgl_value_5,r8 ! 1062: 1024 00020016 # asm("movl _sgl_value_6,r9"); /* r9 = LS popped */ ! 1063: 1025 00020016 0d effffff634 59 movl _sgl_value_6,r9 ! 1064: 1026 0002001D # if( halt_code == BAD_ACC_HLT ) { ! 1065: 1027 0002001D 1d ad04 01 cmpl 4(fp),$1 ! 1066: 1028 00020021 21 2e jneq L331 ! 1067: 1029 00020023 # sgl_value_1 = dbl_expected.m; ! 1068: 1030 00020023 0d effffff627 effffff622 movl _dbl_expected,_sgl_value_1 ! 1069: 1031 0002002E # sgl_value_2 = dbl_expected.l; ! 1070: 1032 0002002E 0d effffff620 effffff617 movl _dbl_expected+4,_sgl_value_2 ! 1071: 1033 00020039 # asm("movl _sgl_value_1,r10"); /* r10 = MS expected */ ! 1072: 1034 00020039 0d effffff611 5a movl _sgl_value_1,r10 ! 1073: 1035 00020040 # asm("movl _sgl_value_2,r11"); /* r11 = LS expected */ ! 1074: 1036 00020040 0d effffff60a 5b movl _sgl_value_2,r11 ! 1075: 1037 00020047 # asm("movl _index,r12"); /* r12 = data index */ ! 1076: 1038 00020047 0d effffff603 5c movl _index,r12 ! 1077: 1039 0002004E # } else ! 1078: 1040 0002004E 13 00a3 jbr L332 ! 1079: 1041 00020051 L331: ! 1080: 1042 00020051 # if( halt_code == BAD_REG_HLT ) { ! 1081: 1043 00020051 1d ad04 02 cmpl 4(fp),$2 ! 1082: 1044 00020055 21 3d jneq L333 ! 1083: 1045 00020057 # sgl_dummy1 = load_regs[index2]; ! 1084: 1046 00020057 0d effffff5f3 50 movl _index2,r0 ! 1085: 1047 0002005E 0d 40effffff5eb movl _load_regs[r0],_sgl_dummy1 ! 1086: effffff5e6 ! 1087: 1048 0002006A # sgl_dummy2 = store_regs[index2]; ! 1088: 1049 0002006A 0d effffff5e0 50 movl _index2,r0 ! 1089: 1050 00020071 0d 40effffff5d8 movl _store_regs[r0],_sgl_dummy2 ! 1090: effffff5d3 ! 1091: 1051 0002007D # asm("movl _index2,r11"); /* r11 = bad register # */ ! 1092: 1052 0002007D 0d effffff5cd 5b movl _index2,r11 ! 1093: 1053 00020084 # asm("movl _sgl_dummy2,r12"); /* r12 = actual value */ ! 1094: 1054 00020084 0d effffff5c6 5c movl _sgl_dummy2,r12 ! 1095: 1055 0002008B # asm("movl _sgl_dummy1,r13"); /* r13 = expected value */ ! 1096: 1056 0002008B 0d effffff5bf 5d movl _sgl_dummy1,r13 ! 1097: 1057 00020092 # } else ! 1098: 1058 00020092 11 60 jbr L334 ! 1099: 1059 00020094 L333: ! 1100: 1060 00020094 # if( halt_code == BAD_PSL_HLT ) { ! 1101: 1061 00020094 1d ad04 03 cmpl 4(fp),$3 ! 1102: 1062 00020098 21 17 jneq L335 ! 1103: 1063 0002009A # asm("movl _init_psl,r11"); /* r11 = initial PSL */ ! 1104: 1064 0002009A 0d effffff5b0 5b movl _init_psl,r11 ! 1105: 1065 000200A1 # asm("movl _psl_val,r12"); /* r12 = final PSL */ ! 1106: 1066 000200A1 0d effffff5a9 5c movl _psl_val,r12 ! 1107: 1067 000200A8 # asm("movl _exp_psl,r13"); /* r13 = expected PSL */ ! 1108: 1068 000200A8 0d effffff5a2 5d movl _exp_psl,r13 ! 1109: 1069 000200AF # } else ! 1110: 1070 000200AF 11 43 jbr L336 ! 1111: 1071 000200B1 L335: ! 1112: 1072 000200B1 # if( halt_code == BAD_STORE_HLT ) { ! 1113: 1073 000200B1 1d ad04 09 cmpl 4(fp),$9 ! 1114: 1074 000200B5 21 2d jneq L337 ! 1115: 1075 000200B7 # sgl_value_1 = dbl_expected.m; ! 1116: 1076 000200B7 0d effffff593 effffff58e movl _dbl_expected,_sgl_value_1 ! 1117: 1077 000200C2 # sgl_value_2 = dbl_expected.l; ! 1118: 1078 000200C2 0d effffff58c effffff583 movl _dbl_expected+4,_sgl_value_2 ! 1119: 1079 000200CD # asm("movl _sgl_value_1,r10"); /* r10 = MS expected */ ! 1120: 1080 000200CD 0d effffff57d 5a movl _sgl_value_1,r10 ! 1121: 1081 000200D4 # asm("movl _sgl_value_2,r11"); /* r11 = LS expected */ ! 1122: 1082 000200D4 0d effffff576 5b movl _sgl_value_2,r11 ! 1123: 1083 000200DB # asm("movl _index,r12"); /* r12 = data index */ ! 1124: 1084 000200DB 0d effffff56f 5c movl _index,r12 ! 1125: 1085 000200E2 # } else ! 1126: 1086 000200E2 11 10 jbr L338 ! 1127: 1087 000200E4 L337: ! 1128: 1088 000200E4 # if( halt_code == PUSH_CNT_HLT ) { ! 1129: 1089 000200E4 1d ad04 08 cmpl 4(fp),$8 ! 1130: 1090 000200E8 21 0a jneq L339 ! 1131: 1091 000200EA # asm("movl _sgl_value_7,r10"); /* r10 = num words push */ ! 1132: 1092 000200EA 0d effffff560 5a movl _sgl_value_7,r10 ! 1133: 1093 000200F1 # asm("movl $2,r11"); /* r11 = num words exp */ ! 1134: 1094 000200F1 0d 02 5b movl $2,r11 ! 1135: 1095 000200F4 # }; ! 1136: 1096 000200F4 L339: ! 1137: 1097 000200F4 L338: ! 1138: 1098 000200F4 L336: ! 1139: 1099 000200F4 L334: ! 1140: 1100 000200F4 L332: ! 1141: 1101 000200F4 # asm("halt"); /* HALT ... */ ! 1142: 1102 000200F4 00 halt ! 1143: 1103 000200F5 # } ! 1144: 1104 000200F5 40 ret#2 ! 1145: 1105 000200F6 .set L327,0x0 ! 1146: 1106 000200F6 L329: ! 1147: 1107 000200F6 13 fe94 jbr L330 ! 1148: 1108 000200F9 .data ! 1149: 1108 0003F749 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.