|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000ca0 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _cvfl ! 6: 6 00000000 _cvfl: ! 7: 7 00014FA0 0000 .word L215 ! 8: 8 00014FA2 # ! 9: 9 00014FA2 # #include "fpp_defs.h" ! 10: 10 00014FA2 # ! 11: 11 00014FA2 # ! 12: 12 00014FA2 # /***************************************************************************** ! 13: 13 00014FA2 # * ! 14: 14 00014FA2 # * CVFL - CONVERT SINGLE PRECISION TO LONGWORD INTEGER ! 15: 15 00014FA2 # * ! 16: 16 00014FA2 # *****************************************************************************/ ! 17: 17 00014FA2 # cvfl() ! 18: 18 00014FA2 # { ! 19: 19 00014FA2 11 57 jbr L217 ! 20: 20 00014FA4 L218: ! 21: 21 00014FA4 # asm(".globl _cvfl_t"); ! 22: 22 00014FA4 .globl _cvfl_t ! 23: 23 00014FA4 # asm("_cvfl_t:"); /* entry address */ ! 24: 24 00014FA4 _cvfl_t: ! 25: 25 00014FA4 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st cycle */ ! 26: 26 00014FA4 1d effffffff6 01 cmpl _cycle,$1 ! 27: 27 00014FAB 21 15 jneq L219 ! 28: 28 00014FAD 5d efffffffed tstl _prt_hdrs ! 29: 29 00014FB3 31 0d jeql L219 ! 30: 30 00014FB5 # writes(" CVFL"); ! 31: 31 00014FB5 .data 1 ! 32: 32 00000ca0 * L221: ! 33: 33 00000ca0 * 204356464C00 .ascii " CVFL\0" ! 34: 34 00000ca6 * .text ! 35: 35 00014FB5 dd 8f00000ca0 pushl $L221 ! 36: 36 00014FBB fe 08 efffffffde callf $8,_writes ! 37: 37 00014FC2 # cvfl_1(); /* load through a register */ ! 38: 38 00014FC2 L219: ! 39: 39 00014FC2 fe 04 ef00000035 callf $4,_cvfl_1 ! 40: 40 00014FC9 # cvfl_2(); /* load through the cache */ ! 41: 41 00014FC9 fe 04 ef000001aa callf $4,_cvfl_2 ! 42: 42 00014FD0 # cvfl_3(); /* register stability */ ! 43: 43 00014FD0 fe 04 ef00000319 callf $4,_cvfl_3 ! 44: 44 00014FD7 # cvfl_4(); /* PSL stability test */ ! 45: 45 00014FD7 fe 04 ef000004ea callf $4,_cvfl_4 ! 46: 46 00014FDE # cvfl_5(); /* pipelined entry test */ ! 47: 47 00014FDE fe 04 ef00000703 callf $4,_cvfl_5 ! 48: 48 00014FE5 # if( !no_fpp_wcs ) ! 49: 49 00014FE5 5d efffffffb5 tstl _no_fpp_wcs ! 50: 50 00014FEB 21 07 jneq L227 ! 51: 51 00014FED # cvfl_6();; /* pipelined exit test */ ! 52: 52 00014FED fe 04 ef0000085a callf $4,_cvfl_6 ! 53: 53 00014FF4 L227: ! 54: 54 00014FF4 # asm("jmp *return"); /* return to the test monitor */ ! 55: 55 00014FF4 71 ffffffffa6 jmp *return ! 56: 56 00014FFA # } ! 57: 57 00014FFA 40 ret#2 ! 58: 58 00014FFB .set L215,0x0 ! 59: 59 00014FFB L217: ! 60: 60 00014FFB 11 a7 jbr L218 ! 61: 61 00014FFD .data ! 62: 62 00000ca0 * .text ! 63: 63 00014FFD 00 .align 1 ! 64: 64 00014FFE .globl _cvfl_1 ! 65: 65 00014FFE _cvfl_1: ! 66: 66 00014FFE 0000 .word L229 ! 67: 67 00015000 # ! 68: 68 00015000 # ! 69: 69 00015000 # ! 70: 70 00015000 # /************************************************************************ ! 71: 71 00015000 # * ! 72: 72 00015000 # * SUBTEST 1 - convert through a register ! 73: 73 00015000 # * ! 74: 74 00015000 # ************************************************************************/ ! 75: 75 00015000 # cvfl_1() ! 76: 76 00015000 # { ! 77: 77 00015000 13 0174 jbr L231 ! 78: 78 00015003 L232: ! 79: 79 00015003 # force_loop = FALSE; ! 80: 80 00015003 4d efffffff97 clrl _force_loop ! 81: 81 00015009 # subtest = 1; ! 82: 82 00015009 0d 01 efffffff90 movl $1,_subtest ! 83: 83 00015010 # for( index = 0; index < max_cvfl_1_index; index++ ) { ! 84: 84 00015010 4d efffffff8a clrl _index ! 85: 85 00015016 L235: ! 86: 86 00015016 1d efffffff84 efffffff7f cmpl _index,_max_cvfl_1_index ! 87: 87 00015021 91 03 13 0150 jgeq L234 ! 88: 88 00015026 # sgl_ld_acc = cvfl_1_data[index].ld; /* get value to negate */ ! 89: 89 00015026 0d efffffff74 50 movl _index,r0 ! 90: 90 0001502D 48 03 50 50 shll $3,r0,r0 ! 91: 91 00015031 0d e000000000 efffffff64 movl _cvfl_1_data(r0),_sgl_ld_acc ! 92: 92 0001503C # sgl_expected = cvfl_1_data[index].exp; /* get expected result */ ! 93: 93 0001503C 0d efffffff5e 50 movl _index,r0 ! 94: 94 00015043 48 03 50 50 shll $3,r0,r0 ! 95: 95 00015047 0d e000000004 efffffff4e movl _cvfl_1_data+4(r0),_sgl_expected ! 96: 96 00015052 # /* ! 97: 97 00015052 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 98: 98 00015052 # * The force loop flag is set after the first error. ! 99: 99 00015052 # */ ! 100: 100 00015052 # asm("_cvfl_1_lp1:"); ! 101: 101 00015052 _cvfl_1_lp1: ! 102: 102 00015052 # asm("movl _sgl_ld_acc,r4"); /* get the value to convert */ ! 103: 103 00015052 0d efffffff48 54 movl _sgl_ld_acc,r4 ! 104: 104 00015059 # asm("ldf r4"); /* load the value */ ! 105: 105 00015059 06 54 ldf r4 ! 106: 106 0001505B # asm("cvfl r5"); /* store the result in R5 */ ! 107: 107 0001505B 86 55 cvfl r5 ! 108: 108 0001505D # asm("stf _sgl_st_acc"); /* save the acc */ ! 109: 109 0001505D 26 efffffff3d stf _sgl_st_acc ! 110: 110 00015063 # if( force_loop ) ! 111: 111 00015063 5d efffffff37 tstl _force_loop ! 112: 112 00015069 31 02 jeql L236 ! 113: 113 0001506B # asm("brb _cvfl_1_lp1");; /* loop on the error */ ! 114: 114 0001506B 11 e5 brb _cvfl_1_lp1 ! 115: 115 0001506D L236: ! 116: 116 0001506D # /* ! 117: 117 0001506D # * end error loop - test the results ! 118: 118 0001506D # */ ! 119: 119 0001506D # asm("movl r5,_sgl_value_1"); /* move R5 data to cache */ ! 120: 120 0001506D 0d 55 efffffff2c movl r5,_sgl_value_1 ! 121: 121 00015074 # if( sgl_value_1 != sgl_expected ) {/* COMPARE the values */ ! 122: 122 00015074 1d efffffff26 efffffff21 cmpl _sgl_value_1,_sgl_expected ! 123: 123 0001507F 21 03 13 00e9 jeql L237 ! 124: 124 00015084 # errcnt++; /* bump the error count */ ! 125: 125 00015084 6d efffffff16 incl _errcnt ! 126: 126 0001508A # if( prt_error ) { ! 127: 127 0001508A 5d efffffff10 tstl _prt_error ! 128: 128 00015090 21 03 13 00b5 jeql L238 ! 129: 129 00015095 # writes(" \n"); /* start a new print line */ ! 130: 130 00015095 .data 1 ! 131: 131 00000ca6 * L239: ! 132: 132 00000ca6 * 200A00 .ascii " \12\0" ! 133: 133 00000ca9 * .text ! 134: 134 00015095 dd 8f00000ca6 pushl $L239 ! 135: 135 0001509B fe 08 effffffefe callf $8,_writes ! 136: 136 000150A2 # writes("cycle: "); ! 137: 137 000150A2 .data 1 ! 138: 138 00000ca9 * L240: ! 139: 139 00000ca9 * 6379636C653A2000 .ascii "cycle: \0" ! 140: 140 00000cb1 * .text ! 141: 141 000150A2 dd 8f00000ca9 pushl $L240 ! 142: 142 000150A8 fe 08 effffffef1 callf $8,_writes ! 143: 143 000150AF # writed( cycle ); ! 144: 144 000150AF dd effffffeeb pushl _cycle ! 145: 145 000150B5 fe 08 effffffee4 callf $8,_writed ! 146: 146 000150BC # writes(" CVFL test "); ! 147: 147 000150BC .data 1 ! 148: 148 00000cb1 * L242: ! 149: 149 00000cb1 * 20204356464C2074657374200 .ascii " CVFL test \0" ! 150: 0 ! 151: 150 00000cbe * .text ! 152: 151 000150BC dd 8f00000cb1 pushl $L242 ! 153: 152 000150C2 fe 08 effffffed7 callf $8,_writes ! 154: 153 000150C9 # writed( test_no ); ! 155: 154 000150C9 dd effffffed1 pushl _test_no ! 156: 155 000150CF fe 08 effffffeca callf $8,_writed ! 157: 156 000150D6 # writes(", subtest 1 (Reg. Data) - WRONG DATA STORED\n"); ! 158: 157 000150D6 .data 1 ! 159: 158 00000cbe * L243: ! 160: 159 00000cbe * 2C20737562746573742031202 .ascii ", subtest 1 (Reg. Data) - WRONG DATA STORED\12\0" ! 161: 85265672E204461746129202D ! 162: 2057524F4E472044415441205 ! 163: 3544F5245440A00 ! 164: 160 00000ceb * .text ! 165: 161 000150D6 dd 8f00000cbe pushl $L243 ! 166: 162 000150DC fe 08 effffffebd callf $8,_writes ! 167: 163 000150E3 # print_cvfl_data(); ! 168: 164 000150E3 fe 04 ef00000a4a callf $4,_print_cvfl_data ! 169: 165 000150EA # writes(", data index = "); ! 170: 166 000150EA .data 1 ! 171: 167 00000ceb * L245: ! 172: 168 00000ceb * 2C2020206461746120696E646 .ascii ", data index = \0" ! 173: 578203D2000 ! 174: 169 00000cfd * .text ! 175: 170 000150EA dd 8f00000ceb pushl $L245 ! 176: 171 000150F0 fe 08 effffffea9 callf $8,_writes ! 177: 172 000150F7 # writed( index ); ! 178: 173 000150F7 dd effffffea3 pushl _index ! 179: 174 000150FD fe 08 effffffe9c callf $8,_writed ! 180: 175 00015104 # writec('\n'); ! 181: 176 00015104 dd 0a pushl $10 ! 182: 177 00015106 fe 08 effffffe93 callf $8,_writec ! 183: 178 0001510D # writes(" final Acc = "); ! 184: 179 0001510D .data 1 ! 185: 180 00000cfd * L247: ! 186: 181 00000cfd * 202066696E616C20416363203 .ascii " final Acc = \0" ! 187: D2000 ! 188: 182 00000d0c * .text ! 189: 183 0001510D dd 8f00000cfd pushl $L247 ! 190: 184 00015113 fe 08 effffffe86 callf $8,_writes ! 191: 185 0001511A # write32h( sgl_st_acc ); ! 192: 186 0001511A dd effffffe80 pushl _sgl_st_acc ! 193: 187 00015120 fe 08 effffffe79 callf $8,_write32h ! 194: 188 00015127 # writes(", int. expected = "); ! 195: 189 00015127 .data 1 ! 196: 190 00000d0c * L249: ! 197: 191 00000d0c * 2C20696E742E2065787065637 .ascii ", int. expected = \0" ! 198: 46564203D2000 ! 199: 192 00000d1f * .text ! 200: 193 00015127 dd 8f00000d0c pushl $L249 ! 201: 194 0001512D fe 08 effffffe6c callf $8,_writes ! 202: 195 00015134 # write32h( sgl_expected ); ! 203: 196 00015134 dd effffffe66 pushl _sgl_expected ! 204: 197 0001513A fe 08 effffffe5f callf $8,_write32h ! 205: 198 00015141 # writec('\n'); ! 206: 199 00015141 dd 0a pushl $10 ! 207: 200 00015143 fe 08 effffffe56 callf $8,_writec ! 208: 201 0001514A # } ! 209: 202 0001514A # if( halt_flg ) ! 210: 203 0001514A L238: ! 211: 204 0001514A 5d effffffe50 tstl _halt_flg ! 212: 205 00015150 31 09 jeql L250 ! 213: 206 00015152 # cvfl_er_halt( BAD_STORE_HLT ); /* halt on the error */ ! 214: 207 00015152 dd 09 pushl $9 ! 215: 208 00015154 fe 08 ef00000a15 callf $8,_cvfl_er_halt ! 216: 209 0001515B # if( loop_on_err ) { ! 217: 210 0001515B L250: ! 218: 211 0001515B 5d effffffe3f tstl _loop_on_err ! 219: 212 00015161 31 0a jeql L252 ! 220: 213 00015163 # force_loop = TRUE; /* set the force loop flag */ ! 221: 214 00015163 0d 01 effffffe36 movl $1,_force_loop ! 222: 215 0001516A # asm("brw _cvfl_1_lp1");; /* and loop on the error */ ! 223: 216 0001516A 13 fee5 brw _cvfl_1_lp1 ! 224: 217 0001516D # } /* end of loop on error */ ! 225: 218 0001516D # } /* end of wrong data compare error */ ! 226: 219 0001516D L252: ! 227: 220 0001516D # } /* end of WHILE loop */ ! 228: 221 0001516D L237: ! 229: 222 0001516D L233: ! 230: 223 0001516D 6d effffffe2d incl _index ! 231: 224 00015173 13 fea0 jbr L235 ! 232: 225 00015176 L234: ! 233: 226 00015176 # } /* end of subtest 1 */ ! 234: 227 00015176 40 ret#2 ! 235: 228 00015177 .set L229,0x0 ! 236: 229 00015177 L231: ! 237: 230 00015177 13 fe89 jbr L232 ! 238: 231 0001517A .data ! 239: 232 00000ca0 * .text ! 240: 233 0001517A .align 1 ! 241: 234 0001517A .globl _cvfl_2 ! 242: 235 0001517A _cvfl_2: ! 243: 236 0001517A 0000 .word L253 ! 244: 237 0001517C # ! 245: 238 0001517C # ! 246: 239 0001517C # ! 247: 240 0001517C # /************************************************************************ ! 248: 241 0001517C # * ! 249: 242 0001517C # * SUBTEST 2 - convert through memory ! 250: 243 0001517C # * ! 251: 244 0001517C # ************************************************************************/ ! 252: 245 0001517C # cvfl_2() ! 253: 246 0001517C # { ! 254: 247 0001517C 13 016e jbr L255 ! 255: 248 0001517F L256: ! 256: 249 0001517F # force_loop = FALSE; ! 257: 250 0001517F 4d effffffe1b clrl _force_loop ! 258: 251 00015185 # subtest = 2; ! 259: 252 00015185 0d 02 effffffe14 movl $2,_subtest ! 260: 253 0001518C # for( index = 0; index < max_cvfl_1_index; index++ ) { ! 261: 254 0001518C 4d effffffe0e clrl _index ! 262: 255 00015192 L259: ! 263: 256 00015192 1d effffffe08 effffffe03 cmpl _index,_max_cvfl_1_index ! 264: 257 0001519D 91 03 13 014a jgeq L258 ! 265: 258 000151A2 # sgl_ld_acc = cvfl_1_data[index].ld; /* get value to convert */ ! 266: 259 000151A2 0d effffffdf8 50 movl _index,r0 ! 267: 260 000151A9 48 03 50 50 shll $3,r0,r0 ! 268: 261 000151AD 0d e000000000 effffffde8 movl _cvfl_1_data(r0),_sgl_ld_acc ! 269: 262 000151B8 # sgl_expected = cvfl_1_data[index].exp; /* get expected result */ ! 270: 263 000151B8 0d effffffde2 50 movl _index,r0 ! 271: 264 000151BF 48 03 50 50 shll $3,r0,r0 ! 272: 265 000151C3 0d e000000004 effffffdd2 movl _cvfl_1_data+4(r0),_sgl_expected ! 273: 266 000151CE # /* ! 274: 267 000151CE # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 275: 268 000151CE # * The force loop flag is set after the first error. ! 276: 269 000151CE # */ ! 277: 270 000151CE # asm("_cvfl_2_lp1:"); ! 278: 271 000151CE _cvfl_2_lp1: ! 279: 272 000151CE # asm("ldf _sgl_ld_acc"); /* load the base value */ ! 280: 273 000151CE 06 effffffdcc ldf _sgl_ld_acc ! 281: 274 000151D4 # asm("cvfl _sgl_value_1"); /* store the result */ ! 282: 275 000151D4 86 effffffdc6 cvfl _sgl_value_1 ! 283: 276 000151DA # asm("stf _sgl_st_acc"); /* save the acc */ ! 284: 277 000151DA 26 effffffdc0 stf _sgl_st_acc ! 285: 278 000151E0 # if( force_loop ) ! 286: 279 000151E0 5d effffffdba tstl _force_loop ! 287: 280 000151E6 31 02 jeql L260 ! 288: 281 000151E8 # asm("brb _cvfl_2_lp1");; /* loop on the error */ ! 289: 282 000151E8 11 e4 brb _cvfl_2_lp1 ! 290: 283 000151EA L260: ! 291: 284 000151EA # /* ! 292: 285 000151EA # * end error loop - test the results ! 293: 286 000151EA # */ ! 294: 287 000151EA # if( sgl_value_1 != sgl_expected ) {/* COMPARE the values */ ! 295: 288 000151EA 1d effffffdb0 effffffdab cmpl _sgl_value_1,_sgl_expected ! 296: 289 000151F5 21 03 13 00e9 jeql L261 ! 297: 290 000151FA # errcnt++; /* bump the error count */ ! 298: 291 000151FA 6d effffffda0 incl _errcnt ! 299: 292 00015200 # if( prt_error ) { ! 300: 293 00015200 5d effffffd9a tstl _prt_error ! 301: 294 00015206 21 03 13 00b5 jeql L262 ! 302: 295 0001520B # writes(" \n"); /* start a new print line */ ! 303: 296 0001520B .data 1 ! 304: 297 00000d1f * L263: ! 305: 298 00000d1f * 200A00 .ascii " \12\0" ! 306: 299 00000d22 * .text ! 307: 300 0001520B dd 8f00000d1f pushl $L263 ! 308: 301 00015211 fe 08 effffffd88 callf $8,_writes ! 309: 302 00015218 # writes("cycle: "); ! 310: 303 00015218 .data 1 ! 311: 304 00000d22 * L264: ! 312: 305 00000d22 * 6379636C653A2000 .ascii "cycle: \0" ! 313: 306 00000d2a * .text ! 314: 307 00015218 dd 8f00000d22 pushl $L264 ! 315: 308 0001521E fe 08 effffffd7b callf $8,_writes ! 316: 309 00015225 # writed( cycle ); ! 317: 310 00015225 dd effffffd75 pushl _cycle ! 318: 311 0001522B fe 08 effffffd6e callf $8,_writed ! 319: 312 00015232 # writes(" CVFL test "); ! 320: 313 00015232 .data 1 ! 321: 314 00000d2a * L265: ! 322: 315 00000d2a * 20204356464C2074657374200 .ascii " CVFL test \0" ! 323: 0 ! 324: 316 00000d37 * .text ! 325: 317 00015232 dd 8f00000d2a pushl $L265 ! 326: 318 00015238 fe 08 effffffd61 callf $8,_writes ! 327: 319 0001523F # writed( test_no ); ! 328: 320 0001523F dd effffffd5b pushl _test_no ! 329: 321 00015245 fe 08 effffffd54 callf $8,_writed ! 330: 322 0001524C # writes( ! 331: 323 0001524C # ", subtest 2 (Cache Data) - WRONG DATA STORED\n"); ! 332: 324 0001524C .data 1 ! 333: 325 00000d37 * L266: ! 334: 326 00000d37 * 2C20737562746573742032202 .ascii ", subtest 2 (Cache Data) - WRONG DATA STORED\12\0" ! 335: 8436163686520446174612920 ! 336: 2D2057524F4E4720444154412 ! 337: 053544F5245440A00 ! 338: 327 00000d65 * .text ! 339: 328 0001524C dd 8f00000d37 pushl $L266 ! 340: 329 00015252 fe 08 effffffd47 callf $8,_writes ! 341: 330 00015259 # print_cvfl_data(); ! 342: 331 00015259 fe 04 ef000008d4 callf $4,_print_cvfl_data ! 343: 332 00015260 # writes(", data index = "); ! 344: 333 00015260 .data 1 ! 345: 334 00000d65 * L267: ! 346: 335 00000d65 * 2C2020206461746120696E646 .ascii ", data index = \0" ! 347: 578203D2000 ! 348: 336 00000d77 * .text ! 349: 337 00015260 dd 8f00000d65 pushl $L267 ! 350: 338 00015266 fe 08 effffffd33 callf $8,_writes ! 351: 339 0001526D # writed( index ); ! 352: 340 0001526D dd effffffd2d pushl _index ! 353: 341 00015273 fe 08 effffffd26 callf $8,_writed ! 354: 342 0001527A # writec('\n'); ! 355: 343 0001527A dd 0a pushl $10 ! 356: 344 0001527C fe 08 effffffd1d callf $8,_writec ! 357: 345 00015283 # writes(" final Acc = "); ! 358: 346 00015283 .data 1 ! 359: 347 00000d77 * L268: ! 360: 348 00000d77 * 202066696E616C20416363203 .ascii " final Acc = \0" ! 361: D2000 ! 362: 349 00000d86 * .text ! 363: 350 00015283 dd 8f00000d77 pushl $L268 ! 364: 351 00015289 fe 08 effffffd10 callf $8,_writes ! 365: 352 00015290 # write32h( sgl_value_1 ); ! 366: 353 00015290 dd effffffd0a pushl _sgl_value_1 ! 367: 354 00015296 fe 08 effffffd03 callf $8,_write32h ! 368: 355 0001529D # writes(", int. expected = "); ! 369: 356 0001529D .data 1 ! 370: 357 00000d86 * L269: ! 371: 358 00000d86 * 2C20696E742E2065787065637 .ascii ", int. expected = \0" ! 372: 46564203D2000 ! 373: 359 00000d99 * .text ! 374: 360 0001529D dd 8f00000d86 pushl $L269 ! 375: 361 000152A3 fe 08 effffffcf6 callf $8,_writes ! 376: 362 000152AA # write32h( sgl_expected ); ! 377: 363 000152AA dd effffffcf0 pushl _sgl_expected ! 378: 364 000152B0 fe 08 effffffce9 callf $8,_write32h ! 379: 365 000152B7 # writec('\n'); ! 380: 366 000152B7 dd 0a pushl $10 ! 381: 367 000152B9 fe 08 effffffce0 callf $8,_writec ! 382: 368 000152C0 # } ! 383: 369 000152C0 # if( halt_flg ) ! 384: 370 000152C0 L262: ! 385: 371 000152C0 5d effffffcda tstl _halt_flg ! 386: 372 000152C6 31 09 jeql L270 ! 387: 373 000152C8 # cvfl_er_halt( BAD_STORE_HLT ); /* halt on the error */ ! 388: 374 000152C8 dd 09 pushl $9 ! 389: 375 000152CA fe 08 ef0000089f callf $8,_cvfl_er_halt ! 390: 376 000152D1 # if( loop_on_err ) { ! 391: 377 000152D1 L270: ! 392: 378 000152D1 5d effffffcc9 tstl _loop_on_err ! 393: 379 000152D7 31 0a jeql L271 ! 394: 380 000152D9 # force_loop = TRUE; /* set the force loop flag */ ! 395: 381 000152D9 0d 01 effffffcc0 movl $1,_force_loop ! 396: 382 000152E0 # asm("brw _cvfl_1_lp1");; /* and loop on the error */ ! 397: 383 000152E0 13 fd6f brw _cvfl_1_lp1 ! 398: 384 000152E3 # } /* end of loop on error */ ! 399: 385 000152E3 # } /* end of compare error */ ! 400: 386 000152E3 L271: ! 401: 387 000152E3 # } /* end of WHILE loop */ ! 402: 388 000152E3 L261: ! 403: 389 000152E3 L257: ! 404: 390 000152E3 6d effffffcb7 incl _index ! 405: 391 000152E9 13 fea6 jbr L259 ! 406: 392 000152EC L258: ! 407: 393 000152EC # } /* end of subtest 2 */ ! 408: 394 000152EC 40 ret#2 ! 409: 395 000152ED .set L253,0x0 ! 410: 396 000152ED L255: ! 411: 397 000152ED 13 fe8f jbr L256 ! 412: 398 000152F0 .data ! 413: 399 00000ca0 * .text ! 414: 400 000152F0 .align 1 ! 415: 401 000152F0 .globl _cvfl_3 ! 416: 402 000152F0 _cvfl_3: ! 417: 403 000152F0 0000 .word L272 ! 418: 404 000152F2 # ! 419: 405 000152F2 # ! 420: 406 000152F2 # ! 421: 407 000152F2 # /************************************************************************ ! 422: 408 000152F2 # * ! 423: 409 000152F2 # * SUBTEST 3 - Check for register corruption ! 424: 410 000152F2 # * ! 425: 411 000152F2 # ************************************************************************/ ! 426: 412 000152F2 # cvfl_3() ! 427: 413 000152F2 # { ! 428: 414 000152F2 13 01d0 jbr L274 ! 429: 415 000152F5 L275: ! 430: 416 000152F5 # force_loop = FALSE; /* clear force_loop flg */ ! 431: 417 000152F5 4d effffffca5 clrl _force_loop ! 432: 418 000152FB # subtest = 3; ! 433: 419 000152FB 0d 03 effffffc9e movl $3,_subtest ! 434: 420 00015302 # fill_reg_buf( load_regs ); /* get patterns for regs */ ! 435: 421 00015302 dd 8f00000000 pushl $_load_regs ! 436: 422 00015308 fe 08 effffffc91 callf $8,_fill_reg_buf ! 437: 423 0001530F # index = 0; ! 438: 424 0001530F 4d effffffc8b clrl _index ! 439: 425 00015315 # sgl_ld_acc = cvfl_1_data[0].ld; /* get value to convert */ ! 440: 426 00015315 0d effffffc85 effffffc80 movl _cvfl_1_data,_sgl_ld_acc ! 441: 427 00015320 # sgl_expected = cvfl_1_data[0].exp; /* get expected result */ ! 442: 428 00015320 0d effffffc7e effffffc75 movl _cvfl_1_data+4,_sgl_expected ! 443: 429 0001532B # /* ! 444: 430 0001532B # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 445: 431 0001532B # * The force loop flag is set after the first error. ! 446: 432 0001532B # */ ! 447: 433 0001532B # asm("_cvfl_3_lp1:"); ! 448: 434 0001532B _cvfl_3_lp1: ! 449: 435 0001532B # asm("ldf _sgl_ld_acc"); /* load base value */ ! 450: 436 0001532B 06 effffffc6f ldf _sgl_ld_acc ! 451: 437 00015331 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */ ! 452: 438 00015331 ab 891fff effffffc66 loadr $0x1fff,_load_regs ! 453: 439 0001533A # asm("nop"); ! 454: 440 0001533A 10 nop ! 455: 441 0001533B # asm("cvfl _sgl_value_1"); /* convert the value */ ! 456: 442 0001533B 86 effffffc5f cvfl _sgl_value_1 ! 457: 443 00015341 # asm("nop"); ! 458: 444 00015341 10 nop ! 459: 445 00015342 # asm("stf _sgl_st_acc"); /* store the result */ ! 460: 446 00015342 26 effffffc58 stf _sgl_st_acc ! 461: 447 00015348 # asm("nop"); ! 462: 448 00015348 10 nop ! 463: 449 00015349 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */ ! 464: 450 00015349 bb 891fff effffffc4e storer $0x1fff,_store_regs ! 465: 451 00015352 # if( force_loop ) ! 466: 452 00015352 5d effffffc48 tstl _force_loop ! 467: 453 00015358 31 02 jeql L277 ! 468: 454 0001535A # asm("brb _cvfl_3_lp1");; /* loop on the error */ ! 469: 455 0001535A 11 cf brb _cvfl_3_lp1 ! 470: 456 0001535C L277: ! 471: 457 0001535C # /* ! 472: 458 0001535C # * Now compare the stored register values to those that were loaded ! 473: 459 0001535C # */ ! 474: 460 0001535C # index2 = 0; ! 475: 461 0001535C 4d effffffc3e clrl _index2 ! 476: 462 00015362 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) ) ! 477: 463 00015362 L278: ! 478: 464 00015362 0d effffffc38 50 movl _index2,r0 ! 479: 465 00015369 0d effffffc31 51 movl _index2,r1 ! 480: 466 00015370 1d 40effffffc29 cmpl _load_regs[r0],_store_regs[r1] ! 481: 41effffffc23 ! 482: 467 0001537D 21 11 jneq L279 ! 483: 468 0001537F 1d effffffc1b 0d cmpl _index2,$13 ! 484: 469 00015386 81 08 jgeq L279 ! 485: 470 00015388 # index2++; /* check reg values */ ! 486: 471 00015388 6d effffffc12 incl _index2 ! 487: 472 0001538E 11 d2 jbr L278 ! 488: 473 00015390 L279: ! 489: 474 00015390 # if( index2 < 13 ) { /* error if index2 < 13 */ ! 490: 475 00015390 1d effffffc0a 0d cmpl _index2,$13 ! 491: 476 00015397 91 03 13 0128 jgeq L280 ! 492: 477 0001539C # errcnt++; /* bump the error count */ ! 493: 478 0001539C 6d effffffbfe incl _errcnt ! 494: 479 000153A2 # if( prt_error ) { ! 495: 480 000153A2 5d effffffbf8 tstl _prt_error ! 496: 481 000153A8 21 03 13 00f4 jeql L281 ! 497: 482 000153AD # writes(" \n"); /* start a new print line */ ! 498: 483 000153AD .data 1 ! 499: 484 00000d99 * L282: ! 500: 485 00000d99 * 200A00 .ascii " \12\0" ! 501: 486 00000d9c * .text ! 502: 487 000153AD dd 8f00000d99 pushl $L282 ! 503: 488 000153B3 fe 08 effffffbe6 callf $8,_writes ! 504: 489 000153BA # writes("cycle: "); ! 505: 490 000153BA .data 1 ! 506: 491 00000d9c * L283: ! 507: 492 00000d9c * 6379636C653A2000 .ascii "cycle: \0" ! 508: 493 00000da4 * .text ! 509: 494 000153BA dd 8f00000d9c pushl $L283 ! 510: 495 000153C0 fe 08 effffffbd9 callf $8,_writes ! 511: 496 000153C7 # writed( cycle ); ! 512: 497 000153C7 dd effffffbd3 pushl _cycle ! 513: 498 000153CD fe 08 effffffbcc callf $8,_writed ! 514: 499 000153D4 # writes(" CVFL test "); ! 515: 500 000153D4 .data 1 ! 516: 501 00000da4 * L284: ! 517: 502 00000da4 * 20204356464C2074657374200 .ascii " CVFL test \0" ! 518: 0 ! 519: 503 00000db1 * .text ! 520: 504 000153D4 dd 8f00000da4 pushl $L284 ! 521: 505 000153DA fe 08 effffffbbf callf $8,_writes ! 522: 506 000153E1 # writed( test_no ); ! 523: 507 000153E1 dd effffffbb9 pushl _test_no ! 524: 508 000153E7 fe 08 effffffbb2 callf $8,_writed ! 525: 509 000153EE # writes(", subtest 3 - A REGISTER WAS MODIFIED\n"); ! 526: 510 000153EE .data 1 ! 527: 511 00000db1 * L285: ! 528: 512 00000db1 * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS MODIFIED\12\0" ! 529: D204120524547495354455220 ! 530: 574153204D4F4449464945440 ! 531: A00 ! 532: 513 00000dd8 * .text ! 533: 514 000153EE dd 8f00000db1 pushl $L285 ! 534: 515 000153F4 fe 08 effffffba5 callf $8,_writes ! 535: 516 000153FB # print_cvfl_data(); /* print the operands */ ! 536: 517 000153FB fe 04 ef00000732 callf $4,_print_cvfl_data ! 537: 518 00015402 # writes("\n"); ! 538: 519 00015402 .data 1 ! 539: 520 00000dd8 * L286: ! 540: 521 00000dd8 * 0A00 .ascii "\12\0" ! 541: 522 00000dda * .text ! 542: 523 00015402 dd 8f00000dd8 pushl $L286 ! 543: 524 00015408 fe 08 effffffb91 callf $8,_writes ! 544: 525 0001540F # writes(" final Acc = "); /* print the information */ ! 545: 526 0001540F .data 1 ! 546: 527 00000dda * L287: ! 547: 528 00000dda * 202066696E616C20416363203 .ascii " final Acc = \0" ! 548: D2000 ! 549: 529 00000de9 * .text ! 550: 530 0001540F dd 8f00000dda pushl $L287 ! 551: 531 00015415 fe 08 effffffb84 callf $8,_writes ! 552: 532 0001541C # write32h( sgl_value_1 ); ! 553: 533 0001541C dd effffffb7e pushl _sgl_value_1 ! 554: 534 00015422 fe 08 effffffb77 callf $8,_write32h ! 555: 535 00015429 # writes("\n"); ! 556: 536 00015429 .data 1 ! 557: 537 00000de9 * L288: ! 558: 538 00000de9 * 0A00 .ascii "\12\0" ! 559: 539 00000deb * .text ! 560: 540 00015429 dd 8f00000de9 pushl $L288 ! 561: 541 0001542F fe 08 effffffb6a callf $8,_writes ! 562: 542 00015436 # writes("register "); ! 563: 543 00015436 .data 1 ! 564: 544 00000deb * L289: ! 565: 545 00000deb * 72656769737465722000 .ascii "register \0" ! 566: 546 00000df5 * .text ! 567: 547 00015436 dd 8f00000deb pushl $L289 ! 568: 548 0001543C fe 08 effffffb5d callf $8,_writes ! 569: 549 00015443 # writed( index2 ); /* about the corrupted */ ! 570: 550 00015443 dd effffffb57 pushl _index2 ! 571: 551 00015449 fe 08 effffffb50 callf $8,_writed ! 572: 552 00015450 # writes(" = "); /* register */ ! 573: 553 00015450 .data 1 ! 574: 554 00000df5 * L290: ! 575: 555 00000df5 * 203D2000 .ascii " = \0" ! 576: 556 00000df9 * .text ! 577: 557 00015450 dd 8f00000df5 pushl $L290 ! 578: 558 00015456 fe 08 effffffb43 callf $8,_writes ! 579: 559 0001545D # write32h( store_regs[index2] ); ! 580: 560 0001545D 0d effffffb3d 50 movl _index2,r0 ! 581: 561 00015464 dd 40effffffb35 pushl _store_regs[r0] ! 582: 562 0001546B fe 08 effffffb2e callf $8,_write32h ! 583: 563 00015472 # writes(", should be = "); ! 584: 564 00015472 .data 1 ! 585: 565 00000df9 * L291: ! 586: 566 00000df9 * 2C202073686F756C642062652 .ascii ", should be = \0" ! 587: 03D2000 ! 588: 567 00000e09 * .text ! 589: 568 00015472 dd 8f00000df9 pushl $L291 ! 590: 569 00015478 fe 08 effffffb21 callf $8,_writes ! 591: 570 0001547F # write32h( load_regs[index2] ); ! 592: 571 0001547F 0d effffffb1b 50 movl _index2,r0 ! 593: 572 00015486 dd 40effffffb13 pushl _load_regs[r0] ! 594: 573 0001548D fe 08 effffffb0c callf $8,_write32h ! 595: 574 00015494 # writes("\n"); ! 596: 575 00015494 .data 1 ! 597: 576 00000e09 * L292: ! 598: 577 00000e09 * 0A00 .ascii "\12\0" ! 599: 578 00000e0b * .text ! 600: 579 00015494 dd 8f00000e09 pushl $L292 ! 601: 580 0001549A fe 08 effffffaff callf $8,_writes ! 602: 581 000154A1 # } ! 603: 582 000154A1 # if( halt_flg ) ! 604: 583 000154A1 L281: ! 605: 584 000154A1 5d effffffaf9 tstl _halt_flg ! 606: 585 000154A7 31 09 jeql L293 ! 607: 586 000154A9 # cvfl_er_halt( BAD_REG_HLT ); /* halt on the error */ ! 608: 587 000154A9 dd 02 pushl $2 ! 609: 588 000154AB fe 08 ef000006be callf $8,_cvfl_er_halt ! 610: 589 000154B2 # if( loop_on_err ) { ! 611: 590 000154B2 L293: ! 612: 591 000154B2 5d effffffae8 tstl _loop_on_err ! 613: 592 000154B8 31 0a jeql L294 ! 614: 593 000154BA # force_loop = TRUE; /* set the force loop flag */ ! 615: 594 000154BA 0d 01 effffffadf movl $1,_force_loop ! 616: 595 000154C1 # asm("brw _cvfl_3_lp1");; /* and loop on the error */ ! 617: 596 000154C1 13 fe67 brw _cvfl_3_lp1 ! 618: 597 000154C4 # } /* end of loop on error */ ! 619: 598 000154C4 # } /* end of register corruption error */ ! 620: 599 000154C4 L294: ! 621: 600 000154C4 # } /* end of subtest 3 */ ! 622: 601 000154C4 L280: ! 623: 602 000154C4 40 ret#2 ! 624: 603 000154C5 .set L272,0x0 ! 625: 604 000154C5 L274: ! 626: 605 000154C5 13 fe2d jbr L275 ! 627: 606 000154C8 .data ! 628: 607 00000ca0 * .text ! 629: 608 000154C8 .align 1 ! 630: 609 000154C8 .globl _cvfl_4 ! 631: 610 000154C8 _cvfl_4: ! 632: 611 000154C8 0000 .word L295 ! 633: 612 000154CA # ! 634: 613 000154CA # ! 635: 614 000154CA # ! 636: 615 000154CA # /************************************************************************ ! 637: 616 000154CA # * ! 638: 617 000154CA # * SUBTEST 4 - Check for PSL corruption ! 639: 618 000154CA # * ! 640: 619 000154CA # ************************************************************************/ ! 641: 620 000154CA # cvfl_4() ! 642: 621 000154CA # { ! 643: 622 000154CA 13 0217 jbr L297 ! 644: 623 000154CD L298: ! 645: 624 000154CD # force_loop = FALSE; /* clear force_loop flg */ ! 646: 625 000154CD 4d effffffacd clrl _force_loop ! 647: 626 000154D3 # subtest = 4; ! 648: 627 000154D3 0d 04 effffffac6 movl $4,_subtest ! 649: 628 000154DA # for( index = 0; index < max_cvfl_1_index; index++ ) { ! 650: 629 000154DA 4d effffffac0 clrl _index ! 651: 630 000154E0 L301: ! 652: 631 000154E0 1d effffffaba effffffab5 cmpl _index,_max_cvfl_1_index ! 653: 632 000154EB 91 03 13 01f3 jgeq L300 ! 654: 633 000154F0 # sgl_ld_acc = cvfl_1_data[index].ld; /* get value to convert */ ! 655: 634 000154F0 0d effffffaaa 50 movl _index,r0 ! 656: 635 000154F7 48 03 50 50 shll $3,r0,r0 ! 657: 636 000154FB 0d e000000000 effffffa9a movl _cvfl_1_data(r0),_sgl_ld_acc ! 658: 637 00015506 # sgl_expected = cvfl_1_data[index].exp; /* get expected */ ! 659: 638 00015506 0d effffffa94 50 movl _index,r0 ! 660: 639 0001550D 48 03 50 50 shll $3,r0,r0 ! 661: 640 00015511 0d e000000004 effffffa84 movl _cvfl_1_data+4(r0),_sgl_expected ! 662: 641 0001551C # for( status_index = 0; status_index < 3; status_index++ ) { ! 663: 642 0001551C 4d effffffa7e clrl _status_index ! 664: 643 00015522 L304: ! 665: 644 00015522 1d effffffa78 03 cmpl _status_index,$3 ! 666: 645 00015529 91 03 13 01ac jgeq L303 ! 667: 646 0001552E # sgl_dummy1 = status_array[status_index];/* status = +, -, 0 */ ! 668: 647 0001552E 0d effffffa6c 50 movl _status_index,r0 ! 669: 648 00015535 0d 40effffffa64 movl _status_array[r0],_sgl_dummy1 ! 670: effffffa5f ! 671: 649 00015541 # /* ! 672: 650 00015541 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 673: 651 00015541 # * The force loop flag is set after the first error. ! 674: 652 00015541 # */ ! 675: 653 00015541 # asm("_cvfl_4_lp1:"); ! 676: 654 00015541 _cvfl_4_lp1: ! 677: 655 00015541 # asm("movl _sgl_ld_acc,r4"); /* move operand to r4 */ ! 678: 656 00015541 0d effffffa59 54 movl _sgl_ld_acc,r4 ! 679: 657 00015548 # asm("ldf r4"); /* load the operand */ ! 680: 658 00015548 06 54 ldf r4 ! 681: 659 0001554A # asm("tstl _sgl_dummy1"); /* set the PSL status */ ! 682: 660 0001554A 5d effffffa50 tstl _sgl_dummy1 ! 683: 661 00015550 # asm("movpsl _init_psl"); /* save the initial PSL */ ! 684: 662 00015550 cd effffffa4a movpsl _init_psl ! 685: 663 00015556 # asm("nop"); ! 686: 664 00015556 10 nop ! 687: 665 00015557 # asm("cvfl r8"); /* convert the value */ ! 688: 666 00015557 86 58 cvfl r8 ! 689: 667 00015559 # asm("nop"); ! 690: 668 00015559 10 nop ! 691: 669 0001555A # asm("movpsl _psl_val"); /* save the final PSL */ ! 692: 670 0001555A cd effffffa40 movpsl _psl_val ! 693: 671 00015560 # asm("nop"); ! 694: 672 00015560 10 nop ! 695: 673 00015561 # asm("stf _sgl_st_acc"); /* store the result */ ! 696: 674 00015561 26 effffffa39 stf _sgl_st_acc ! 697: 675 00015567 # if( force_loop ) ! 698: 676 00015567 5d effffffa33 tstl _force_loop ! 699: 677 0001556D 31 02 jeql L305 ! 700: 678 0001556F # asm("brb _cvfl_4_lp1");; /* loop on the error */ ! 701: 679 0001556F 11 d0 brb _cvfl_4_lp1 ! 702: 680 00015571 L305: ! 703: 681 00015571 # /* ! 704: 682 00015571 # * Now compare the final PSL to the initial PSL -they should be the same ! 705: 683 00015571 # */ ! 706: 684 00015571 # asm("movl r8,_sgl_value_1"); /* save the converted int*/ ! 707: 685 00015571 0d 58 effffffa28 movl r8,_sgl_value_1 ! 708: 686 00015578 # exp_psl = init_psl; ! 709: 687 00015578 0d effffffa22 effffffa1d movl _init_psl,_exp_psl ! 710: 688 00015583 # exp_psl &= 0xfffffff3; /* clear ZERO, NEGATIVE */ ! 711: 689 00015583 ac 88f3 effffffa15 andl2 $-13,_exp_psl ! 712: 690 0001558B # if( !sgl_expected ) ! 713: 691 0001558B 5d effffffa0f tstl _sgl_expected ! 714: 692 00015591 21 07 jneq L306 ! 715: 693 00015593 # exp_psl |= PSL_Z; /* expect the ZERO bit set */ ! 716: 694 00015593 8c 04 effffffa06 orl2 $4,_exp_psl ! 717: 695 0001559A # if( sgl_expected < 0 ) ! 718: 696 0001559A L306: ! 719: 697 0001559A 5d effffffa00 tstl _sgl_expected ! 720: 698 000155A0 81 07 jgeq L307 ! 721: 699 000155A2 # exp_psl |= PSL_N; /* expect the NEG bit set */ ! 722: 700 000155A2 8c 08 effffff9f7 orl2 $8,_exp_psl ! 723: 701 000155A9 # if( psl_val != exp_psl ) { ! 724: 702 000155A9 L307: ! 725: 703 000155A9 1d effffff9f1 effffff9ec cmpl _psl_val,_exp_psl ! 726: 704 000155B4 21 03 13 0118 jeql L308 ! 727: 705 000155B9 # errcnt++; /* bump the error count */ ! 728: 706 000155B9 6d effffff9e1 incl _errcnt ! 729: 707 000155BF # if( prt_error ) { ! 730: 708 000155BF 5d effffff9db tstl _prt_error ! 731: 709 000155C5 21 03 13 00e4 jeql L309 ! 732: 710 000155CA # writes(" \n"); /* start a new print line */ ! 733: 711 000155CA .data 1 ! 734: 712 00000e0b * L310: ! 735: 713 00000e0b * 200A00 .ascii " \12\0" ! 736: 714 00000e0e * .text ! 737: 715 000155CA dd 8f00000e0b pushl $L310 ! 738: 716 000155D0 fe 08 effffff9c9 callf $8,_writes ! 739: 717 000155D7 # writes("cycle: "); ! 740: 718 000155D7 .data 1 ! 741: 719 00000e0e * L311: ! 742: 720 00000e0e * 6379636C653A2000 .ascii "cycle: \0" ! 743: 721 00000e16 * .text ! 744: 722 000155D7 dd 8f00000e0e pushl $L311 ! 745: 723 000155DD fe 08 effffff9bc callf $8,_writes ! 746: 724 000155E4 # writed( cycle ); ! 747: 725 000155E4 dd effffff9b6 pushl _cycle ! 748: 726 000155EA fe 08 effffff9af callf $8,_writed ! 749: 727 000155F1 # writes(" CVFL test "); ! 750: 728 000155F1 .data 1 ! 751: 729 00000e16 * L312: ! 752: 730 00000e16 * 20204356464C2074657374200 .ascii " CVFL test \0" ! 753: 0 ! 754: 731 00000e23 * .text ! 755: 732 000155F1 dd 8f00000e16 pushl $L312 ! 756: 733 000155F7 fe 08 effffff9a2 callf $8,_writes ! 757: 734 000155FE # writed( test_no ); ! 758: 735 000155FE dd effffff99c pushl _test_no ! 759: 736 00015604 fe 08 effffff995 callf $8,_writed ! 760: 737 0001560B # writes(", subtest 4 - INCORRECT FINAL PSL\n"); ! 761: 738 0001560B .data 1 ! 762: 739 00000e23 * L313: ! 763: 740 00000e23 * 2C20737562746573742034202 .ascii ", subtest 4 - INCORRECT FINAL PSL\12\0" ! 764: D20494E434F52524543542046 ! 765: 494E414C2050534C0A00 ! 766: 741 00000e46 * .text ! 767: 742 0001560B dd 8f00000e23 pushl $L313 ! 768: 743 00015611 fe 08 effffff988 callf $8,_writes ! 769: 744 00015618 # print_cvfl_data(); /* print operands */ ! 770: 745 00015618 fe 04 ef00000515 callf $4,_print_cvfl_data ! 771: 746 0001561F # writes("\n"); ! 772: 747 0001561F .data 1 ! 773: 748 00000e46 * L314: ! 774: 749 00000e46 * 0A00 .ascii "\12\0" ! 775: 750 00000e48 * .text ! 776: 751 0001561F dd 8f00000e46 pushl $L314 ! 777: 752 00015625 fe 08 effffff974 callf $8,_writes ! 778: 753 0001562C # writes(" final Acc = "); ! 779: 754 0001562C .data 1 ! 780: 755 00000e48 * L315: ! 781: 756 00000e48 * 202066696E616C20416363203 .ascii " final Acc = \0" ! 782: D2000 ! 783: 757 00000e57 * .text ! 784: 758 0001562C dd 8f00000e48 pushl $L315 ! 785: 759 00015632 fe 08 effffff967 callf $8,_writes ! 786: 760 00015639 # write32h( sgl_st_acc ); ! 787: 761 00015639 dd effffff961 pushl _sgl_st_acc ! 788: 762 0001563F fe 08 effffff95a callf $8,_write32h ! 789: 763 00015646 # writes("\n"); ! 790: 764 00015646 .data 1 ! 791: 765 00000e57 * L316: ! 792: 766 00000e57 * 0A00 .ascii "\12\0" ! 793: 767 00000e59 * .text ! 794: 768 00015646 dd 8f00000e57 pushl $L316 ! 795: 769 0001564C fe 08 effffff94d callf $8,_writes ! 796: 770 00015653 # writes("initial PSL = "); ! 797: 771 00015653 .data 1 ! 798: 772 00000e59 * L317: ! 799: 773 00000e59 * 696E697469616C2050534C203 .ascii "initial PSL = \0" ! 800: D2000 ! 801: 774 00000e68 * .text ! 802: 775 00015653 dd 8f00000e59 pushl $L317 ! 803: 776 00015659 fe 08 effffff940 callf $8,_writes ! 804: 777 00015660 # write32h( init_psl ); ! 805: 778 00015660 dd effffff93a pushl _init_psl ! 806: 779 00015666 fe 08 effffff933 callf $8,_write32h ! 807: 780 0001566D # writes(", final PSL = "); ! 808: 781 0001566D .data 1 ! 809: 782 00000e68 * L318: ! 810: 783 00000e68 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0" ! 811: 03D2000 ! 812: 784 00000e78 * .text ! 813: 785 0001566D dd 8f00000e68 pushl $L318 ! 814: 786 00015673 fe 08 effffff926 callf $8,_writes ! 815: 787 0001567A # write32h( psl_val ); ! 816: 788 0001567A dd effffff920 pushl _psl_val ! 817: 789 00015680 fe 08 effffff919 callf $8,_write32h ! 818: 790 00015687 # writes(", expected PSL = "); ! 819: 791 00015687 .data 1 ! 820: 792 00000e78 * L319: ! 821: 793 00000e78 * 2C20206578706563746564205 .ascii ", expected PSL = \0" ! 822: 0534C203D2000 ! 823: 794 00000e8b * .text ! 824: 795 00015687 dd 8f00000e78 pushl $L319 ! 825: 796 0001568D fe 08 effffff90c callf $8,_writes ! 826: 797 00015694 # write32h( exp_psl ); ! 827: 798 00015694 dd effffff906 pushl _exp_psl ! 828: 799 0001569A fe 08 effffff8ff callf $8,_write32h ! 829: 800 000156A1 # writes("\n"); ! 830: 801 000156A1 .data 1 ! 831: 802 00000e8b * L320: ! 832: 803 00000e8b * 0A00 .ascii "\12\0" ! 833: 804 00000e8d * .text ! 834: 805 000156A1 dd 8f00000e8b pushl $L320 ! 835: 806 000156A7 fe 08 effffff8f2 callf $8,_writes ! 836: 807 000156AE # } ! 837: 808 000156AE # if( halt_flg ) ! 838: 809 000156AE L309: ! 839: 810 000156AE 5d effffff8ec tstl _halt_flg ! 840: 811 000156B4 31 09 jeql L321 ! 841: 812 000156B6 # cvfl_er_halt( BAD_PSL_HLT ); /* halt on error */ ! 842: 813 000156B6 dd 03 pushl $3 ! 843: 814 000156B8 fe 08 ef000004b1 callf $8,_cvfl_er_halt ! 844: 815 000156BF # if( loop_on_err ) { ! 845: 816 000156BF L321: ! 846: 817 000156BF 5d effffff8db tstl _loop_on_err ! 847: 818 000156C5 31 0a jeql L322 ! 848: 819 000156C7 # force_loop = TRUE; /* set force loop flag */ ! 849: 820 000156C7 0d 01 effffff8d2 movl $1,_force_loop ! 850: 821 000156CE # asm("brw _cvfl_4_lp1");;/* and loop on error */ ! 851: 822 000156CE 13 fe70 brw _cvfl_4_lp1 ! 852: 823 000156D1 # } /* end of loop on error */ ! 853: 824 000156D1 # } /* end of PSL corruption error */ ! 854: 825 000156D1 L322: ! 855: 826 000156D1 # } /* end of status WHILE loop */ ! 856: 827 000156D1 L308: ! 857: 828 000156D1 L302: ! 858: 829 000156D1 6d effffff8c9 incl _status_index ! 859: 830 000156D7 13 fe48 jbr L304 ! 860: 831 000156DA L303: ! 861: 832 000156DA # } /* end of data WHILE loop */ ! 862: 833 000156DA L299: ! 863: 834 000156DA 6d effffff8c0 incl _index ! 864: 835 000156E0 13 fdfd jbr L301 ! 865: 836 000156E3 L300: ! 866: 837 000156E3 # } /* end of subtest 4 */ ! 867: 838 000156E3 40 ret#2 ! 868: 839 000156E4 .set L295,0x0 ! 869: 840 000156E4 L297: ! 870: 841 000156E4 13 fde6 jbr L298 ! 871: 842 000156E7 .data ! 872: 843 00000ca0 * .text ! 873: 844 000156E7 00 .align 1 ! 874: 845 000156E8 .globl _cvfl_5 ! 875: 846 000156E8 _cvfl_5: ! 876: 847 000156E8 0000 .word L323 ! 877: 848 000156EA # ! 878: 849 000156EA # ! 879: 850 000156EA # ! 880: 851 000156EA # /************************************************************************ ! 881: 852 000156EA # * ! 882: 853 000156EA # * SUBTEST 5 - accumulator corruption ! 883: 854 000156EA # * ! 884: 855 000156EA # ************************************************************************/ ! 885: 856 000156EA # cvfl_5() ! 886: 857 000156EA # { ! 887: 858 000156EA 13 015e jbr L325 ! 888: 859 000156ED L326: ! 889: 860 000156ED # force_loop = FALSE; ! 890: 861 000156ED 4d effffff8ad clrl _force_loop ! 891: 862 000156F3 # subtest = 5; ! 892: 863 000156F3 0d 05 effffff8a6 movl $5,_subtest ! 893: 864 000156FA # for( index = 0; index < max_cvfl_1_index; index++ ) { ! 894: 865 000156FA 4d effffff8a0 clrl _index ! 895: 866 00015700 L329: ! 896: 867 00015700 1d effffff89a effffff895 cmpl _index,_max_cvfl_1_index ! 897: 868 0001570B 91 03 13 013a jgeq L328 ! 898: 869 00015710 # sgl_ld_acc = cvfl_1_data[index].ld; /* get value to convert */ ! 899: 870 00015710 0d effffff88a 50 movl _index,r0 ! 900: 871 00015717 48 03 50 50 shll $3,r0,r0 ! 901: 872 0001571B 0d e000000000 effffff87a movl _cvfl_1_data(r0),_sgl_ld_acc ! 902: 873 00015726 # if( sgl_ld_acc & 0x7f800000 ) ! 903: 874 00015726 3d 8f7f800000 effffff86f bitl $2139095040,_sgl_ld_acc ! 904: 875 00015731 31 0d jeql L330 ! 905: 876 00015733 # sgl_expected = sgl_ld_acc; ! 906: 877 00015733 0d effffff867 effffff862 movl _sgl_ld_acc,_sgl_expected ! 907: 878 0001573E # else ! 908: 879 0001573E 11 06 jbr L331 ! 909: 880 00015740 L330: ! 910: 881 00015740 # sgl_expected = 0; ! 911: 882 00015740 4d effffff85a clrl _sgl_expected ! 912: 883 00015746 L331: ! 913: 884 00015746 # /* ! 914: 885 00015746 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 915: 886 00015746 # * The force loop flag is set after the first error. ! 916: 887 00015746 # */ ! 917: 888 00015746 # asm("_cvfl_5_lp1:"); ! 918: 889 00015746 _cvfl_5_lp1: ! 919: 890 00015746 # asm("ldf _sgl_ld_acc"); /* load the base value */ ! 920: 891 00015746 06 effffff854 ldf _sgl_ld_acc ! 921: 892 0001574C # asm("cvfl _sgl_value_1"); /* store the result */ ! 922: 893 0001574C 86 effffff84e cvfl _sgl_value_1 ! 923: 894 00015752 # asm("stf _sgl_st_acc"); /* store the result */ ! 924: 895 00015752 26 effffff848 stf _sgl_st_acc ! 925: 896 00015758 # if( force_loop ) ! 926: 897 00015758 5d effffff842 tstl _force_loop ! 927: 898 0001575E 31 02 jeql L332 ! 928: 899 00015760 # asm("brb _cvfl_5_lp1");; /* loop on the error */ ! 929: 900 00015760 11 e4 brb _cvfl_5_lp1 ! 930: 901 00015762 L332: ! 931: 902 00015762 # /* ! 932: 903 00015762 # * end error loop - test the results ! 933: 904 00015762 # */ ! 934: 905 00015762 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */ ! 935: 906 00015762 1d effffff838 effffff833 cmpl _sgl_st_acc,_sgl_expected ! 936: 907 0001576D 21 03 13 00cf jeql L333 ! 937: 908 00015772 # errcnt++; /* bump the error count */ ! 938: 909 00015772 6d effffff828 incl _errcnt ! 939: 910 00015778 # if( prt_error ) { ! 940: 911 00015778 5d effffff822 tstl _prt_error ! 941: 912 0001577E 21 03 13 009b jeql L334 ! 942: 913 00015783 # writes(" \n"); /* start a new print line */ ! 943: 914 00015783 .data 1 ! 944: 915 00000e8d * L335: ! 945: 916 00000e8d * 200A00 .ascii " \12\0" ! 946: 917 00000e90 * .text ! 947: 918 00015783 dd 8f00000e8d pushl $L335 ! 948: 919 00015789 fe 08 effffff810 callf $8,_writes ! 949: 920 00015790 # writes("cycle: "); ! 950: 921 00015790 .data 1 ! 951: 922 00000e90 * L336: ! 952: 923 00000e90 * 6379636C653A2000 .ascii "cycle: \0" ! 953: 924 00000e98 * .text ! 954: 925 00015790 dd 8f00000e90 pushl $L336 ! 955: 926 00015796 fe 08 effffff803 callf $8,_writes ! 956: 927 0001579D # writed( cycle ); ! 957: 928 0001579D dd effffff7fd pushl _cycle ! 958: 929 000157A3 fe 08 effffff7f6 callf $8,_writed ! 959: 930 000157AA # writes(" CVFL test "); ! 960: 931 000157AA .data 1 ! 961: 932 00000e98 * L337: ! 962: 933 00000e98 * 20204356464C2074657374200 .ascii " CVFL test \0" ! 963: 0 ! 964: 934 00000ea5 * .text ! 965: 935 000157AA dd 8f00000e98 pushl $L337 ! 966: 936 000157B0 fe 08 effffff7e9 callf $8,_writes ! 967: 937 000157B7 # writed( test_no ); ! 968: 938 000157B7 dd effffff7e3 pushl _test_no ! 969: 939 000157BD fe 08 effffff7dc callf $8,_writed ! 970: 940 000157C4 # writes(", subtest 5 (Cache Data) - BAD_FINAL_ACC\n"); ! 971: 941 000157C4 .data 1 ! 972: 942 00000ea5 * L338: ! 973: 943 00000ea5 * 2C20737562746573742035202 .ascii ", subtest 5 (Cache Data) - BAD_FINAL_ACC\12\0" ! 974: 8436163686520446174612920 ! 975: 2D204241445F46494E414C5F4 ! 976: 143430A00 ! 977: 944 00000ecf * .text ! 978: 945 000157C4 dd 8f00000ea5 pushl $L338 ! 979: 946 000157CA fe 08 effffff7cf callf $8,_writes ! 980: 947 000157D1 # print_cvfl_data(); ! 981: 948 000157D1 fe 04 ef0000035c callf $4,_print_cvfl_data ! 982: 949 000157D8 # writec('\n'); ! 983: 950 000157D8 dd 0a pushl $10 ! 984: 951 000157DA fe 08 effffff7bf callf $8,_writec ! 985: 952 000157E1 # writes(" final Acc = "); ! 986: 953 000157E1 .data 1 ! 987: 954 00000ecf * L339: ! 988: 955 00000ecf * 202066696E616C20416363203 .ascii " final Acc = \0" ! 989: D2000 ! 990: 956 00000ede * .text ! 991: 957 000157E1 dd 8f00000ecf pushl $L339 ! 992: 958 000157E7 fe 08 effffff7b2 callf $8,_writes ! 993: 959 000157EE # write32h( sgl_value_1 ); ! 994: 960 000157EE dd effffff7ac pushl _sgl_value_1 ! 995: 961 000157F4 fe 08 effffff7a5 callf $8,_write32h ! 996: 962 000157FB # writes(", expected Acc = "); ! 997: 963 000157FB .data 1 ! 998: 964 00000ede * L340: ! 999: 965 00000ede * 2C20202020657870656374656 .ascii ", expected Acc = \0" ! 1000: 420416363203D2000 ! 1001: 966 00000ef3 * .text ! 1002: 967 000157FB dd 8f00000ede pushl $L340 ! 1003: 968 00015801 fe 08 effffff798 callf $8,_writes ! 1004: 969 00015808 # write32h( sgl_ld_acc ); ! 1005: 970 00015808 dd effffff792 pushl _sgl_ld_acc ! 1006: 971 0001580E fe 08 effffff78b callf $8,_write32h ! 1007: 972 00015815 # writec('\n'); ! 1008: 973 00015815 dd 0a pushl $10 ! 1009: 974 00015817 fe 08 effffff782 callf $8,_writec ! 1010: 975 0001581E # } ! 1011: 976 0001581E # if( halt_flg ) ! 1012: 977 0001581E L334: ! 1013: 978 0001581E 5d effffff77c tstl _halt_flg ! 1014: 979 00015824 31 09 jeql L341 ! 1015: 980 00015826 # cvfl_er_halt( BAD_ACC_HLT ); /* halt on the error */ ! 1016: 981 00015826 dd 01 pushl $1 ! 1017: 982 00015828 fe 08 ef00000341 callf $8,_cvfl_er_halt ! 1018: 983 0001582F # if( loop_on_err ) { ! 1019: 984 0001582F L341: ! 1020: 985 0001582F 5d effffff76b tstl _loop_on_err ! 1021: 986 00015835 31 0a jeql L342 ! 1022: 987 00015837 # force_loop = TRUE; /* set the force loop flag */ ! 1023: 988 00015837 0d 01 effffff762 movl $1,_force_loop ! 1024: 989 0001583E # asm("brw _cvfl_1_lp1");; /* and loop on the error */ ! 1025: 990 0001583E 13 f811 brw _cvfl_1_lp1 ! 1026: 991 00015841 # } /* end of loop on error */ ! 1027: 992 00015841 # } /* end of compare error */ ! 1028: 993 00015841 L342: ! 1029: 994 00015841 # } /* end of WHILE loop */ ! 1030: 995 00015841 L333: ! 1031: 996 00015841 L327: ! 1032: 997 00015841 6d effffff759 incl _index ! 1033: 998 00015847 13 feb6 jbr L329 ! 1034: 999 0001584A L328: ! 1035: 1000 0001584A # } /* end of subtest 5 */ ! 1036: 1001 0001584A 40 ret#2 ! 1037: 1002 0001584B .set L323,0x0 ! 1038: 1003 0001584B L325: ! 1039: 1004 0001584B 13 fe9f jbr L326 ! 1040: 1005 0001584E .data ! 1041: 1006 00000ca0 * .text ! 1042: 1007 0001584E .align 1 ! 1043: 1008 0001584E .globl _cvfl_6 ! 1044: 1009 0001584E _cvfl_6: ! 1045: 1010 0001584E 0000 .word L343 ! 1046: 1011 00015850 # ! 1047: 1012 00015850 # ! 1048: 1013 00015850 # ! 1049: 1014 00015850 # /************************************************************************ ! 1050: 1015 00015850 # * ! 1051: 1016 00015850 # * SUBTEST 6 - pipelined entry test ! 1052: 1017 00015850 # * ! 1053: 1018 00015850 # ************************************************************************/ ! 1054: 1019 00015850 # cvfl_6() ! 1055: 1020 00015850 # { ! 1056: 1021 00015850 13 0163 jbr L345 ! 1057: 1022 00015853 L346: ! 1058: 1023 00015853 # force_loop = FALSE; ! 1059: 1024 00015853 4d effffff747 clrl _force_loop ! 1060: 1025 00015859 # subtest = 6; ! 1061: 1026 00015859 0d 06 effffff740 movl $6,_subtest ! 1062: 1027 00015860 # for( index = 0; index < max_cvfl_1_index; index++ ) { ! 1063: 1028 00015860 4d effffff73a clrl _index ! 1064: 1029 00015866 L349: ! 1065: 1030 00015866 1d effffff734 effffff72f cmpl _index,_max_cvfl_1_index ! 1066: 1031 00015871 91 03 13 013f jgeq L348 ! 1067: 1032 00015876 # sgl_ld_acc = cvfl_1_data[index].ld; /* get value to convert */ ! 1068: 1033 00015876 0d effffff724 50 movl _index,r0 ! 1069: 1034 0001587D 48 03 50 50 shll $3,r0,r0 ! 1070: 1035 00015881 0d e000000000 effffff714 movl _cvfl_1_data(r0),_sgl_ld_acc ! 1071: 1036 0001588C # if( sgl_ld_acc & 0x7f800000 ) ! 1072: 1037 0001588C 3d 8f7f800000 effffff709 bitl $2139095040,_sgl_ld_acc ! 1073: 1038 00015897 31 0d jeql L350 ! 1074: 1039 00015899 # sgl_expected = sgl_ld_acc; /* expected = loaded */ ! 1075: 1040 00015899 0d effffff701 effffff6fc movl _sgl_ld_acc,_sgl_expected ! 1076: 1041 000158A4 # else ! 1077: 1042 000158A4 11 06 jbr L351 ! 1078: 1043 000158A6 L350: ! 1079: 1044 000158A6 # sgl_expected = 0; /* expect a '0' */ ! 1080: 1045 000158A6 4d effffff6f4 clrl _sgl_expected ! 1081: 1046 000158AC L351: ! 1082: 1047 000158AC # /* ! 1083: 1048 000158AC # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1084: 1049 000158AC # * The force loop flag is set after the first error. ! 1085: 1050 000158AC # */ ! 1086: 1051 000158AC # asm("_cvfl_6_lp1:"); ! 1087: 1052 000158AC _cvfl_6_lp1: ! 1088: 1053 000158AC # asm("movl $0,r0"); /* clear r0 */ ! 1089: 1054 000158AC 0d 00 50 movl $0,r0 ! 1090: 1055 000158AF # asm("ldf r0"); /* load the Acc. with 0.0 */ ! 1091: 1056 000158AF 06 50 ldf r0 ! 1092: 1057 000158B1 # asm("addf _sgl_ld_acc"); /* add the base value */ ! 1093: 1058 000158B1 c6 effffff6e9 addf _sgl_ld_acc ! 1094: 1059 000158B7 # asm("cvfl _sgl_value_1"); /* convert the value */ ! 1095: 1060 000158B7 86 effffff6e3 cvfl _sgl_value_1 ! 1096: 1061 000158BD # asm("stf _sgl_st_acc"); /* store the result */ ! 1097: 1062 000158BD 26 effffff6dd stf _sgl_st_acc ! 1098: 1063 000158C3 # if( force_loop ) ! 1099: 1064 000158C3 5d effffff6d7 tstl _force_loop ! 1100: 1065 000158C9 31 02 jeql L352 ! 1101: 1066 000158CB # asm("brb _cvfl_6_lp1");; /* loop on the error */ ! 1102: 1067 000158CB 11 df brb _cvfl_6_lp1 ! 1103: 1068 000158CD L352: ! 1104: 1069 000158CD # /* ! 1105: 1070 000158CD # * end error loop - test the results ! 1106: 1071 000158CD # */ ! 1107: 1072 000158CD # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */ ! 1108: 1073 000158CD 1d effffff6cd effffff6c8 cmpl _sgl_st_acc,_sgl_expected ! 1109: 1074 000158D8 21 03 13 00cf jeql L353 ! 1110: 1075 000158DD # errcnt++; /* bump the error count */ ! 1111: 1076 000158DD 6d effffff6bd incl _errcnt ! 1112: 1077 000158E3 # if( prt_error ) { ! 1113: 1078 000158E3 5d effffff6b7 tstl _prt_error ! 1114: 1079 000158E9 21 03 13 009b jeql L354 ! 1115: 1080 000158EE # writes(" \n"); /* start a new print line */ ! 1116: 1081 000158EE .data 1 ! 1117: 1082 00000ef3 * L355: ! 1118: 1083 00000ef3 * 200A00 .ascii " \12\0" ! 1119: 1084 00000ef6 * .text ! 1120: 1085 000158EE dd 8f00000ef3 pushl $L355 ! 1121: 1086 000158F4 fe 08 effffff6a5 callf $8,_writes ! 1122: 1087 000158FB # writes("cycle: "); ! 1123: 1088 000158FB .data 1 ! 1124: 1089 00000ef6 * L356: ! 1125: 1090 00000ef6 * 6379636C653A2000 .ascii "cycle: \0" ! 1126: 1091 00000efe * .text ! 1127: 1092 000158FB dd 8f00000ef6 pushl $L356 ! 1128: 1093 00015901 fe 08 effffff698 callf $8,_writes ! 1129: 1094 00015908 # writed( cycle ); ! 1130: 1095 00015908 dd effffff692 pushl _cycle ! 1131: 1096 0001590E fe 08 effffff68b callf $8,_writed ! 1132: 1097 00015915 # writes(" CVFL test "); ! 1133: 1098 00015915 .data 1 ! 1134: 1099 00000efe * L357: ! 1135: 1100 00000efe * 20204356464C2074657374200 .ascii " CVFL test \0" ! 1136: 0 ! 1137: 1101 00000f0b * .text ! 1138: 1102 00015915 dd 8f00000efe pushl $L357 ! 1139: 1103 0001591B fe 08 effffff67e callf $8,_writes ! 1140: 1104 00015922 # writed( test_no ); ! 1141: 1105 00015922 dd effffff678 pushl _test_no ! 1142: 1106 00015928 fe 08 effffff671 callf $8,_writed ! 1143: 1107 0001592F # writes(", subtest 6 (Piped Entry) - BAD_FINAL_ACC\n"); ! 1144: 1108 0001592F .data 1 ! 1145: 1109 00000f0b * L358: ! 1146: 1110 00000f0b * 2C20737562746573742036202 .ascii ", subtest 6 (Piped Entry) - BAD_FINAL_ACC\12\0" ! 1147: 8506970656420456E74727929 ! 1148: 202D204241445F46494E414C5 ! 1149: F4143430A00 ! 1150: 1111 00000f36 * .text ! 1151: 1112 0001592F dd 8f00000f0b pushl $L358 ! 1152: 1113 00015935 fe 08 effffff664 callf $8,_writes ! 1153: 1114 0001593C # print_cvfl_data(); ! 1154: 1115 0001593C fe 04 ef000001f1 callf $4,_print_cvfl_data ! 1155: 1116 00015943 # writec('\n'); ! 1156: 1117 00015943 dd 0a pushl $10 ! 1157: 1118 00015945 fe 08 effffff654 callf $8,_writec ! 1158: 1119 0001594C # writes(" final Acc = "); ! 1159: 1120 0001594C .data 1 ! 1160: 1121 00000f36 * L359: ! 1161: 1122 00000f36 * 202066696E616C20416363203 .ascii " final Acc = \0" ! 1162: D2000 ! 1163: 1123 00000f45 * .text ! 1164: 1124 0001594C dd 8f00000f36 pushl $L359 ! 1165: 1125 00015952 fe 08 effffff647 callf $8,_writes ! 1166: 1126 00015959 # write32h( sgl_value_1 ); ! 1167: 1127 00015959 dd effffff641 pushl _sgl_value_1 ! 1168: 1128 0001595F fe 08 effffff63a callf $8,_write32h ! 1169: 1129 00015966 # writes(", expected Acc = "); ! 1170: 1130 00015966 .data 1 ! 1171: 1131 00000f45 * L360: ! 1172: 1132 00000f45 * 2C20657870656374656420416 .ascii ", expected Acc = \0" ! 1173: 363203D2000 ! 1174: 1133 00000f57 * .text ! 1175: 1134 00015966 dd 8f00000f45 pushl $L360 ! 1176: 1135 0001596C fe 08 effffff62d callf $8,_writes ! 1177: 1136 00015973 # write32h( sgl_ld_acc ); ! 1178: 1137 00015973 dd effffff627 pushl _sgl_ld_acc ! 1179: 1138 00015979 fe 08 effffff620 callf $8,_write32h ! 1180: 1139 00015980 # writec('\n'); ! 1181: 1140 00015980 dd 0a pushl $10 ! 1182: 1141 00015982 fe 08 effffff617 callf $8,_writec ! 1183: 1142 00015989 # } ! 1184: 1143 00015989 # if( halt_flg ) ! 1185: 1144 00015989 L354: ! 1186: 1145 00015989 5d effffff611 tstl _halt_flg ! 1187: 1146 0001598F 31 09 jeql L361 ! 1188: 1147 00015991 # cvfl_er_halt( BAD_ACC_HLT ); /* halt on the error */ ! 1189: 1148 00015991 dd 01 pushl $1 ! 1190: 1149 00015993 fe 08 ef000001d6 callf $8,_cvfl_er_halt ! 1191: 1150 0001599A # if( loop_on_err ) { ! 1192: 1151 0001599A L361: ! 1193: 1152 0001599A 5d effffff600 tstl _loop_on_err ! 1194: 1153 000159A0 31 0a jeql L362 ! 1195: 1154 000159A2 # force_loop = TRUE; /* set the force loop flag */ ! 1196: 1155 000159A2 0d 01 effffff5f7 movl $1,_force_loop ! 1197: 1156 000159A9 # asm("brw _cvfl_6_lp1");; /* and loop on the error */ ! 1198: 1157 000159A9 13 ff00 brw _cvfl_6_lp1 ! 1199: 1158 000159AC # } /* end of loop on error */ ! 1200: 1159 000159AC # } /* end of compare error */ ! 1201: 1160 000159AC L362: ! 1202: 1161 000159AC # } /* end of WHILE loop */ ! 1203: 1162 000159AC L353: ! 1204: 1163 000159AC L347: ! 1205: 1164 000159AC 6d effffff5ee incl _index ! 1206: 1165 000159B2 13 feb1 jbr L349 ! 1207: 1166 000159B5 L348: ! 1208: 1167 000159B5 # } /* end of subtest 6 */ ! 1209: 1168 000159B5 40 ret#2 ! 1210: 1169 000159B6 .set L343,0x0 ! 1211: 1170 000159B6 L345: ! 1212: 1171 000159B6 13 fe9a jbr L346 ! 1213: 1172 000159B9 .data ! 1214: 1173 00000ca0 * .text ! 1215: 1174 000159B9 00 .align 1 ! 1216: 1175 000159BA .globl _cvfl_7 ! 1217: 1176 000159BA _cvfl_7: ! 1218: 1177 000159BA 0000 .word L364 ! 1219: 1178 000159BC # ! 1220: 1179 000159BC # ! 1221: 1180 000159BC # ! 1222: 1181 000159BC # /************************************************************************ ! 1223: 1182 000159BC # * ! 1224: 1183 000159BC # * SUBTEST 7 - pipelined exit test ! 1225: 1184 000159BC # * ! 1226: 1185 000159BC # ************************************************************************/ ! 1227: 1186 000159BC # cvfl_7() ! 1228: 1187 000159BC # { ! 1229: 1188 000159BC 13 0172 jbr L366 ! 1230: 1189 000159BF L367: ! 1231: 1190 000159BF # force_loop = FALSE; ! 1232: 1191 000159BF 4d effffff5db clrl _force_loop ! 1233: 1192 000159C5 # subtest = 7; ! 1234: 1193 000159C5 0d 07 effffff5d4 movl $7,_subtest ! 1235: 1194 000159CC # for( index = 0; index < max_cvfl_1_index; index++ ) { ! 1236: 1195 000159CC 4d effffff5ce clrl _index ! 1237: 1196 000159D2 L370: ! 1238: 1197 000159D2 1d effffff5c8 effffff5c3 cmpl _index,_max_cvfl_1_index ! 1239: 1198 000159DD 91 03 13 014e jgeq L369 ! 1240: 1199 000159E2 # sgl_ld_acc = cvfl_1_data[index].ld; /* get value to negate */ ! 1241: 1200 000159E2 0d effffff5b8 50 movl _index,r0 ! 1242: 1201 000159E9 48 03 50 50 shll $3,r0,r0 ! 1243: 1202 000159ED 0d e000000000 effffff5a8 movl _cvfl_1_data(r0),_sgl_ld_acc ! 1244: 1203 000159F8 # if( sgl_ld_acc & 0x7f800000 ) ! 1245: 1204 000159F8 3d 8f7f800000 effffff59d bitl $2139095040,_sgl_ld_acc ! 1246: 1205 00015A03 31 0d jeql L371 ! 1247: 1206 00015A05 # sgl_expected = sgl_ld_acc; /* expected = loaded */ ! 1248: 1207 00015A05 0d effffff595 effffff590 movl _sgl_ld_acc,_sgl_expected ! 1249: 1208 00015A10 # else ! 1250: 1209 00015A10 11 06 jbr L372 ! 1251: 1210 00015A12 L371: ! 1252: 1211 00015A12 # sgl_expected = 0; /* expect a '0' */ ! 1253: 1212 00015A12 4d effffff588 clrl _sgl_expected ! 1254: 1213 00015A18 L372: ! 1255: 1214 00015A18 # /* ! 1256: 1215 00015A18 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1257: 1216 00015A18 # * The force loop flag is set after the first error. ! 1258: 1217 00015A18 # */ ! 1259: 1218 00015A18 # asm("_cvfl_7_lp1:"); ! 1260: 1219 00015A18 _cvfl_7_lp1: ! 1261: 1220 00015A18 # asm("movl $0,r0"); /* clear r0 */ ! 1262: 1221 00015A18 0d 00 50 movl $0,r0 ! 1263: 1222 00015A1B # asm("ldf _sgl_ld_acc"); /* load the value */ ! 1264: 1223 00015A1B 06 effffff57f ldf _sgl_ld_acc ! 1265: 1224 00015A21 # asm("cvfl _sgl_value_1"); /* convert the value */ ! 1266: 1225 00015A21 86 effffff579 cvfl _sgl_value_1 ! 1267: 1226 00015A27 # asm("addf r0"); /* add a zero to the acc */ ! 1268: 1227 00015A27 c6 50 addf r0 ! 1269: 1228 00015A29 # asm("stf _sgl_st_acc"); /* store the result */ ! 1270: 1229 00015A29 26 effffff571 stf _sgl_st_acc ! 1271: 1230 00015A2F # if( force_loop ) ! 1272: 1231 00015A2F 5d effffff56b tstl _force_loop ! 1273: 1232 00015A35 31 02 jeql L373 ! 1274: 1233 00015A37 # asm("brb _cvfl_7_lp1");; /* loop on the error */ ! 1275: 1234 00015A37 11 df brb _cvfl_7_lp1 ! 1276: 1235 00015A39 L373: ! 1277: 1236 00015A39 # /* ! 1278: 1237 00015A39 # * end error loop - test the results ! 1279: 1238 00015A39 # */ ! 1280: 1239 00015A39 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */ ! 1281: 1240 00015A39 1d effffff561 effffff55c cmpl _sgl_st_acc,_sgl_expected ! 1282: 1241 00015A44 21 03 13 00de jeql L374 ! 1283: 1242 00015A49 # errcnt++; /* bump the error count */ ! 1284: 1243 00015A49 6d effffff551 incl _errcnt ! 1285: 1244 00015A4F # if( prt_error ) { ! 1286: 1245 00015A4F 5d effffff54b tstl _prt_error ! 1287: 1246 00015A55 21 03 13 00aa jeql L375 ! 1288: 1247 00015A5A # writes(" \n"); /* start a new print line */ ! 1289: 1248 00015A5A .data 1 ! 1290: 1249 00000f57 * L376: ! 1291: 1250 00000f57 * 200A00 .ascii " \12\0" ! 1292: 1251 00000f5a * .text ! 1293: 1252 00015A5A dd 8f00000f57 pushl $L376 ! 1294: 1253 00015A60 fe 08 effffff539 callf $8,_writes ! 1295: 1254 00015A67 # writes("cycle: "); ! 1296: 1255 00015A67 .data 1 ! 1297: 1256 00000f5a * L377: ! 1298: 1257 00000f5a * 6379636C653A2000 .ascii "cycle: \0" ! 1299: 1258 00000f62 * .text ! 1300: 1259 00015A67 dd 8f00000f5a pushl $L377 ! 1301: 1260 00015A6D fe 08 effffff52c callf $8,_writes ! 1302: 1261 00015A74 # writed( cycle ); ! 1303: 1262 00015A74 dd effffff526 pushl _cycle ! 1304: 1263 00015A7A fe 08 effffff51f callf $8,_writed ! 1305: 1264 00015A81 # writes(" CVFL test "); ! 1306: 1265 00015A81 .data 1 ! 1307: 1266 00000f62 * L378: ! 1308: 1267 00000f62 * 20204356464C2074657374200 .ascii " CVFL test \0" ! 1309: 0 ! 1310: 1268 00000f6f * .text ! 1311: 1269 00015A81 dd 8f00000f62 pushl $L378 ! 1312: 1270 00015A87 fe 08 effffff512 callf $8,_writes ! 1313: 1271 00015A8E # writed( test_no ); ! 1314: 1272 00015A8E dd effffff50c pushl _test_no ! 1315: 1273 00015A94 fe 08 effffff505 callf $8,_writed ! 1316: 1274 00015A9B # writes(", subtest 7 (piped exit) - BAD_FINAL_ACC\n"); ! 1317: 1275 00015A9B .data 1 ! 1318: 1276 00000f6f * L379: ! 1319: 1277 00000f6f * 2C20737562746573742037202 .ascii ", subtest 7 (piped exit) - BAD_FINAL_ACC\12\0" ! 1320: 8706970656420657869742920 ! 1321: 2D204241445F46494E414C5F4 ! 1322: 143430A00 ! 1323: 1278 00000f99 * .text ! 1324: 1279 00015A9B dd 8f00000f6f pushl $L379 ! 1325: 1280 00015AA1 fe 08 effffff4f8 callf $8,_writes ! 1326: 1281 00015AA8 # print_cvfl_data(); ! 1327: 1282 00015AA8 fe 04 ef00000085 callf $4,_print_cvfl_data ! 1328: 1283 00015AAF # writes(" final Acc = "); ! 1329: 1284 00015AAF .data 1 ! 1330: 1285 00000f99 * L380: ! 1331: 1286 00000f99 * 202066696E616C20416363203 .ascii " final Acc = \0" ! 1332: D2000 ! 1333: 1287 00000fa8 * .text ! 1334: 1288 00015AAF dd 8f00000f99 pushl $L380 ! 1335: 1289 00015AB5 fe 08 effffff4e4 callf $8,_writes ! 1336: 1290 00015ABC # write32h( sgl_st_acc ); ! 1337: 1291 00015ABC dd effffff4de pushl _sgl_st_acc ! 1338: 1292 00015AC2 fe 08 effffff4d7 callf $8,_write32h ! 1339: 1293 00015AC9 # writes(", expected Acc = "); ! 1340: 1294 00015AC9 .data 1 ! 1341: 1295 00000fa8 * L381: ! 1342: 1296 00000fa8 * 2C20202020657870656374656 .ascii ", expected Acc = \0" ! 1343: 420416363203D2000 ! 1344: 1297 00000fbd * .text ! 1345: 1298 00015AC9 dd 8f00000fa8 pushl $L381 ! 1346: 1299 00015ACF fe 08 effffff4ca callf $8,_writes ! 1347: 1300 00015AD6 # if( sgl_ld_acc & 0x7f800000 ) ! 1348: 1301 00015AD6 3d 8f7f800000 effffff4bf bitl $2139095040,_sgl_ld_acc ! 1349: 1302 00015AE1 31 0f jeql L382 ! 1350: 1303 00015AE3 # write32h( sgl_ld_acc ); ! 1351: 1304 00015AE3 dd effffff4b7 pushl _sgl_ld_acc ! 1352: 1305 00015AE9 fe 08 effffff4b0 callf $8,_write32h ! 1353: 1306 00015AF0 # else ! 1354: 1307 00015AF0 11 09 jbr L383 ! 1355: 1308 00015AF2 L382: ! 1356: 1309 00015AF2 # write32h( 0 ); ! 1357: 1310 00015AF2 dd 00 pushl $0 ! 1358: 1311 00015AF4 fe 08 effffff4a5 callf $8,_write32h ! 1359: 1312 00015AFB L383: ! 1360: 1313 00015AFB # writec('\n'); ! 1361: 1314 00015AFB dd 0a pushl $10 ! 1362: 1315 00015AFD fe 08 effffff49c callf $8,_writec ! 1363: 1316 00015B04 # } ! 1364: 1317 00015B04 # if( halt_flg ) ! 1365: 1318 00015B04 L375: ! 1366: 1319 00015B04 5d effffff496 tstl _halt_flg ! 1367: 1320 00015B0A 31 09 jeql L384 ! 1368: 1321 00015B0C # cvfl_er_halt( BAD_ACC_HLT ); /* halt on the error */ ! 1369: 1322 00015B0C dd 01 pushl $1 ! 1370: 1323 00015B0E fe 08 ef0000005b callf $8,_cvfl_er_halt ! 1371: 1324 00015B15 # if( loop_on_err ) { ! 1372: 1325 00015B15 L384: ! 1373: 1326 00015B15 5d effffff485 tstl _loop_on_err ! 1374: 1327 00015B1B 31 0a jeql L385 ! 1375: 1328 00015B1D # force_loop = TRUE; /* set the force loop flag */ ! 1376: 1329 00015B1D 0d 01 effffff47c movl $1,_force_loop ! 1377: 1330 00015B24 # asm("brw _cvfl_7_lp1");; /* and loop on the error */ ! 1378: 1331 00015B24 13 fef1 brw _cvfl_7_lp1 ! 1379: 1332 00015B27 # } /* end of loop on error */ ! 1380: 1333 00015B27 # } /* end of compare error */ ! 1381: 1334 00015B27 L385: ! 1382: 1335 00015B27 # } /* end of WHILE loop */ ! 1383: 1336 00015B27 L374: ! 1384: 1337 00015B27 L368: ! 1385: 1338 00015B27 6d effffff473 incl _index ! 1386: 1339 00015B2D 13 fea2 jbr L370 ! 1387: 1340 00015B30 L369: ! 1388: 1341 00015B30 # } /* end of subtest 7 */ ! 1389: 1342 00015B30 40 ret#2 ! 1390: 1343 00015B31 .set L364,0x0 ! 1391: 1344 00015B31 L366: ! 1392: 1345 00015B31 13 fe8b jbr L367 ! 1393: 1346 00015B34 .data ! 1394: 1347 00000ca0 * .text ! 1395: 1348 00015B34 .align 1 ! 1396: 1349 00015B34 .globl _print_cvfl_data ! 1397: 1350 00015B34 _print_cvfl_data: ! 1398: 1351 00015B34 0000 .word L386 ! 1399: 1352 00015B36 # ! 1400: 1353 00015B36 # ! 1401: 1354 00015B36 # ! 1402: 1355 00015B36 # /************************************************************************** ! 1403: 1356 00015B36 # * ! 1404: 1357 00015B36 # * PRINT THE DATA AND STORE RESULTS ! 1405: 1358 00015B36 # * ! 1406: 1359 00015B36 # * initial Acc = xxxxxxxx, int. stored = xxxxxxxx, data index = xx ! 1407: 1360 00015B36 # **************************************************************************/ ! 1408: 1361 00015B36 # print_cvfl_data() ! 1409: 1362 00015B36 # { ! 1410: 1363 00015B36 11 35 jbr L388 ! 1411: 1364 00015B38 L389: ! 1412: 1365 00015B38 # writes("initial Acc = "); ! 1413: 1366 00015B38 .data 1 ! 1414: 1367 00000fbd * L390: ! 1415: 1368 00000fbd * 696E697469616C20416363203 .ascii "initial Acc = \0" ! 1416: D2000 ! 1417: 1369 00000fcc * .text ! 1418: 1370 00015B38 dd 8f00000fbd pushl $L390 ! 1419: 1371 00015B3E fe 08 effffff45b callf $8,_writes ! 1420: 1372 00015B45 # write32h( sgl_ld_acc ); ! 1421: 1373 00015B45 dd effffff455 pushl _sgl_ld_acc ! 1422: 1374 00015B4B fe 08 effffff44e callf $8,_write32h ! 1423: 1375 00015B52 # writes(", int. stored = "); ! 1424: 1376 00015B52 .data 1 ! 1425: 1377 00000fcc * L391: ! 1426: 1378 00000fcc * 2C202020696E742E2073746F7 .ascii ", int. stored = \0" ! 1427: 26564203D2000 ! 1428: 1379 00000fdf * .text ! 1429: 1380 00015B52 dd 8f00000fcc pushl $L391 ! 1430: 1381 00015B58 fe 08 effffff441 callf $8,_writes ! 1431: 1382 00015B5F # write32h( sgl_value_1 ); ! 1432: 1383 00015B5F dd effffff43b pushl _sgl_value_1 ! 1433: 1384 00015B65 fe 08 effffff434 callf $8,_write32h ! 1434: 1385 00015B6C # } ! 1435: 1386 00015B6C 40 ret#2 ! 1436: 1387 00015B6D .set L386,0x0 ! 1437: 1388 00015B6D L388: ! 1438: 1389 00015B6D 11 c9 jbr L389 ! 1439: 1390 00015B6F .data ! 1440: 1391 00000ca0 * .text ! 1441: 1392 00015B6F 00 .align 1 ! 1442: 1393 00015B70 .globl _cvfl_er_halt ! 1443: 1394 00015B70 _cvfl_er_halt: ! 1444: 1395 00015B70 0000 .word L392 ! 1445: 1396 00015B72 # ! 1446: 1397 00015B72 # ! 1447: 1398 00015B72 # ! 1448: 1399 00015B72 # /************************************************************************** ! 1449: 1400 00015B72 # * ! 1450: 1401 00015B72 # * HALT ON ERROR ROUTINE ! 1451: 1402 00015B72 # * ! 1452: 1403 00015B72 # **************************************************************************/ ! 1453: 1404 00015B72 # cvfl_er_halt( halt_code ) ! 1454: 1405 00015B72 # int halt_code; ! 1455: 1406 00015B72 # { ! 1456: 1407 00015B72 13 00c5 jbr L394 ! 1457: 1408 00015B75 L395: ! 1458: 1409 00015B75 # sgl_dummy1 = halt_code; /* get the error type */ ! 1459: 1410 00015B75 0d ad04 effffff423 movl 4(fp),_sgl_dummy1 ! 1460: 1411 00015B7D # asm("movl _test_no,r0"); /* r0 = test number */ ! 1461: 1412 00015B7D 0d effffff41d 50 movl _test_no,r0 ! 1462: 1413 00015B84 # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 1463: 1414 00015B84 0d effffff416 51 movl _subtest,r1 ! 1464: 1415 00015B8B # asm("movl _sgl_dummy1,r2"); /* r2 = error code */ ! 1465: 1416 00015B8B 0d effffff40f 52 movl _sgl_dummy1,r2 ! 1466: 1417 00015B92 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 1467: 1418 00015B92 0d effffff408 53 movl _cycle,r3 ! 1468: 1419 00015B99 # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */ ! 1469: 1420 00015B99 0d effffff401 54 movl _sgl_ld_acc,r4 ! 1470: 1421 00015BA0 # asm("movl _sgl_value_1,r5"); /* r5 = final acc */ ! 1471: 1422 00015BA0 0d effffff3fa 55 movl _sgl_value_1,r5 ! 1472: 1423 00015BA7 # asm("movl _sgl_st_acc,r6"); /* r6 = integer stored */ ! 1473: 1424 00015BA7 0d effffff3f3 56 movl _sgl_st_acc,r6 ! 1474: 1425 00015BAE # if( halt_code == BAD_ACC_HLT ) { ! 1475: 1426 00015BAE 1d ad04 01 cmpl 4(fp),$1 ! 1476: 1427 00015BB2 21 10 jneq L396 ! 1477: 1428 00015BB4 # asm("movl _sgl_ld_acc,r7"); /* r7 = expected acc */ ! 1478: 1429 00015BB4 0d effffff3e6 57 movl _sgl_ld_acc,r7 ! 1479: 1430 00015BBB # asm("movl _index,r8"); /* r8 = data index */ ! 1480: 1431 00015BBB 0d effffff3df 58 movl _index,r8 ! 1481: 1432 00015BC2 # } else ! 1482: 1433 00015BC2 11 74 jbr L397 ! 1483: 1434 00015BC4 L396: ! 1484: 1435 00015BC4 # if( halt_code == BAD_REG_HLT ) { ! 1485: 1436 00015BC4 1d ad04 02 cmpl 4(fp),$2 ! 1486: 1437 00015BC8 21 3d jneq L398 ! 1487: 1438 00015BCA # sgl_dummy1 = load_regs[index2]; ! 1488: 1439 00015BCA 0d effffff3d0 50 movl _index2,r0 ! 1489: 1440 00015BD1 0d 40effffff3c8 movl _load_regs[r0],_sgl_dummy1 ! 1490: effffff3c3 ! 1491: 1441 00015BDD # sgl_dummy2 = store_regs[index2]; ! 1492: 1442 00015BDD 0d effffff3bd 50 movl _index2,r0 ! 1493: 1443 00015BE4 0d 40effffff3b5 movl _store_regs[r0],_sgl_dummy2 ! 1494: effffff3b0 ! 1495: 1444 00015BF0 # asm("movl _index2,r7"); /* r7 = bad register # */ ! 1496: 1445 00015BF0 0d effffff3aa 57 movl _index2,r7 ! 1497: 1446 00015BF7 # asm("movl _sgl_dummy2,r8"); /* r8 = final reg value */ ! 1498: 1447 00015BF7 0d effffff3a3 58 movl _sgl_dummy2,r8 ! 1499: 1448 00015BFE # asm("movl _sgl_dummy1,r9"); /* r9 = init reg value */ ! 1500: 1449 00015BFE 0d effffff39c 59 movl _sgl_dummy1,r9 ! 1501: 1450 00015C05 # } else ! 1502: 1451 00015C05 11 31 jbr L399 ! 1503: 1452 00015C07 L398: ! 1504: 1453 00015C07 # if( halt_code == BAD_PSL_HLT ) { ! 1505: 1454 00015C07 1d ad04 03 cmpl 4(fp),$3 ! 1506: 1455 00015C0B 21 17 jneq L400 ! 1507: 1456 00015C0D # asm("movl _init_psl,r7"); /* r7 = initial PSL */ ! 1508: 1457 00015C0D 0d effffff38d 57 movl _init_psl,r7 ! 1509: 1458 00015C14 # asm("movl _psl_val,r8"); /* r8 = final PSL */ ! 1510: 1459 00015C14 0d effffff386 58 movl _psl_val,r8 ! 1511: 1460 00015C1B # asm("movl _exp_psl,r9"); /* r9 = expected PSL */ ! 1512: 1461 00015C1B 0d effffff37f 59 movl _exp_psl,r9 ! 1513: 1462 00015C22 # } else ! 1514: 1463 00015C22 11 14 jbr L401 ! 1515: 1464 00015C24 L400: ! 1516: 1465 00015C24 # if( halt_code == BAD_STORE_HLT ) { ! 1517: 1466 00015C24 1d ad04 09 cmpl 4(fp),$9 ! 1518: 1467 00015C28 21 0e jneq L402 ! 1519: 1468 00015C2A # asm("movl _sgl_expected,r7"); /* r7 = data expectd */ ! 1520: 1469 00015C2A 0d effffff370 57 movl _sgl_expected,r7 ! 1521: 1470 00015C31 # asm("movl _index,r8"); /* r8 = data index */ ! 1522: 1471 00015C31 0d effffff369 58 movl _index,r8 ! 1523: 1472 00015C38 # }; ! 1524: 1473 00015C38 L402: ! 1525: 1474 00015C38 L401: ! 1526: 1475 00015C38 L399: ! 1527: 1476 00015C38 L397: ! 1528: 1477 00015C38 # asm("halt"); /* HALT ... */ ! 1529: 1478 00015C38 00 halt ! 1530: 1479 00015C39 # } ! 1531: 1480 00015C39 40 ret#2 ! 1532: 1481 00015C3A .set L392,0x0 ! 1533: 1482 00015C3A L394: ! 1534: 1483 00015C3A 13 ff38 jbr L395 ! 1535: 1484 00015C3D .data ! 1536: 1484 0002ABDD .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.