|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00001458 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _cmpf2 ! 6: 6 00000000 _cmpf2: ! 7: 7 00013044 0000 .word L215 ! 8: 8 00013046 # #include "fpp_defs.h" ! 9: 9 00013046 # ! 10: 10 00013046 # ! 11: 11 00013046 # ! 12: 12 00013046 # /*************************************************************************** ! 13: 13 00013046 # * ! 14: 14 00013046 # * CMPF2 -COMPARE 2 SGL OPERANDS TO EACH OTHER -IGNORE THE ACCUMULATOR ! 15: 15 00013046 # * ! 16: 16 00013046 # *****************************************************************************/ ! 17: 17 00013046 # cmpf2() ! 18: 18 00013046 # { ! 19: 19 00013046 11 65 jbr L217 ! 20: 20 00013048 L218: ! 21: 21 00013048 # asm(".globl _cmpf2_t"); ! 22: 22 00013048 .globl _cmpf2_t ! 23: 23 00013048 # asm("_cmpf2_t:"); /* entry address */ ! 24: 24 00013048 _cmpf2_t: ! 25: 25 00013048 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */ ! 26: 26 00013048 1d effffffff6 01 cmpl _cycle,$1 ! 27: 27 0001304F 21 15 jneq L219 ! 28: 28 00013051 5d efffffffed tstl _prt_hdrs ! 29: 29 00013057 31 0d jeql L219 ! 30: 30 00013059 # writes(" CMPF2"); ! 31: 31 00013059 .data 1 ! 32: 32 00001458 * L221: ! 33: 33 00001458 * 20434D50463200 .ascii " CMPF2\0" ! 34: 34 0000145f * .text ! 35: 35 00013059 dd 8f00001458 pushl $L221 ! 36: 36 0001305F fe 08 efffffffde callf $8,_writes ! 37: 37 00013066 # cmpf2_1(); /* register / register data */ ! 38: 38 00013066 L219: ! 39: 39 00013066 fe 04 ef00000043 callf $4,_cmpf2_1 ! 40: 40 0001306D # cmpf2_2(); /* cache / cache data */ ! 41: 41 0001306D fe 04 ef000002da callf $4,_cmpf2_2 ! 42: 42 00013074 # cmpf2_3(); /* cache / register data */ ! 43: 43 00013074 fe 04 ef0000056b callf $4,_cmpf2_3 ! 44: 44 0001307B # cmpf2_4(); /* register / cache data */ ! 45: 45 0001307B fe 04 ef000007f8 callf $4,_cmpf2_4 ! 46: 46 00013082 # cmpf2_5(); /* acc. corruption test */ ! 47: 47 00013082 fe 04 ef00000a8b callf $4,_cmpf2_5 ! 48: 48 00013089 # cmpf2_6(); /* register corruption test */ ! 49: 49 00013089 fe 04 ef00000c9c callf $4,_cmpf2_6 ! 50: 50 00013090 # if( !no_fpp_wcs ) { ! 51: 51 00013090 5d efffffffae tstl _no_fpp_wcs ! 52: 52 00013096 21 0e jneq L228 ! 53: 53 00013098 # cmpf2_7(); /* pipelined entry test */ ! 54: 54 00013098 fe 04 ef00000e7d callf $4,_cmpf2_7 ! 55: 55 0001309F # cmpf2_8(); /* pipelined exit test */ ! 56: 56 0001309F fe 04 ef0000110c callf $4,_cmpf2_8 ! 57: 57 000130A6 # }; ! 58: 58 000130A6 L228: ! 59: 59 000130A6 # asm("jmp *return"); /* return to the test monitor */ ! 60: 60 000130A6 71 ffffffff98 jmp *return ! 61: 61 000130AC # } ! 62: 62 000130AC 40 ret#2 ! 63: 63 000130AD .set L215,0x0 ! 64: 64 000130AD L217: ! 65: 65 000130AD 11 99 jbr L218 ! 66: 66 000130AF .data ! 67: 67 00001458 * .text ! 68: 68 000130AF 00 .align 1 ! 69: 69 000130B0 .globl _cmpf2_1 ! 70: 70 000130B0 _cmpf2_1: ! 71: 71 000130B0 0000 .word L231 ! 72: 72 000130B2 # ! 73: 73 000130B2 # ! 74: 74 000130B2 # ! 75: 75 000130B2 # /**************************************************************************** ! 76: 76 000130B2 # * ! 77: 77 000130B2 # * SUBTEST 1 - CMPF2 test -register / register data ! 78: 78 000130B2 # * ! 79: 79 000130B2 # ****************************************************************************/ ! 80: 80 000130B2 # cmpf2_1() ! 81: 81 000130B2 # { ! 82: 82 000130B2 13 0295 jbr L233 ! 83: 83 000130B5 L234: ! 84: 84 000130B5 # force_loop = FALSE; ! 85: 85 000130B5 4d efffffff89 clrl _force_loop ! 86: 86 000130BB # subtest = 1; ! 87: 87 000130BB 0d 01 efffffff82 movl $1,_subtest ! 88: 88 000130C2 # index = 0; ! 89: 89 000130C2 4d efffffff7c clrl _index ! 90: 90 000130C8 # do ! 91: 91 000130C8 L237: ! 92: 92 000130C8 # { ! 93: 93 000130C8 # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */ ! 94: 94 000130C8 5c 0c efffffff75 50 mull3 $12,_index,r0 ! 95: 95 000130D0 0d e000000000 efffffff69 movl _cmpf_1_data(r0),_sgl_value_1 ! 96: 96 000130DB # sgl_value_2 = cmpf_1_data[index].two; ! 97: 97 000130DB 5c 0c efffffff62 50 mull3 $12,_index,r0 ! 98: 98 000130E3 0d e000000004 efffffff56 movl _cmpf_1_data+4(r0),_sgl_value_2 ! 99: 99 000130EE # sgl_expected = cmpf_1_data[index].flag; /* get expected results */ ! 100: 100 000130EE 5c 0c efffffff4f 50 mull3 $12,_index,r0 ! 101: 101 000130F6 0d e000000008 efffffff43 movl _cmpf_1_data+8(r0),_sgl_expected ! 102: 102 00013101 # index2 = 0; /* clear Acc. data index */ ! 103: 103 00013101 4d efffffff3d clrl _index2 ! 104: 104 00013107 # do ! 105: 105 00013107 L240: ! 106: 106 00013107 # { ! 107: 107 00013107 # sgl_ld_acc = ldf_1_data[index2++].ld; /* get the Accumulator data */ ! 108: 108 00013107 0d efffffff37 50 movl _index2,r0 ! 109: 109 0001310E 48 03 50 50 shll $3,r0,r0 ! 110: 110 00013112 0d e000000000 efffffff27 movl _ldf_1_data(r0),_sgl_ld_acc ! 111: 111 0001311D 6d efffffff21 incl _index2 ! 112: 112 00013123 # status_index = 0; /* clear the status index */ ! 113: 113 00013123 4d efffffff1b clrl _status_index ! 114: 114 00013129 # do ! 115: 115 00013129 L243: ! 116: 116 00013129 # { ! 117: 117 00013129 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */ ! 118: 118 00013129 0d efffffff15 50 movl _status_index,r0 ! 119: 119 00013130 0d 40efffffff0d movl _status_array[r0],_sgl_dummy1 ! 120: efffffff08 ! 121: 120 0001313C # /* ! 122: 121 0001313C # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 123: 122 0001313C # * The force loop flag is set after the first error. ! 124: 123 0001313C # */ ! 125: 124 0001313C # asm("_cmpf2_1_lp1:"); ! 126: 125 0001313C _cmpf2_1_lp1: ! 127: 126 0001313C # asm("movl _sgl_ld_acc,r3"); /* get the accmulator data */ ! 128: 127 0001313C 0d efffffff02 53 movl _sgl_ld_acc,r3 ! 129: 128 00013143 # asm("movl _sgl_value_1,r4"); /* move operand #1 to r4 */ ! 130: 129 00013143 0d effffffefb 54 movl _sgl_value_1,r4 ! 131: 130 0001314A # asm("movl _sgl_value_2,r5"); /* move operand #2 to r5 */ ! 132: 131 0001314A 0d effffffef4 55 movl _sgl_value_2,r5 ! 133: 132 00013151 # asm("ldf r3"); /* load the accumulator */ ! 134: 133 00013151 06 53 ldf r3 ! 135: 134 00013153 # asm("tstl _sgl_dummy1"); /* generate initial status */ ! 136: 135 00013153 5d effffffeeb tstl _sgl_dummy1 ! 137: 136 00013159 # asm("movpsl _init_psl"); /* save the initial status */ ! 138: 137 00013159 cd effffffee5 movpsl _init_psl ! 139: 138 0001315F # asm("cmpf2 r4,r5"); /* compare the operands */ ! 140: 139 0001315F 46 54 55 cmpf2 r4,r5 ! 141: 140 00013162 # asm("movpsl _psl_val"); /* save the final status */ ! 142: 141 00013162 cd effffffedc movpsl _psl_val ! 143: 142 00013168 # asm("stf r6"); /* save the accumulator */ ! 144: 143 00013168 26 56 stf r6 ! 145: 144 0001316A # if( force_loop ) /* loop? */ ! 146: 145 0001316A 5d effffffed4 tstl _force_loop ! 147: 146 00013170 31 02 jeql L244 ! 148: 147 00013172 # asm("brb _cmpf2_1_lp1");; /* run the loop again */ ! 149: 148 00013172 11 c8 brb _cmpf2_1_lp1 ! 150: 149 00013174 L244: ! 151: 150 00013174 # asm("movl r6,_sgl_st_acc"); /* put the acc into cache */ ! 152: 151 00013174 0d 56 effffffec9 movl r6,_sgl_st_acc ! 153: 152 0001317B # exp_psl = init_psl; /* get the initial PSL */ ! 154: 153 0001317B 0d effffffec3 effffffebe movl _init_psl,_exp_psl ! 155: 154 00013186 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */ ! 156: 155 00013186 ac 88f3 effffffeb6 andl2 $-13,_exp_psl ! 157: 156 0001318E # if( sgl_expected == ZERO ) ! 158: 157 0001318E 1d effffffeb0 04 cmpl _sgl_expected,$4 ! 159: 158 00013195 21 07 jneq L245 ! 160: 159 00013197 # exp_psl |= PSL_Z; /* expect the ZERO bit set */ ! 161: 160 00013197 8c 04 effffffea6 orl2 $4,_exp_psl ! 162: 161 0001319E # if( sgl_expected == NEGATIVE ) ! 163: 162 0001319E L245: ! 164: 163 0001319E 1d effffffea0 08 cmpl _sgl_expected,$8 ! 165: 164 000131A5 21 07 jneq L246 ! 166: 165 000131A7 # exp_psl |= PSL_N; /* expect the NEG bit set */ ! 167: 166 000131A7 8c 08 effffffe96 orl2 $8,_exp_psl ! 168: 167 000131AE # if( psl_val != exp_psl ) /* COMPARE the values */ ! 169: 168 000131AE L246: ! 170: 169 000131AE 1d effffffe90 effffffe8b cmpl _psl_val,_exp_psl ! 171: 170 000131B9 21 03 13 0144 jeql L247 ! 172: 171 000131BE # { ! 173: 172 000131BE # errcnt++; /* bump the error count */ ! 174: 173 000131BE 6d effffffe80 incl _errcnt ! 175: 174 000131C4 # if ( prt_error ) { ! 176: 175 000131C4 5d effffffe7a tstl _prt_error ! 177: 176 000131CA 21 03 13 0110 jeql L248 ! 178: 177 000131CF # writes(" \n"); /* start a new print line */ ! 179: 178 000131CF .data 1 ! 180: 179 0000145f * L249: ! 181: 180 0000145f * 200A00 .ascii " \12\0" ! 182: 181 00001462 * .text ! 183: 182 000131CF dd 8f0000145f pushl $L249 ! 184: 183 000131D5 fe 08 effffffe68 callf $8,_writes ! 185: 184 000131DC # writes("cycle: "); ! 186: 185 000131DC .data 1 ! 187: 186 00001462 * L250: ! 188: 187 00001462 * 6379636C653A2000 .ascii "cycle: \0" ! 189: 188 0000146a * .text ! 190: 189 000131DC dd 8f00001462 pushl $L250 ! 191: 190 000131E2 fe 08 effffffe5b callf $8,_writes ! 192: 191 000131E9 # writed( cycle ); ! 193: 192 000131E9 dd effffffe55 pushl _cycle ! 194: 193 000131EF fe 08 effffffe4e callf $8,_writed ! 195: 194 000131F6 # writes(" CMPF2 test "); ! 196: 195 000131F6 .data 1 ! 197: 196 0000146a * L252: ! 198: 197 0000146a * 2020434D50463220746573742 .ascii " CMPF2 test \0" ! 199: 000 ! 200: 198 00001478 * .text ! 201: 199 000131F6 dd 8f0000146a pushl $L252 ! 202: 200 000131FC fe 08 effffffe41 callf $8,_writes ! 203: 201 00013203 # writed( test_no ); ! 204: 202 00013203 dd effffffe3b pushl _test_no ! 205: 203 00013209 fe 08 effffffe34 callf $8,_writed ! 206: 204 00013210 # writes(", subtest 1 (Reg./Reg. Data) - BAD FINAL PSL\n"); ! 207: 205 00013210 .data 1 ! 208: 206 00001478 * L253: ! 209: 207 00001478 * 2C20737562746573742031202 .ascii ", subtest 1 (Reg./Reg. Data) - BAD FINAL PSL\12\0" ! 210: 85265672E2F5265672E204461 ! 211: 746129202D204241442046494 ! 212: E414C2050534C0A00 ! 213: 208 000014a6 * .text ! 214: 209 00013210 dd 8f00001478 pushl $L253 ! 215: 210 00013216 fe 08 effffffe27 callf $8,_writes ! 216: 211 0001321D # print_cmpf2_data(); ! 217: 212 0001321D fe 04 ef00001182 callf $4,_print_cmpf2_data ! 218: 213 00013224 # writes(", data index = "); ! 219: 214 00013224 .data 1 ! 220: 215 000014a6 * L255: ! 221: 216 000014a6 * 2C20206461746120696E64657 .ascii ", data index = \0" ! 222: 8203D2000 ! 223: 217 000014b7 * .text ! 224: 218 00013224 dd 8f000014a6 pushl $L255 ! 225: 219 0001322A fe 08 effffffe13 callf $8,_writes ! 226: 220 00013231 # writed( index ); ! 227: 221 00013231 dd effffffe0d pushl _index ! 228: 222 00013237 fe 08 effffffe06 callf $8,_writed ! 229: 223 0001323E # writec('\n'); ! 230: 224 0001323E dd 0a pushl $10 ! 231: 225 00013240 fe 08 effffffdfd callf $8,_writec ! 232: 226 00013247 # writes(" final Acc = "); ! 233: 227 00013247 .data 1 ! 234: 228 000014b7 * L257: ! 235: 229 000014b7 * 20202066696E616C204163632 .ascii " final Acc = \0" ! 236: 03D2000 ! 237: 230 000014c7 * .text ! 238: 231 00013247 dd 8f000014b7 pushl $L257 ! 239: 232 0001324D fe 08 effffffdf0 callf $8,_writes ! 240: 233 00013254 # write32h( sgl_st_acc ); ! 241: 234 00013254 dd effffffdea pushl _sgl_st_acc ! 242: 235 0001325A fe 08 effffffde3 callf $8,_write32h ! 243: 236 00013261 # writes(", operand 2 = "); ! 244: 237 00013261 .data 1 ! 245: 238 000014c7 * L259: ! 246: 239 000014c7 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0" ! 247: 03D2000 ! 248: 240 000014d7 * .text ! 249: 241 00013261 dd 8f000014c7 pushl $L259 ! 250: 242 00013267 fe 08 effffffdd6 callf $8,_writes ! 251: 243 0001326E # write32h( sgl_value_2 ); ! 252: 244 0001326E dd effffffdd0 pushl _sgl_value_2 ! 253: 245 00013274 fe 08 effffffdc9 callf $8,_write32h ! 254: 246 0001327B # writec('\n'); ! 255: 247 0001327B dd 0a pushl $10 ! 256: 248 0001327D fe 08 effffffdc0 callf $8,_writec ! 257: 249 00013284 # writes(" initial PSL = "); ! 258: 250 00013284 .data 1 ! 259: 251 000014d7 * L260: ! 260: 252 000014d7 * 20696E697469616C2050534C2 .ascii " initial PSL = \0" ! 261: 03D2000 ! 262: 253 000014e7 * .text ! 263: 254 00013284 dd 8f000014d7 pushl $L260 ! 264: 255 0001328A fe 08 effffffdb3 callf $8,_writes ! 265: 256 00013291 # write32h( init_psl ); ! 266: 257 00013291 dd effffffdad pushl _init_psl ! 267: 258 00013297 fe 08 effffffda6 callf $8,_write32h ! 268: 259 0001329E # writes(", final PSL = "); ! 269: 260 0001329E .data 1 ! 270: 261 000014e7 * L261: ! 271: 262 000014e7 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0" ! 272: 03D2000 ! 273: 263 000014f7 * .text ! 274: 264 0001329E dd 8f000014e7 pushl $L261 ! 275: 265 000132A4 fe 08 effffffd99 callf $8,_writes ! 276: 266 000132AB # write32h( psl_val ); ! 277: 267 000132AB dd effffffd93 pushl _psl_val ! 278: 268 000132B1 fe 08 effffffd8c callf $8,_write32h ! 279: 269 000132B8 # writes(", expected PSL = "); ! 280: 270 000132B8 .data 1 ! 281: 271 000014f7 * L262: ! 282: 272 000014f7 * 2C20206578706563746564205 .ascii ", expected PSL = \0" ! 283: 0534C203D2000 ! 284: 273 0000150a * .text ! 285: 274 000132B8 dd 8f000014f7 pushl $L262 ! 286: 275 000132BE fe 08 effffffd7f callf $8,_writes ! 287: 276 000132C5 # write32h( exp_psl ); ! 288: 277 000132C5 dd effffffd79 pushl _exp_psl ! 289: 278 000132CB fe 08 effffffd72 callf $8,_write32h ! 290: 279 000132D2 # writes(" \n"); ! 291: 280 000132D2 .data 1 ! 292: 281 0000150a * L263: ! 293: 282 0000150a * 200A00 .ascii " \12\0" ! 294: 283 0000150d * .text ! 295: 284 000132D2 dd 8f0000150a pushl $L263 ! 296: 285 000132D8 fe 08 effffffd65 callf $8,_writes ! 297: 286 000132DF # } ! 298: 287 000132DF # if ( halt_flg ) ! 299: 288 000132DF L248: ! 300: 289 000132DF 5d effffffd5f tstl _halt_flg ! 301: 290 000132E5 31 09 jeql L264 ! 302: 291 000132E7 # cmpf2_er_halt( BAD_PSL_HLT ); /* halt on the error */ ! 303: 292 000132E7 dd 03 pushl $3 ! 304: 293 000132E9 fe 08 ef000010f2 callf $8,_cmpf2_er_halt ! 305: 294 000132F0 # if ( loop_on_err ) { ! 306: 295 000132F0 L264: ! 307: 296 000132F0 5d effffffd4e tstl _loop_on_err ! 308: 297 000132F6 31 0a jeql L266 ! 309: 298 000132F8 # force_loop = TRUE; /* set the force loop flag */ ! 310: 299 000132F8 0d 01 effffffd45 movl $1,_force_loop ! 311: 300 000132FF # asm("brw _cmpf2_1_lp1"); /* and loop */ ! 312: 301 000132FF 13 fe3a brw _cmpf2_1_lp1 ! 313: 302 00013302 # }; /* end of loop-on-error */ ! 314: 303 00013302 L266: ! 315: 304 00013302 # } /* end of compare error */ ! 316: 305 00013302 # } while( ++status_index < 3 ); ! 317: 306 00013302 L247: ! 318: 307 00013302 L242: ! 319: 308 00013302 6d effffffd3c incl _status_index ! 320: 309 00013308 0d effffffd36 50 movl _status_index,r0 ! 321: 310 0001330F 1d 50 03 cmpl r0,$3 ! 322: 311 00013312 81 03 13 fe12 jlss L243 ! 323: 312 00013317 L241: ! 324: 313 00013317 # } while( (index2 < 10) && (index2 < max_ldf_1_index) ); ! 325: 314 00013317 L239: ! 326: 315 00013317 1d effffffd27 0a cmpl _index2,$10 ! 327: 316 0001331E 81 10 jgeq L9999 ! 328: 317 00013320 1d effffffd1e effffffd19 cmpl _index2,_max_ldf_1_index ! 329: 318 0001332B 81 03 13 fdd7 jlss L240 ! 330: 319 00013330 L9999: ! 331: 320 00013330 L238: ! 332: 321 00013330 # } while( index++ < max_cmpf_1_index ); ! 333: 322 00013330 L236: ! 334: 323 00013330 0d effffffd0e 50 movl _index,r0 ! 335: 324 00013337 6d effffffd07 incl _index ! 336: 325 0001333D 1d 50 effffffd00 cmpl r0,_max_cmpf_1_index ! 337: 326 00013344 81 03 13 fd7f jlss L237 ! 338: 327 00013349 L235: ! 339: 328 00013349 # } /* end of subtest 1 */ ! 340: 329 00013349 40 ret#2 ! 341: 330 0001334A .set L231,0x0 ! 342: 331 0001334A L233: ! 343: 332 0001334A 13 fd68 jbr L234 ! 344: 333 0001334D .data ! 345: 334 00001458 * .text ! 346: 335 0001334D 00 .align 1 ! 347: 336 0001334E .globl _cmpf2_2 ! 348: 337 0001334E _cmpf2_2: ! 349: 338 0001334E 0000 .word L267 ! 350: 339 00013350 # ! 351: 340 00013350 # ! 352: 341 00013350 # ! 353: 342 00013350 # /**************************************************************************** ! 354: 343 00013350 # * ! 355: 344 00013350 # * SUBTEST 2 - CMPF2 test - cache / cache data ! 356: 345 00013350 # * ! 357: 346 00013350 # ****************************************************************************/ ! 358: 347 00013350 # cmpf2_2() ! 359: 348 00013350 # { ! 360: 349 00013350 13 0290 jbr L269 ! 361: 350 00013353 L270: ! 362: 351 00013353 # force_loop = FALSE; ! 363: 352 00013353 4d effffffceb clrl _force_loop ! 364: 353 00013359 # subtest = 2; ! 365: 354 00013359 0d 02 effffffce4 movl $2,_subtest ! 366: 355 00013360 # index = 0; ! 367: 356 00013360 4d effffffcde clrl _index ! 368: 357 00013366 # do ! 369: 358 00013366 L273: ! 370: 359 00013366 # { ! 371: 360 00013366 # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */ ! 372: 361 00013366 5c 0c effffffcd7 50 mull3 $12,_index,r0 ! 373: 362 0001336E 0d e000000000 effffffccb movl _cmpf_1_data(r0),_sgl_value_1 ! 374: 363 00013379 # sgl_value_2 = cmpf_1_data[index].two; ! 375: 364 00013379 5c 0c effffffcc4 50 mull3 $12,_index,r0 ! 376: 365 00013381 0d e000000004 effffffcb8 movl _cmpf_1_data+4(r0),_sgl_value_2 ! 377: 366 0001338C # sgl_expected = cmpf_1_data[index].flag; /* get expected results */ ! 378: 367 0001338C 5c 0c effffffcb1 50 mull3 $12,_index,r0 ! 379: 368 00013394 0d e000000008 effffffca5 movl _cmpf_1_data+8(r0),_sgl_expected ! 380: 369 0001339F # index2 = 0; /* clear Acc. data index */ ! 381: 370 0001339F 4d effffffc9f clrl _index2 ! 382: 371 000133A5 # do ! 383: 372 000133A5 L276: ! 384: 373 000133A5 # { ! 385: 374 000133A5 # sgl_ld_acc = ldf_1_data[index2++].ld; /* get the Accumulator data */ ! 386: 375 000133A5 0d effffffc99 50 movl _index2,r0 ! 387: 376 000133AC 48 03 50 50 shll $3,r0,r0 ! 388: 377 000133B0 0d e000000000 effffffc89 movl _ldf_1_data(r0),_sgl_ld_acc ! 389: 378 000133BB 6d effffffc83 incl _index2 ! 390: 379 000133C1 # status_index = 0; /* clear the status index */ ! 391: 380 000133C1 4d effffffc7d clrl _status_index ! 392: 381 000133C7 # do ! 393: 382 000133C7 L279: ! 394: 383 000133C7 # { ! 395: 384 000133C7 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */ ! 396: 385 000133C7 0d effffffc77 50 movl _status_index,r0 ! 397: 386 000133CE 0d 40effffffc6f movl _status_array[r0],_sgl_dummy1 ! 398: effffffc6a ! 399: 387 000133DA # /* ! 400: 388 000133DA # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 401: 389 000133DA # * The force loop flag is set after the first error. ! 402: 390 000133DA # */ ! 403: 391 000133DA # asm("_cmpf2_2_lp1:"); ! 404: 392 000133DA _cmpf2_2_lp1: ! 405: 393 000133DA # asm("movl _sgl_ld_acc,r3"); /* get the accmulator data */ ! 406: 394 000133DA 0d effffffc64 53 movl _sgl_ld_acc,r3 ! 407: 395 000133E1 # asm("ldf _sgl_ld_acc"); /* load the accumulator */ ! 408: 396 000133E1 06 effffffc5d ldf _sgl_ld_acc ! 409: 397 000133E7 # asm("tstl _sgl_dummy1"); /* generate initial status */ ! 410: 398 000133E7 5d effffffc57 tstl _sgl_dummy1 ! 411: 399 000133ED # asm("movpsl _init_psl"); /* save the initial status */ ! 412: 400 000133ED cd effffffc51 movpsl _init_psl ! 413: 401 000133F3 # asm("cmpf2 _sgl_value_1,_sgl_value_2"); /* compare the data */ ! 414: 402 000133F3 46 effffffc4b effffffc46 cmpf2 _sgl_value_1,_sgl_value_2 ! 415: 403 000133FE # asm("movpsl _psl_val"); /* save the final status */ ! 416: 404 000133FE cd effffffc40 movpsl _psl_val ! 417: 405 00013404 # asm("stf _sgl_st_acc"); /* save the acc */ ! 418: 406 00013404 26 effffffc3a stf _sgl_st_acc ! 419: 407 0001340A # if( force_loop ) /* loop? */ ! 420: 408 0001340A 5d effffffc34 tstl _force_loop ! 421: 409 00013410 31 02 jeql L280 ! 422: 410 00013412 # asm("brb _cmpf2_2_lp1");; /* run the loop again */ ! 423: 411 00013412 11 c6 brb _cmpf2_2_lp1 ! 424: 412 00013414 L280: ! 425: 413 00013414 # exp_psl = init_psl; /* get the initial PSL */ ! 426: 414 00013414 0d effffffc2a effffffc25 movl _init_psl,_exp_psl ! 427: 415 0001341F # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */ ! 428: 416 0001341F ac 88f3 effffffc1d andl2 $-13,_exp_psl ! 429: 417 00013427 # if( sgl_expected == ZERO ) ! 430: 418 00013427 1d effffffc17 04 cmpl _sgl_expected,$4 ! 431: 419 0001342E 21 07 jneq L281 ! 432: 420 00013430 # exp_psl |= PSL_Z; /* expect the ZERO bit set */ ! 433: 421 00013430 8c 04 effffffc0d orl2 $4,_exp_psl ! 434: 422 00013437 # if( sgl_expected == NEGATIVE ) ! 435: 423 00013437 L281: ! 436: 424 00013437 1d effffffc07 08 cmpl _sgl_expected,$8 ! 437: 425 0001343E 21 07 jneq L282 ! 438: 426 00013440 # exp_psl |= PSL_N; /* expect the NEG bit set */ ! 439: 427 00013440 8c 08 effffffbfd orl2 $8,_exp_psl ! 440: 428 00013447 # if( psl_val != exp_psl ) /* COMPARE the values */ ! 441: 429 00013447 L282: ! 442: 430 00013447 1d effffffbf7 effffffbf2 cmpl _psl_val,_exp_psl ! 443: 431 00013452 21 03 13 0144 jeql L283 ! 444: 432 00013457 # { ! 445: 433 00013457 # errcnt++; /* bump the error count */ ! 446: 434 00013457 6d effffffbe7 incl _errcnt ! 447: 435 0001345D # if ( prt_error ) { ! 448: 436 0001345D 5d effffffbe1 tstl _prt_error ! 449: 437 00013463 21 03 13 0110 jeql L284 ! 450: 438 00013468 # writes(" \n"); /* start a new print line */ ! 451: 439 00013468 .data 1 ! 452: 440 0000150d * L285: ! 453: 441 0000150d * 200A00 .ascii " \12\0" ! 454: 442 00001510 * .text ! 455: 443 00013468 dd 8f0000150d pushl $L285 ! 456: 444 0001346E fe 08 effffffbcf callf $8,_writes ! 457: 445 00013475 # writes("cycle: "); ! 458: 446 00013475 .data 1 ! 459: 447 00001510 * L286: ! 460: 448 00001510 * 6379636C653A2000 .ascii "cycle: \0" ! 461: 449 00001518 * .text ! 462: 450 00013475 dd 8f00001510 pushl $L286 ! 463: 451 0001347B fe 08 effffffbc2 callf $8,_writes ! 464: 452 00013482 # writed( cycle ); ! 465: 453 00013482 dd effffffbbc pushl _cycle ! 466: 454 00013488 fe 08 effffffbb5 callf $8,_writed ! 467: 455 0001348F # writes(" CMPF2 test "); ! 468: 456 0001348F .data 1 ! 469: 457 00001518 * L287: ! 470: 458 00001518 * 2020434D50463220746573742 .ascii " CMPF2 test \0" ! 471: 000 ! 472: 459 00001526 * .text ! 473: 460 0001348F dd 8f00001518 pushl $L287 ! 474: 461 00013495 fe 08 effffffba8 callf $8,_writes ! 475: 462 0001349C # writed( test_no ); ! 476: 463 0001349C dd effffffba2 pushl _test_no ! 477: 464 000134A2 fe 08 effffffb9b callf $8,_writed ! 478: 465 000134A9 # writes(", subtest 2 (Cache/Cache Data) - BAD FINAL PSL\n"); ! 479: 466 000134A9 .data 1 ! 480: 467 00001526 * L288: ! 481: 468 00001526 * 2C20737562746573742032202 .ascii ", subtest 2 (Cache/Cache Data) - BAD FINAL PSL\12\0" ! 482: 843616368652F436163686520 ! 483: 4461746129202D20424144204 ! 484: 6494E414C2050534C0A00 ! 485: 469 00001556 * .text ! 486: 470 000134A9 dd 8f00001526 pushl $L288 ! 487: 471 000134AF fe 08 effffffb8e callf $8,_writes ! 488: 472 000134B6 # print_cmpf2_data(); ! 489: 473 000134B6 fe 04 ef00000ee9 callf $4,_print_cmpf2_data ! 490: 474 000134BD # writes(", data index = "); ! 491: 475 000134BD .data 1 ! 492: 476 00001556 * L289: ! 493: 477 00001556 * 2C20206461746120696E64657 .ascii ", data index = \0" ! 494: 8203D2000 ! 495: 478 00001567 * .text ! 496: 479 000134BD dd 8f00001556 pushl $L289 ! 497: 480 000134C3 fe 08 effffffb7a callf $8,_writes ! 498: 481 000134CA # writed( index ); ! 499: 482 000134CA dd effffffb74 pushl _index ! 500: 483 000134D0 fe 08 effffffb6d callf $8,_writed ! 501: 484 000134D7 # writec('\n'); ! 502: 485 000134D7 dd 0a pushl $10 ! 503: 486 000134D9 fe 08 effffffb64 callf $8,_writec ! 504: 487 000134E0 # writes(" final Acc = "); ! 505: 488 000134E0 .data 1 ! 506: 489 00001567 * L290: ! 507: 490 00001567 * 20202066696E616C204163632 .ascii " final Acc = \0" ! 508: 03D2000 ! 509: 491 00001577 * .text ! 510: 492 000134E0 dd 8f00001567 pushl $L290 ! 511: 493 000134E6 fe 08 effffffb57 callf $8,_writes ! 512: 494 000134ED # write32h( sgl_st_acc ); ! 513: 495 000134ED dd effffffb51 pushl _sgl_st_acc ! 514: 496 000134F3 fe 08 effffffb4a callf $8,_write32h ! 515: 497 000134FA # writes(", operand 2 = "); ! 516: 498 000134FA .data 1 ! 517: 499 00001577 * L291: ! 518: 500 00001577 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0" ! 519: 03D2000 ! 520: 501 00001587 * .text ! 521: 502 000134FA dd 8f00001577 pushl $L291 ! 522: 503 00013500 fe 08 effffffb3d callf $8,_writes ! 523: 504 00013507 # write32h( sgl_value_2 ); ! 524: 505 00013507 dd effffffb37 pushl _sgl_value_2 ! 525: 506 0001350D fe 08 effffffb30 callf $8,_write32h ! 526: 507 00013514 # writec('\n'); ! 527: 508 00013514 dd 0a pushl $10 ! 528: 509 00013516 fe 08 effffffb27 callf $8,_writec ! 529: 510 0001351D # writes(" initial PSL = "); ! 530: 511 0001351D .data 1 ! 531: 512 00001587 * L292: ! 532: 513 00001587 * 20696E697469616C2050534C2 .ascii " initial PSL = \0" ! 533: 03D2000 ! 534: 514 00001597 * .text ! 535: 515 0001351D dd 8f00001587 pushl $L292 ! 536: 516 00013523 fe 08 effffffb1a callf $8,_writes ! 537: 517 0001352A # write32h( init_psl ); ! 538: 518 0001352A dd effffffb14 pushl _init_psl ! 539: 519 00013530 fe 08 effffffb0d callf $8,_write32h ! 540: 520 00013537 # writes(", final PSL = "); ! 541: 521 00013537 .data 1 ! 542: 522 00001597 * L293: ! 543: 523 00001597 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0" ! 544: 03D2000 ! 545: 524 000015a7 * .text ! 546: 525 00013537 dd 8f00001597 pushl $L293 ! 547: 526 0001353D fe 08 effffffb00 callf $8,_writes ! 548: 527 00013544 # write32h( psl_val ); ! 549: 528 00013544 dd effffffafa pushl _psl_val ! 550: 529 0001354A fe 08 effffffaf3 callf $8,_write32h ! 551: 530 00013551 # writes(", expected PSL = "); ! 552: 531 00013551 .data 1 ! 553: 532 000015a7 * L294: ! 554: 533 000015a7 * 2C20206578706563746564205 .ascii ", expected PSL = \0" ! 555: 0534C203D2000 ! 556: 534 000015ba * .text ! 557: 535 00013551 dd 8f000015a7 pushl $L294 ! 558: 536 00013557 fe 08 effffffae6 callf $8,_writes ! 559: 537 0001355E # write32h( exp_psl ); ! 560: 538 0001355E dd effffffae0 pushl _exp_psl ! 561: 539 00013564 fe 08 effffffad9 callf $8,_write32h ! 562: 540 0001356B # writes(" \n"); ! 563: 541 0001356B .data 1 ! 564: 542 000015ba * L295: ! 565: 543 000015ba * 200A00 .ascii " \12\0" ! 566: 544 000015bd * .text ! 567: 545 0001356B dd 8f000015ba pushl $L295 ! 568: 546 00013571 fe 08 effffffacc callf $8,_writes ! 569: 547 00013578 # } ! 570: 548 00013578 # if ( halt_flg ) ! 571: 549 00013578 L284: ! 572: 550 00013578 5d effffffac6 tstl _halt_flg ! 573: 551 0001357E 31 09 jeql L296 ! 574: 552 00013580 # cmpf2_er_halt( BAD_PSL_HLT ); /* halt on the error */ ! 575: 553 00013580 dd 03 pushl $3 ! 576: 554 00013582 fe 08 ef00000e59 callf $8,_cmpf2_er_halt ! 577: 555 00013589 # if ( loop_on_err ) ! 578: 556 00013589 L296: ! 579: 557 00013589 5d effffffab5 tstl _loop_on_err ! 580: 558 0001358F 31 0a jeql L297 ! 581: 559 00013591 # { ! 582: 560 00013591 # force_loop = TRUE; /* set the force loop flag */ ! 583: 561 00013591 0d 01 effffffaac movl $1,_force_loop ! 584: 562 00013598 # asm("brw _cmpf2_2_lp1"); /* and loop */ ! 585: 563 00013598 13 fe3f brw _cmpf2_2_lp1 ! 586: 564 0001359B # }; /* end of loop-on-error */ ! 587: 565 0001359B L297: ! 588: 566 0001359B # } /* end of compare error */ ! 589: 567 0001359B # } while( ++status_index < 3 ); ! 590: 568 0001359B L283: ! 591: 569 0001359B L278: ! 592: 570 0001359B 6d effffffaa3 incl _status_index ! 593: 571 000135A1 0d effffffa9d 50 movl _status_index,r0 ! 594: 572 000135A8 1d 50 03 cmpl r0,$3 ! 595: 573 000135AB 81 03 13 fe17 jlss L279 ! 596: 574 000135B0 L277: ! 597: 575 000135B0 # } while( (index2 < 10) && (index2 < max_ldf_1_index) ); ! 598: 576 000135B0 L275: ! 599: 577 000135B0 1d effffffa8e 0a cmpl _index2,$10 ! 600: 578 000135B7 81 10 jgeq L9998 ! 601: 579 000135B9 1d effffffa85 effffffa80 cmpl _index2,_max_ldf_1_index ! 602: 580 000135C4 81 03 13 fddc jlss L276 ! 603: 581 000135C9 L9998: ! 604: 582 000135C9 L274: ! 605: 583 000135C9 # } while( index++ < max_cmpf_1_index ); ! 606: 584 000135C9 L272: ! 607: 585 000135C9 0d effffffa75 50 movl _index,r0 ! 608: 586 000135D0 6d effffffa6e incl _index ! 609: 587 000135D6 1d 50 effffffa67 cmpl r0,_max_cmpf_1_index ! 610: 588 000135DD 81 03 13 fd84 jlss L273 ! 611: 589 000135E2 L271: ! 612: 590 000135E2 # } /* end of subtest 2 */ ! 613: 591 000135E2 40 ret#2 ! 614: 592 000135E3 .set L267,0x0 ! 615: 593 000135E3 L269: ! 616: 594 000135E3 13 fd6d jbr L270 ! 617: 595 000135E6 .data ! 618: 596 00001458 * .text ! 619: 597 000135E6 .align 1 ! 620: 598 000135E6 .globl _cmpf2_3 ! 621: 599 000135E6 _cmpf2_3: ! 622: 600 000135E6 0000 .word L298 ! 623: 601 000135E8 # ! 624: 602 000135E8 # ! 625: 603 000135E8 # ! 626: 604 000135E8 # /**************************************************************************** ! 627: 605 000135E8 # * ! 628: 606 000135E8 # * SUBTEST 3 - CMPF2 test - cache / register data ! 629: 607 000135E8 # * ! 630: 608 000135E8 # ****************************************************************************/ ! 631: 609 000135E8 # cmpf2_3() ! 632: 610 000135E8 # { ! 633: 611 000135E8 13 028c jbr L300 ! 634: 612 000135EB L301: ! 635: 613 000135EB # force_loop = FALSE; ! 636: 614 000135EB 4d effffffa53 clrl _force_loop ! 637: 615 000135F1 # subtest = 3; ! 638: 616 000135F1 0d 03 effffffa4c movl $3,_subtest ! 639: 617 000135F8 # index = 0; ! 640: 618 000135F8 4d effffffa46 clrl _index ! 641: 619 000135FE # do ! 642: 620 000135FE L304: ! 643: 621 000135FE # { ! 644: 622 000135FE # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */ ! 645: 623 000135FE 5c 0c effffffa3f 50 mull3 $12,_index,r0 ! 646: 624 00013606 0d e000000000 effffffa33 movl _cmpf_1_data(r0),_sgl_value_1 ! 647: 625 00013611 # sgl_value_2 = cmpf_1_data[index].two; ! 648: 626 00013611 5c 0c effffffa2c 50 mull3 $12,_index,r0 ! 649: 627 00013619 0d e000000004 effffffa20 movl _cmpf_1_data+4(r0),_sgl_value_2 ! 650: 628 00013624 # sgl_expected = cmpf_1_data[index].flag; /* get expected results */ ! 651: 629 00013624 5c 0c effffffa19 50 mull3 $12,_index,r0 ! 652: 630 0001362C 0d e000000008 effffffa0d movl _cmpf_1_data+8(r0),_sgl_expected ! 653: 631 00013637 # index2 = 0; /* clear Acc. data index */ ! 654: 632 00013637 4d effffffa07 clrl _index2 ! 655: 633 0001363D # do ! 656: 634 0001363D L307: ! 657: 635 0001363D # { ! 658: 636 0001363D # sgl_ld_acc = ldf_1_data[index2++].ld; /* get the Accumulator data */ ! 659: 637 0001363D 0d effffffa01 50 movl _index2,r0 ! 660: 638 00013644 48 03 50 50 shll $3,r0,r0 ! 661: 639 00013648 0d e000000000 effffff9f1 movl _ldf_1_data(r0),_sgl_ld_acc ! 662: 640 00013653 6d effffff9eb incl _index2 ! 663: 641 00013659 # status_index = 0; /* clear the status index */ ! 664: 642 00013659 4d effffff9e5 clrl _status_index ! 665: 643 0001365F # do ! 666: 644 0001365F L310: ! 667: 645 0001365F # { ! 668: 646 0001365F # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */ ! 669: 647 0001365F 0d effffff9df 50 movl _status_index,r0 ! 670: 648 00013666 0d 40effffff9d7 movl _status_array[r0],_sgl_dummy1 ! 671: effffff9d2 ! 672: 649 00013672 # /* ! 673: 650 00013672 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 674: 651 00013672 # * The force loop flag is set after the first error. ! 675: 652 00013672 # */ ! 676: 653 00013672 # asm("_cmpf2_3_lp1:"); ! 677: 654 00013672 _cmpf2_3_lp1: ! 678: 655 00013672 # asm("ldf _sgl_ld_acc"); /* load the accmulator */ ! 679: 656 00013672 06 effffff9cc ldf _sgl_ld_acc ! 680: 657 00013678 # asm("movl _sgl_value_2,r5"); /* move operand #2 to r5 */ ! 681: 658 00013678 0d effffff9c6 55 movl _sgl_value_2,r5 ! 682: 659 0001367F # asm("tstl _sgl_dummy1"); /* generate initial status */ ! 683: 660 0001367F 5d effffff9bf tstl _sgl_dummy1 ! 684: 661 00013685 # asm("movpsl _init_psl"); /* save the initial status */ ! 685: 662 00013685 cd effffff9b9 movpsl _init_psl ! 686: 663 0001368B # asm("cmpf2 _sgl_value_1,r5"); /* compare the data */ ! 687: 664 0001368B 46 effffff9b3 55 cmpf2 _sgl_value_1,r5 ! 688: 665 00013692 # asm("movpsl _psl_val"); /* save the final status */ ! 689: 666 00013692 cd effffff9ac movpsl _psl_val ! 690: 667 00013698 # asm("stf _sgl_st_acc"); /* save the acc */ ! 691: 668 00013698 26 effffff9a6 stf _sgl_st_acc ! 692: 669 0001369E # if( force_loop ) /* loop? */ ! 693: 670 0001369E 5d effffff9a0 tstl _force_loop ! 694: 671 000136A4 31 02 jeql L311 ! 695: 672 000136A6 # asm("brb _cmpf2_3_lp1");; /* run the loop again */ ! 696: 673 000136A6 11 ca brb _cmpf2_3_lp1 ! 697: 674 000136A8 L311: ! 698: 675 000136A8 # exp_psl = init_psl; /* get the initial PSL */ ! 699: 676 000136A8 0d effffff996 effffff991 movl _init_psl,_exp_psl ! 700: 677 000136B3 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */ ! 701: 678 000136B3 ac 88f3 effffff989 andl2 $-13,_exp_psl ! 702: 679 000136BB # if( sgl_expected == ZERO ) ! 703: 680 000136BB 1d effffff983 04 cmpl _sgl_expected,$4 ! 704: 681 000136C2 21 07 jneq L312 ! 705: 682 000136C4 # exp_psl |= PSL_Z; /* expect the ZERO bit set */ ! 706: 683 000136C4 8c 04 effffff979 orl2 $4,_exp_psl ! 707: 684 000136CB # if( sgl_expected == NEGATIVE ) ! 708: 685 000136CB L312: ! 709: 686 000136CB 1d effffff973 08 cmpl _sgl_expected,$8 ! 710: 687 000136D2 21 07 jneq L313 ! 711: 688 000136D4 # exp_psl |= PSL_N; /* expect the NEG bit set */ ! 712: 689 000136D4 8c 08 effffff969 orl2 $8,_exp_psl ! 713: 690 000136DB # if( psl_val != exp_psl ) /* COMPARE the values */ ! 714: 691 000136DB L313: ! 715: 692 000136DB 1d effffff963 effffff95e cmpl _psl_val,_exp_psl ! 716: 693 000136E6 21 03 13 0144 jeql L314 ! 717: 694 000136EB # { ! 718: 695 000136EB # errcnt++; /* bump the error count */ ! 719: 696 000136EB 6d effffff953 incl _errcnt ! 720: 697 000136F1 # if ( prt_error ) { ! 721: 698 000136F1 5d effffff94d tstl _prt_error ! 722: 699 000136F7 21 03 13 0110 jeql L315 ! 723: 700 000136FC # writes(" \n"); /* start a new print line */ ! 724: 701 000136FC .data 1 ! 725: 702 000015bd * L316: ! 726: 703 000015bd * 200A00 .ascii " \12\0" ! 727: 704 000015c0 * .text ! 728: 705 000136FC dd 8f000015bd pushl $L316 ! 729: 706 00013702 fe 08 effffff93b callf $8,_writes ! 730: 707 00013709 # writes("cycle: "); ! 731: 708 00013709 .data 1 ! 732: 709 000015c0 * L317: ! 733: 710 000015c0 * 6379636C653A2000 .ascii "cycle: \0" ! 734: 711 000015c8 * .text ! 735: 712 00013709 dd 8f000015c0 pushl $L317 ! 736: 713 0001370F fe 08 effffff92e callf $8,_writes ! 737: 714 00013716 # writed( cycle ); ! 738: 715 00013716 dd effffff928 pushl _cycle ! 739: 716 0001371C fe 08 effffff921 callf $8,_writed ! 740: 717 00013723 # writes(" CMPF2 test "); ! 741: 718 00013723 .data 1 ! 742: 719 000015c8 * L318: ! 743: 720 000015c8 * 2020434D50463220746573742 .ascii " CMPF2 test \0" ! 744: 000 ! 745: 721 000015d6 * .text ! 746: 722 00013723 dd 8f000015c8 pushl $L318 ! 747: 723 00013729 fe 08 effffff914 callf $8,_writes ! 748: 724 00013730 # writed( test_no ); ! 749: 725 00013730 dd effffff90e pushl _test_no ! 750: 726 00013736 fe 08 effffff907 callf $8,_writed ! 751: 727 0001373D # writes(", subtest 3 (Cache/Reg. Data) - BAD FINAL PSL\n"); ! 752: 728 0001373D .data 1 ! 753: 729 000015d6 * L319: ! 754: 730 000015d6 * 2C20737562746573742033202 .ascii ", subtest 3 (Cache/Reg. Data) - BAD FINAL PSL\12\0" ! 755: 843616368652F5265672E2044 ! 756: 61746129202D2042414420464 ! 757: 94E414C2050534C0A00 ! 758: 731 00001605 * .text ! 759: 732 0001373D dd 8f000015d6 pushl $L319 ! 760: 733 00013743 fe 08 effffff8fa callf $8,_writes ! 761: 734 0001374A # print_cmpf2_data(); ! 762: 735 0001374A fe 04 ef00000c55 callf $4,_print_cmpf2_data ! 763: 736 00013751 # writes(", data index = "); ! 764: 737 00013751 .data 1 ! 765: 738 00001605 * L320: ! 766: 739 00001605 * 2C20206461746120696E64657 .ascii ", data index = \0" ! 767: 8203D2000 ! 768: 740 00001616 * .text ! 769: 741 00013751 dd 8f00001605 pushl $L320 ! 770: 742 00013757 fe 08 effffff8e6 callf $8,_writes ! 771: 743 0001375E # writed( index ); ! 772: 744 0001375E dd effffff8e0 pushl _index ! 773: 745 00013764 fe 08 effffff8d9 callf $8,_writed ! 774: 746 0001376B # writec('\n'); ! 775: 747 0001376B dd 0a pushl $10 ! 776: 748 0001376D fe 08 effffff8d0 callf $8,_writec ! 777: 749 00013774 # writes(" final Acc = "); ! 778: 750 00013774 .data 1 ! 779: 751 00001616 * L321: ! 780: 752 00001616 * 20202066696E616C204163632 .ascii " final Acc = \0" ! 781: 03D2000 ! 782: 753 00001626 * .text ! 783: 754 00013774 dd 8f00001616 pushl $L321 ! 784: 755 0001377A fe 08 effffff8c3 callf $8,_writes ! 785: 756 00013781 # write32h( sgl_st_acc ); ! 786: 757 00013781 dd effffff8bd pushl _sgl_st_acc ! 787: 758 00013787 fe 08 effffff8b6 callf $8,_write32h ! 788: 759 0001378E # writes(", operand 2 = "); ! 789: 760 0001378E .data 1 ! 790: 761 00001626 * L322: ! 791: 762 00001626 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0" ! 792: 03D2000 ! 793: 763 00001636 * .text ! 794: 764 0001378E dd 8f00001626 pushl $L322 ! 795: 765 00013794 fe 08 effffff8a9 callf $8,_writes ! 796: 766 0001379B # write32h( sgl_value_2 ); ! 797: 767 0001379B dd effffff8a3 pushl _sgl_value_2 ! 798: 768 000137A1 fe 08 effffff89c callf $8,_write32h ! 799: 769 000137A8 # writec('\n'); ! 800: 770 000137A8 dd 0a pushl $10 ! 801: 771 000137AA fe 08 effffff893 callf $8,_writec ! 802: 772 000137B1 # writes(" initial PSL = "); ! 803: 773 000137B1 .data 1 ! 804: 774 00001636 * L323: ! 805: 775 00001636 * 20696E697469616C2050534C2 .ascii " initial PSL = \0" ! 806: 03D2000 ! 807: 776 00001646 * .text ! 808: 777 000137B1 dd 8f00001636 pushl $L323 ! 809: 778 000137B7 fe 08 effffff886 callf $8,_writes ! 810: 779 000137BE # write32h( init_psl ); ! 811: 780 000137BE dd effffff880 pushl _init_psl ! 812: 781 000137C4 fe 08 effffff879 callf $8,_write32h ! 813: 782 000137CB # writes(", final PSL = "); ! 814: 783 000137CB .data 1 ! 815: 784 00001646 * L324: ! 816: 785 00001646 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0" ! 817: 03D2000 ! 818: 786 00001656 * .text ! 819: 787 000137CB dd 8f00001646 pushl $L324 ! 820: 788 000137D1 fe 08 effffff86c callf $8,_writes ! 821: 789 000137D8 # write32h( psl_val ); ! 822: 790 000137D8 dd effffff866 pushl _psl_val ! 823: 791 000137DE fe 08 effffff85f callf $8,_write32h ! 824: 792 000137E5 # writes(", expected PSL = "); ! 825: 793 000137E5 .data 1 ! 826: 794 00001656 * L325: ! 827: 795 00001656 * 2C20206578706563746564205 .ascii ", expected PSL = \0" ! 828: 0534C203D2000 ! 829: 796 00001669 * .text ! 830: 797 000137E5 dd 8f00001656 pushl $L325 ! 831: 798 000137EB fe 08 effffff852 callf $8,_writes ! 832: 799 000137F2 # write32h( exp_psl ); ! 833: 800 000137F2 dd effffff84c pushl _exp_psl ! 834: 801 000137F8 fe 08 effffff845 callf $8,_write32h ! 835: 802 000137FF # writes(" \n"); ! 836: 803 000137FF .data 1 ! 837: 804 00001669 * L326: ! 838: 805 00001669 * 200A00 .ascii " \12\0" ! 839: 806 0000166c * .text ! 840: 807 000137FF dd 8f00001669 pushl $L326 ! 841: 808 00013805 fe 08 effffff838 callf $8,_writes ! 842: 809 0001380C # } ! 843: 810 0001380C # if ( halt_flg ) ! 844: 811 0001380C L315: ! 845: 812 0001380C 5d effffff832 tstl _halt_flg ! 846: 813 00013812 31 09 jeql L327 ! 847: 814 00013814 # cmpf2_er_halt( BAD_PSL_HLT ); /* halt on the error */ ! 848: 815 00013814 dd 03 pushl $3 ! 849: 816 00013816 fe 08 ef00000bc5 callf $8,_cmpf2_er_halt ! 850: 817 0001381D # if ( loop_on_err ) ! 851: 818 0001381D L327: ! 852: 819 0001381D 5d effffff821 tstl _loop_on_err ! 853: 820 00013823 31 0a jeql L328 ! 854: 821 00013825 # { ! 855: 822 00013825 # force_loop = TRUE; /* set the force loop flag */ ! 856: 823 00013825 0d 01 effffff818 movl $1,_force_loop ! 857: 824 0001382C # asm("brw _cmpf2_3_lp1"); /* and loop */ ! 858: 825 0001382C 13 fe43 brw _cmpf2_3_lp1 ! 859: 826 0001382F # }; /* end of loop-on-error */ ! 860: 827 0001382F L328: ! 861: 828 0001382F # } /* end of compare error */ ! 862: 829 0001382F # } while( ++status_index < 3 ); ! 863: 830 0001382F L314: ! 864: 831 0001382F L309: ! 865: 832 0001382F 6d effffff80f incl _status_index ! 866: 833 00013835 0d effffff809 50 movl _status_index,r0 ! 867: 834 0001383C 1d 50 03 cmpl r0,$3 ! 868: 835 0001383F 81 03 13 fe1b jlss L310 ! 869: 836 00013844 L308: ! 870: 837 00013844 # } while( (index2 < 10) && (index2 < max_ldf_1_index) ); ! 871: 838 00013844 L306: ! 872: 839 00013844 1d effffff7fa 0a cmpl _index2,$10 ! 873: 840 0001384B 81 10 jgeq L9997 ! 874: 841 0001384D 1d effffff7f1 effffff7ec cmpl _index2,_max_ldf_1_index ! 875: 842 00013858 81 03 13 fde0 jlss L307 ! 876: 843 0001385D L9997: ! 877: 844 0001385D L305: ! 878: 845 0001385D # } while( index++ < max_cmpf_1_index ); ! 879: 846 0001385D L303: ! 880: 847 0001385D 0d effffff7e1 50 movl _index,r0 ! 881: 848 00013864 6d effffff7da incl _index ! 882: 849 0001386A 1d 50 effffff7d3 cmpl r0,_max_cmpf_1_index ! 883: 850 00013871 81 03 13 fd88 jlss L304 ! 884: 851 00013876 L302: ! 885: 852 00013876 # } /* end of subtest 3 */ ! 886: 853 00013876 40 ret#2 ! 887: 854 00013877 .set L298,0x0 ! 888: 855 00013877 L300: ! 889: 856 00013877 13 fd71 jbr L301 ! 890: 857 0001387A .data ! 891: 858 00001458 * .text ! 892: 859 0001387A .align 1 ! 893: 860 0001387A .globl _cmpf2_4 ! 894: 861 0001387A _cmpf2_4: ! 895: 862 0001387A 0000 .word L329 ! 896: 863 0001387C # ! 897: 864 0001387C # ! 898: 865 0001387C # ! 899: 866 0001387C # /**************************************************************************** ! 900: 867 0001387C # * ! 901: 868 0001387C # * SUBTEST 4 - CMPF2 test - register / cache data ! 902: 869 0001387C # * ! 903: 870 0001387C # ****************************************************************************/ ! 904: 871 0001387C # cmpf2_4() ! 905: 872 0001387C # { ! 906: 873 0001387C 13 0292 jbr L331 ! 907: 874 0001387F L332: ! 908: 875 0001387F # force_loop = FALSE; ! 909: 876 0001387F 4d effffff7bf clrl _force_loop ! 910: 877 00013885 # subtest = 4; ! 911: 878 00013885 0d 04 effffff7b8 movl $4,_subtest ! 912: 879 0001388C # index = 0; ! 913: 880 0001388C 4d effffff7b2 clrl _index ! 914: 881 00013892 # do ! 915: 882 00013892 L335: ! 916: 883 00013892 # { ! 917: 884 00013892 # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */ ! 918: 885 00013892 5c 0c effffff7ab 50 mull3 $12,_index,r0 ! 919: 886 0001389A 0d e000000000 effffff79f movl _cmpf_1_data(r0),_sgl_value_1 ! 920: 887 000138A5 # sgl_value_2 = cmpf_1_data[index].two; ! 921: 888 000138A5 5c 0c effffff798 50 mull3 $12,_index,r0 ! 922: 889 000138AD 0d e000000004 effffff78c movl _cmpf_1_data+4(r0),_sgl_value_2 ! 923: 890 000138B8 # sgl_expected = cmpf_1_data[index].flag; /* get expected results */ ! 924: 891 000138B8 5c 0c effffff785 50 mull3 $12,_index,r0 ! 925: 892 000138C0 0d e000000008 effffff779 movl _cmpf_1_data+8(r0),_sgl_expected ! 926: 893 000138CB # index2 = 0; /* clear Acc. data index */ ! 927: 894 000138CB 4d effffff773 clrl _index2 ! 928: 895 000138D1 # do ! 929: 896 000138D1 L338: ! 930: 897 000138D1 # { ! 931: 898 000138D1 # sgl_ld_acc = ldf_1_data[index2++].ld; /* get the Accumulator data */ ! 932: 899 000138D1 0d effffff76d 50 movl _index2,r0 ! 933: 900 000138D8 48 03 50 50 shll $3,r0,r0 ! 934: 901 000138DC 0d e000000000 effffff75d movl _ldf_1_data(r0),_sgl_ld_acc ! 935: 902 000138E7 6d effffff757 incl _index2 ! 936: 903 000138ED # status_index = 0; /* clear the status index */ ! 937: 904 000138ED 4d effffff751 clrl _status_index ! 938: 905 000138F3 # do ! 939: 906 000138F3 L341: ! 940: 907 000138F3 # { ! 941: 908 000138F3 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */ ! 942: 909 000138F3 0d effffff74b 50 movl _status_index,r0 ! 943: 910 000138FA 0d 40effffff743 movl _status_array[r0],_sgl_dummy1 ! 944: effffff73e ! 945: 911 00013906 # /* ! 946: 912 00013906 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 947: 913 00013906 # * The force loop flag is set after the first error. ! 948: 914 00013906 # */ ! 949: 915 00013906 # asm("_cmpf2_4_lp1:"); ! 950: 916 00013906 _cmpf2_4_lp1: ! 951: 917 00013906 # asm("movl _sgl_ld_acc,r3"); /* get the accmulator data */ ! 952: 918 00013906 0d effffff738 53 movl _sgl_ld_acc,r3 ! 953: 919 0001390D # asm("movl _sgl_value_1,r4"); /* move operand #1 to r4 */ ! 954: 920 0001390D 0d effffff731 54 movl _sgl_value_1,r4 ! 955: 921 00013914 # asm("ldf r3"); /* load the accumulator */ ! 956: 922 00013914 06 53 ldf r3 ! 957: 923 00013916 # asm("tstl _sgl_dummy1"); /* generate initial status */ ! 958: 924 00013916 5d effffff728 tstl _sgl_dummy1 ! 959: 925 0001391C # asm("movpsl _init_psl"); /* save the initial status */ ! 960: 926 0001391C cd effffff722 movpsl _init_psl ! 961: 927 00013922 # asm("cmpf2 r4,_sgl_value_2"); /* compare the data */ ! 962: 928 00013922 46 54 effffff71b cmpf2 r4,_sgl_value_2 ! 963: 929 00013929 # asm("movpsl _psl_val"); /* save the final status */ ! 964: 930 00013929 cd effffff715 movpsl _psl_val ! 965: 931 0001392F # asm("stf _sgl_st_acc"); /* save the acc */ ! 966: 932 0001392F 26 effffff70f stf _sgl_st_acc ! 967: 933 00013935 # if( force_loop ) /* loop? */ ! 968: 934 00013935 5d effffff709 tstl _force_loop ! 969: 935 0001393B 31 02 jeql L342 ! 970: 936 0001393D # asm("brb _cmpf2_4_lp1");; /* run the loop again */ ! 971: 937 0001393D 11 c7 brb _cmpf2_4_lp1 ! 972: 938 0001393F L342: ! 973: 939 0001393F # exp_psl = init_psl; /* get the initial PSL */ ! 974: 940 0001393F 0d effffff6ff effffff6fa movl _init_psl,_exp_psl ! 975: 941 0001394A # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */ ! 976: 942 0001394A ac 88f3 effffff6f2 andl2 $-13,_exp_psl ! 977: 943 00013952 # if( sgl_expected == ZERO ) ! 978: 944 00013952 1d effffff6ec 04 cmpl _sgl_expected,$4 ! 979: 945 00013959 21 07 jneq L343 ! 980: 946 0001395B # exp_psl |= PSL_Z; /* expect the ZERO bit set */ ! 981: 947 0001395B 8c 04 effffff6e2 orl2 $4,_exp_psl ! 982: 948 00013962 # if( sgl_expected == NEGATIVE ) ! 983: 949 00013962 L343: ! 984: 950 00013962 1d effffff6dc 08 cmpl _sgl_expected,$8 ! 985: 951 00013969 21 07 jneq L344 ! 986: 952 0001396B # exp_psl |= PSL_N; /* expect the NEG bit set */ ! 987: 953 0001396B 8c 08 effffff6d2 orl2 $8,_exp_psl ! 988: 954 00013972 # if( psl_val != exp_psl ) /* COMPARE the values */ ! 989: 955 00013972 L344: ! 990: 956 00013972 1d effffff6cc effffff6c7 cmpl _psl_val,_exp_psl ! 991: 957 0001397D 21 03 13 0147 jeql L345 ! 992: 958 00013982 # { ! 993: 959 00013982 # errcnt++; /* bump the error count */ ! 994: 960 00013982 6d effffff6bc incl _errcnt ! 995: 961 00013988 # if ( prt_error ) { ! 996: 962 00013988 5d effffff6b6 tstl _prt_error ! 997: 963 0001398E 21 03 13 0110 jeql L346 ! 998: 964 00013993 # writes(" \n"); /* start a new print line */ ! 999: 965 00013993 .data 1 ! 1000: 966 0000166c * L347: ! 1001: 967 0000166c * 200A00 .ascii " \12\0" ! 1002: 968 0000166f * .text ! 1003: 969 00013993 dd 8f0000166c pushl $L347 ! 1004: 970 00013999 fe 08 effffff6a4 callf $8,_writes ! 1005: 971 000139A0 # writes("cycle: "); ! 1006: 972 000139A0 .data 1 ! 1007: 973 0000166f * L348: ! 1008: 974 0000166f * 6379636C653A2000 .ascii "cycle: \0" ! 1009: 975 00001677 * .text ! 1010: 976 000139A0 dd 8f0000166f pushl $L348 ! 1011: 977 000139A6 fe 08 effffff697 callf $8,_writes ! 1012: 978 000139AD # writed( cycle ); ! 1013: 979 000139AD dd effffff691 pushl _cycle ! 1014: 980 000139B3 fe 08 effffff68a callf $8,_writed ! 1015: 981 000139BA # writes(" CMPF2 test "); ! 1016: 982 000139BA .data 1 ! 1017: 983 00001677 * L349: ! 1018: 984 00001677 * 2020434D50463220746573742 .ascii " CMPF2 test \0" ! 1019: 000 ! 1020: 985 00001685 * .text ! 1021: 986 000139BA dd 8f00001677 pushl $L349 ! 1022: 987 000139C0 fe 08 effffff67d callf $8,_writes ! 1023: 988 000139C7 # writed( test_no ); ! 1024: 989 000139C7 dd effffff677 pushl _test_no ! 1025: 990 000139CD fe 08 effffff670 callf $8,_writed ! 1026: 991 000139D4 # writes(", subtest 4 (Reg./Cache Data) - BAD FINAL PSL\n"); ! 1027: 992 000139D4 .data 1 ! 1028: 993 00001685 * L350: ! 1029: 994 00001685 * 2C20737562746573742034202 .ascii ", subtest 4 (Reg./Cache Data) - BAD FINAL PSL\12\0" ! 1030: 85265672E2F43616368652044 ! 1031: 61746129202D2042414420464 ! 1032: 94E414C2050534C0A00 ! 1033: 995 000016b4 * .text ! 1034: 996 000139D4 dd 8f00001685 pushl $L350 ! 1035: 997 000139DA fe 08 effffff663 callf $8,_writes ! 1036: 998 000139E1 # print_cmpf2_data(); ! 1037: 999 000139E1 fe 04 ef000009be callf $4,_print_cmpf2_data ! 1038: 1000 000139E8 # writes(", data index = "); ! 1039: 1001 000139E8 .data 1 ! 1040: 1002 000016b4 * L351: ! 1041: 1003 000016b4 * 2C20206461746120696E64657 .ascii ", data index = \0" ! 1042: 8203D2000 ! 1043: 1004 000016c5 * .text ! 1044: 1005 000139E8 dd 8f000016b4 pushl $L351 ! 1045: 1006 000139EE fe 08 effffff64f callf $8,_writes ! 1046: 1007 000139F5 # writed( index ); ! 1047: 1008 000139F5 dd effffff649 pushl _index ! 1048: 1009 000139FB fe 08 effffff642 callf $8,_writed ! 1049: 1010 00013A02 # writec('\n'); ! 1050: 1011 00013A02 dd 0a pushl $10 ! 1051: 1012 00013A04 fe 08 effffff639 callf $8,_writec ! 1052: 1013 00013A0B # writes(" final Acc = "); ! 1053: 1014 00013A0B .data 1 ! 1054: 1015 000016c5 * L352: ! 1055: 1016 000016c5 * 20202066696E616C204163632 .ascii " final Acc = \0" ! 1056: 03D2000 ! 1057: 1017 000016d5 * .text ! 1058: 1018 00013A0B dd 8f000016c5 pushl $L352 ! 1059: 1019 00013A11 fe 08 effffff62c callf $8,_writes ! 1060: 1020 00013A18 # write32h( sgl_st_acc ); ! 1061: 1021 00013A18 dd effffff626 pushl _sgl_st_acc ! 1062: 1022 00013A1E fe 08 effffff61f callf $8,_write32h ! 1063: 1023 00013A25 # writes(", operand 2 = "); ! 1064: 1024 00013A25 .data 1 ! 1065: 1025 000016d5 * L353: ! 1066: 1026 000016d5 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0" ! 1067: 03D2000 ! 1068: 1027 000016e5 * .text ! 1069: 1028 00013A25 dd 8f000016d5 pushl $L353 ! 1070: 1029 00013A2B fe 08 effffff612 callf $8,_writes ! 1071: 1030 00013A32 # write32h( sgl_value_2 ); ! 1072: 1031 00013A32 dd effffff60c pushl _sgl_value_2 ! 1073: 1032 00013A38 fe 08 effffff605 callf $8,_write32h ! 1074: 1033 00013A3F # writec('\n'); ! 1075: 1034 00013A3F dd 0a pushl $10 ! 1076: 1035 00013A41 fe 08 effffff5fc callf $8,_writec ! 1077: 1036 00013A48 # writes(" initial PSL = "); ! 1078: 1037 00013A48 .data 1 ! 1079: 1038 000016e5 * L354: ! 1080: 1039 000016e5 * 20696E697469616C2050534C2 .ascii " initial PSL = \0" ! 1081: 03D2000 ! 1082: 1040 000016f5 * .text ! 1083: 1041 00013A48 dd 8f000016e5 pushl $L354 ! 1084: 1042 00013A4E fe 08 effffff5ef callf $8,_writes ! 1085: 1043 00013A55 # write32h( init_psl ); ! 1086: 1044 00013A55 dd effffff5e9 pushl _init_psl ! 1087: 1045 00013A5B fe 08 effffff5e2 callf $8,_write32h ! 1088: 1046 00013A62 # writes(", final PSL = "); ! 1089: 1047 00013A62 .data 1 ! 1090: 1048 000016f5 * L355: ! 1091: 1049 000016f5 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0" ! 1092: 03D2000 ! 1093: 1050 00001705 * .text ! 1094: 1051 00013A62 dd 8f000016f5 pushl $L355 ! 1095: 1052 00013A68 fe 08 effffff5d5 callf $8,_writes ! 1096: 1053 00013A6F # write32h( psl_val ); ! 1097: 1054 00013A6F dd effffff5cf pushl _psl_val ! 1098: 1055 00013A75 fe 08 effffff5c8 callf $8,_write32h ! 1099: 1056 00013A7C # writes(", expected PSL = "); ! 1100: 1057 00013A7C .data 1 ! 1101: 1058 00001705 * L356: ! 1102: 1059 00001705 * 2C20206578706563746564205 .ascii ", expected PSL = \0" ! 1103: 0534C203D2000 ! 1104: 1060 00001718 * .text ! 1105: 1061 00013A7C dd 8f00001705 pushl $L356 ! 1106: 1062 00013A82 fe 08 effffff5bb callf $8,_writes ! 1107: 1063 00013A89 # write32h( exp_psl ); ! 1108: 1064 00013A89 dd effffff5b5 pushl _exp_psl ! 1109: 1065 00013A8F fe 08 effffff5ae callf $8,_write32h ! 1110: 1066 00013A96 # writes(" \n"); ! 1111: 1067 00013A96 .data 1 ! 1112: 1068 00001718 * L357: ! 1113: 1069 00001718 * 200A00 .ascii " \12\0" ! 1114: 1070 0000171b * .text ! 1115: 1071 00013A96 dd 8f00001718 pushl $L357 ! 1116: 1072 00013A9C fe 08 effffff5a1 callf $8,_writes ! 1117: 1073 00013AA3 # } ! 1118: 1074 00013AA3 # if ( halt_flg ) ! 1119: 1075 00013AA3 L346: ! 1120: 1076 00013AA3 5d effffff59b tstl _halt_flg ! 1121: 1077 00013AA9 31 09 jeql L358 ! 1122: 1078 00013AAB # cmpf2_er_halt( BAD_PSL_HLT ); /* halt on the error */ ! 1123: 1079 00013AAB dd 03 pushl $3 ! 1124: 1080 00013AAD fe 08 ef0000092e callf $8,_cmpf2_er_halt ! 1125: 1081 00013AB4 # if ( loop_on_err ) ! 1126: 1082 00013AB4 L358: ! 1127: 1083 00013AB4 5d effffff58a tstl _loop_on_err ! 1128: 1084 00013ABA 31 0d jeql L359 ! 1129: 1085 00013ABC # { ! 1130: 1086 00013ABC # force_loop = TRUE; /* set the force loop flag */ ! 1131: 1087 00013ABC 0d 01 effffff581 movl $1,_force_loop ! 1132: 1088 00013AC3 # asm("jmp _cmpf2_4_lp1"); /* and loop */ ! 1133: 1089 00013AC3 71 effffffe3d jmp _cmpf2_4_lp1 ! 1134: 1090 00013AC9 # } /* end of loop-on-error */ ! 1135: 1091 00013AC9 # } /* end of compare error */ ! 1136: 1092 00013AC9 L359: ! 1137: 1093 00013AC9 # } while( ++status_index < 3 ); ! 1138: 1094 00013AC9 L345: ! 1139: 1095 00013AC9 L340: ! 1140: 1096 00013AC9 6d effffff575 incl _status_index ! 1141: 1097 00013ACF 0d effffff56f 50 movl _status_index,r0 ! 1142: 1098 00013AD6 1d 50 03 cmpl r0,$3 ! 1143: 1099 00013AD9 81 03 13 fe15 jlss L341 ! 1144: 1100 00013ADE L339: ! 1145: 1101 00013ADE # } while( (index2 < 10) && (index2 < max_ldf_1_index) ); ! 1146: 1102 00013ADE L337: ! 1147: 1103 00013ADE 1d effffff560 0a cmpl _index2,$10 ! 1148: 1104 00013AE5 81 10 jgeq L9996 ! 1149: 1105 00013AE7 1d effffff557 effffff552 cmpl _index2,_max_ldf_1_index ! 1150: 1106 00013AF2 81 03 13 fdda jlss L338 ! 1151: 1107 00013AF7 L9996: ! 1152: 1108 00013AF7 L336: ! 1153: 1109 00013AF7 # } while( index++ < max_cmpf_1_index ); ! 1154: 1110 00013AF7 L334: ! 1155: 1111 00013AF7 0d effffff547 50 movl _index,r0 ! 1156: 1112 00013AFE 6d effffff540 incl _index ! 1157: 1113 00013B04 1d 50 effffff539 cmpl r0,_max_cmpf_1_index ! 1158: 1114 00013B0B 81 03 13 fd82 jlss L335 ! 1159: 1115 00013B10 L333: ! 1160: 1116 00013B10 # } /* end of subtest 4 */ ! 1161: 1117 00013B10 40 ret#2 ! 1162: 1118 00013B11 .set L329,0x0 ! 1163: 1119 00013B11 L331: ! 1164: 1120 00013B11 13 fd6b jbr L332 ! 1165: 1121 00013B14 .data ! 1166: 1122 00001458 * .text ! 1167: 1123 00013B14 .align 1 ! 1168: 1124 00013B14 .globl _cmpf2_5 ! 1169: 1125 00013B14 _cmpf2_5: ! 1170: 1126 00013B14 0000 .word L360 ! 1171: 1127 00013B16 # ! 1172: 1128 00013B16 # ! 1173: 1129 00013B16 # ! 1174: 1130 00013B16 # /************************************************************************ ! 1175: 1131 00013B16 # * ! 1176: 1132 00013B16 # * SUBTEST 5 - Check for register corruption ! 1177: 1133 00013B16 # * ! 1178: 1134 00013B16 # ************************************************************************/ ! 1179: 1135 00013B16 # cmpf2_5() ! 1180: 1136 00013B16 # { ! 1181: 1137 00013B16 13 0210 jbr L362 ! 1182: 1138 00013B19 L363: ! 1183: 1139 00013B19 # force_loop = FALSE; /* clear force_loop flg */ ! 1184: 1140 00013B19 4d effffff525 clrl _force_loop ! 1185: 1141 00013B1F # subtest = 5; ! 1186: 1142 00013B1F 0d 05 effffff51e movl $5,_subtest ! 1187: 1143 00013B26 # fill_reg_buf( load_regs ); /* get pattern for regs */ ! 1188: 1144 00013B26 dd 8f00000000 pushl $_load_regs ! 1189: 1145 00013B2C fe 08 effffff511 callf $8,_fill_reg_buf ! 1190: 1146 00013B33 # index = 0; ! 1191: 1147 00013B33 4d effffff50b clrl _index ! 1192: 1148 00013B39 # do ! 1193: 1149 00013B39 L367: ! 1194: 1150 00013B39 # { ! 1195: 1151 00013B39 # sgl_value_1 = cmpf_1_data[index].one; /* data to load */ ! 1196: 1152 00013B39 5c 0c effffff504 50 mull3 $12,_index,r0 ! 1197: 1153 00013B41 0d e000000000 effffff4f8 movl _cmpf_1_data(r0),_sgl_value_1 ! 1198: 1154 00013B4C # sgl_value_2 = cmpf_1_data[index].two; /* data to compare */ ! 1199: 1155 00013B4C 5c 0c effffff4f1 50 mull3 $12,_index,r0 ! 1200: 1156 00013B54 0d e000000004 effffff4e5 movl _cmpf_1_data+4(r0),_sgl_value_2 ! 1201: 1157 00013B5F # /* ! 1202: 1158 00013B5F # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1203: 1159 00013B5F # * The force loop flag is set after the first error. ! 1204: 1160 00013B5F # */ ! 1205: 1161 00013B5F # asm("_cmpf2_5_lp1:"); ! 1206: 1162 00013B5F _cmpf2_5_lp1: ! 1207: 1163 00013B5F # asm("ldf $0x40800000"); /* LOAD the accumulator */ ! 1208: 1164 00013B5F 06 8f40800000 ldf $0x40800000 ! 1209: 1165 00013B65 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */ ! 1210: 1166 00013B65 ab 891fff effffff4d6 loadr $0x1fff,_load_regs ! 1211: 1167 00013B6E # asm("cmpf2 _sgl_value_1,_sgl_value_2"); /* compare the data */ ! 1212: 1168 00013B6E 46 effffff4d0 effffff4cb cmpf2 _sgl_value_1,_sgl_value_2 ! 1213: 1169 00013B79 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */ ! 1214: 1170 00013B79 bb 891fff effffff4c2 storer $0x1fff,_store_regs ! 1215: 1171 00013B82 # asm("stf _sgl_st_acc"); /* save the acc */ ! 1216: 1172 00013B82 26 effffff4bc stf _sgl_st_acc ! 1217: 1173 00013B88 # if( force_loop ) /* loop? */ ! 1218: 1174 00013B88 5d effffff4b6 tstl _force_loop ! 1219: 1175 00013B8E 31 02 jeql L368 ! 1220: 1176 00013B90 # asm("brb _cmpf2_5_lp1");; /* run the loop again */ ! 1221: 1177 00013B90 11 cd brb _cmpf2_5_lp1 ! 1222: 1178 00013B92 L368: ! 1223: 1179 00013B92 # /* ! 1224: 1180 00013B92 # * Now compare the stored register values to those that were loaded ! 1225: 1181 00013B92 # */ ! 1226: 1182 00013B92 # index2 = 0; ! 1227: 1183 00013B92 4d effffff4ac clrl _index2 ! 1228: 1184 00013B98 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) ) ! 1229: 1185 00013B98 L369: ! 1230: 1186 00013B98 0d effffff4a6 50 movl _index2,r0 ! 1231: 1187 00013B9F 0d effffff49f 51 movl _index2,r1 ! 1232: 1188 00013BA6 1d 40effffff497 cmpl _load_regs[r0],_store_regs[r1] ! 1233: 41effffff491 ! 1234: 1189 00013BB3 21 11 jneq L370 ! 1235: 1190 00013BB5 1d effffff489 0d cmpl _index2,$13 ! 1236: 1191 00013BBC 81 08 jgeq L370 ! 1237: 1192 00013BBE # index2++; /* check reg values */ ! 1238: 1193 00013BBE 6d effffff480 incl _index2 ! 1239: 1194 00013BC4 11 d2 jbr L369 ! 1240: 1195 00013BC6 L370: ! 1241: 1196 00013BC6 # ! 1242: 1197 00013BC6 # if( index2 < 13 ) { /* error if index2 < 13 */ ! 1243: 1198 00013BC6 1d effffff478 0d cmpl _index2,$13 ! 1244: 1199 00013BCD 91 03 13 013d jgeq L371 ! 1245: 1200 00013BD2 # errcnt++; /* bump the error count */ ! 1246: 1201 00013BD2 6d effffff46c incl _errcnt ! 1247: 1202 00013BD8 # if ( prt_error ) { ! 1248: 1203 00013BD8 5d effffff466 tstl _prt_error ! 1249: 1204 00013BDE 21 03 13 0106 jeql L372 ! 1250: 1205 00013BE3 # writes(" \n"); /* start a new print line */ ! 1251: 1206 00013BE3 .data 1 ! 1252: 1207 0000171b * L373: ! 1253: 1208 0000171b * 200A00 .ascii " \12\0" ! 1254: 1209 0000171e * .text ! 1255: 1210 00013BE3 dd 8f0000171b pushl $L373 ! 1256: 1211 00013BE9 fe 08 effffff454 callf $8,_writes ! 1257: 1212 00013BF0 # writes("cycle: "); ! 1258: 1213 00013BF0 .data 1 ! 1259: 1214 0000171e * L374: ! 1260: 1215 0000171e * 6379636C653A2000 .ascii "cycle: \0" ! 1261: 1216 00001726 * .text ! 1262: 1217 00013BF0 dd 8f0000171e pushl $L374 ! 1263: 1218 00013BF6 fe 08 effffff447 callf $8,_writes ! 1264: 1219 00013BFD # writed( cycle ); ! 1265: 1220 00013BFD dd effffff441 pushl _cycle ! 1266: 1221 00013C03 fe 08 effffff43a callf $8,_writed ! 1267: 1222 00013C0A # writes(", CMPF2 test "); ! 1268: 1223 00013C0A .data 1 ! 1269: 1224 00001726 * L375: ! 1270: 1225 00001726 * 2C20434D50463220746573742 .ascii ", CMPF2 test \0" ! 1271: 000 ! 1272: 1226 00001734 * .text ! 1273: 1227 00013C0A dd 8f00001726 pushl $L375 ! 1274: 1228 00013C10 fe 08 effffff42d callf $8,_writes ! 1275: 1229 00013C17 # writed( test_no ); ! 1276: 1230 00013C17 dd effffff427 pushl _test_no ! 1277: 1231 00013C1D fe 08 effffff420 callf $8,_writed ! 1278: 1232 00013C24 # writes(", subtest 5 - A REGISTER WAS MODIFIED\n"); ! 1279: 1233 00013C24 .data 1 ! 1280: 1234 00001734 * L376: ! 1281: 1235 00001734 * 2C20737562746573742035202 .ascii ", subtest 5 - A REGISTER WAS MODIFIED\12\0" ! 1282: D204120524547495354455220 ! 1283: 574153204D4F4449464945440 ! 1284: A00 ! 1285: 1236 0000175b * .text ! 1286: 1237 00013C24 dd 8f00001734 pushl $L376 ! 1287: 1238 00013C2A fe 08 effffff413 callf $8,_writes ! 1288: 1239 00013C31 # print_cmpf2_data(); ! 1289: 1240 00013C31 fe 04 ef0000076e callf $4,_print_cmpf2_data ! 1290: 1241 00013C38 # writec('\n'); ! 1291: 1242 00013C38 dd 0a pushl $10 ! 1292: 1243 00013C3A fe 08 effffff403 callf $8,_writec ! 1293: 1244 00013C41 # writes(" final Acc = "); ! 1294: 1245 00013C41 .data 1 ! 1295: 1246 0000175b * L377: ! 1296: 1247 0000175b * 20202066696E616C204163632 .ascii " final Acc = \0" ! 1297: 03D2000 ! 1298: 1248 0000176b * .text ! 1299: 1249 00013C41 dd 8f0000175b pushl $L377 ! 1300: 1250 00013C47 fe 08 effffff3f6 callf $8,_writes ! 1301: 1251 00013C4E # write32h( sgl_st_acc ); ! 1302: 1252 00013C4E dd effffff3f0 pushl _sgl_st_acc ! 1303: 1253 00013C54 fe 08 effffff3e9 callf $8,_write32h ! 1304: 1254 00013C5B # writes(", operand 2 = "); ! 1305: 1255 00013C5B .data 1 ! 1306: 1256 0000176b * L378: ! 1307: 1257 0000176b * 2C20206F706572616E6420322 .ascii ", operand 2 = \0" ! 1308: 03D2000 ! 1309: 1258 0000177b * .text ! 1310: 1259 00013C5B dd 8f0000176b pushl $L378 ! 1311: 1260 00013C61 fe 08 effffff3dc callf $8,_writes ! 1312: 1261 00013C68 # write32h( sgl_value_2 ); ! 1313: 1262 00013C68 dd effffff3d6 pushl _sgl_value_2 ! 1314: 1263 00013C6E fe 08 effffff3cf callf $8,_write32h ! 1315: 1264 00013C75 # writec('\n'); ! 1316: 1265 00013C75 dd 0a pushl $10 ! 1317: 1266 00013C77 fe 08 effffff3c6 callf $8,_writec ! 1318: 1267 00013C7E # writes("register "); ! 1319: 1268 00013C7E .data 1 ! 1320: 1269 0000177b * L379: ! 1321: 1270 0000177b * 72656769737465722000 .ascii "register \0" ! 1322: 1271 00001785 * .text ! 1323: 1272 00013C7E dd 8f0000177b pushl $L379 ! 1324: 1273 00013C84 fe 08 effffff3b9 callf $8,_writes ! 1325: 1274 00013C8B # writed( index2 ); ! 1326: 1275 00013C8B dd effffff3b3 pushl _index2 ! 1327: 1276 00013C91 fe 08 effffff3ac callf $8,_writed ! 1328: 1277 00013C98 # writes(" = "); ! 1329: 1278 00013C98 .data 1 ! 1330: 1279 00001785 * L380: ! 1331: 1280 00001785 * 203D2000 .ascii " = \0" ! 1332: 1281 00001789 * .text ! 1333: 1282 00013C98 dd 8f00001785 pushl $L380 ! 1334: 1283 00013C9E fe 08 effffff39f callf $8,_writes ! 1335: 1284 00013CA5 # write32h( store_regs[ index2 ] ); ! 1336: 1285 00013CA5 0d effffff399 50 movl _index2,r0 ! 1337: 1286 00013CAC dd 40effffff391 pushl _store_regs[r0] ! 1338: 1287 00013CB3 fe 08 effffff38a callf $8,_write32h ! 1339: 1288 00013CBA # writes(", should be = "); ! 1340: 1289 00013CBA .data 1 ! 1341: 1290 00001789 * L381: ! 1342: 1291 00001789 * 2C202073686F756C642062652 .ascii ", should be = \0" ! 1343: 03D2000 ! 1344: 1292 00001799 * .text ! 1345: 1293 00013CBA dd 8f00001789 pushl $L381 ! 1346: 1294 00013CC0 fe 08 effffff37d callf $8,_writes ! 1347: 1295 00013CC7 # write32h( load_regs[ index2 ] ); ! 1348: 1296 00013CC7 0d effffff377 50 movl _index2,r0 ! 1349: 1297 00013CCE dd 40effffff36f pushl _load_regs[r0] ! 1350: 1298 00013CD5 fe 08 effffff368 callf $8,_write32h ! 1351: 1299 00013CDC # writes("\n"); ! 1352: 1300 00013CDC .data 1 ! 1353: 1301 00001799 * L382: ! 1354: 1302 00001799 * 0A00 .ascii "\12\0" ! 1355: 1303 0000179b * .text ! 1356: 1304 00013CDC dd 8f00001799 pushl $L382 ! 1357: 1305 00013CE2 fe 08 effffff35b callf $8,_writes ! 1358: 1306 00013CE9 # } ! 1359: 1307 00013CE9 # if ( halt_flg ) ! 1360: 1308 00013CE9 L372: ! 1361: 1309 00013CE9 5d effffff355 tstl _halt_flg ! 1362: 1310 00013CEF 31 09 jeql L383 ! 1363: 1311 00013CF1 # cmpf2_er_halt( BAD_REG_HLT ); /* halt on the error */ ! 1364: 1312 00013CF1 dd 02 pushl $2 ! 1365: 1313 00013CF3 fe 08 ef000006e8 callf $8,_cmpf2_er_halt ! 1366: 1314 00013CFA # if ( loop_on_err ) ! 1367: 1315 00013CFA L383: ! 1368: 1316 00013CFA 5d effffff344 tstl _loop_on_err ! 1369: 1317 00013D00 31 0d jeql L384 ! 1370: 1318 00013D02 # { ! 1371: 1319 00013D02 # force_loop = TRUE; /* set the force loop flag */ ! 1372: 1320 00013D02 0d 01 effffff33b movl $1,_force_loop ! 1373: 1321 00013D09 # asm("jmp _cmpf2_5_lp1"); /* and loop */ ! 1374: 1322 00013D09 71 effffffe50 jmp _cmpf2_5_lp1 ! 1375: 1323 00013D0F # }; /* end of loop-on-error */ ! 1376: 1324 00013D0F L384: ! 1377: 1325 00013D0F # } /* end of compare error */ ! 1378: 1326 00013D0F # } while( index++ < max_cmpf_1_index ); ! 1379: 1327 00013D0F L371: ! 1380: 1328 00013D0F L366: ! 1381: 1329 00013D0F 0d effffff32f 50 movl _index,r0 ! 1382: 1330 00013D16 6d effffff328 incl _index ! 1383: 1331 00013D1C 1d 50 effffff321 cmpl r0,_max_cmpf_1_index ! 1384: 1332 00013D23 81 03 13 fe11 jlss L367 ! 1385: 1333 00013D28 L365: ! 1386: 1334 00013D28 # } /* end of subtest 5 */ ! 1387: 1335 00013D28 40 ret#2 ! 1388: 1336 00013D29 .set L360,0x0 ! 1389: 1337 00013D29 L362: ! 1390: 1338 00013D29 13 fded jbr L363 ! 1391: 1339 00013D2C .data ! 1392: 1340 00001458 * .text ! 1393: 1341 00013D2C .align 1 ! 1394: 1342 00013D2C .globl _cmpf2_6 ! 1395: 1343 00013D2C _cmpf2_6: ! 1396: 1344 00013D2C 0000 .word L385 ! 1397: 1345 00013D2E # ! 1398: 1346 00013D2E # ! 1399: 1347 00013D2E # ! 1400: 1348 00013D2E # /**************************************************************************** ! 1401: 1349 00013D2E # * ! 1402: 1350 00013D2E # * SUBTEST 6 - CMPF2 test Accumulator stability test ! 1403: 1351 00013D2E # * ! 1404: 1352 00013D2E # ****************************************************************************/ ! 1405: 1353 00013D2E # cmpf2_6() ! 1406: 1354 00013D2E # { ! 1407: 1355 00013D2E 13 01e7 jbr L387 ! 1408: 1356 00013D31 L388: ! 1409: 1357 00013D31 # force_loop = FALSE; ! 1410: 1358 00013D31 4d effffff30d clrl _force_loop ! 1411: 1359 00013D37 # subtest = 6; ! 1412: 1360 00013D37 0d 06 effffff306 movl $6,_subtest ! 1413: 1361 00013D3E # index = 0; ! 1414: 1362 00013D3E 4d effffff300 clrl _index ! 1415: 1363 00013D44 # do ! 1416: 1364 00013D44 L391: ! 1417: 1365 00013D44 # { ! 1418: 1366 00013D44 # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */ ! 1419: 1367 00013D44 5c 0c effffff2f9 50 mull3 $12,_index,r0 ! 1420: 1368 00013D4C 0d e000000000 effffff2ed movl _cmpf_1_data(r0),_sgl_value_1 ! 1421: 1369 00013D57 # sgl_value_2 = cmpf_1_data[index].two; ! 1422: 1370 00013D57 5c 0c effffff2e6 50 mull3 $12,_index,r0 ! 1423: 1371 00013D5F 0d e000000004 effffff2da movl _cmpf_1_data+4(r0),_sgl_value_2 ! 1424: 1372 00013D6A # index2 = 0; /* clear Acc. data index */ ! 1425: 1373 00013D6A 4d effffff2d4 clrl _index2 ! 1426: 1374 00013D70 # do ! 1427: 1375 00013D70 L394: ! 1428: 1376 00013D70 # { ! 1429: 1377 00013D70 # sgl_ld_acc = ldf_1_data[index2].ld; /* get the Accumulator data */ ! 1430: 1378 00013D70 0d effffff2ce 50 movl _index2,r0 ! 1431: 1379 00013D77 48 03 50 50 shll $3,r0,r0 ! 1432: 1380 00013D7B 0d e000000000 effffff2be movl _ldf_1_data(r0),_sgl_ld_acc ! 1433: 1381 00013D86 # sgl_expected = ldf_1_data[index2++].exp; /* get expected Acc. */ ! 1434: 1382 00013D86 0d effffff2b8 50 movl _index2,r0 ! 1435: 1383 00013D8D 48 03 50 50 shll $3,r0,r0 ! 1436: 1384 00013D91 0d e000000004 effffff2a8 movl _ldf_1_data+4(r0),_sgl_expected ! 1437: 1385 00013D9C 6d effffff2a2 incl _index2 ! 1438: 1386 00013DA2 # /* ! 1439: 1387 00013DA2 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1440: 1388 00013DA2 # * The force loop flag is set after the first error. ! 1441: 1389 00013DA2 # */ ! 1442: 1390 00013DA2 # asm("_cmpf2_6_lp1:"); ! 1443: 1391 00013DA2 _cmpf2_6_lp1: ! 1444: 1392 00013DA2 # asm("movl _sgl_ld_acc,r3"); /* get the accmulator data */ ! 1445: 1393 00013DA2 0d effffff29c 53 movl _sgl_ld_acc,r3 ! 1446: 1394 00013DA9 # asm("ldf r3"); /* load the accumulator */ ! 1447: 1395 00013DA9 06 53 ldf r3 ! 1448: 1396 00013DAB # asm("cmpf2 _sgl_value_1,_sgl_value_2");/* compare the operands */ ! 1449: 1397 00013DAB 46 effffff293 effffff28e cmpf2 _sgl_value_1,_sgl_value_2 ! 1450: 1398 00013DB6 # asm("stf _sgl_st_acc"); /* store the accumulator */ ! 1451: 1399 00013DB6 26 effffff288 stf _sgl_st_acc ! 1452: 1400 00013DBC # if( force_loop ) /* loop? */ ! 1453: 1401 00013DBC 5d effffff282 tstl _force_loop ! 1454: 1402 00013DC2 31 02 jeql L395 ! 1455: 1403 00013DC4 # asm("brb _cmpf2_6_lp1");; /* run the loop again */ ! 1456: 1404 00013DC4 11 dc brb _cmpf2_6_lp1 ! 1457: 1405 00013DC6 L395: ! 1458: 1406 00013DC6 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */ ! 1459: 1407 00013DC6 1d effffff278 effffff273 cmpl _sgl_st_acc,_sgl_expected ! 1460: 1408 00013DD1 21 03 13 010f jeql L396 ! 1461: 1409 00013DD6 # errcnt++; /* bump the error count */ ! 1462: 1410 00013DD6 6d effffff268 incl _errcnt ! 1463: 1411 00013DDC # if ( prt_error ) { ! 1464: 1412 00013DDC 5d effffff262 tstl _prt_error ! 1465: 1413 00013DE2 21 03 13 00d8 jeql L397 ! 1466: 1414 00013DE7 # writes(" \n"); /* start a new print line */ ! 1467: 1415 00013DE7 .data 1 ! 1468: 1416 0000179b * L398: ! 1469: 1417 0000179b * 200A00 .ascii " \12\0" ! 1470: 1418 0000179e * .text ! 1471: 1419 00013DE7 dd 8f0000179b pushl $L398 ! 1472: 1420 00013DED fe 08 effffff250 callf $8,_writes ! 1473: 1421 00013DF4 # writes("cycle: "); ! 1474: 1422 00013DF4 .data 1 ! 1475: 1423 0000179e * L399: ! 1476: 1424 0000179e * 6379636C653A2000 .ascii "cycle: \0" ! 1477: 1425 000017a6 * .text ! 1478: 1426 00013DF4 dd 8f0000179e pushl $L399 ! 1479: 1427 00013DFA fe 08 effffff243 callf $8,_writes ! 1480: 1428 00013E01 # writed( cycle ); ! 1481: 1429 00013E01 dd effffff23d pushl _cycle ! 1482: 1430 00013E07 fe 08 effffff236 callf $8,_writed ! 1483: 1431 00013E0E # writes(" CMPF2 test "); ! 1484: 1432 00013E0E .data 1 ! 1485: 1433 000017a6 * L400: ! 1486: 1434 000017a6 * 2020434D50463220746573742 .ascii " CMPF2 test \0" ! 1487: 000 ! 1488: 1435 000017b4 * .text ! 1489: 1436 00013E0E dd 8f000017a6 pushl $L400 ! 1490: 1437 00013E14 fe 08 effffff229 callf $8,_writes ! 1491: 1438 00013E1B # writed( test_no ); ! 1492: 1439 00013E1B dd effffff223 pushl _test_no ! 1493: 1440 00013E21 fe 08 effffff21c callf $8,_writed ! 1494: 1441 00013E28 # writes(", subtest 6 (Acc. Corr.) - THE ACC WAS MODIFIED\n"); ! 1495: 1442 00013E28 .data 1 ! 1496: 1443 000017b4 * L401: ! 1497: 1444 000017b4 * 2C20737562746573742036202 .ascii ", subtest 6 (Acc. Corr.) - THE ACC WAS MODIFIED\12\0" ! 1498: 84163632E20436F72722E2920 ! 1499: 2D20544845204143432057415 ! 1500: 3204D4F4449464945440A00 ! 1501: 1445 000017e5 * .text ! 1502: 1446 00013E28 dd 8f000017b4 pushl $L401 ! 1503: 1447 00013E2E fe 08 effffff20f callf $8,_writes ! 1504: 1448 00013E35 # print_cmpf2_data(); ! 1505: 1449 00013E35 fe 04 ef0000056a callf $4,_print_cmpf2_data ! 1506: 1450 00013E3C # writes(", index = "); ! 1507: 1451 00013E3C .data 1 ! 1508: 1452 000017e5 * L402: ! 1509: 1453 000017e5 * 2C2020696E646578203D2000 .ascii ", index = \0" ! 1510: 1454 000017f1 * .text ! 1511: 1455 00013E3C dd 8f000017e5 pushl $L402 ! 1512: 1456 00013E42 fe 08 effffff1fb callf $8,_writes ! 1513: 1457 00013E49 # writed( index ); ! 1514: 1458 00013E49 dd effffff1f5 pushl _index ! 1515: 1459 00013E4F fe 08 effffff1ee callf $8,_writed ! 1516: 1460 00013E56 # writec('\n'); ! 1517: 1461 00013E56 dd 0a pushl $10 ! 1518: 1462 00013E58 fe 08 effffff1e5 callf $8,_writec ! 1519: 1463 00013E5F # writes(" final Acc = "); ! 1520: 1464 00013E5F .data 1 ! 1521: 1465 000017f1 * L403: ! 1522: 1466 000017f1 * 20202066696E616C204163632 .ascii " final Acc = \0" ! 1523: 03D2000 ! 1524: 1467 00001801 * .text ! 1525: 1468 00013E5F dd 8f000017f1 pushl $L403 ! 1526: 1469 00013E65 fe 08 effffff1d8 callf $8,_writes ! 1527: 1470 00013E6C # write32h( sgl_st_acc ); ! 1528: 1471 00013E6C dd effffff1d2 pushl _sgl_st_acc ! 1529: 1472 00013E72 fe 08 effffff1cb callf $8,_write32h ! 1530: 1473 00013E79 # writes(", operand 2 = "); ! 1531: 1474 00013E79 .data 1 ! 1532: 1475 00001801 * L404: ! 1533: 1476 00001801 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0" ! 1534: 03D2000 ! 1535: 1477 00001811 * .text ! 1536: 1478 00013E79 dd 8f00001801 pushl $L404 ! 1537: 1479 00013E7F fe 08 effffff1be callf $8,_writes ! 1538: 1480 00013E86 # write32h( sgl_value_2 ); ! 1539: 1481 00013E86 dd effffff1b8 pushl _sgl_value_2 ! 1540: 1482 00013E8C fe 08 effffff1b1 callf $8,_write32h ! 1541: 1483 00013E93 # writec('\n'); ! 1542: 1484 00013E93 dd 0a pushl $10 ! 1543: 1485 00013E95 fe 08 effffff1a8 callf $8,_writec ! 1544: 1486 00013E9C # writes("expected Acc = "); ! 1545: 1487 00013E9C .data 1 ! 1546: 1488 00001811 * L405: ! 1547: 1489 00001811 * 6578706563746564204163632 .ascii "expected Acc = \0" ! 1548: 03D2000 ! 1549: 1490 00001821 * .text ! 1550: 1491 00013E9C dd 8f00001811 pushl $L405 ! 1551: 1492 00013EA2 fe 08 effffff19b callf $8,_writes ! 1552: 1493 00013EA9 # write32h( sgl_expected ); ! 1553: 1494 00013EA9 dd effffff195 pushl _sgl_expected ! 1554: 1495 00013EAF fe 08 effffff18e callf $8,_write32h ! 1555: 1496 00013EB6 # writec('\n'); ! 1556: 1497 00013EB6 dd 0a pushl $10 ! 1557: 1498 00013EB8 fe 08 effffff185 callf $8,_writec ! 1558: 1499 00013EBF # } ! 1559: 1500 00013EBF # if ( halt_flg ) /* halt on error? */ ! 1560: 1501 00013EBF L397: ! 1561: 1502 00013EBF 5d effffff17f tstl _halt_flg ! 1562: 1503 00013EC5 31 09 jeql L406 ! 1563: 1504 00013EC7 # cmpf2_er_halt( BAD_ACC_HLT ); ! 1564: 1505 00013EC7 dd 01 pushl $1 ! 1565: 1506 00013EC9 fe 08 ef00000512 callf $8,_cmpf2_er_halt ! 1566: 1507 00013ED0 # if ( loop_on_err ) ! 1567: 1508 00013ED0 L406: ! 1568: 1509 00013ED0 5d effffff16e tstl _loop_on_err ! 1569: 1510 00013ED6 31 0d jeql L407 ! 1570: 1511 00013ED8 # { ! 1571: 1512 00013ED8 # force_loop = TRUE; /* set the force loop flag */ ! 1572: 1513 00013ED8 0d 01 effffff165 movl $1,_force_loop ! 1573: 1514 00013EDF # asm("jmp _cmpf2_6_lp1"); /* and loop */ ! 1574: 1515 00013EDF 71 effffffebd jmp _cmpf2_6_lp1 ! 1575: 1516 00013EE5 # }; /* end of loop-on-error */ ! 1576: 1517 00013EE5 L407: ! 1577: 1518 00013EE5 # } /* end of compare error */ ! 1578: 1519 00013EE5 # } while( (index2 < 10) && (index2 < max_ldf_1_index) ); ! 1579: 1520 00013EE5 L396: ! 1580: 1521 00013EE5 L393: ! 1581: 1522 00013EE5 1d effffff159 0a cmpl _index2,$10 ! 1582: 1523 00013EEC 81 10 jgeq L9995 ! 1583: 1524 00013EEE 1d effffff150 effffff14b cmpl _index2,_max_ldf_1_index ! 1584: 1525 00013EF9 81 03 13 fe72 jlss L394 ! 1585: 1526 00013EFE L9995: ! 1586: 1527 00013EFE L392: ! 1587: 1528 00013EFE # } while( index++ < max_cmpf_1_index ); ! 1588: 1529 00013EFE L390: ! 1589: 1530 00013EFE 0d effffff140 50 movl _index,r0 ! 1590: 1531 00013F05 6d effffff139 incl _index ! 1591: 1532 00013F0B 1d 50 effffff132 cmpl r0,_max_cmpf_1_index ! 1592: 1533 00013F12 81 03 13 fe2d jlss L391 ! 1593: 1534 00013F17 L389: ! 1594: 1535 00013F17 # } /* end of subtest 6 */ ! 1595: 1536 00013F17 40 ret#2 ! 1596: 1537 00013F18 .set L385,0x0 ! 1597: 1538 00013F18 L387: ! 1598: 1539 00013F18 13 fe16 jbr L388 ! 1599: 1540 00013F1B .data ! 1600: 1541 00001458 * .text ! 1601: 1542 00013F1B 00 .align 1 ! 1602: 1543 00013F1C .globl _cmpf2_7 ! 1603: 1544 00013F1C _cmpf2_7: ! 1604: 1545 00013F1C 0000 .word L408 ! 1605: 1546 00013F1E # ! 1606: 1547 00013F1E # ! 1607: 1548 00013F1E # ! 1608: 1549 00013F1E # /**************************************************************************** ! 1609: 1550 00013F1E # * ! 1610: 1551 00013F1E # * SUBTEST 7 - CMPF2 test - piped entry ! 1611: 1552 00013F1E # * ! 1612: 1553 00013F1E # ****************************************************************************/ ! 1613: 1554 00013F1E # cmpf2_7() ! 1614: 1555 00013F1E # { ! 1615: 1556 00013F1E 13 028e jbr L410 ! 1616: 1557 00013F21 L411: ! 1617: 1558 00013F21 # force_loop = FALSE; ! 1618: 1559 00013F21 4d effffff11d clrl _force_loop ! 1619: 1560 00013F27 # subtest = 7; ! 1620: 1561 00013F27 0d 07 effffff116 movl $7,_subtest ! 1621: 1562 00013F2E # index = 0; ! 1622: 1563 00013F2E 4d effffff110 clrl _index ! 1623: 1564 00013F34 # do ! 1624: 1565 00013F34 L414: ! 1625: 1566 00013F34 # { ! 1626: 1567 00013F34 # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */ ! 1627: 1568 00013F34 5c 0c effffff109 50 mull3 $12,_index,r0 ! 1628: 1569 00013F3C 0d e000000000 effffff0fd movl _cmpf_1_data(r0),_sgl_value_1 ! 1629: 1570 00013F47 # sgl_value_2 = cmpf_1_data[index].two; ! 1630: 1571 00013F47 5c 0c effffff0f6 50 mull3 $12,_index,r0 ! 1631: 1572 00013F4F 0d e000000004 effffff0ea movl _cmpf_1_data+4(r0),_sgl_value_2 ! 1632: 1573 00013F5A # sgl_expected = cmpf_1_data[index].flag; /* get expected results */ ! 1633: 1574 00013F5A 5c 0c effffff0e3 50 mull3 $12,_index,r0 ! 1634: 1575 00013F62 0d e000000008 effffff0d7 movl _cmpf_1_data+8(r0),_sgl_expected ! 1635: 1576 00013F6D # index2 = 0; /* clear Acc. data index */ ! 1636: 1577 00013F6D 4d effffff0d1 clrl _index2 ! 1637: 1578 00013F73 # do ! 1638: 1579 00013F73 L417: ! 1639: 1580 00013F73 # { ! 1640: 1581 00013F73 # sgl_ld_acc = ldf_1_data[index2++].ld; /* get the Accumulator data */ ! 1641: 1582 00013F73 0d effffff0cb 50 movl _index2,r0 ! 1642: 1583 00013F7A 48 03 50 50 shll $3,r0,r0 ! 1643: 1584 00013F7E 0d e000000000 effffff0bb movl _ldf_1_data(r0),_sgl_ld_acc ! 1644: 1585 00013F89 6d effffff0b5 incl _index2 ! 1645: 1586 00013F8F # status_index = 0; /* clear the status index */ ! 1646: 1587 00013F8F 4d effffff0af clrl _status_index ! 1647: 1588 00013F95 # do ! 1648: 1589 00013F95 L420: ! 1649: 1590 00013F95 # { ! 1650: 1591 00013F95 # sgl_dummy1 = status_array[status_index]; /* array = +, -, 0 */ ! 1651: 1592 00013F95 0d effffff0a9 50 movl _status_index,r0 ! 1652: 1593 00013F9C 0d 40effffff0a1 movl _status_array[r0],_sgl_dummy1 ! 1653: effffff09c ! 1654: 1594 00013FA8 # /* ! 1655: 1595 00013FA8 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1656: 1596 00013FA8 # * The force loop flag is set after the first error. ! 1657: 1597 00013FA8 # */ ! 1658: 1598 00013FA8 # asm("_cmpf2_7_lp1:"); ! 1659: 1599 00013FA8 _cmpf2_7_lp1: ! 1660: 1600 00013FA8 # asm("movl $0,r0"); /* zero the reg */ ! 1661: 1601 00013FA8 0d 00 50 movl $0,r0 ! 1662: 1602 00013FAB # asm("ldf r0"); /* load a zero in the acc */ ! 1663: 1603 00013FAB 06 50 ldf r0 ! 1664: 1604 00013FAD # asm("addf _sgl_ld_acc"); /* add initial data to acc */ ! 1665: 1605 00013FAD c6 effffff091 addf _sgl_ld_acc ! 1666: 1606 00013FB3 # asm("tstl _sgl_dummy1"); /* generate initial status */ ! 1667: 1607 00013FB3 5d effffff08b tstl _sgl_dummy1 ! 1668: 1608 00013FB9 # asm("movpsl _init_psl"); /* save the initial status */ ! 1669: 1609 00013FB9 cd effffff085 movpsl _init_psl ! 1670: 1610 00013FBF # asm("cmpf2 _sgl_value_1,_sgl_value_2"); /* compare the data */ ! 1671: 1611 00013FBF 46 effffff07f effffff07a cmpf2 _sgl_value_1,_sgl_value_2 ! 1672: 1612 00013FCA # asm("movpsl _psl_val"); /* save the final status */ ! 1673: 1613 00013FCA cd effffff074 movpsl _psl_val ! 1674: 1614 00013FD0 # asm("stf _sgl_st_acc"); /* save the acc */ ! 1675: 1615 00013FD0 26 effffff06e stf _sgl_st_acc ! 1676: 1616 00013FD6 # if( force_loop ) /* loop? */ ! 1677: 1617 00013FD6 5d effffff068 tstl _force_loop ! 1678: 1618 00013FDC 31 02 jeql L421 ! 1679: 1619 00013FDE # asm("brb _cmpf2_7_lp1");; /* run the loop again */ ! 1680: 1620 00013FDE 11 c8 brb _cmpf2_7_lp1 ! 1681: 1621 00013FE0 L421: ! 1682: 1622 00013FE0 # exp_psl = init_psl; /* get the initial PSL */ ! 1683: 1623 00013FE0 0d effffff05e effffff059 movl _init_psl,_exp_psl ! 1684: 1624 00013FEB # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */ ! 1685: 1625 00013FEB ac 88f3 effffff051 andl2 $-13,_exp_psl ! 1686: 1626 00013FF3 # if( sgl_expected == ZERO ) ! 1687: 1627 00013FF3 1d effffff04b 04 cmpl _sgl_expected,$4 ! 1688: 1628 00013FFA 21 07 jneq L422 ! 1689: 1629 00013FFC # exp_psl |= PSL_Z; /* expect the ZERO bit set */ ! 1690: 1630 00013FFC 8c 04 effffff041 orl2 $4,_exp_psl ! 1691: 1631 00014003 # if( sgl_expected == NEGATIVE ) ! 1692: 1632 00014003 L422: ! 1693: 1633 00014003 1d effffff03b 08 cmpl _sgl_expected,$8 ! 1694: 1634 0001400A 21 07 jneq L423 ! 1695: 1635 0001400C # exp_psl |= PSL_N; /* expect the NEG bit set */ ! 1696: 1636 0001400C 8c 08 effffff031 orl2 $8,_exp_psl ! 1697: 1637 00014013 # if( psl_val != exp_psl ) /* COMPARE the values */ ! 1698: 1638 00014013 L423: ! 1699: 1639 00014013 1d effffff02b effffff026 cmpl _psl_val,_exp_psl ! 1700: 1640 0001401E 21 03 13 0144 jeql L424 ! 1701: 1641 00014023 # { ! 1702: 1642 00014023 # errcnt++; /* bump the error count */ ! 1703: 1643 00014023 6d effffff01b incl _errcnt ! 1704: 1644 00014029 # if ( prt_error ) { ! 1705: 1645 00014029 5d effffff015 tstl _prt_error ! 1706: 1646 0001402F 21 03 13 0110 jeql L425 ! 1707: 1647 00014034 # writes(" \n"); /* start a new print line */ ! 1708: 1648 00014034 .data 1 ! 1709: 1649 00001821 * L426: ! 1710: 1650 00001821 * 200A00 .ascii " \12\0" ! 1711: 1651 00001824 * .text ! 1712: 1652 00014034 dd 8f00001821 pushl $L426 ! 1713: 1653 0001403A fe 08 effffff003 callf $8,_writes ! 1714: 1654 00014041 # writes("cycle: "); ! 1715: 1655 00014041 .data 1 ! 1716: 1656 00001824 * L427: ! 1717: 1657 00001824 * 6379636C653A2000 .ascii "cycle: \0" ! 1718: 1658 0000182c * .text ! 1719: 1659 00014041 dd 8f00001824 pushl $L427 ! 1720: 1660 00014047 fe 08 efffffeff6 callf $8,_writes ! 1721: 1661 0001404E # writed( cycle ); ! 1722: 1662 0001404E dd efffffeff0 pushl _cycle ! 1723: 1663 00014054 fe 08 efffffefe9 callf $8,_writed ! 1724: 1664 0001405B # writes(" CMPF2 test "); ! 1725: 1665 0001405B .data 1 ! 1726: 1666 0000182c * L428: ! 1727: 1667 0000182c * 2020434D50463220746573742 .ascii " CMPF2 test \0" ! 1728: 000 ! 1729: 1668 0000183a * .text ! 1730: 1669 0001405B dd 8f0000182c pushl $L428 ! 1731: 1670 00014061 fe 08 efffffefdc callf $8,_writes ! 1732: 1671 00014068 # writed( test_no ); ! 1733: 1672 00014068 dd efffffefd6 pushl _test_no ! 1734: 1673 0001406E fe 08 efffffefcf callf $8,_writed ! 1735: 1674 00014075 # writes(", subtest 7 (Piped Entry) - BAD FINAL PSL\n"); ! 1736: 1675 00014075 .data 1 ! 1737: 1676 0000183a * L429: ! 1738: 1677 0000183a * 2C20737562746573742037202 .ascii ", subtest 7 (Piped Entry) - BAD FINAL PSL\12\0" ! 1739: 8506970656420456E74727929 ! 1740: 202D204241442046494E414C2 ! 1741: 050534C0A00 ! 1742: 1678 00001865 * .text ! 1743: 1679 00014075 dd 8f0000183a pushl $L429 ! 1744: 1680 0001407B fe 08 efffffefc2 callf $8,_writes ! 1745: 1681 00014082 # print_cmpf2_data(); ! 1746: 1682 00014082 fe 04 ef0000031d callf $4,_print_cmpf2_data ! 1747: 1683 00014089 # writes(", data index = "); ! 1748: 1684 00014089 .data 1 ! 1749: 1685 00001865 * L430: ! 1750: 1686 00001865 * 2C20206461746120696E64657 .ascii ", data index = \0" ! 1751: 8203D2000 ! 1752: 1687 00001876 * .text ! 1753: 1688 00014089 dd 8f00001865 pushl $L430 ! 1754: 1689 0001408F fe 08 efffffefae callf $8,_writes ! 1755: 1690 00014096 # writed( index ); ! 1756: 1691 00014096 dd efffffefa8 pushl _index ! 1757: 1692 0001409C fe 08 efffffefa1 callf $8,_writed ! 1758: 1693 000140A3 # writec('\n'); ! 1759: 1694 000140A3 dd 0a pushl $10 ! 1760: 1695 000140A5 fe 08 efffffef98 callf $8,_writec ! 1761: 1696 000140AC # writes(" final Acc = "); ! 1762: 1697 000140AC .data 1 ! 1763: 1698 00001876 * L431: ! 1764: 1699 00001876 * 20202066696E616C204163632 .ascii " final Acc = \0" ! 1765: 03D2000 ! 1766: 1700 00001886 * .text ! 1767: 1701 000140AC dd 8f00001876 pushl $L431 ! 1768: 1702 000140B2 fe 08 efffffef8b callf $8,_writes ! 1769: 1703 000140B9 # write32h( sgl_st_acc ); ! 1770: 1704 000140B9 dd efffffef85 pushl _sgl_st_acc ! 1771: 1705 000140BF fe 08 efffffef7e callf $8,_write32h ! 1772: 1706 000140C6 # writes(", operand 2 = "); ! 1773: 1707 000140C6 .data 1 ! 1774: 1708 00001886 * L432: ! 1775: 1709 00001886 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0" ! 1776: 03D2000 ! 1777: 1710 00001896 * .text ! 1778: 1711 000140C6 dd 8f00001886 pushl $L432 ! 1779: 1712 000140CC fe 08 efffffef71 callf $8,_writes ! 1780: 1713 000140D3 # write32h( sgl_value_2 ); ! 1781: 1714 000140D3 dd efffffef6b pushl _sgl_value_2 ! 1782: 1715 000140D9 fe 08 efffffef64 callf $8,_write32h ! 1783: 1716 000140E0 # writec('\n'); ! 1784: 1717 000140E0 dd 0a pushl $10 ! 1785: 1718 000140E2 fe 08 efffffef5b callf $8,_writec ! 1786: 1719 000140E9 # writes(" initial PSL = "); ! 1787: 1720 000140E9 .data 1 ! 1788: 1721 00001896 * L433: ! 1789: 1722 00001896 * 20696E697469616C2050534C2 .ascii " initial PSL = \0" ! 1790: 03D2000 ! 1791: 1723 000018a6 * .text ! 1792: 1724 000140E9 dd 8f00001896 pushl $L433 ! 1793: 1725 000140EF fe 08 efffffef4e callf $8,_writes ! 1794: 1726 000140F6 # write32h( init_psl ); ! 1795: 1727 000140F6 dd efffffef48 pushl _init_psl ! 1796: 1728 000140FC fe 08 efffffef41 callf $8,_write32h ! 1797: 1729 00014103 # writes(", final PSL = "); ! 1798: 1730 00014103 .data 1 ! 1799: 1731 000018a6 * L434: ! 1800: 1732 000018a6 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0" ! 1801: 03D2000 ! 1802: 1733 000018b6 * .text ! 1803: 1734 00014103 dd 8f000018a6 pushl $L434 ! 1804: 1735 00014109 fe 08 efffffef34 callf $8,_writes ! 1805: 1736 00014110 # write32h( psl_val ); ! 1806: 1737 00014110 dd efffffef2e pushl _psl_val ! 1807: 1738 00014116 fe 08 efffffef27 callf $8,_write32h ! 1808: 1739 0001411D # writes(", expected PSL = "); ! 1809: 1740 0001411D .data 1 ! 1810: 1741 000018b6 * L435: ! 1811: 1742 000018b6 * 2C20206578706563746564205 .ascii ", expected PSL = \0" ! 1812: 0534C203D2000 ! 1813: 1743 000018c9 * .text ! 1814: 1744 0001411D dd 8f000018b6 pushl $L435 ! 1815: 1745 00014123 fe 08 efffffef1a callf $8,_writes ! 1816: 1746 0001412A # write32h( exp_psl ); ! 1817: 1747 0001412A dd efffffef14 pushl _exp_psl ! 1818: 1748 00014130 fe 08 efffffef0d callf $8,_write32h ! 1819: 1749 00014137 # writes(" \n"); ! 1820: 1750 00014137 .data 1 ! 1821: 1751 000018c9 * L436: ! 1822: 1752 000018c9 * 200A00 .ascii " \12\0" ! 1823: 1753 000018cc * .text ! 1824: 1754 00014137 dd 8f000018c9 pushl $L436 ! 1825: 1755 0001413D fe 08 efffffef00 callf $8,_writes ! 1826: 1756 00014144 # } ! 1827: 1757 00014144 # if ( halt_flg ) ! 1828: 1758 00014144 L425: ! 1829: 1759 00014144 5d efffffeefa tstl _halt_flg ! 1830: 1760 0001414A 31 09 jeql L437 ! 1831: 1761 0001414C # cmpf2_er_halt( BAD_PSL_HLT ); /* halt on the error */ ! 1832: 1762 0001414C dd 03 pushl $3 ! 1833: 1763 0001414E fe 08 ef0000028d callf $8,_cmpf2_er_halt ! 1834: 1764 00014155 # if ( loop_on_err ) ! 1835: 1765 00014155 L437: ! 1836: 1766 00014155 5d efffffeee9 tstl _loop_on_err ! 1837: 1767 0001415B 31 0a jeql L438 ! 1838: 1768 0001415D # { ! 1839: 1769 0001415D # force_loop = TRUE; /* set the force loop flag */ ! 1840: 1770 0001415D 0d 01 efffffeee0 movl $1,_force_loop ! 1841: 1771 00014164 # asm("brw _cmpf2_7_lp1"); /* and loop */ ! 1842: 1772 00014164 13 fe41 brw _cmpf2_7_lp1 ! 1843: 1773 00014167 # }; /* end of loop-on-error */ ! 1844: 1774 00014167 L438: ! 1845: 1775 00014167 # } /* end of compare error */ ! 1846: 1776 00014167 # } while( ++status_index < 3 ); ! 1847: 1777 00014167 L424: ! 1848: 1778 00014167 L419: ! 1849: 1779 00014167 6d efffffeed7 incl _status_index ! 1850: 1780 0001416D 0d efffffeed1 50 movl _status_index,r0 ! 1851: 1781 00014174 1d 50 03 cmpl r0,$3 ! 1852: 1782 00014177 81 03 13 fe19 jlss L420 ! 1853: 1783 0001417C L418: ! 1854: 1784 0001417C # } while( (index2 < 10) && (index2 < max_ldf_1_index) ); ! 1855: 1785 0001417C L416: ! 1856: 1786 0001417C 1d efffffeec2 0a cmpl _index2,$10 ! 1857: 1787 00014183 81 10 jgeq L9994 ! 1858: 1788 00014185 1d efffffeeb9 efffffeeb4 cmpl _index2,_max_ldf_1_index ! 1859: 1789 00014190 81 03 13 fdde jlss L417 ! 1860: 1790 00014195 L9994: ! 1861: 1791 00014195 L415: ! 1862: 1792 00014195 # } while( index++ < max_cmpf_1_index ); ! 1863: 1793 00014195 L413: ! 1864: 1794 00014195 0d efffffeea9 50 movl _index,r0 ! 1865: 1795 0001419C 6d efffffeea2 incl _index ! 1866: 1796 000141A2 1d 50 efffffee9b cmpl r0,_max_cmpf_1_index ! 1867: 1797 000141A9 81 03 13 fd86 jlss L414 ! 1868: 1798 000141AE L412: ! 1869: 1799 000141AE # } /* end of subtest 7 */ ! 1870: 1800 000141AE 40 ret#2 ! 1871: 1801 000141AF .set L408,0x0 ! 1872: 1802 000141AF L410: ! 1873: 1803 000141AF 13 fd6f jbr L411 ! 1874: 1804 000141B2 .data ! 1875: 1805 00001458 * .text ! 1876: 1806 000141B2 .align 1 ! 1877: 1807 000141B2 .globl _cmpf2_8 ! 1878: 1808 000141B2 _cmpf2_8: ! 1879: 1809 000141B2 0000 .word L439 ! 1880: 1810 000141B4 # ! 1881: 1811 000141B4 # ! 1882: 1812 000141B4 # ! 1883: 1813 000141B4 # /**************************************************************************** ! 1884: 1814 000141B4 # * ! 1885: 1815 000141B4 # * SUBTEST 8 - CMPF2 piped exit test ! 1886: 1816 000141B4 # * ! 1887: 1817 000141B4 # ****************************************************************************/ ! 1888: 1818 000141B4 # cmpf2_8() ! 1889: 1819 000141B4 # { ! 1890: 1820 000141B4 13 01ec jbr L441 ! 1891: 1821 000141B7 L442: ! 1892: 1822 000141B7 # force_loop = FALSE; ! 1893: 1823 000141B7 4d efffffee87 clrl _force_loop ! 1894: 1824 000141BD # subtest = 6; ! 1895: 1825 000141BD 0d 06 efffffee80 movl $6,_subtest ! 1896: 1826 000141C4 # index = 0; ! 1897: 1827 000141C4 4d efffffee7a clrl _index ! 1898: 1828 000141CA # do ! 1899: 1829 000141CA L445: ! 1900: 1830 000141CA # { ! 1901: 1831 000141CA # sgl_value_1 = cmpf_1_data[index].one; /* get the data operands */ ! 1902: 1832 000141CA 5c 0c efffffee73 50 mull3 $12,_index,r0 ! 1903: 1833 000141D2 0d e000000000 efffffee67 movl _cmpf_1_data(r0),_sgl_value_1 ! 1904: 1834 000141DD # sgl_value_2 = cmpf_1_data[index].two; ! 1905: 1835 000141DD 5c 0c efffffee60 50 mull3 $12,_index,r0 ! 1906: 1836 000141E5 0d e000000004 efffffee54 movl _cmpf_1_data+4(r0),_sgl_value_2 ! 1907: 1837 000141F0 # index2 = 0; /* clear Acc. data index */ ! 1908: 1838 000141F0 4d efffffee4e clrl _index2 ! 1909: 1839 000141F6 # do ! 1910: 1840 000141F6 L448: ! 1911: 1841 000141F6 # { ! 1912: 1842 000141F6 # sgl_ld_acc = ldf_1_data[index2].ld; /* get the Accumulator data */ ! 1913: 1843 000141F6 0d efffffee48 50 movl _index2,r0 ! 1914: 1844 000141FD 48 03 50 50 shll $3,r0,r0 ! 1915: 1845 00014201 0d e000000000 efffffee38 movl _ldf_1_data(r0),_sgl_ld_acc ! 1916: 1846 0001420C # sgl_expected = ldf_1_data[index2++].exp; /* get expected Acc. */ ! 1917: 1847 0001420C 0d efffffee32 50 movl _index2,r0 ! 1918: 1848 00014213 48 03 50 50 shll $3,r0,r0 ! 1919: 1849 00014217 0d e000000004 efffffee22 movl _ldf_1_data+4(r0),_sgl_expected ! 1920: 1850 00014222 6d efffffee1c incl _index2 ! 1921: 1851 00014228 # /* ! 1922: 1852 00014228 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1923: 1853 00014228 # * The force loop flag is set after the first error. ! 1924: 1854 00014228 # */ ! 1925: 1855 00014228 # asm("_cmpf2_8_lp1:"); ! 1926: 1856 00014228 _cmpf2_8_lp1: ! 1927: 1857 00014228 # asm("movl $0,r0"); /* move a zero to r0 */ ! 1928: 1858 00014228 0d 00 50 movl $0,r0 ! 1929: 1859 0001422B # asm("movl _sgl_ld_acc,r3"); /* get the accmulator data */ ! 1930: 1860 0001422B 0d efffffee13 53 movl _sgl_ld_acc,r3 ! 1931: 1861 00014232 # asm("ldf r3"); /* load the accumulator */ ! 1932: 1862 00014232 06 53 ldf r3 ! 1933: 1863 00014234 # asm("cmpf2 _sgl_value_1,_sgl_value_2");/* compare the operands */ ! 1934: 1864 00014234 46 efffffee0a efffffee05 cmpf2 _sgl_value_1,_sgl_value_2 ! 1935: 1865 0001423F # asm("addf r0"); /* add a zero to the acc */ ! 1936: 1866 0001423F c6 50 addf r0 ! 1937: 1867 00014241 # asm("stf _sgl_st_acc"); /* store the accumulator */ ! 1938: 1868 00014241 26 efffffedfd stf _sgl_st_acc ! 1939: 1869 00014247 # if( force_loop ) /* loop? */ ! 1940: 1870 00014247 5d efffffedf7 tstl _force_loop ! 1941: 1871 0001424D 31 02 jeql L449 ! 1942: 1872 0001424F # asm("brb _cmpf2_8_lp1");; /* run the loop again */ ! 1943: 1873 0001424F 11 d7 brb _cmpf2_8_lp1 ! 1944: 1874 00014251 L449: ! 1945: 1875 00014251 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */ ! 1946: 1876 00014251 1d efffffeded efffffede8 cmpl _sgl_st_acc,_sgl_expected ! 1947: 1877 0001425C 21 03 13 010f jeql L450 ! 1948: 1878 00014261 # errcnt++; /* bump the error count */ ! 1949: 1879 00014261 6d efffffeddd incl _errcnt ! 1950: 1880 00014267 # if ( prt_error ) { ! 1951: 1881 00014267 5d efffffedd7 tstl _prt_error ! 1952: 1882 0001426D 21 03 13 00d8 jeql L451 ! 1953: 1883 00014272 # writes(" \n"); /* start a new print line */ ! 1954: 1884 00014272 .data 1 ! 1955: 1885 000018cc * L452: ! 1956: 1886 000018cc * 200A00 .ascii " \12\0" ! 1957: 1887 000018cf * .text ! 1958: 1888 00014272 dd 8f000018cc pushl $L452 ! 1959: 1889 00014278 fe 08 efffffedc5 callf $8,_writes ! 1960: 1890 0001427F # writes("cycle: "); ! 1961: 1891 0001427F .data 1 ! 1962: 1892 000018cf * L453: ! 1963: 1893 000018cf * 6379636C653A2000 .ascii "cycle: \0" ! 1964: 1894 000018d7 * .text ! 1965: 1895 0001427F dd 8f000018cf pushl $L453 ! 1966: 1896 00014285 fe 08 efffffedb8 callf $8,_writes ! 1967: 1897 0001428C # writed( cycle ); ! 1968: 1898 0001428C dd efffffedb2 pushl _cycle ! 1969: 1899 00014292 fe 08 efffffedab callf $8,_writed ! 1970: 1900 00014299 # writes(" CMPF2 test "); ! 1971: 1901 00014299 .data 1 ! 1972: 1902 000018d7 * L454: ! 1973: 1903 000018d7 * 2020434D50463220746573742 .ascii " CMPF2 test \0" ! 1974: 000 ! 1975: 1904 000018e5 * .text ! 1976: 1905 00014299 dd 8f000018d7 pushl $L454 ! 1977: 1906 0001429F fe 08 efffffed9e callf $8,_writes ! 1978: 1907 000142A6 # writed( test_no ); ! 1979: 1908 000142A6 dd efffffed98 pushl _test_no ! 1980: 1909 000142AC fe 08 efffffed91 callf $8,_writed ! 1981: 1910 000142B3 # writes(", subtest 8 (Piped Exit) - THE ACC WAS MODIFIED\n"); ! 1982: 1911 000142B3 .data 1 ! 1983: 1912 000018e5 * L455: ! 1984: 1913 000018e5 * 2C20737562746573742038202 .ascii ", subtest 8 (Piped Exit) - THE ACC WAS MODIFIED\12\0" ! 1985: 8506970656420457869742920 ! 1986: 2D20544845204143432057415 ! 1987: 3204D4F4449464945440A00 ! 1988: 1914 00001916 * .text ! 1989: 1915 000142B3 dd 8f000018e5 pushl $L455 ! 1990: 1916 000142B9 fe 08 efffffed84 callf $8,_writes ! 1991: 1917 000142C0 # print_cmpf2_data(); ! 1992: 1918 000142C0 fe 04 ef000000df callf $4,_print_cmpf2_data ! 1993: 1919 000142C7 # writes(", data index = "); ! 1994: 1920 000142C7 .data 1 ! 1995: 1921 00001916 * L456: ! 1996: 1922 00001916 * 2C20206461746120696E64657 .ascii ", data index = \0" ! 1997: 8203D2000 ! 1998: 1923 00001927 * .text ! 1999: 1924 000142C7 dd 8f00001916 pushl $L456 ! 2000: 1925 000142CD fe 08 efffffed70 callf $8,_writes ! 2001: 1926 000142D4 # writed( index ); ! 2002: 1927 000142D4 dd efffffed6a pushl _index ! 2003: 1928 000142DA fe 08 efffffed63 callf $8,_writed ! 2004: 1929 000142E1 # writec('\n'); ! 2005: 1930 000142E1 dd 0a pushl $10 ! 2006: 1931 000142E3 fe 08 efffffed5a callf $8,_writec ! 2007: 1932 000142EA # writes(" final Acc = "); ! 2008: 1933 000142EA .data 1 ! 2009: 1934 00001927 * L457: ! 2010: 1935 00001927 * 20202066696E616C204163632 .ascii " final Acc = \0" ! 2011: 03D2000 ! 2012: 1936 00001937 * .text ! 2013: 1937 000142EA dd 8f00001927 pushl $L457 ! 2014: 1938 000142F0 fe 08 efffffed4d callf $8,_writes ! 2015: 1939 000142F7 # write32h( sgl_st_acc ); ! 2016: 1940 000142F7 dd efffffed47 pushl _sgl_st_acc ! 2017: 1941 000142FD fe 08 efffffed40 callf $8,_write32h ! 2018: 1942 00014304 # writes(", operand 2 = "); ! 2019: 1943 00014304 .data 1 ! 2020: 1944 00001937 * L458: ! 2021: 1945 00001937 * 2C20206F706572616E6420322 .ascii ", operand 2 = \0" ! 2022: 03D2000 ! 2023: 1946 00001947 * .text ! 2024: 1947 00014304 dd 8f00001937 pushl $L458 ! 2025: 1948 0001430A fe 08 efffffed33 callf $8,_writes ! 2026: 1949 00014311 # write32h( sgl_value_2 ); ! 2027: 1950 00014311 dd efffffed2d pushl _sgl_value_2 ! 2028: 1951 00014317 fe 08 efffffed26 callf $8,_write32h ! 2029: 1952 0001431E # writec('\n'); ! 2030: 1953 0001431E dd 0a pushl $10 ! 2031: 1954 00014320 fe 08 efffffed1d callf $8,_writec ! 2032: 1955 00014327 # writes("expected Acc = "); ! 2033: 1956 00014327 .data 1 ! 2034: 1957 00001947 * L459: ! 2035: 1958 00001947 * 6578706563746564204163632 .ascii "expected Acc = \0" ! 2036: 03D2000 ! 2037: 1959 00001957 * .text ! 2038: 1960 00014327 dd 8f00001947 pushl $L459 ! 2039: 1961 0001432D fe 08 efffffed10 callf $8,_writes ! 2040: 1962 00014334 # write32h( sgl_expected ); ! 2041: 1963 00014334 dd efffffed0a pushl _sgl_expected ! 2042: 1964 0001433A fe 08 efffffed03 callf $8,_write32h ! 2043: 1965 00014341 # writec('\n'); ! 2044: 1966 00014341 dd 0a pushl $10 ! 2045: 1967 00014343 fe 08 efffffecfa callf $8,_writec ! 2046: 1968 0001434A # } ! 2047: 1969 0001434A # if ( halt_flg ) /* halt on error? */ ! 2048: 1970 0001434A L451: ! 2049: 1971 0001434A 5d efffffecf4 tstl _halt_flg ! 2050: 1972 00014350 31 09 jeql L460 ! 2051: 1973 00014352 # cmpf2_er_halt( BAD_ACC_HLT ); ! 2052: 1974 00014352 dd 01 pushl $1 ! 2053: 1975 00014354 fe 08 ef00000087 callf $8,_cmpf2_er_halt ! 2054: 1976 0001435B # if ( loop_on_err ) ! 2055: 1977 0001435B L460: ! 2056: 1978 0001435B 5d efffffece3 tstl _loop_on_err ! 2057: 1979 00014361 31 0d jeql L461 ! 2058: 1980 00014363 # { ! 2059: 1981 00014363 # force_loop = TRUE; /* set the force loop flag */ ! 2060: 1982 00014363 0d 01 efffffecda movl $1,_force_loop ! 2061: 1983 0001436A # asm("jmp _cmpf2_8_lp1"); /* and loop */ ! 2062: 1984 0001436A 71 effffffeb8 jmp _cmpf2_8_lp1 ! 2063: 1985 00014370 # }; /* end of loop-on-error */ ! 2064: 1986 00014370 L461: ! 2065: 1987 00014370 # } /* end of compare error */ ! 2066: 1988 00014370 # } while( (index2 < 10) && (index2 < max_ldf_1_index) ); ! 2067: 1989 00014370 L450: ! 2068: 1990 00014370 L447: ! 2069: 1991 00014370 1d efffffecce 0a cmpl _index2,$10 ! 2070: 1992 00014377 81 10 jgeq L9993 ! 2071: 1993 00014379 1d efffffecc5 efffffecc0 cmpl _index2,_max_ldf_1_index ! 2072: 1994 00014384 81 03 13 fe6d jlss L448 ! 2073: 1995 00014389 L9993: ! 2074: 1996 00014389 L446: ! 2075: 1997 00014389 # } while( index++ < max_cmpf_1_index ); ! 2076: 1998 00014389 L444: ! 2077: 1999 00014389 0d efffffecb5 50 movl _index,r0 ! 2078: 2000 00014390 6d efffffecae incl _index ! 2079: 2001 00014396 1d 50 efffffeca7 cmpl r0,_max_cmpf_1_index ! 2080: 2002 0001439D 81 03 13 fe28 jlss L445 ! 2081: 2003 000143A2 L443: ! 2082: 2004 000143A2 # } /* end of subtest 8 */ ! 2083: 2005 000143A2 40 ret#2 ! 2084: 2006 000143A3 .set L439,0x0 ! 2085: 2007 000143A3 L441: ! 2086: 2008 000143A3 13 fe11 jbr L442 ! 2087: 2009 000143A6 .data ! 2088: 2010 00001458 * .text ! 2089: 2011 000143A6 .align 1 ! 2090: 2012 000143A6 .globl _print_cmpf2_data ! 2091: 2013 000143A6 _print_cmpf2_data: ! 2092: 2014 000143A6 0000 .word L462 ! 2093: 2015 000143A8 # ! 2094: 2016 000143A8 # ! 2095: 2017 000143A8 # ! 2096: 2018 000143A8 # /************************************************************************** ! 2097: 2019 000143A8 # * ! 2098: 2020 000143A8 # * PRINT THE DATA AND STORE RESULTS ! 2099: 2021 000143A8 # * ! 2100: 2022 000143A8 # * initial Acc = xxxxxxxx, stored = xxxxxxxx, data index = xx ! 2101: 2023 000143A8 # * operand = xxxxxxxx, expected = xxxxxxxx ! 2102: 2024 000143A8 # **************************************************************************/ ! 2103: 2025 000143A8 # print_cmpf2_data() ! 2104: 2026 000143A8 # { ! 2105: 2027 000143A8 11 35 jbr L464 ! 2106: 2028 000143AA L465: ! 2107: 2029 000143AA # writes(" initial Acc = "); ! 2108: 2030 000143AA .data 1 ! 2109: 2031 00001957 * L466: ! 2110: 2032 00001957 * 20696E697469616C204163632 .ascii " initial Acc = \0" ! 2111: 03D2000 ! 2112: 2033 00001967 * .text ! 2113: 2034 000143AA dd 8f00001957 pushl $L466 ! 2114: 2035 000143B0 fe 08 efffffec8d callf $8,_writes ! 2115: 2036 000143B7 # write32h( sgl_ld_acc ); ! 2116: 2037 000143B7 dd efffffec87 pushl _sgl_ld_acc ! 2117: 2038 000143BD fe 08 efffffec80 callf $8,_write32h ! 2118: 2039 000143C4 # writes(", operand 1 = "); ! 2119: 2040 000143C4 .data 1 ! 2120: 2041 00001967 * L467: ! 2121: 2042 00001967 * 2C20206F706572616E6420312 .ascii ", operand 1 = \0" ! 2122: 03D2000 ! 2123: 2043 00001977 * .text ! 2124: 2044 000143C4 dd 8f00001967 pushl $L467 ! 2125: 2045 000143CA fe 08 efffffec73 callf $8,_writes ! 2126: 2046 000143D1 # write32h( sgl_value_1 ); ! 2127: 2047 000143D1 dd efffffec6d pushl _sgl_value_1 ! 2128: 2048 000143D7 fe 08 efffffec66 callf $8,_write32h ! 2129: 2049 000143DE # } ! 2130: 2050 000143DE 40 ret#2 ! 2131: 2051 000143DF .set L462,0x0 ! 2132: 2052 000143DF L464: ! 2133: 2053 000143DF 11 c9 jbr L465 ! 2134: 2054 000143E1 .data ! 2135: 2055 00001458 * .text ! 2136: 2056 000143E1 00 .align 1 ! 2137: 2057 000143E2 .globl _cmpf2_er_halt ! 2138: 2058 000143E2 _cmpf2_er_halt: ! 2139: 2059 000143E2 0000 .word L468 ! 2140: 2060 000143E4 # ! 2141: 2061 000143E4 # ! 2142: 2062 000143E4 # ! 2143: 2063 000143E4 # /************************************************************************** ! 2144: 2064 000143E4 # * ! 2145: 2065 000143E4 # * HALT ON ERROR ROUTINE ! 2146: 2066 000143E4 # * ! 2147: 2067 000143E4 # **************************************************************************/ ! 2148: 2068 000143E4 # cmpf2_er_halt( halt_code ) ! 2149: 2069 000143E4 # int halt_code; ! 2150: 2070 000143E4 # { ! 2151: 2071 000143E4 13 00af jbr L470 ! 2152: 2072 000143E7 L471: ! 2153: 2073 000143E7 # sgl_dummy1 = halt_code; /* get the error type */ ! 2154: 2074 000143E7 0d ad04 efffffec55 movl 4(fp),_sgl_dummy1 ! 2155: 2075 000143EF # asm("movl _test_no,r0"); /* r0 = test number */ ! 2156: 2076 000143EF 0d efffffec4f 50 movl _test_no,r0 ! 2157: 2077 000143F6 # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 2158: 2078 000143F6 0d efffffec48 51 movl _subtest,r1 ! 2159: 2079 000143FD # asm("movl _sgl_dummy1,r2"); /* r2 = error code */ ! 2160: 2080 000143FD 0d efffffec41 52 movl _sgl_dummy1,r2 ! 2161: 2081 00014404 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 2162: 2082 00014404 0d efffffec3a 53 movl _cycle,r3 ! 2163: 2083 0001440B # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */ ! 2164: 2084 0001440B 0d efffffec33 54 movl _sgl_ld_acc,r4 ! 2165: 2085 00014412 # asm("movl _sgl_value_1,r5"); /* r5 = operand 1 */ ! 2166: 2086 00014412 0d efffffec2c 55 movl _sgl_value_1,r5 ! 2167: 2087 00014419 # asm("movl _sgl_value_2,r6"); /* r6 = operand 2 */ ! 2168: 2088 00014419 0d efffffec25 56 movl _sgl_value_2,r6 ! 2169: 2089 00014420 # asm("movl _psl_val,r7"); /* r7 = actual PSL */ ! 2170: 2090 00014420 0d efffffec1e 57 movl _psl_val,r7 ! 2171: 2091 00014427 # if( halt_code == BAD_ACC_HLT ) { ! 2172: 2092 00014427 1d ad04 01 cmpl 4(fp),$1 ! 2173: 2093 0001442B 21 10 jneq L472 ! 2174: 2094 0001442D # asm("movl _sgl_st_acc,r8"); /* r8 = actual value */ ! 2175: 2095 0001442D 0d efffffec11 58 movl _sgl_st_acc,r8 ! 2176: 2096 00014434 # asm("movl _sgl_expected,r9"); /* r9 = expected value */ ! 2177: 2097 00014434 0d efffffec0a 59 movl _sgl_expected,r9 ! 2178: 2098 0001443B # } else ! 2179: 2099 0001443B 11 57 jbr L473 ! 2180: 2100 0001443D L472: ! 2181: 2101 0001443D # if( halt_code == BAD_REG_HLT ) { ! 2182: 2102 0001443D 1d ad04 02 cmpl 4(fp),$2 ! 2183: 2103 00014441 21 3d jneq L474 ! 2184: 2104 00014443 # sgl_dummy1 = load_regs[index2]; ! 2185: 2105 00014443 0d efffffebfb 50 movl _index2,r0 ! 2186: 2106 0001444A 0d 40efffffebf3 movl _load_regs[r0],_sgl_dummy1 ! 2187: efffffebee ! 2188: 2107 00014456 # sgl_dummy2 = store_regs[index2]; ! 2189: 2108 00014456 0d efffffebe8 50 movl _index2,r0 ! 2190: 2109 0001445D 0d 40efffffebe0 movl _store_regs[r0],_sgl_dummy2 ! 2191: efffffebdb ! 2192: 2110 00014469 # asm("movl _index2,r8"); /* r8 = bad register # */ ! 2193: 2111 00014469 0d efffffebd5 58 movl _index2,r8 ! 2194: 2112 00014470 # asm("movl _sgl_dummy2,r9"); /* r9 = actual value */ ! 2195: 2113 00014470 0d efffffebce 59 movl _sgl_dummy2,r9 ! 2196: 2114 00014477 # asm("movl _sgl_dummy1,r10"); /* r10 = expected value */ ! 2197: 2115 00014477 0d efffffebc7 5a movl _sgl_dummy1,r10 ! 2198: 2116 0001447E # } else ! 2199: 2117 0001447E 11 14 jbr L475 ! 2200: 2118 00014480 L474: ! 2201: 2119 00014480 # if( halt_code == BAD_PSL_HLT ) { ! 2202: 2120 00014480 1d ad04 03 cmpl 4(fp),$3 ! 2203: 2121 00014484 21 0e jneq L476 ! 2204: 2122 00014486 # asm("movl _exp_psl,r7"); /* r8 = expected PSL */ ! 2205: 2123 00014486 0d efffffebb8 57 movl _exp_psl,r7 ! 2206: 2124 0001448D # asm("movl _index,r9"); /* r9 = data index */ ! 2207: 2125 0001448D 0d efffffebb1 59 movl _index,r9 ! 2208: 2126 00014494 # }; ! 2209: 2127 00014494 L476: ! 2210: 2128 00014494 L475: ! 2211: 2129 00014494 L473: ! 2212: 2130 00014494 # asm("halt"); /* HALT ... */ ! 2213: 2131 00014494 00 halt ! 2214: 2132 00014495 # } ! 2215: 2133 00014495 40 ret#2 ! 2216: 2134 00014496 .set L468,0x0 ! 2217: 2135 00014496 L470: ! 2218: 2136 00014496 13 ff4e jbr L471 ! 2219: 2137 00014499 .data ! 2220: 2137 000274DD .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.