|
|
1.1 ! root 1: ! 2: /* BBC (branch on bit clear) test */ ! 3: /* */ ! 4: /*Test name = bbc */ ! 5: /*Description = */ ! 6: /* This test checks 'bbc' instruction as follows: */ ! 7: /* (1) forward/backward branch on bit set conditon */ ! 8: /* (2) no branch on bit off condition */ ! 9: /* (3) no effect on condition codes */ ! 10: /* */ ! 11: /* */ ! 12: ! 13: /* */ ! 14: /* constants */ ! 15: /* */ ! 16: ! 17: .set P1,0x80808101 /*bits 0,8,15,23,31 ON*/ ! 18: .set P2,0x7f7f7efe /*same bits OFF */ ! 19: .set BIT0,0 ! 20: .set BIT8,8 ! 21: .set BIT15,15 ! 22: .set BIT23,23 ! 23: .set BIT31,31 ! 24: ! 25: /* */ ! 26: /* Syst.s - Constants */ ! 27: /* */ ! 28: .set IPL,8 ! 29: .set HIGH,31 ! 30: .set ZERO,0 ! 31: .set ONES,0xffffffff ! 32: .set N,8 ! 33: .set Z,4 ! 34: .set V,2 ! 35: .set C,1 ! 36: .set T,16 ! 37: .set IV,32 ! 38: .set FU,64 ! 39: .set DV,128 ! 40: .set PSWMASK,0x003f ! 41: ! 42: .globl _bbc ! 43: _bbc: ! 44: callf $4,_setjmp /* save context for error return */ ! 45: movab _bbc,_stpc /* save address of subtest */ ! 46: movl $1,_subtst /* subtest number */ ! 47: movl $2,_no_opr /* number of operands in use */ ! 48: movl $BIT0,_opr /* first operand */ ! 49: movl $P2,_opr + 4 /* second operand */ ! 50: movl $0,_actual /* no data for this test it is zero */ ! 51: movl $0,_expected /* no data for this test it is zero */ ! 52: 0: ! 53: movl $P2,r0 /*bits 0,8,15,23,31 OFF */ ! 54: bicpsw $PSWMASK ! 55: bispsw $(N|Z|V|C) /*these flags ON */ ! 56: bbs $BIT0,r0,erc0 /*should not branch as bit 0 is OFF data reg*/ ! 57: bbc $BIT0,r0,fs0 /*branch forward on bit clear data reg */ ! 58: movpsl _actual /* actual = psl */ ! 59: bbs $0,_scoplp,0b /* if set loop on error */ ! 60: movl $2,_ercode /* error code flag failure bad jump action */ ! 61: jmp *badrtn /* no actual or expected data */ ! 62: bs0: ! 63: bbc $BIT0,r0,flgs0 /*branch to flag test */ ! 64: jmp error1 ! 65: bbs $0,_scoplp,0b /* if set loop on error */ ! 66: jmp error1 ! 67: erc0: ! 68: bbs $0,_scoplp,0b /* if set loop on error */ ! 69: jmp error1 ! 70: .space 110 /*dangerous area - don't come in */ ! 71: fs0: ! 72: bbc $BIT0,r0,bs0 /*branch backward on bit clear */ ! 73: bbs $0,_scoplp,0b /* if set loop on error */ ! 74: jmp error1 ! 75: flgs0: ! 76: jneq errs1 /*Z != 1 - error */ ! 77: jlss errs1 /*N != 0 - error */ ! 78: jvs errs1 /*V != 0 - error */ ! 79: jcc errs1 /*C != 1 - error */ ! 80: jmp bn2 /* no errors - continue */ ! 81: errs1: ! 82: movpsl _actual /* actual = psl */ ! 83: bbs $0,_scoplp,0b /* if set loop on error */ ! 84: movl $2,_ercode /* error code flag failure */ ! 85: jmp *badrtn ! 86: ! 87: bn2: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 88: b2: callf $4,_setjmp /* save context for error return */ ! 89: movab b2,_stpc /* save address of subtest */ ! 90: movl $2,_subtst /* subtest number */ ! 91: movl $2,_no_opr /* number of operands in use */ ! 92: movl $BIT31,_opr /* first operand */ ! 93: movl $P2,_opr + 4 /* second operand */ ! 94: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 95: movl $P2,r0 /*bits 0,8,15,23,31 OFF */ ! 96: movl $BIT31,r6 ! 97: bicpsw $PSWMASK ! 98: bbs r6,r0,erc31 /*should not branch as bit 31 is OFF reg reg */ ! 99: bbc r6,r0,fs31 /*branch forward on bit clear reg reg */ ! 100: bbs $0,_scoplp,0b /* if set loop on error */ ! 101: jmp error1 ! 102: bs31: ! 103: bbc $BIT31,r0,flgc31 /*branch to flag test */ ! 104: bbs $0,_scoplp,0b /* if set loop on error */ ! 105: jmp error1 ! 106: erc31: ! 107: bbs $0,_scoplp,0b /* if set loop on error */ ! 108: jmp error1 ! 109: .space 110 /*dangerous area - don't come in */ ! 110: fs31: ! 111: bbc $BIT31,r0,bs31 /*branch backward on bit clear */ ! 112: bbs $0,_scoplp,0b /* if set loop on error */ ! 113: jmp error1 ! 114: flgc31: ! 115: jneq errs2 /*Z != 1 - error */ ! 116: jlss errs2 /*N != 0 - error */ ! 117: jvs errs2 /*V != 0 - error */ ! 118: jcc errs2 /*C != 1 - error */ ! 119: jmp bn3 /* no errors - continue */ ! 120: errs2: ! 121: movpsl _actual /* actual = psl */ ! 122: bbs $0,_scoplp,0b /* if set loop on error */ ! 123: movl $2,_ercode /* error code flag failure */ ! 124: jmp *badrtn ! 125: ! 126: bn3: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 127: b3: callf $4,_setjmp /* save context for error return */ ! 128: movab b3,_stpc /* save address of subtest */ ! 129: movl $3,_subtst /* subtest number */ ! 130: movl $2,_no_opr /* number of operands in use */ ! 131: movl $BIT8,_opr /* first operand */ ! 132: movl $P2,_opr + 4 /* second operand */ ! 133: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 134: movl $P2,tloc /*bits 0,8,15,23,31 OFF */ ! 135: bbs $BIT8,tloc,erc8 /* should not branch as bit 8 is off data mem*/ ! 136: bbc $BIT8,tloc,fs8 /*branch forward on bit clear data mem */ ! 137: bbs $0,_scoplp,0b /* if set loop on error */ ! 138: jmp error1 ! 139: bs8: ! 140: bbc $BIT8,r0,s15 /*next test */ ! 141: bbs $0,_scoplp,0b /* if set loop on error */ ! 142: jmp error1 ! 143: erc8: ! 144: bbs $0,_scoplp,0b /* if set loop on error */ ! 145: jmp error1 ! 146: .space 110 /*dangerous area - don't come in */ ! 147: fs8: ! 148: bbc $BIT8,r0,bs8 /*branch backward on bit clear */ ! 149: bbs $0,_scoplp,0b /* if set loop on error */ ! 150: jmp error1 ! 151: ! 152: s15: ! 153: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 154: b4: callf $4,_setjmp /* save context for error return */ ! 155: movab b4,_stpc /* save address of subtest */ ! 156: movl $4,_subtst /* subtest number */ ! 157: movl $2,_no_opr /* number of operands in use */ ! 158: movl $BIT15,_opr /* first operand */ ! 159: movl $P2,_opr + 4 /* second operand */ ! 160: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 161: movl $P2,tloc /*bits 0,8,15,23,31 OFF */ ! 162: movl $BIT15,r0 ! 163: bbs r0,tloc,erc15 /*should not branch as bit 15 is OFF reg mem*/ ! 164: bbc r0,tloc,bs15 ! 165: bbs $0,_scoplp,0b /* if set loop on error */ ! 166: jmp error1 ! 167: bs15: ! 168: bbc $BIT15,r0,s23 /*next test */ ! 169: bbs $0,_scoplp,0b /* if set loop on error */ ! 170: jmp error1 ! 171: erc15: ! 172: bbs $0,_scoplp,0b /* if set loop on error */ ! 173: jmp error1 ! 174: .space 110 /*dangerous area - don't come in */ ! 175: fs15: ! 176: bbc $BIT15,r0,bs15 /*branch backward on bit clear */ ! 177: bbs $0,_scoplp,0b /* if set loop on error */ ! 178: jmp error1 ! 179: ! 180: s23: ! 181: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 182: b5: callf $4,_setjmp /* save context for error return */ ! 183: movab b5,_stpc /* save address of subtest */ ! 184: movl $5,_subtst /* subtest number */ ! 185: movl $2,_no_opr /* number of operands in use */ ! 186: movl $BIT23,_opr /* first operand */ ! 187: movl $P2,_opr + 4 /* second operand */ ! 188: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 189: movl $P2,r0 /*bits 0,8,15,23,31 OFF */ ! 190: bbs $BIT23,r0,erc23 /*should not branch as bit 23 is OFF */ ! 191: bbc $BIT23,r0,fs23 /*branch forward on bit clear */ ! 192: bbs $0,_scoplp,0b /* if set loop on error */ ! 193: jmp error1 ! 194: bs23: ! 195: bbc $BIT23,r0,sm0 /*next test */ ! 196: bbs $0,_scoplp,0b /* if set loop on error */ ! 197: jmp error1 ! 198: erc23: ! 199: bbs $0,_scoplp,0b /* if set loop on error */ ! 200: jmp error1 ! 201: .space 110 /*dangerous area - don't come in */ ! 202: fs23: ! 203: bbc $BIT23,r0,bs23 /*branch backward on bit clear */ ! 204: bbs $0,_scoplp,0b /* if set loop on error */ ! 205: jmp error1 ! 206: ! 207: /* */ ! 208: /* now use memory location(tloc) instead of register */ ! 209: /* */ ! 210: ! 211: sm0: ! 212: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 213: b6: callf $4,_setjmp /* save context for error return */ ! 214: movab b6,_stpc /* save address of subtest */ ! 215: movl $6,_subtst /* subtest number */ ! 216: movl $2,_no_opr /* number of operands in use */ ! 217: movl $BIT0,_opr /* first operand */ ! 218: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 219: movl $P2,tloc /*bits 0,8,15,23,31 OFF */ ! 220: bicpsw $PSWMASK ! 221: bispsw $(N|Z|V|C) /*these flags ON */ ! 222: bbs $BIT0,tloc,ercm0/*should not branch as bit 0 is OFF */ ! 223: bbc $BIT0,tloc,fsm0 /*branch forward on bit clear */ ! 224: bbs $0,_scoplp,0b /* if set loop on error */ ! 225: jmp error1 ! 226: bsm0: ! 227: bbc $BIT0,tloc,flgsm0 /*branch to flag test */ ! 228: bbs $0,_scoplp,0b /* if set loop on error */ ! 229: jmp error1 ! 230: ercm0: ! 231: bbs $0,_scoplp,0b /* if set loop on error */ ! 232: jmp error1 ! 233: .space 110 /*dangerous area - don't come in */ ! 234: fsm0: ! 235: bbc $BIT0,tloc,bsm0 /*branch backward on bit clear */ ! 236: bbs $0,_scoplp,0b /* if set loop on error */ ! 237: jmp error1 ! 238: flgsm0: ! 239: jneq errs3 /*Z changed - error */ ! 240: jlss errs3 /*N changed - error */ ! 241: jvs errs3 /*V changed - error */ ! 242: jcc errs3 /*C changed - error */ ! 243: jmp bn7 /* no errors - continue */ ! 244: errs3: ! 245: movpsl _actual /* actual = psl */ ! 246: bbs $0,_scoplp,0b /* if set loop on error */ ! 247: movl $2,_ercode /* error code flag failure */ ! 248: jmp *badrtn ! 249: ! 250: bn7: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 251: b7: callf $4,_setjmp /* save context for error return */ ! 252: movab b7,_stpc /* save address of subtest */ ! 253: movl $7,_subtst /* subtest number */ ! 254: movl $2,_no_opr /* number of operands in use */ ! 255: movl $BIT31,_opr /* first operand */ ! 256: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 257: movl $P2,tloc /*bits 0,8,15,23,31 OFF */ ! 258: bicpsw $PSWMASK ! 259: bbs $BIT31,tloc,ercm31 /*should not branch as bit 31 is OFF */ ! 260: bbc $BIT31,tloc,fsm31 /*branch forward on bit clear */ ! 261: bbs $0,_scoplp,0b /* if set loop on error */ ! 262: jmp error1 ! 263: bsm31: ! 264: bbc $BIT31,tloc,flgcm31/*branch to flag test */ ! 265: bbs $0,_scoplp,0b /* if set loop on error */ ! 266: jmp error1 ! 267: ercm31: ! 268: bbs $0,_scoplp,0b /* if set loop on error */ ! 269: jmp error1 ! 270: .space 110 /*dangerous area - don't come in */ ! 271: fsm31: ! 272: bbc $BIT31,tloc,bsm31 /*branch backward on bit clear */ ! 273: bbs $0,_scoplp,0b /* if set loop on error */ ! 274: jmp error1 ! 275: flgcm31: ! 276: jneq errs4 /*Z changed - error */ ! 277: jlss errs4 /*N changed - error */ ! 278: jvs errs4 /*V changed - error */ ! 279: jcc errs4 /*C changed - error */ ! 280: jmp bn8 /* no errors - continue */ ! 281: errs4: ! 282: movpsl _actual /* actual = psl */ ! 283: bbs $0,_scoplp,0b /* if set loop on error */ ! 284: movl $2,_ercode /* error code flag failure */ ! 285: jmp *badrtn ! 286: ! 287: bn8: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 288: b8: callf $4,_setjmp /* save context for error return */ ! 289: movab b8,_stpc /* save address of subtest */ ! 290: movl $8,_subtst /* subtest number */ ! 291: movl $2,_no_opr /* number of operands in use */ ! 292: movl $BIT8,_opr /* first operand */ ! 293: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 294: movl $P2,tloc /*bits 0,8,15,23,31 OFF */ ! 295: bbs $BIT8,tloc,ercm8 /*should not branch as bit 8 is OFF */ ! 296: bbc $BIT8,tloc,fsm8 /*branch forward on bit clear */ ! 297: bbs $0,_scoplp,0b /* if set loop on error */ ! 298: jmp error1 ! 299: bsm8: ! 300: bbc $BIT8,tloc,sm15 /*next test */ ! 301: bbs $0,_scoplp,0b /* if set loop on error */ ! 302: jmp error1 ! 303: ercm8: ! 304: bbs $0,_scoplp,0b /* if set loop on error */ ! 305: jmp error1 ! 306: .space 110 /*dangerous area - don't come in */ ! 307: fsm8: ! 308: bbc $BIT8,tloc,bsm8 /*branch backward on bit clear */ ! 309: bbs $0,_scoplp,0b /* if set loop on error */ ! 310: jmp error1 ! 311: ! 312: sm15: ! 313: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 314: b9: callf $4,_setjmp /* save context for error return */ ! 315: movab b9,_stpc /* save address of subtest */ ! 316: movl $9,_subtst /* subtest number */ ! 317: movl $2,_no_opr /* number of operands in use */ ! 318: movl $BIT15,_opr /* first operand */ ! 319: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 320: movl $P2,tloc /*bits 0,8,15,23,31 OFF */ ! 321: bbs $BIT15,tloc,ercm15/*should not branch as bit 15 is OFF */ ! 322: bbc $BIT15,tloc,fsm15/*branch forward on bit clear */ ! 323: bbs $0,_scoplp,0b /* if set loop on error */ ! 324: jmp error1 ! 325: bsm15: ! 326: bbc $BIT15,tloc,sm23/*next test */ ! 327: bbs $0,_scoplp,0b /* if set loop on error */ ! 328: jmp error1 ! 329: ercm15: ! 330: bbs $0,_scoplp,0b /* if set loop on error */ ! 331: jmp error1 ! 332: .space 110 /*dangerous area - don't come in */ ! 333: fsm15: ! 334: bbc $BIT15,tloc,bsm15/*branch backward on bit clear */ ! 335: bbs $0,_scoplp,0b /* if set loop on error */ ! 336: jmp error1 ! 337: ! 338: sm23: ! 339: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 340: b10: callf $4,_setjmp /* save context for error return */ ! 341: movab b10,_stpc /* save address of subtest */ ! 342: movl $0xa,_subtst /* subtest number */ ! 343: movl $2,_no_opr /* number of operands in use */ ! 344: movl $BIT23,_opr /* first operand */ ! 345: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 346: movl $P2,tloc /*bits 0,8,15,23,31 OFF */ ! 347: bbs $BIT23,tloc,ercm23 /*should not branch as bit 23 is OFF */ ! 348: bbc $BIT23,tloc,fsm23 /*branch forward on bit clear */ ! 349: bbs $0,_scoplp,0b /* if set loop on error */ ! 350: jmp error1 ! 351: bsm23: ! 352: bbc $BIT23,tloc,last ! 353: bbs $0,_scoplp,0b /* if set loop on error */ ! 354: jmp error1 ! 355: ercm23: ! 356: bbs $0,_scoplp,0b /* if set loop on error */ ! 357: jmp error1 ! 358: .space 110 /*dangerous area - don't come in */ ! 359: fsm23: ! 360: bbc $BIT23,tloc,bsm23/*branch backward on bit clear */ ! 361: bbs $0,_scoplp,0b /* if set loop on error */ ! 362: jmp error1 ! 363: ! 364: last: ! 365: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 366: jmp *return ! 367: ! 368: error1: ! 369: movl $1,_ercode /* error code data miscompare bad branch action */ ! 370: jmp *badrtn /* no actual or expected data */ ! 371: ! 372: /* */ ! 373: /* Variables */ ! 374: /* */ ! 375: .align 2 ! 376: tloc: .space 4 ! 377: ! 378: ! 379: /* End of file */ ! 380:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.