|
|
1.1 ! root 1: ! 2: /* BITW (bit word) test */ ! 3: /* */ ! 4: /*Test name = bitw */ ! 5: /*Description = */ ! 6: /* This test checks 'bitw' instruction as follows: */ ! 7: /* source mask N Z V C (flags) */ ! 8: /* ______ ____ ______________ */ ! 9: /* 0xaa 0x55 0 1 0 1 */ ! 10: /* 0x55 0xaa 0 1 0 1 */ ! 11: /* 0x80 0x80 0 0 0 1 */ ! 12: /* R M --- */ ! 13: /* M R --- */ ! 14: /* */ ! 15: ! 16: /* */ ! 17: /* Constants definition for 'bit_x' tests */ ! 18: /* */ ! 19: .set SRCB1,0xaa ! 20: .set SRCW1,0xaaaa ! 21: .set SRCL1,0xaaaaaaaa ! 22: .set MASKB1,0x55 ! 23: .set MASKW1,0x5555 ! 24: .set MASKL1,0x55555555 ! 25: .set SRCB2,MASKB1 ! 26: .set SRCW2,MASKW1 ! 27: .set SRCL2,MASKL1 ! 28: .set MASKB2,SRCB1 ! 29: .set MASKW2,SRCW1 ! 30: .set MASKL2,SRCL1 ! 31: .set SRCB3,0x80 ! 32: .set SRCW3,0x8000 ! 33: .set SRCL3,0x80000000 ! 34: .set MASKB3,SRCB3 ! 35: .set MASKW3,SRCW3 ! 36: .set MASKL3,SRCL3 ! 37: /* */ ! 38: /* Syst.s - Constants */ ! 39: /* */ ! 40: .set IPL,8 ! 41: .set HIGH,31 ! 42: .set ZERO,0 ! 43: .set ONES,0xffffffff ! 44: .set N,8 ! 45: .set Z,4 ! 46: .set V,2 ! 47: .set C,1 ! 48: .set T,16 ! 49: .set IV,32 ! 50: .set FU,64 ! 51: .set DV,128 ! 52: .set PSWMASK,0x003f ! 53: ! 54: .globl _bit_w ! 55: _bit_w: ! 56: callf $4,_setjmp /* save context for return from error */ ! 57: movab _bit_w,_stpc /* save address of subtest */ ! 58: movl $1,_subtst /* subtest number */ ! 59: movl $2,_no_opr /* number of operands in use */ ! 60: movl $MASKW1,_opr /* first operand */ ! 61: movl $SRCW1,_opr + 4 /* second operand */ ! 62: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 63: movl $SRCW1,r4 /*r4 = source */ ! 64: movl $MASKW1,tloc /*tloc = mask */ ! 65: bispsw $(N|V|C) /*neg,overflow, & carry ON */ ! 66: bitw tloc+2,r4 /*tloc AND r4 mem to reg */ ! 67: bneq error1 /*error if Z = 0 */ ! 68: blss error1 /*error if N =1 */ ! 69: bvs error1 /*error if V = 1 */ ! 70: bcc error1 /*error if C = 0 */ ! 71: jmp 1f ! 72: error1: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 73: bbs $0,_scoplp,0b /* if set loop on error */ ! 74: movl $2,_ercode /* error code flag failure */ ! 75: jmp *badrtn ! 76: 1: cmpl $SRCW1,r4 /*check source & mask are unchanged */ ! 77: beql 1f /*error - source changed */ ! 78: bbs $0,_scoplp,0b /* if set loop on error */ ! 79: movl $3,_ercode /* error code operand was modified */ ! 80: movl r4,_actual /* actual data */ ! 81: movl $SRCW1,_expected /* expected data */ ! 82: jmp *badrtn ! 83: 1: bicpsw $Z /*clear Z flag */ ! 84: cmpl $MASKW1,tloc /* */ ! 85: beql t2 /* if correct then continue */ ! 86: bbs $0,_scoplp,0b /* if set loop on error */ ! 87: movl $3,_ercode /* error code operand was modified */ ! 88: movl tloc,_actual /* actual data */ ! 89: movl $MASKW1,_expected /* expected data */ ! 90: jmp *badrtn ! 91: ! 92: /* Now use different patterns for source & mask */ ! 93: ! 94: t2: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 95: st2: callf $4,_setjmp /* save context for return from error */ ! 96: movab st2,_stpc /* save address of subtest */ ! 97: movl $2,_subtst /* subtest number */ ! 98: movl $2,_no_opr /* number of operands in use */ ! 99: movl $MASKW2,_opr /* first operand */ ! 100: movl $SRCW2,_opr + 4 /* second operand */ ! 101: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 102: movl $SRCW2,tloc /*r1 = source */ ! 103: movl $MASKW2,r3 /*tloc = mask data to memory */ ! 104: bispsw $(N|V|C) /*neg,overflow, & carry ON */ ! 105: bitw r3,tloc+2 /*r3 AND tloc reg to memory */ ! 106: bneq error2 /*error if Z = 0 */ ! 107: blss error2 /*error if N =1 */ ! 108: bvs error2 /*error if V = 1 */ ! 109: bcc error2 /*error if C = 0 */ ! 110: jmp t3 ! 111: error2: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 112: bbs $0,_scoplp,0b /* if set loop on error */ ! 113: movl $2,_ercode /* error code flag failure */ ! 114: jmp *badrtn ! 115: ! 116: /* Yet another patterns for source & mask */ ! 117: ! 118: t3: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 119: st3: callf $4,_setjmp /* save context for return from error */ ! 120: movab st3,_stpc /* save address of subtest */ ! 121: movl $3,_subtst /* subtest number */ ! 122: movl $2,_no_opr /* number of operands in use */ ! 123: movl $MASKW3,_opr /* first operand */ ! 124: movl $SRCW3,_opr + 4 /* second operand */ ! 125: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 126: movl $SRCW3,r4 /*r4 = source */ ! 127: movl $MASKW3,r3 /*r3 = mask */ ! 128: bispsw $(Z|V) /*zero, & overflow ON */ ! 129: bitw r3,r4 /* r3 AND r4 register to register */ ! 130: beql error3 /*error if Z = 1 */ ! 131: blss error3 /*error if N =1 */ ! 132: bvs error3 /*error if V = 1 */ ! 133: bcc error3 /*error if C = 0 */ ! 134: jmp bitwm ! 135: jmp t3 ! 136: error3: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 137: bbs $0,_scoplp,0b /* if set loop on error */ ! 138: movl $2,_ercode /* error code flag failure */ ! 139: jmp *badrtn ! 140: ! 141: ! 142: /* */ ! 143: /* Repeat the above with source = M, & mask = R */ ! 144: /* */ ! 145: ! 146: bitwm: ! 147: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 148: st4: callf $4,_setjmp /* save context for return from error */ ! 149: movab st4,_stpc /* save address of subtest */ ! 150: movl $4,_subtst /* subtest number */ ! 151: movl $2,_no_opr /* number of operands in use */ ! 152: movl $MASKW1,_opr /* first operand */ ! 153: movl $SRCW1,_opr + 4 /* second operand */ ! 154: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 155: movl $MASKW1,r3 /*r3 = mask */ ! 156: bispsw $(N|V|C) /*neg,overflow, & carry ON */ ! 157: bitw r3,$SRCW1 /*r3 AND $SRCW1 reg to data */ ! 158: bneq error4 /*error if Z = 0 */ ! 159: blss error4 /*error if N =1 */ ! 160: bvs error4 /*error if V = 1 */ ! 161: bcc error4 /*error if C = 0 */ ! 162: jmp 1f ! 163: error4: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 164: bbs $0,_scoplp,0b /* if set loop on error */ ! 165: movl $2,_ercode /* error code flag failure */ ! 166: jmp *badrtn ! 167: 1: bicpsw $Z /*clear Z flag */ ! 168: cmpl $MASKW1,r3 ! 169: beql t5 /*error - mask changed */ ! 170: bbs $0,_scoplp,0b /* if set loop on error */ ! 171: movl $3,_ercode /* error code operand was modified */ ! 172: movl r3,_actual /* actual data */ ! 173: movl $MASKW1,_expected /* expected data */ ! 174: jmp *badrtn ! 175: ! 176: /* Now use different patterns for source & mask */ ! 177: ! 178: t5: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 179: st5: callf $4,_setjmp /* save context for return from error */ ! 180: movab st5,_stpc /* save address of subtest */ ! 181: movl $5,_subtst /* subtest number */ ! 182: movl $2,_no_opr /* number of operands in use */ ! 183: movl $MASKW2,_opr /* first operand */ ! 184: movl $SRCW2,_opr + 4 /* second operand */ ! 185: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 186: movl $SRCW2,tloc /*tloc = source */ ! 187: movl $MASKW2,r4 /*r4 = mask */ ! 188: bispsw $(N|V|C) /*neg,overflow, & carry ON */ ! 189: bitw $SRCW2,r4 /* data AND tloc data to register */ ! 190: jneq error5 /*error if Z = 0 */ ! 191: jlss error5 /*error if N =1 */ ! 192: jvs error5 /*error if V = 1 */ ! 193: jcc error5 /*error if C = 0 */ ! 194: jmp t6 ! 195: error5: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 196: bbs $0,_scoplp,0b /* if set loop on error */ ! 197: movl $2,_ercode /* error code flag failure */ ! 198: jmp *badrtn ! 199: ! 200: /* Yet another patterns for source & mask */ ! 201: ! 202: t6: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 203: st6: callf $4,_setjmp /* save context for return from error */ ! 204: movab st6,_stpc /* save address of subtest */ ! 205: movl $6,_subtst /* subtest number */ ! 206: movl $2,_no_opr /* number of operands in use */ ! 207: movl $MASKW3,_opr /* first operand */ ! 208: movl $SRCW3,_opr + 4 /* second operand */ ! 209: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 210: movl $SRCW3,tloc /*tloc = source */ ! 211: movl $MASKW3,tloc2 /*r1 = mask */ ! 212: bispsw $(Z|V) /*zero, & overflow ON */ ! 213: bitw tloc2+2,tloc+2 /*tloc2 AND tloc memory to memory */ ! 214: jeql error6 /*error if Z = 1 */ ! 215: jgeq error6 /*error if N =1 */ ! 216: jvs error6 /*error if V = 1 */ ! 217: jcc error6 /*error if C = 0 */ ! 218: jmp t7 ! 219: error6: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 220: bbs $0,_scoplp,0b /* if set loop on error */ ! 221: movl $2,_ercode /* error code flag failure */ ! 222: jmp *badrtn ! 223: ! 224: /* Yet another patterns for source & mask */ ! 225: ! 226: t7: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 227: st7: callf $4,_setjmp /* save context for return from error */ ! 228: movab st7,_stpc /* save address of subtest */ ! 229: movl $7,_subtst /* subtest number */ ! 230: movl $2,_no_opr /* number of operands in use */ ! 231: movl $MASKW3,_opr /* first operand */ ! 232: movl $SRCW3,_opr + 4 /* second operand */ ! 233: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 234: movl $SRCW3,tloc /*tloc = source */ ! 235: bispsw $(Z|V) /*zero, & overflow ON */ ! 236: bitw tloc+2,$MASKW3 /*tloc2 AND tloc memory to data */ ! 237: jeql error7 /*error if Z = 1 */ ! 238: jlss error7 /*error if N =1 */ ! 239: jvs error7 /*error if V = 1 */ ! 240: jcc error7 /*error if C = 0 */ ! 241: jmp aldn ! 242: error7: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 243: bbs $0,_scoplp,0b /* if set loop on error */ ! 244: movl $2,_ercode /* error code flag failure */ ! 245: jmp *badrtn ! 246: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 247: jmp *return /* good, return to monitor */ ! 248: ! 249: ! 250: /* */ ! 251: /* Variables */ ! 252: /* */ ! 253: .align 2 ! 254: tloc: .space 4 /*test location */ ! 255: ! 256: .align 2 ! 257: tloc2: ! 258: .space 4 ! 259: ! 260:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.