|
|
1.1 ! root 1: /* INCB instruction test */ ! 2: /* Privilege registers */ ! 3: ! 4: .set IPL,0x8 ! 5: .set MAPEN,0x9 ! 6: .set KSP,0x19 ! 7: ! 8: /* PSL fields */ ! 9: .set IV,32 ! 10: .set T,16 ! 11: .set N,8 ! 12: .set Z,4 ! 13: .set V,2 ! 14: .set C,1 ! 15: ! 16: /* constants */ ! 17: .set DISABLE,0 ! 18: .set ENABLE,1 ! 19: .set MAXPOSL,0x7fffffff ! 20: .set MAXNEGL,0x80000000 ! 21: .set MAXPOSW,0x7fff ! 22: .set MAXNEGW,0x8000 ! 23: .set MAXPOSB,0x7f ! 24: .set MAXNEGB,0x80 ! 25: .set ZERO,0 ! 26: .set ONES,0xffffffff ! 27: .set HIGH,31 /* highest interrupt priority */ ! 28: ! 29: .globl _inc_b ! 30: _inc_b: ! 31: callf $4,_setjmp /* save context for error return */ ! 32: movab _inc_b,_stpc /* save address of subtest start */ ! 33: movl $1,_subtst /* subtest number */ ! 34: movl $1,_no_opr /* number of operands in use */ ! 35: movl $0xfffffffe,_opr /* first operand */ ! 36: 0: bicpsw $(IV|T) /* disable overflow,trace exceptions */ ! 37: incrb: /* INCREMENT REGISTER */ ! 38: movl $0xfffffffe,r3 /* load r3 with -2 */ ! 39: bispsw $(Z|V|C) /* set z,v,c flags */ ! 40: bicpsw $N /* clear n flag */ ! 41: incb r3 /* increment r3 */ ! 42: jgeq error1 /* error if n flag not set */ ! 43: jeql error1 /* error if z flag still set */ ! 44: jvs error1 /* error if v flag still set */ ! 45: jcs error1 /* error if c flag still set */ ! 46: jmp 1f ! 47: error1: movpsl _actual /* actual = psl MAYBE is incorrect */ ! 48: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 49: movl $2,_ercode /* error code flag failure */ ! 50: jmp *badrtn ! 51: 1: cmpl $0xffffffff,r3 /* is r3 = -1 */ ! 52: jeql step2 ! 53: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 54: movl $1,_ercode /* error code data miscompare */ ! 55: movl r3,_actual /* actual data */ ! 56: movl $0xffffffff,_expected /* expected data */ ! 57: jmp *badrtn ! 58: step2: ! 59: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 60: ai2: callf $4,_setjmp /* save context for error return */ ! 61: movab ai2,_stpc /* save address of subtest start */ ! 62: movl $2,_subtst /* subtest number */ ! 63: movl $1,_no_opr /* number of operands in use */ ! 64: movl $0xfffffffe,_opr /* first operand */ ! 65: 0: bispsw $(N|V) /* set n,v flags */ ! 66: bicpsw $(Z|C) /* clear z,c flag */ ! 67: incb r3 /* increment r3 */ ! 68: jlss error2 /* error if n flag still set */ ! 69: jvs error2 /* error if v flag still set */ ! 70: jneq error2 /* error if z flag not set */ ! 71: jcc error2 /* error if c flag not set */ ! 72: jmp 1f ! 73: error2: movpsl _actual /* actual = psl MAYBE is incorrect */ ! 74: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 75: movl $2,_ercode /* error code flag failure */ ! 76: jmp *badrtn ! 77: 1: bicpsw $Z ! 78: cmpl $0x0,r3 /* is r3 == 0x0 */ ! 79: jeql ovfl ! 80: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 81: movl $1,_ercode /* error code data miscompare */ ! 82: movl r3,_actual /* actual data */ ! 83: movl $0,_expected /* expected data */ ! 84: jmp *badrtn ! 85: ovfl: ! 86: # To be investigate : what hareware does if this happen !! an incb is executed ! 87: # to an incorrect data ! 88: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 89: ai3: callf $4,_setjmp /* save context for error return */ ! 90: movab ai3,_stpc /* save address of subtest start */ ! 91: movl $3,_subtst /* subtest number */ ! 92: movl $1,_no_opr /* number of operands in use */ ! 93: movl $0x7fffffff,_opr /* first operand */ ! 94: 0: movl $0x7fffffff,r3 /* set r3 = 0x7fffffff */ ! 95: bispsw $(Z|C|N) /* set n,z,c flags */ ! 96: bicpsw $V /* clear v flags */ ! 97: incb r3 /* increment r3 */ ! 98: jvs error3 /* error if v flag not set */ ! 99: jlss error3 /* error if n flag set */ ! 100: jeql error3 /* error if z flag still set */ ! 101: jcs error3 /* error if c flag still set */ ! 102: jmp 1f ! 103: error3: movpsl _actual /* actual = psl MAYBE is incorrect */ ! 104: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 105: movl $2,_ercode /* error code flag failure */ ! 106: jmp *badrtn ! 107: 1: cmpl $MAXNEGL,r3 /* is r3 == 0x80000000 */ ! 108: jeql incmb ! 109: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 110: movl $1,_ercode /* error code data miscompare */ ! 111: movl r3,_actual /* actual data */ ! 112: movl $MAXNEGL,_expected /* expected data */ ! 113: jmp *badrtn ! 114: incmb: /* INCREMENT MEMORY */ ! 115: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 116: ai4: callf $4,_setjmp /* save context for error return */ ! 117: movab ai4,_stpc /* save address of subtest start */ ! 118: movl $4,_subtst /* subtest number */ ! 119: movl $1,_no_opr /* number of operands in use */ ! 120: movl $0xfeffffff,_opr /* first operand */ ! 121: 0: movl $0xfeffffff,tstloc /* load tstloc with -2 (byte) */ ! 122: bispsw $(Z|V|C) /* set z,v,c flags */ ! 123: bicpsw $N /* clear n flag */ ! 124: incb tstloc /* increment tstloc */ ! 125: jgeq error4 /* error if n flag not set */ ! 126: jeql error4 /* error if z flag still set */ ! 127: jvs error4 /* error if v flag still set */ ! 128: jcs error4 /* error if c flag still set */ ! 129: jmp 1f ! 130: error4: movpsl _actual /* actual = psl MAYBE is incorrect */ ! 131: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 132: movl $2,_ercode /* error code flag failure */ ! 133: jmp *badrtn ! 134: 1: cmpl $0xffffffff,tstloc /* is tstloc == -1 */ ! 135: jeql stp2 ! 136: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 137: movl $1,_ercode /* error code data miscompare */ ! 138: movl tstloc,_actual /* actual data */ ! 139: movl $0xffffffff,_expected /* expected data */ ! 140: jmp *badrtn ! 141: stp2: ! 142: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 143: ai5: callf $4,_setjmp /* save context for error return */ ! 144: movab ai5,_stpc /* save address of subtest start */ ! 145: movl $5,_subtst /* subtest number */ ! 146: movl $1,_no_opr /* number of operands in use */ ! 147: movl $0xffffffff,_opr /* first operand */ ! 148: 0: bispsw $(N|V) /* set n,v flags */ ! 149: bicpsw $(Z|C) /* clear z,c flag */ ! 150: incb tstloc /* increment tstloc */ ! 151: jlss error5 /* error if n flag still set */ ! 152: jvs error5 /* error if v flag still set */ ! 153: jneq error5 /* error if z flag not set */ ! 154: jcc error5 /* error if c flag not set */ ! 155: jmp 1f ! 156: error5: movpsl _actual /* actual = psl MAYBE is incorrect */ ! 157: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 158: movl $2,_ercode /* error code flag failure */ ! 159: jmp *badrtn ! 160: 1: bicpsw $Z ! 161: cmpl $0x00ffffff,tstloc /* is tstloc == 0x00ffffff */ ! 162: jeql ovfl1 ! 163: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 164: movl $1,_ercode /* error code data miscompare */ ! 165: movl tstloc,_actual /* actual data */ ! 166: movl $0x00ffffff,_expected /* expected data */ ! 167: jmp *badrtn ! 168: ovfl1: ! 169: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 170: ai6: callf $4,_setjmp /* save context for error return */ ! 171: movab ai6,_stpc /* save address of subtest start */ ! 172: movl $6,_subtst /* subtest number */ ! 173: movl $1,_no_opr /* number of operands in use */ ! 174: movl $0x7fffffff,_opr /* first operand */ ! 175: 0: movl $0x7fffffff,tstloc /* tstloc = 0x7fffffff */ ! 176: bispsw $(Z|C|N) /* set n,z,c flags */ ! 177: bicpsw $V /* clear n,v flags */ ! 178: incb tstloc /* increment tstloc */ ! 179: jvc error6 /* error if v flag not set */ ! 180: jlss error6 /* error if n flag set */ ! 181: jeql error6 /* error if z flag still set */ ! 182: jcs error6 /* error if c flag still set */ ! 183: jmp 1f ! 184: error6: movpsl _actual /* actual = psl MAYBE is incorrect */ ! 185: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 186: movl $2,_ercode /* error code flag failure */ ! 187: jmp *badrtn ! 188: 1: cmpl $0x80ffffff,tstloc /* is tstloc == 0x80ffffff */ ! 189: jeql aldn ! 190: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 191: movl $1,_ercode /* error code data miscompare */ ! 192: movl tstloc,_actual /* actual data */ ! 193: movl $0x80ffffff,_expected /* expected data */ ! 194: jmp *badrtn ! 195: ! 196: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 197: jmp *return ! 198: /* */ ! 199: /* test data */ ! 200: .align 2 ! 201: tstloc: .long 0 ! 202:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.