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