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