|
|
1.1 ! root 1: /* MOVAL instruction test */ ! 2: /* MOVL,MOVW,MOVB have been tested prior to this test */ ! 3: /* Privilege registers */ ! 4: ! 5: .set IPL,0x8 ! 6: .set MAPEN,0x9 ! 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: .set DISP,2 ! 29: .set LONG,4 ! 30: .set WORD,2 ! 31: .set BYTE,1 ! 32: ! 33: .globl _moval ! 34: _moval: ! 35: callf $4,_setjmp /* save context for error return */ ! 36: movab _moval,_stpc /* save address of subtest start */ ! 37: movl $1,_subtst /* subtest number */ ! 38: movl $1,_no_opr /* number of operands in use */ ! 39: movl $MAXPOSL,_opr /* first operand */ ! 40: 0: bicpsw $(IV|T) /* disable exceptions */ ! 41: moval1: ! 42: movl $MAXPOSL,tstloc /* initialize tstloc */ ! 43: bispsw $(N|Z|V|C) /* set n,z,v,c flags */ ! 44: moval tstloc,r3 /* move address tstloc to r3 */ ! 45: jlss error1 /* error if any of the n,z,v */ ! 46: jeql error1 /* flags still set */ ! 47: jvs error1 ! 48: jcc error1 /* error if c flag clear */ ! 49: jmp 1f ! 50: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 51: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 52: movl $2,_ercode /* error code flag miscompare */ ! 53: jmp *badrtn ! 54: 1: cmpl r3,result /* check if r3 has valid adr. */ ! 55: jeql m2 /* error if not */ ! 56: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 57: movl $1,_ercode /* error code data miscompare */ ! 58: movl r3,_actual /* actual data */ ! 59: movl result,_expected /* expected data */ ! 60: jmp *badrtn ! 61: /* MOVE ADDRESS FROM REGISTER TO MEMORY */ ! 62: m2: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 63: am2: callf $4,_setjmp /* save context for error return */ ! 64: movab am2,_stpc /* save address of subtest start */ ! 65: movl $2,_subtst /* subtest number */ ! 66: 0: moval (r3),temp /* move register to memory */ ! 67: cmpl temp,result /* compare result */ ! 68: jeql 1f /* error if not */ ! 69: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 70: movl $1,_ercode /* error code data miscompare */ ! 71: movl temp,_actual /* actual data */ ! 72: movl result,_expected /* expected data */ ! 73: jmp *badrtn ! 74: 1: cmpl r3,result /* Check source operand */ ! 75: jeql chkflag /* error if not */ ! 76: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 77: movl $3,_ercode /* error code operand was changed */ ! 78: movl r3,_actual /* actual data */ ! 79: movl result,_expected /* expected data */ ! 80: jmp *badrtn ! 81: /* TESTING CONDITION FLAGS */ ! 82: chkflag: ! 83: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 84: am3: callf $4,_setjmp /* save context for error return */ ! 85: movab am3,_stpc /* save address of subtest start */ ! 86: movl $3,_subtst /* subtest number */ ! 87: movl $1,_no_opr /* number of operands in use */ ! 88: movl $MAXNEGL,_opr /* first operand */ ! 89: 0: movl $0,temp /* clear temp */ ! 90: movl $MAXNEGL,r3 /* set r3 = $MAXNEGL */ ! 91: bispsw $(Z|V|C) /* set z,v,c flags */ ! 92: bicpsw $N /* clear n flag */ ! 93: moval (r3),temp /* move adr. in r3 to temp */ ! 94: jgeq error2 /* error if n flag not set */ ! 95: jeql error2 /* error if z flag still set */ ! 96: jvs error2 /* error if v flag still set */ ! 97: jcc error2 /* error if c flag clear */ ! 98: jmp 1f ! 99: error2: 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 miscompare */ ! 102: jmp *badrtn ! 103: 1: cmpl temp,$MAXNEGL /* check address in temp */ ! 104: jeql m4 /* error if not */ ! 105: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 106: movl $1,_ercode /* error code data miscompare */ ! 107: movl temp,_actual /* actual data */ ! 108: movl $MAXNEGL,_expected /* expected data */ ! 109: jmp *badrtn ! 110: ! 111: m4: ! 112: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 113: am4: callf $4,_setjmp /* save context for error return */ ! 114: movab am4,_stpc /* save address of subtest start */ ! 115: movl $4,_subtst /* subtest number */ ! 116: movl $1,_no_opr /* number of operands in use */ ! 117: movl $0,_opr /* first operand */ ! 118: 0: movl $ONES,temp /* set temp = 0xffffffff */ ! 119: movl $0,r3 /* set r3 = $0 */ ! 120: bispsw $(N|V) /* set n,v flags */ ! 121: bicpsw $(Z|C) /* clear z,c flag */ ! 122: moval (r3),temp /* move adr. in r3 to temp */ ! 123: jlss error3 /* error if n flag still set */ ! 124: jneq error3 /* error if z flag not set */ ! 125: jvs error3 /* error if v flag still set */ ! 126: jcc error3 /* error if c flag clear */ ! 127: jmp 1f ! 128: error3: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 129: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 130: movl $2,_ercode /* error code flag miscompare */ ! 131: jmp *badrtn ! 132: 1: cmpl temp,$0 /* check address in temp */ ! 133: jeql m5 /* error if not */ ! 134: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 135: movl $1,_ercode /* error code data miscompare */ ! 136: movl temp,_actual /* actual data */ ! 137: movl $0,_expected /* expected data */ ! 138: jmp *badrtn ! 139: /* CHECKING INDEXING MODE */ ! 140: m5: ! 141: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 142: am5: callf $4,_setjmp /* save context for error return */ ! 143: movab am5,_stpc /* save address of subtest start */ ! 144: movl $5,_subtst /* subtest number */ ! 145: movl $1,_no_opr /* number of operands in use */ ! 146: movl $DISP,_opr /* first operand */ ! 147: 0: movl $DISP,r3 /* set r3 = DISP = 2 */ ! 148: bispsw $(N|Z|V|C) /* set n,z,v,c flags */ ! 149: moval tstloc[r3],r4 /* move address tstloc to r4 */ ! 150: jlss error4 /* error if any of the n,z,v */ ! 151: jeql error4 /* flags still set */ ! 152: jvs error4 ! 153: jcc error4 /* error if c flag clear */ ! 154: jmp 1f ! 155: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 156: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 157: movl $2,_ercode /* error code flag miscompare */ ! 158: jmp *badrtn ! 159: 1: cmpl r4,resul1 /* check if r4 has valid adr. */ ! 160: jeql aldn /* error if not */ ! 161: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 162: movl $1,_ercode /* error code data miscompare */ ! 163: movl r4,_actual /* actual data */ ! 164: movl resul1,_expected /* expected data */ ! 165: jmp *badrtn ! 166: ! 167: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 168: jmp *return ! 169: ! 170: ! 171: /* test data */ ! 172: .align 2 /* align on longword boundery */ ! 173: tstloc: .long 0 ! 174: result: .long tstloc ! 175: resul1: .long tstloc+(DISP*LONG) ! 176: temp: .long 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.