|
|
1.1 ! root 1: ! 2: ! 3: ! 4: /* TESTL (test long) test */ ! 5: ! 6: /*Test name = tstl */ ! 7: /*Description = */ ! 8: /* This test checks "tstl" instruction to see that */ ! 9: /* (1)Z, V, & C flags are set to zero (src < 0) & N = 1 */ ! 10: /* (2)N, V, & C flags are set to zero (src = 0) & Z = 1 */ ! 11: /* (3)all the flags are zero (src > 0). */ ! 12: /* Register 1 (r1) & memory location tmloc(lebel) are used as */ ! 13: /* src(source). */ ! 14: /* */ ! 15: /* Constants definition */ ! 16: /* */ ! 17: .set IPL,8 ! 18: .set HIGH,31 ! 19: .set ZERO,0 ! 20: .set ONES,0xffffffff ! 21: .set N,8 ! 22: .set Z,4 ! 23: .set V,2 ! 24: .set C,1 ! 25: .set PSWMASK,0x003f ! 26: .set SRCB1,0xff ! 27: .set SRCW1,0xffff ! 28: .set SRCL1,0xffffffff ! 29: .set SRCB2,0 ! 30: .set SRCW2,0 ! 31: .set SRCL2,0 ! 32: .set SRCB3,1 ! 33: .set SRCW3,1 ! 34: .set SRCL3,1 ! 35: ! 36: .globl _tst_l ! 37: _tst_l: ! 38: callf $4,_setjmp /* save context for error return */ ! 39: movab _tst_l,_stpc /* save subtest starting address */ ! 40: movl $1,_subtst /* subtest number */ ! 41: movl $1,_no_opr /* number of operands in use */ ! 42: movl $SRCL1,_opr /* first operand in use */ ! 43: 0: movl $SRCL1,r3 /*r3 = source */ ! 44: bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */ ! 45: tstl r3 /*execute "tstl" */ ! 46: beql error1 /*error if Z = 1 */ ! 47: bgeq error1 /*error if N = 0 */ ! 48: bvs error1 /*error if V = 1 */ ! 49: bcc error1 /*error if C = 0 */ ! 50: jmp t2 /* if no error continue */ ! 51: error1: movpsl _actual /* actual = psl it is incorrect */ ! 52: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 53: movl $2,_ercode /* error code flag failure */ ! 54: jmp *badrtn ! 55: /* */ ! 56: /* Now try src = 0 */ ! 57: /* */ ! 58: t2: ! 59: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 60: at2: callf $4,_setjmp /* save context for error return */ ! 61: movab at2,_stpc /* save subtest starting address */ ! 62: movl $2,_subtst /* subtest number */ ! 63: movl $1,_no_opr /* number of operands in use */ ! 64: movl $SRCL2,_opr /* first operand in use */ ! 65: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 66: movl $SRCL2,r3 /*r3 = source */ ! 67: bispsw $(N|V|C) /*turn neg, overflow, & carry ON */ ! 68: tstl r3 /*execute "tstl" */ ! 69: bneq error2 /*error if Z = 0 */ ! 70: blss error2 /*error if N = 1 */ ! 71: bvs error2 /*error if V = 1 */ ! 72: bcc error2 /*error if C = 0 */ ! 73: jmp t3 /* if no error continue */ ! 74: error2: movpsl _actual /* actual = psl it is incorrect */ ! 75: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 76: movl $2,_ercode /* error code flag failure */ ! 77: jmp *badrtn ! 78: /* */ ! 79: /* Now try src > 0 */ ! 80: /* */ ! 81: ! 82: t3: ! 83: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 84: at3: callf $4,_setjmp /* save context for error return */ ! 85: movab at3,_stpc /* save subtest starting address */ ! 86: movl $3,_subtst /* subtest number */ ! 87: movl $1,_no_opr /* number of operands in use */ ! 88: movl $SRCL3,_opr /* first operand in use */ ! 89: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 90: movl $SRCL3,r3 /*r3 = source */ ! 91: bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */ ! 92: tstl r3 /*execute "tstl" */ ! 93: beql error3 /*error if Z = 1 */ ! 94: blss error3 /*error if N = 1 */ ! 95: bvs error3 /*error if V = 1 */ ! 96: bcc error3 /*error if C = 0 */ ! 97: jmp tstlm /* if no error continue */ ! 98: error3: movpsl _actual /* actual = psl it is incorrect */ ! 99: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 100: movl $2,_ercode /* error code flag failure */ ! 101: jmp *badrtn ! 102: ! 103: /* */ ! 104: /* Now use memory location(tmloc) instead of r1 */ ! 105: /* */ ! 106: tstlm: ! 107: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 108: at4: callf $4,_setjmp /* save context for error return */ ! 109: movab at4,_stpc /* save subtest starting address */ ! 110: movl $4,_subtst /* subtest number */ ! 111: movl $1,_no_opr /* number of operands in use */ ! 112: movl $SRCL1,_opr /* first operand in use */ ! 113: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 114: bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */ ! 115: tstl $SRCL1 /*execute "tstl" immediate data */ ! 116: beql error4 /*error if Z = 1 */ ! 117: bgeq error4 /*error if N = 0 */ ! 118: bvs error4 /*error if V = 1 */ ! 119: bcc error4 /*error if C = 0 */ ! 120: jmp t5 /* if no error continue */ ! 121: error4: movpsl _actual /* actual = psl it is incorrect */ ! 122: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 123: movl $2,_ercode /* error code flag failure */ ! 124: jmp *badrtn ! 125: /* */ ! 126: /* Now try src = 0 */ ! 127: /* */ ! 128: t5: ! 129: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 130: at5: callf $4,_setjmp /* save context for error return */ ! 131: movab at5,_stpc /* save subtest starting address */ ! 132: movl $5,_subtst /* subtest number */ ! 133: movl $1,_no_opr /* number of operands in use */ ! 134: movl $SRCL2,_opr /* first operand in use */ ! 135: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 136: movl $SRCL2,tmloc /*tmloc = source */ ! 137: bispsw $(N|V|C) /*turn neg, overflow, & carry ON */ ! 138: tstl tmloc /*execute "tstl" */ ! 139: bneq error5 /*error if Z = 0 */ ! 140: blss error5 /*error if N = 1 */ ! 141: bvs error5 /*error if V = 1 */ ! 142: bcc error5 /*error if C = 0 */ ! 143: jmp t6 /* if no error continue */ ! 144: error5: movpsl _actual /* actual = psl it is incorrect */ ! 145: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 146: movl $2,_ercode /* error code flag failure */ ! 147: jmp *badrtn ! 148: /* */ ! 149: /* Now try src > 0 */ ! 150: /* */ ! 151: ! 152: t6: ! 153: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 154: at6: callf $4,_setjmp /* save context for error return */ ! 155: movab at6,_stpc /* save subtest starting address */ ! 156: movl $6,_subtst /* subtest number */ ! 157: movl $1,_no_opr /* number of operands in use */ ! 158: movl $SRCL3,_opr /* first operand in use */ ! 159: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 160: movl $SRCL3,tmloc /*tmloc = source */ ! 161: bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */ ! 162: tstl tmloc /*execute "tstl" */ ! 163: beql error6 /*error if Z = 1 */ ! 164: blss error6 /*error if N = 1 */ ! 165: bvs error6 /*error if V = 1 */ ! 166: bcc error6 /*error if C = 0 */ ! 167: jmp aldn /* if no error continue */ ! 168: error6: movpsl _actual /* actual = psl it is incorrect */ ! 169: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 170: movl $2,_ercode /* error code flag failure */ ! 171: jmp *badrtn ! 172: ! 173: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 174: jmp *return /* good, return to monitor */ ! 175: ! 176: /* */ ! 177: /* Variables */ ! 178: /* */ ! 179: .align 2 ! 180: tmloc: .space 4 ! 181:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.