|
|
1.1 ! root 1: ! 2: ! 3: /* BBSSI (branch on bit set & set interlocked) test */ ! 4: /* */ ! 5: /* This test checks 'bbssi' instruction as follows: */ ! 6: /* (1) forward/backward branch on bit set conditon */ ! 7: /* (2) no branch on bit off condition & bit is set */ ! 8: /* (3) no effect on condition codes */ ! 9: /* */ ! 10: /* */ ! 11: /* Syst.s - Constants */ ! 12: /* */ ! 13: .set IPL,8 ! 14: .set HIGH,31 ! 15: .set ZERO,0 ! 16: .set ONES,0xffffffff ! 17: .set N,8 ! 18: .set Z,4 ! 19: .set V,2 ! 20: .set C,1 ! 21: .set T,16 ! 22: .set IV,32 ! 23: .set FU,64 ! 24: .set DV,128 ! 25: .set PSWMASK,0xf ! 26: ! 27: .globl _bbssi ! 28: _bbssi: ! 29: callf $4,_setjmp /* save context for error return */ ! 30: movab _bbssi,_stpc /* save subtest program counter */ ! 31: movl $1,_subtst /* subtest number */ ! 32: movl $1,_no_opr /* number of operands in use */ ! 33: movl $0xfffffffe,_opr /* first operand */ ! 34: 0: movl $0xfffffffe,r3 /* All bits are set except bit 0 */ ! 35: bicpsw $PSWMASK ! 36: bispsw $(V|Z|C) /*these flags ON */ ! 37: bbssi $0,r3,erc0 /*should not branch as bit 0 is OFF */ ! 38: jneq errorc /*Z changed - error */ ! 39: jlss errorc /*N changed - error */ ! 40: jvc errorc /*V changed - error */ ! 41: jcc errorc /*C changed - error */ ! 42: cmpl $0xffffffff,r3 /*check that bit is set */ ! 43: jeql nxt1 ! 44: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 45: movl $1,_ercode /* error code data miscompare */ ! 46: movl r3,_actual /* actual data */ ! 47: movl $0xffffffff,_expected /* expected */ ! 48: jmp *badrtn /*error - bit did not get set */ ! 49: erc0: ! 50: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 51: movl $3,_ercode /* error code operand miscompare*/ ! 52: movl r3,_actual /* actual data */ ! 53: movl $0xffffffff,_expected /* expected */ ! 54: jmp *badrtn /*error - branch taken with bit off; */ ! 55: ! 56: errorc: ! 57: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 58: movl $2,_ercode /* error code flag failure */ ! 59: movl r3,_actual /* actual data */ ! 60: movl $0xffffffff,_expected /* expected */ ! 61: jmp *badrtn /*error - error in flags */ ! 62: ! 63: .space 12 /*dangerous area - don't come in */ ! 64: nxt1: ! 65: bbs $0,_force_lp,0 /* if set loop on last subtest */ ! 66: nxt: callf $4,_setjmp /* save context for error return */ ! 67: movab nxt,_stpc /* save subtest program counter */ ! 68: movl $2,_subtst /* subtest number */ ! 69: movl $1,_no_opr /* number of operands in use */ ! 70: movl $1,_opr /* first operand */ ! 71: 0: movl $1,r3 /* All bit off except bit 0 */ ! 72: bispsw $(Z|N|V|C) /*these flags ON */ ! 73: bbssi $0,r3,nxt2 /*now branch forward as bit in ON */ ! 74: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 75: movl $3,_ercode /* error code operand miscompare */ ! 76: movl r3,_actual /* actual data */ ! 77: movl $1,_expected /* expected */ ! 78: jmp *badrtn /*error - did not branch with bit set; */ ! 79: .space 400 ! 80: nxt2: ! 81: movl $3,r1 /* subtest number */ ! 82: cmpl $1,r3 /* Check if bit is set */ ! 83: jeql nxt3 ! 84: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 85: movl $1,_ercode /* error code data miscompare */ ! 86: movl r3,_actual /* actual data */ ! 87: movl $1,_expected /* expected */ ! 88: jmp *badrtn /*error - bit did not get set */ ! 89: ! 90: nxt3: ! 91: bbs $0,_force_lp,0 /* if set loop on last subtest */ ! 92: nx: callf $4,_setjmp /* save context for error return */ ! 93: movab nx,_stpc /* save subtest program counter */ ! 94: movl $3,_subtst /* subtest number */ ! 95: movl $1,_no_opr /* number of operands in use */ ! 96: movl $0x7fffffff,_opr /* first operand */ ! 97: 0: movl $0x7fffffff,r3 /* All bits are set except bit 31 */ ! 98: bicpsw $PSWMASK ! 99: bispsw $(V|N|C) /*these flags ON */ ! 100: bbssi $31,r3,erc1 /*should not branch as bit 31 is OFF */ ! 101: jeql errord /*Z changed - error */ ! 102: jgeq errord /*N changed - error */ ! 103: jvc errord /*V changed - error */ ! 104: jcc errord /*C changed - error */ ! 105: cmpl $0xffffffff,r3 /*check that bit is set */ ! 106: jeql nxt4 ! 107: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 108: movl $1,_ercode /* error code data miscompare */ ! 109: movl r3,_actual /* actual data */ ! 110: movl $0x7fffffff,_expected /* expected */ ! 111: jmp *badrtn /*error - bit did not get set */ ! 112: erc1: ! 113: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 114: movl $3,_ercode /* error code operand miscompare */ ! 115: movl r3,_actual /* actual data */ ! 116: movl $0x7fffffff,_expected /* expected */ ! 117: jmp *badrtn /*error - branch taken with bit off; */ ! 118: errord: ! 119: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 120: movl $2,_ercode /* error code flag failure */ ! 121: movl r3,_actual /* actual data */ ! 122: movl $0x7fffffff,_expected /* expected */ ! 123: jmp *badrtn /*error - error in flags */ ! 124: nxt4: ! 125: bbs $0,_force_lp,0 /* if set loop on last subtest */ ! 126: n: callf $4,_setjmp /* save context for error return */ ! 127: movab n,_stpc /* save subtest program counter */ ! 128: movl $4,_subtst /* subtest number */ ! 129: movl $1,_no_opr /* number of operands in use */ ! 130: movl $0x80000000,_opr /* first operand */ ! 131: 0: movl $0x80000000,r3 /* All bit off except bit 31 */ ! 132: bispsw $(Z|N|V|C) /*these flags ON */ ! 133: bbssi $31,r3,nxt5 /*now branch forward as bit in ON */ ! 134: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 135: movl $3,_ercode /* error code operand misompare */ ! 136: movl r3,_actual /* actual data */ ! 137: movl $0x80000000,_expected /* expected */ ! 138: jmp *badrtn /*error - did not branch with bit set; */ ! 139: .space 400 ! 140: nxt5: ! 141: cmpl $0x80000000,r3 /* Check if bit still set ? */ ! 142: jeql nxt6 ! 143: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 144: movl $1,_ercode /* error code data miscompare */ ! 145: movl r3,_actual /* actual data */ ! 146: movl $0x80000000,_expected /* expected */ ! 147: jmp *badrtn /*error - bit did not get set */ ! 148: ! 149: /* */ ! 150: /* Now use memory location (tloc) instead of register */ ! 151: /* */ ! 152: ! 153: nxt6: ! 154: bbs $0,_force_lp,0 /* if set loop on last subtest */ ! 155: txn: callf $4,_setjmp /* save context for error return */ ! 156: movab txn,_stpc /* save subtest program counter */ ! 157: movl $5,_subtst /* subtest number */ ! 158: movl $1,_no_opr /* number of operands in use */ ! 159: movl $0xfffffffe,_opr /* first operand */ ! 160: 0: movl $0xfffffffe,tloc /* All bits are set except bit 0 */ ! 161: bicpsw $PSWMASK ! 162: bispsw $(V|Z|C) /*these flags ON */ ! 163: bbssi $0,tloc,erc2 /*should not branch as bit 0 is OFF */ ! 164: jneq errore /*Z changed - error */ ! 165: jlss errore /*N changed - error */ ! 166: jvc errore /*V changed - error */ ! 167: jcc errore /*C changed - error */ ! 168: cmpl $0xffffffff,tloc /* Check that bit is set */ ! 169: jeql nxt7 ! 170: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 171: movl $1,_ercode /* error code data miscompare */ ! 172: movl tloc,_actual /* actual data */ ! 173: movl $0xffffffff,_expected /* expected */ ! 174: jmp *badrtn /*error - bit did not get set */ ! 175: erc2: ! 176: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 177: movl $3,_ercode /* error code operand miscompare */ ! 178: movl tloc,_actual /* actual data */ ! 179: movl $0xffffffff,_expected /* expected */ ! 180: jmp *badrtn /*error - branch taken with bit off; */ ! 181: ! 182: errore: ! 183: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 184: movl $2,_ercode /* error flag miscompare */ ! 185: movl tloc,_actual /* actual data */ ! 186: movl $0xffffffff,_expected /* expected */ ! 187: jmp *badrtn /*error - error in flags */ ! 188: ! 189: nxt7: ! 190: bbs $0,_force_lp,0 /* if set loop on last subtest */ ! 191: tx: callf $4,_setjmp /* save context for error return */ ! 192: movab tx,_stpc /* save subtest program counter */ ! 193: movl $6,_subtst /* subtest number */ ! 194: movl $1,_no_opr /* number of operands in use */ ! 195: movl $1,_opr /* first operand */ ! 196: 0: movl $1,tloc /* All bit off except bit 0 */ ! 197: bbssi $0,tloc,nxt8 /*now branch forward as bit in ON */ ! 198: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 199: movl $3,_ercode /* error code operand miscompare */ ! 200: movl tloc,_actual /* actual data */ ! 201: movl $1,_expected /* expected */ ! 202: jmp *badrtn /*error - did not branch with bit set; */ ! 203: .space 400 ! 204: nxt8: ! 205: cmpl $1,tloc /* Check if bit is set */ ! 206: jeql nxt9 ! 207: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 208: movl $1,_ercode /* error code data miscompare */ ! 209: movl tloc,_actual /* actual data */ ! 210: movl $1,_expected /* expected */ ! 211: jmp *badrtn /*error - bit did not get set */ ! 212: nxt9: ! 213: bbs $0,_force_lp,0 /* if set loop on last subtest */ ! 214: tx9: callf $4,_setjmp /* save context for error return */ ! 215: movab tx9,_stpc /* save subtest program counter */ ! 216: movl $7,_subtst /* subtest number */ ! 217: movl $1,_no_opr /* number of operands in use */ ! 218: movl $0x7fffffff,_opr /* first operand */ ! 219: 0: movl $0x7fffffff,tloc /* All bits are set except bit 31 */ ! 220: bicpsw $PSWMASK ! 221: bispsw $(V|N|C) /*these flags ON */ ! 222: bbssi $31,tloc,erc3 /*should not branch as bit 31 is OFF */ ! 223: jeql errorf /*Z changed - error */ ! 224: jgeq errorf /*N changed - error */ ! 225: jvc errorf /*V changed - error */ ! 226: jcc errorf /*C changed - error */ ! 227: cmpl $0xffffffff,tloc /* Check that bit is set */ ! 228: jeql nxt10 ! 229: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 230: movl $1,_ercode /* error code data miscompare */ ! 231: movl tloc,_actual /* actual data */ ! 232: movl $0xffffffff,_expected /* expected */ ! 233: jmp *badrtn /*error - bit did not get set */ ! 234: erc3: ! 235: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 236: movl $3,_ercode /* error code operand miscompare */ ! 237: movl tloc,_actual /* actual data */ ! 238: movl $0x7ffffffff,_expected /* expected */ ! 239: jmp *badrtn /*error - branch taken with bit off; */ ! 240: errorf: ! 241: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 242: movl $2,_ercode /* error flag miscompare */ ! 243: movl tloc,_actual /* actual data */ ! 244: movl $0xffffffff,_expected /* expected */ ! 245: jmp *badrtn /*error - error in flags */ ! 246: nxt10: ! 247: bbs $0,_force_lp,0 /* if set loop on last subtest */ ! 248: tx10: callf $4,_setjmp /* save context for error return */ ! 249: movab tx10,_stpc /* save subtest program counter */ ! 250: movl $8,_subtst /* subtest number */ ! 251: movl $1,_no_opr /* number of operands in use */ ! 252: movl $0x8000000,_opr /* first operand */ ! 253: 0: movl $0x80000000,tloc /* All bit off except bit 31 */ ! 254: bbssi $31,tloc,nxt11 /*now branch forward as bit in ON */ ! 255: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 256: movl $3,_ercode /* error code operand miscompare */ ! 257: movl tloc,_actual /* actual data */ ! 258: movl $8000000,_expected /* expected */ ! 259: jmp *badrtn /*error - did not branch with bit set; */ ! 260: .space 400 ! 261: nxt11: ! 262: movl $0xd,r1 /* subtest number */ ! 263: cmpl $0x80000000,tloc /* Check if bit still set ? */ ! 264: jeql nxt12 ! 265: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 266: movl $1,_ercode /* error code data miscompare */ ! 267: movl tloc,_actual /* actual data */ ! 268: movl $0x80000000,_expected /* expected */ ! 269: jmp *badrtn /*error - bit did not get set */ ! 270: ! 271: nxt12: ! 272: bbs $0,_force_lp,0 /* if set loop on last subtest */ ! 273: movl $0,_ercode /* no error all done */ ! 274: jmp *return /*good , goto monitor */ ! 275: ! 276: /* */ ! 277: /* Variables */ ! 278: /* */ ! 279: .align 2 ! 280: tloc: .long 0 ! 281:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.