|
|
1.1 ! root 1: ! 2: /* BITL (bit long) test */ ! 3: /* */ ! 4: /*Test name = bitl */ ! 5: /*Description = */ ! 6: /* This test checks 'bitl' 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_l ! 55: _bit_l: ! 56: callf $4,_setjmp /* save context for return from error */ ! 57: movab _bit_l,_stpc /* save address of subtest */ ! 58: movl $1,_subtst /* subtest number */ ! 59: movl $2,_no_opr /* number of operand in use */ ! 60: movl $MASKL1,_opr /* first operand */ ! 61: movl $SRCL1,_opr + 4 /* second operand */ ! 62: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 63: movl $SRCL1,r4 /*r4 = source */ ! 64: movl $MASKL1,tloc /*tloc = mask */ ! 65: bispsw $(N|V|C) /*neg,overflow, & carry ON */ ! 66: bitl tloc,r4 /*tloc AND r4 mem to reg */ ! 67: jneq error1 /*error if Z = 0 */ ! 68: jlss error1 /*error if N =1 */ ! 69: jvs error1 /*error if V = 1 */ ! 70: jcc 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 scope loop on error */ ! 74: movl $2,_ercode /* error code flag failure */ ! 75: jmp *badrtn ! 76: 1: cmpl $SRCL1,r4 /*check source & mask are unchanged */ ! 77: beql 1f /*error - source changed */ ! 78: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 79: movl $3,_ercode /* error code operand was modified */ ! 80: movl r4,_actual /* actual data */ ! 81: movl $SRCL1,_expected /* expected data */ ! 82: jmp *badrtn ! 83: 1: bicpsw $Z /*clear Z flag */ ! 84: cmpl $MASKL1,tloc /* */ ! 85: beql t2 /*error - source changed */ ! 86: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 87: movl $3,_ercode /* error code operand was modified */ ! 88: movl tloc,_actual /* actual data */ ! 89: movl $MASKL1,_expected /* expected data */ ! 90: jmp *badrtn ! 91: ! 92: /* Now use different patterns for source & mask */ ! 93: ! 94: t2: ! 95: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 96: st2: callf $4,_setjmp /* save context for return from error */ ! 97: movab st2,_stpc /* save address of subtest */ ! 98: movl $2,_subtst /* subtest number */ ! 99: movl $2,_no_opr /* number of operand in use */ ! 100: movl $MASKL2,_opr /* first operand */ ! 101: movl $SRCL2,_opr + 4 /* second operand */ ! 102: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 103: movl $SRCL2,r3 /*r3 = source */ ! 104: movl $MASKL2,tloc /*tloc = mask */ ! 105: bispsw $(N|V|C) /*neg,overflow, & carry ON */ ! 106: bitl r3,tloc /* r3 AND tloc reg to mem */ ! 107: bneq error2 /*error if Z = 0 */ ! 108: blss error2 /*error if N =1 */ ! 109: bvs error2 /*error if V = 1 */ ! 110: bcc error2 /*error if C = 0 */ ! 111: jmp st3 ! 112: error2: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 113: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 114: movl $2,_ercode /* error code flag failure */ ! 115: jmp *badrtn ! 116: ! 117: /* Yet another patterns for source & mask */ ! 118: ! 119: t3: ! 120: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 121: st3: callf $4,_setjmp /* save context for return from error */ ! 122: movab st3,_stpc /* save address of subtest */ ! 123: movl $3,_subtst /* subtest number */ ! 124: movl $2,_no_opr /* number of operand in use */ ! 125: movl $MASKL3,_opr /* first operand */ ! 126: movl $SRCL3,_opr + 4 /* second operand */ ! 127: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 128: movl $MASKL3,r3 /*tloc = mask */ ! 129: bispsw $(Z|V) /*zero, & overflow ON */ ! 130: bitl r3,$SRCL3 /*r3 AND data reg to data */ ! 131: beql error3 /*error if Z = 1 */ ! 132: bgeq error3 /*error if N =1 */ ! 133: bvs error3 /*error if V = 1 */ ! 134: bcc error3 /*error if C = 0 */ ! 135: jmp bitlm ! 136: error3: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 137: bbs $0,_scoplp,0b /* if set scope 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: bitlm: ! 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 operand in use */ ! 152: movl $MASKL1,_opr /* first operand */ ! 153: movl $SRCL1,_opr + 4 /* second operand */ ! 154: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 155: movl $SRCL1,r4 /*tloc = source */ ! 156: bispsw $(N|V|C) /*neg,overflow, & carry ON */ ! 157: bitl $MASKL1,r4 /* data AND r1 data to reg */ ! 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 scope loop on error */ ! 165: movl $2,_ercode /* error code flag failure */ ! 166: jmp *badrtn ! 167: 1: cmpl $SRCL1,r4 /*check source & mask are unchanged */ ! 168: beql t5 /*error - source changed */ ! 169: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 170: movl $3,_ercode /* error code operand was modified */ ! 171: movl r4,_actual /* actual data */ ! 172: movl $SRCL1,_expected /* expected data */ ! 173: jmp *badrtn ! 174: ! 175: /* Now use different patterns for source & mask */ ! 176: ! 177: t5: ! 178: 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 operand in use */ ! 183: movl $MASKL2,_opr /* first operand */ ! 184: movl $SRCL2,_opr + 4 /* second operand */ ! 185: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 186: movl $SRCL2,tloc /*tloc = source */ ! 187: movl $MASKL2,r3 /*r3 = mask */ ! 188: bispsw $(N|V|C) /*neg,overflow, & carry ON */ ! 189: bitl $MASKL2,$SRCL2 /* data and data */ ! 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: jeql t6 ! 195: error5: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 196: bbs $0,_scoplp,0b /* if set scope 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: ! 203: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 204: st6: callf $4,_setjmp /* save context for return from error */ ! 205: movab st6,_stpc /* save address of subtest */ ! 206: movl $6,_subtst /* subtest number */ ! 207: movl $2,_no_opr /* number of operand in use */ ! 208: movl $MASKL3,_opr /* first operand */ ! 209: movl $SRCL3,_opr + 4 /* second operand */ ! 210: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 211: movl $SRCL3,tloc /*tloc = source */ ! 212: movl $MASKL3,r3 /*r3 = mask */ ! 213: bispsw $(Z|V) /*zero, & overflow ON */ ! 214: bitl r3,tloc /*r1 AND tloc */ ! 215: jeql error6 /*error if Z = 1 */ ! 216: jgeq error6 /*error if N =1 */ ! 217: jvs error6 /*error if V = 1 */ ! 218: jcc error6 /*error if C = 0 */ ! 219: jmp t7 ! 220: error6: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 221: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 222: movl $2,_ercode /* error code flag failure */ ! 223: jmp *badrtn ! 224: /* Yet another patterns for source & mask */ ! 225: ! 226: t7: ! 227: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 228: st7: callf $4,_setjmp /* save context for return from error */ ! 229: movab st7,_stpc /* save address of subtest */ ! 230: movl $7,_subtst /* subtest number */ ! 231: movl $2,_no_opr /* number of operand in use */ ! 232: movl $MASKL3,_opr /* first operand */ ! 233: movl $SRCL3,_opr + 4 /* second operand */ ! 234: 0: bicpsw $PSWMASK /*clear overflow enable */ ! 235: movl $SRCL3,r4 /*tloc = source */ ! 236: movl $MASKL3,r3 /*r3 = mask */ ! 237: bispsw $(Z|V) /*zero, & overflow ON */ ! 238: bitl r3,r4 /*r3 AND r4 reg to reg */ ! 239: jeql error7 /*error if Z = 1 */ ! 240: jgeq error7 /*error if N =1 */ ! 241: jvs error7 /*error if V = 1 */ ! 242: jcc error7 /*error if C = 0 */ ! 243: jmp aldn ! 244: error7: movpsl _actual /* actual psl MAYBE it is incorrect */ ! 245: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 246: movl $2,_ercode /* error code flag failure */ ! 247: jmp *badrtn ! 248: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 249: jmp *return /* good, return to monitor */ ! 250: /* */ ! 251: /* Variables */ ! 252: /* */ ! 253: .align 2 ! 254: tloc: .space 4 /*test location */ ! 255: ! 256:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.