|
|
1.1 ! root 1: /* INCW 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_w ! 30: _inc_w: ! 31: callf $4,_setjmp /* save context for error return */ ! 32: movab _inc_w,_stpc /* save subtest starting address */ ! 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: movl $0xfffffffe,r3 /* load r3 with -2 */ ! 38: bispsw $(Z|V|C) /* set z,v,c flags */ ! 39: bicpsw $N /* clear n flag */ ! 40: incw r3 /* increment r8 */ ! 41: jgeq error1 /* error if n flag not set */ ! 42: jeql error1 /* error if z flag still set */ ! 43: jvs error1 /* error if v flag still set */ ! 44: jcs error1 /* error if c flag still set */ ! 45: jmp 1f ! 46: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 47: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 48: movl $2,_ercode /* error code flag failure */ ! 49: jmp *badrtn ! 50: 1: cmpl $0xffffffff,r3 /* is r3 == -1 */ ! 51: jeql step2 /* error if not equal */ ! 52: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 53: movl $1,_ercode /* error code data miscompare */ ! 54: movl r3,_actual /* actual data */ ! 55: movl $0xffffffff,_expected /* expected data */ ! 56: jmp *badrtn ! 57: step2: ! 58: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 59: ai2: callf $4,_setjmp /* save context for error return */ ! 60: movab ai2,_stpc /* save subtest starting address */ ! 61: movl $2,_subtst /* subtest number */ ! 62: movl $1,_no_opr /* number of operands in use */ ! 63: movl $0xffffffff,_opr /* first operand */ ! 64: 0: bispsw $(N|V) /* set n,v flags */ ! 65: bicpsw $(Z|C) /* clear z,c flag */ ! 66: incw r3 /* increment r3 */ ! 67: jlss error2 /* error if n flag still set */ ! 68: jvs error2 /* error if v flag still set */ ! 69: jneq error2 /* error if z flag not set */ ! 70: jcc error2 /* error if c flag not set */ ! 71: jmp 1f ! 72: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 73: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 74: movl $2,_ercode /* error code flag failure */ ! 75: jmp *badrtn ! 76: 1: bicpsw $Z ! 77: cmpl $0x0,r3 /* is r3 == 0 */ ! 78: jeql ovfl /* error if not equal */ ! 79: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 80: movl $1,_ercode /* error code data miscompare */ ! 81: movl r3,_actual /* actual data */ ! 82: movl $0,_expected /* expected data */ ! 83: jmp *badrtn ! 84: ovfl: /* To be tested in Phase 2 */ ! 85: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 86: ai3: callf $4,_setjmp /* save context for error return */ ! 87: movab ai3,_stpc /* save subtest starting address */ ! 88: movl $3,_subtst /* subtest number */ ! 89: movl $1,_no_opr /* number of operands in use */ ! 90: movl $0x7fffffff,_opr /* first operand */ ! 91: 0: movl $0x7fffffff,r3 /* set r3 = 0x7fffffff */ ! 92: bispsw $(Z|C|N) /* set n,z,c flags */ ! 93: bicpsw $V /* clear v flags */ ! 94: incw r3 /* increment r3 */ ! 95: jvs error3 /* error if v flag not set */ ! 96: jlss error3 /* error if n flag still set */ ! 97: jeql error3 /* error if z flag still set */ ! 98: jcs error3 /* error if c flag still set */ ! 99: jmp 1f ! 100: error3: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 101: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 102: movl $2,_ercode /* error code flag failure */ ! 103: jmp *badrtn ! 104: 1: cmpl $MAXNEGL,r3 /* is r3 == 0x80000000 */ ! 105: jeql incml /* error if not equal */ ! 106: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 107: movl $1,_ercode /* error code data miscompare */ ! 108: movl r3,_actual /* actual data */ ! 109: movl $MAXNEGL,_expected /* expected data */ ! 110: jmp *badrtn ! 111: incml: /* INCREMENT MEMORY */ ! 112: ! 113: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 114: ai4: callf $4,_setjmp /* save context for error return */ ! 115: movab ai4,_stpc /* save subtest starting address */ ! 116: movl $4,_subtst /* subtest number */ ! 117: movl $1,_no_opr /* number of operands in use */ ! 118: movl $0xfffeffff,_opr /* first operand */ ! 119: 0: movl $0xfffeffff,tstloc /* load tstloc with -2 (word) */ ! 120: bispsw $(Z|V|C) /* set z,v,c flags */ ! 121: bicpsw $N /* clear n flag */ ! 122: incw tstloc /* increment tstloc */ ! 123: jgeq error4 /* error if n flag not set */ ! 124: jeql error4 /* error if z flag still set */ ! 125: jvs error4 /* error if v flag still set */ ! 126: jcs error4 /* error if c flag still set */ ! 127: jmp 1f ! 128: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 129: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 130: movl $2,_ercode /* error code flag failure */ ! 131: jmp *badrtn ! 132: 1: cmpl $0xffffffff,tstloc /* is tstloc == -1 */ ! 133: jeql stp2 /* error if not equal */ ! 134: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 135: movl $1,_ercode /* error code data miscompare */ ! 136: movl tstloc,_actual /* actual data */ ! 137: movl $0xffffffff,_expected /* expected data */ ! 138: jmp *badrtn ! 139: stp2: ! 140: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 141: ai5: callf $4,_setjmp /* save context for error return */ ! 142: movab ai5,_stpc /* save subtest starting address */ ! 143: movl $5,_subtst /* subtest number */ ! 144: movl $1,_no_opr /* number of operands in use */ ! 145: movl $0xffffffff,_opr /* first operand */ ! 146: 0: bispsw $(N|V) /* set n,v flags */ ! 147: bicpsw $(Z|C) /* clear z,c flag */ ! 148: incw tstloc /* increment tstloc */ ! 149: jlss error5 /* error if n flag still set */ ! 150: jvs error5 /* error if v flag still set */ ! 151: jneq error5 /* error if z flag not set */ ! 152: jcc error5 /* error if c flag not set */ ! 153: jmp 1f ! 154: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 155: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 156: movl $2,_ercode /* error code flag failure */ ! 157: jmp *badrtn ! 158: 1: bicpsw $Z ! 159: cmpl $0x0000ffff,tstloc /* is tstloc == 0x0000ffff */ ! 160: jeql ovfl1 /* error if not equal */ ! 161: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 162: movl $1,_ercode /* error code data miscompare */ ! 163: movl tstloc,_actual /* actual data */ ! 164: movl $0x0000ffff,_expected /* expected data */ ! 165: jmp *badrtn ! 166: ovfl1: ! 167: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 168: ai6: callf $4,_setjmp /* save context for error return */ ! 169: movab ai6,_stpc /* save subtest starting address */ ! 170: movl $6,_subtst /* subtest number */ ! 171: movl $1,_no_opr /* number of operands in use */ ! 172: movl $0x7fff3333,_opr /* first operand */ ! 173: 0: movl $0x7fff3333,tstloc /* tstloc = 0x7fff3333 */ ! 174: bispsw $(Z|C|N) /* set n,z,c flags */ ! 175: bicpsw $V /* clear v flags */ ! 176: incw tstloc /* increment tstloc */ ! 177: jvc error6 /* error if v flag not set */ ! 178: jlss error6 /* error if n flag still set */ ! 179: jeql error6 /* error if z flag still set */ ! 180: jcs error6 /* error if c flag still set */ ! 181: jmp 1f ! 182: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 183: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 184: movl $2,_ercode /* error code flag failure */ ! 185: jmp *badrtn ! 186: 1: cmpl $0x80003333,tstloc /* is tstloc == 0x80003333 */ ! 187: jeql aldn /* error if not equal */ ! 188: bbs $0,_scoplp,0b /* if set scope loop om error */ ! 189: movl $1,_ercode /* error code data miscompare */ ! 190: movl tstloc,_actual /* actual data */ ! 191: movl $0x0000ffff,_expected /* expected data */ ! 192: jmp *badrtn ! 193: ! 194: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 195: jmp *return ! 196: ! 197: /* */ ! 198: /* test data */ ! 199: .align 2 ! 200: tstloc: .long 0 ! 201:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.