|
|
1.1 ! root 1: /* DECB instruction test */ ! 2: # R2 = error code ! 3: # 1 : error in flags ! 4: # 2 : result is not as expected ! 5: # ! 6: .set IPL,8 ! 7: .set MAPEN,9 ! 8: .set KSP,19 ! 9: ! 10: /* PSL fields */ ! 11: .set IV,32 ! 12: .set T,16 ! 13: .set N,8 ! 14: .set Z,4 ! 15: .set V,2 ! 16: .set C,1 ! 17: ! 18: /* constants */ ! 19: .set MAXPOSL,0x7fffffff ! 20: .set MAXNEGL,0x80000000 ! 21: .set MAXPOSW,0x7fff ! 22: .set MAXNEGW,0x8000 ! 23: .set MAXPOSB,0x7f ! 24: .set MAXNEGB,0xffffff80 ! 25: .set ZERO,0 ! 26: .set ONES,0xffffffff ! 27: .set HIGH,31 /* highest interrupt priority */ ! 28: ! 29: .globl _decb ! 30: _decb: ! 31: callf $4,_setjmp /* save context for error return */ ! 32: movab _decb,_stpc /* save address of subtest start */ ! 33: movl $1,_subtst /* subtest number */ ! 34: movl $1,_no_opr /* number of operands in use */ ! 35: movl $1,_opr /* first operand */ ! 36: 0: bicpsw $(IV|T) /* disable overflow,trace exceptions */ ! 37: /* DECREMENT REGISTER */ ! 38: movl $1,r3 /* load r3 with 1 */ ! 39: bispsw $(N|V) /* set n,v flags */ ! 40: bicpsw $(C|Z) /* clear c,z flag */ ! 41: decb r3 /* decrement r3 */ ! 42: jneq error1 /* error if z flag not set */ ! 43: jcc error1 /* error if c flag not set */ ! 44: jlss error1 /* error if n flag still set */ ! 45: jvs error1 /* error if v flag still set */ ! 46: jmp 1f ! 47: error1: movpsl _actual /* actual = psl MAYBE it 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 $0,r3 /* compare r3 to 0 */ ! 52: jeql ovf1 ! 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 $0,_expected /* expected data */ ! 57: jmp *badrtn ! 58: ! 59: ovf1: ! 60: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 61: d2: callf $4,_setjmp /* save context for error return */ ! 62: movab d2,_stpc /* save address of subtest start */ ! 63: movl $2,_subtst /* subtest number */ ! 64: movl $1,_no_opr /* number of operands in use */ ! 65: movl $MAXNEGB,_opr /* first operand */ ! 66: 0: movl $MAXNEGB,r3 /* load r3 with largest neg. value */ ! 67: bicpsw $(V|C|N) /* clear n,v,c flag */ ! 68: bispsw $Z /* set z flags */ ! 69: decb r3 /* decrement r3 */ ! 70: jeql error2 /* error if z flag still set */ ! 71: jgeq error2 /* error if n flag not set */ ! 72: jcc error2 /* error if c flag not set */ ! 73: jvc error2 /* error if v flag not set */ ! 74: jmp 1f ! 75: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 76: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 77: movl $2,_ercode /* error code flag failure */ ! 78: jmp *badrtn ! 79: 1: cmpl $0xffffff7f,r3 /* compare r3 to largest pos. value */ ! 80: jeql d3 ! 81: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 82: movl $1,_ercode /* error code data miscompare */ ! 83: movl r3,_actual /* actual data */ ! 84: movl $0xffffff7f,_expected /* expected data */ ! 85: jmp *badrtn ! 86: ! 87: d3: ! 88: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 89: ad3: callf $4,_setjmp /* save context for error return */ ! 90: movab ad3,_stpc /* save address of subtest start */ ! 91: movl $3,_subtst /* subtest number */ ! 92: movl $1,_no_opr /* number of operands in use */ ! 93: movl $MAXNEGB,_opr /* first operand */ ! 94: 0: movl $0,r3 ! 95: bispsw $(C|Z|V) /* set c,z,v flags */ ! 96: bicpsw $N /* clear n flag */ ! 97: decb r3 ! 98: jeql error3 /* error if z flag still set */ ! 99: jcs error3 /* error if c flag still set */ ! 100: jvs error3 /* error if v flag still set */ ! 101: jgeq error3 /* error if n flag clear */ ! 102: jmp 1f ! 103: error3: movpsl _actual /* actual = psl MAYBE it 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 $0xffffffff,r3 /* compare r3 to -1 */ ! 108: jeql decmb ! 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 $0xffffffff,_expected /* expected data */ ! 113: jmp *badrtn ! 114: ! 115: decmb: /* DECREMENT MEMORY */ ! 116: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 117: ad4: callf $4,_setjmp /* save context for error return */ ! 118: movab ad4,_stpc /* save address of subtest start */ ! 119: movl $4,_subtst /* subtest number */ ! 120: movl $1,_no_opr /* number of operands in use */ ! 121: movl $0x01ffffff,_opr /* first operand */ ! 122: 0: movl $0x01ffffff,tstloc /* load tstloc with 0x01ffffff */ ! 123: bispsw $(N|V) /* set n,v flags */ ! 124: bicpsw $(C|Z) /* clear c,z flag */ ! 125: decb tstloc /* decrement value in tstloc */ ! 126: jneq error4 /* error if z flag not set */ ! 127: jcc error4 /* error if c flag not set */ ! 128: jlss error4 /* error if n flag still set */ ! 129: jvs error4 /* error if v flag still set */ ! 130: jmp 1f ! 131: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 132: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 133: movl $2,_ercode /* error code flag failure */ ! 134: jmp *badrtn ! 135: 1: bicpsw $Z ! 136: cmpl $0x00ffffff,tstloc /* compare tstloc to 0x00ffffff */ ! 137: jeql ovf2 ! 138: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 139: movl $1,_ercode /* error code data miscompare */ ! 140: movl tstloc,_actual /* actual data */ ! 141: movl $0x00ffffff,_expected /* expected data */ ! 142: jmp *badrtn ! 143: ovf2: ! 144: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 145: ad5: callf $4,_setjmp /* save context for error return */ ! 146: movab ad5,_stpc /* save address of subtest start */ ! 147: movl $5,_subtst /* subtest number */ ! 148: movl $1,_no_opr /* number of operands in use */ ! 149: movl $0x80333333,_opr /* first operand */ ! 150: 0: movl $0x80333333,tstloc ! 151: bispsw $Z /* set z flags */ ! 152: bicpsw $(V|C|N) /* clear n,v,c flags */ ! 153: decb tstloc /* decrement tstloc */ ! 154: jeql error5 /* error if z flag still set */ ! 155: jgeq error5 /* error if n flag not set */ ! 156: jcc error5 /* error if c flag not set */ ! 157: jvc error5 /* error if v flag not set */ ! 158: jmp 1f ! 159: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 160: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 161: movl $2,_ercode /* error code flag failure */ ! 162: jmp *badrtn ! 163: 1: cmpl $0x7f333333,tstloc /* tstloc == 0x7f333333 */ ! 164: jeql d6 ! 165: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 166: movl $1,_ercode /* error code data miscompare */ ! 167: movl tstloc,_actual /* actual data */ ! 168: movl $0x7f333333,_expected /* expected data */ ! 169: jmp *badrtn ! 170: ! 171: d6: ! 172: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 173: ad6: callf $4,_setjmp /* save context for error return */ ! 174: movab ad6,_stpc /* save address of subtest start */ ! 175: movl $6,_subtst /* subtest number */ ! 176: movl $1,_no_opr /* number of operands in use */ ! 177: movl $0x00ffffff,_opr /* first operand */ ! 178: 0: movl $0x00ffffff,tstloc /* set tstloc = 0x00ffffff */ ! 179: bispsw $(Z|V|C) /* set z,v,c flags */ ! 180: bicpsw $N /* clear n flag */ ! 181: decb tstloc /* decrement tstloc */ ! 182: jgeq error6 /* error if n flag not set */ ! 183: jeql error6 /* error if z flag still set */ ! 184: jvs error6 /* error if v flag still set */ ! 185: jcs error6 /* error if c flag still set */ ! 186: jmp 1f ! 187: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 188: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 189: movl $2,_ercode /* error code flag failure */ ! 190: jmp *badrtn ! 191: 1: cmpl $0xffffffff,tstloc /* tstloc == 0xffffffff */ ! 192: jneq error2 /* error if not equal */ ! 193: jeql aldn ! 194: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 195: movl $1,_ercode /* error code data miscompare */ ! 196: movl tstloc,_actual /* actual data */ ! 197: movl $0xffffffff,_expected /* expected data */ ! 198: jmp *badrtn ! 199: ! 200: aldn: ! 201: jmp *return ! 202: ! 203: /* test data */ ! 204: .align 2 ! 205: tstloc: .long 0 ! 206: ! 207:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.