|
|
1.1 ! root 1: /* MOVOW instruction test */ ! 2: /* MOVL have been tested prior to this test. */ ! 3: /* constant definitions */ ! 4: ! 5: .set HIGH,31 ! 6: .set IPL,8 ! 7: .set ZERO,0 ! 8: .set ONES,0xffffffff ! 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: .set NEGNO,0xa000ffff ! 16: .set NEGVAL,0xff0fffff ! 17: .set WORD,0xffff ! 18: .set BYTE,0xff ! 19: .set MASKHW,0x55550000 ! 20: .set MASKLW,0x5555 ! 21: .set MASKB,0x55555500 ! 22: ! 23: .globl _movow ! 24: _movow: ! 25: ! 26: callf $4,_setjmp /* save context for return from error */ ! 27: movab _movow,_stpc /* save subtest starting address */ ! 28: movw $1,_subtst /* subtest no : Used MOVOW to clear latch */ ! 29: movl $1,_no_opr /* number of operands */ ! 30: movl negno,_opr /* first operand in use */ ! 31: 0: ! 32: bicpsw $(IV|T) /* disable overflow,trace exceptions */ ! 33: movwmr: /* MOVE MEMORY TO REGISTER */ ! 34: movl $MASKHW,r4 /* initialize r4 = 0x55550000 */ ! 35: bispsw $(Z|V|C) /* set z,v,c flags */ ! 36: bicpsw $N /* clear n flag */ ! 37: movow negno,r4 /* move word 0xa000 to r4 */ ! 38: jgeq error1 /* error if n flag not set */ ! 39: jeql error1 /* error if z flag set */ ! 40: jvs error1 /* error if v flag set */ ! 41: jcc error1 /* error if c flag not set */ ! 42: jmp 1f ! 43: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 44: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 45: movl $2,_ercode /* error code flag failure */ ! 46: jmp *badrtn ! 47: 1: cmpl expr5,r4 /* compare r4 to 0xffffa000 */ ! 48: jeql 1f ! 49: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 50: movl $1,_ercode /* error code data miscompare */ ! 51: movl r4,_actual /* actual data */ ! 52: movl expr5,_expected /* expected data */ ! 53: jmp *badrtn ! 54: 1: bicpsw $Z ! 55: cmpl $NEGNO,negno /* make sure source unchanged */ ! 56: jeql movwrr ! 57: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 58: movl $3,_ercode /* error code operand was modiefied */ ! 59: movl negno,_actual /* actual data */ ! 60: movl $NEGNO,_expected /* expected data */ ! 61: jmp *badrtn ! 62: movwrr: /* MOVE REGISTER TO REGISTER */ ! 63: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 64: m2: callf $4,_setjmp /* save context for return from error */ ! 65: movab m2,_stpc /* save subtest starting address */ ! 66: movl $2,_subtst /* subtest number */ ! 67: movl $1,_no_opr /* number of operands */ ! 68: movl $MASKLW,_opr /* first operand in use */ ! 69: 0: movl $MASKLW,r3 /* initialize r3 = 0x5555 */ ! 70: movl r3,expval ! 71: movl $0xffffffff,r4 /* initialize r4 = 0xffffffff */ ! 72: bispsw $(Z|N|V) /* set Z,V,N flags */ ! 73: bicpsw $C /* clear C flag */ ! 74: movow r3,r4 /* move r3 to r4 */ ! 75: jlss error2 /* error if n flag set */ ! 76: jeql error2 /* error if z flag set */ ! 77: jvs error2 /* error if v flag set */ ! 78: jcc error2 /* error if c flag not set */ ! 79: jmp 1f ! 80: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 81: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 82: movl $2,_ercode /* error code flag failure */ ! 83: jmp *badrtn ! 84: cmpl r4,expval ! 85: jeql 1f ! 86: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 87: movl $1,_ercode /* error code data miscompare */ ! 88: movl r4,_actual /* actual data */ ! 89: movl expval,_expected /* expected data */ ! 90: jmp *badrtn ! 91: 1: movow r4,r5 /* move r4 to r5 */ ! 92: movow r5,r6 /* move r5 to r6 */ ! 93: movow r6,r7 /* move r6 to r7 */ ! 94: movow r7,r9 /* move r7 to r9 */ ! 95: movl r9,oldval /* save value of source = 0x00005555 */ ! 96: movow r9,r11 /* move r9 to r11 */ ! 97: cmpl expval,r11 /* compare r11 to 0x00005555 */ ! 98: jneq error2 /* error if not equal; z flag not set */ ! 99: jeql 1f ! 100: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 101: movl $1,_ercode /* error code data miscompare */ ! 102: movl r4,_actual /* actual data */ ! 103: movl expval,_expected /* expected data */ ! 104: jmp *badrtn ! 105: 1: bicpsw $Z ! 106: cmpl oldval,r9 /* make sure source unchanged */ ! 107: jeql m3 ! 108: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 109: movl $3,_ercode /* error code operand was modiefied */ ! 110: movl r9,_actual /* actual data */ ! 111: movl oldval,_expected /* expected data */ ! 112: jmp *badrtn ! 113: ! 114: m3: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 115: am3: callf $4,_setjmp /* save context for return from error */ ! 116: movab am3,_stpc /* save subtest starting address */ ! 117: movl $3,_subtst /* subtest number */ ! 118: movl $1,_no_opr /* number of operands */ ! 119: movl negval,_opr /* first operand in use */ ! 120: 0: movl $0x0,r4 ! 121: movw negval,r3 /* move word 0xff0f to r3 */ ! 122: movl r3,expval /* save source */ ! 123: bispsw $(Z|V) ! 124: bicpsw $(C|N) ! 125: movow r3,r4 /* move 0xffffff0f to r4 */ ! 126: jgeq error3 /* error if n flag not set */ ! 127: jeql error3 /* error if z flag set */ ! 128: jvs error3 /* error if v flag set */ ! 129: jcc error3 /* error if c flag not set */ ! 130: jmp 1f ! 131: error3: 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: cmpl r4,expval ! 136: jeql 1f ! 137: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 138: movl $1,_ercode /* error code data miscompare */ ! 139: movl r4,_actual /* actual data */ ! 140: movl expval,_expected /* expected data */ ! 141: jmp *badrtn ! 142: 1: bicpsw $Z ! 143: cmpl r3,expval ! 144: jeql movwmm ! 145: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 146: movl $3,_ercode /* error code operand was modiefied */ ! 147: movl r3,_actual /* actual data */ ! 148: movl expval,_expected /* expected data */ ! 149: jmp *badrtn ! 150: movwmm: /* MOVE MEMORY TO MEMORY */ ! 151: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 152: m4: callf $4,_setjmp /* save context for return from error */ ! 153: movab m4,_stpc /* save subtest starting address */ ! 154: movl $4,_subtst /* subtest number */ ! 155: movl $1,_no_opr /* number of operands */ ! 156: movl $0xffff0000,_opr /* first operand in use */ ! 157: 0: movl $0x0,tstloc ! 158: movl $0xffff0000,oprd ! 159: movl oprd,oldval /* save source */ ! 160: bispsw $(Z|V) /* set z,v flags */ ! 161: bicpsw $(C|N) /* clear n,c flag */ ! 162: movow oprd,tstloc+2 ! 163: jgeq error4 /* error if n flag not set */ ! 164: jeql error4 /* error if z flag set */ ! 165: jvs error4 /* error if v flag set */ ! 166: jcc error4 /* error if c flag not set */ ! 167: jmp 1f ! 168: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 169: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 170: movl $2,_ercode /* error code flag failure */ ! 171: jmp *badrtn ! 172: 1: ! 173: andl2 $0xffff,tstloc ! 174: cmpl $0xffff,tstloc /* compare tstloc to expected value */ ! 175: jeql 1f ! 176: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 177: movl $1,_ercode /* error code data miscompare */ ! 178: movl tstloc,_actual /* actual data */ ! 179: movl $0xffff,_expected /* expected data */ ! 180: jmp *badrtn ! 181: 1: bicpsw $Z ! 182: cmpl oprd,oldval /* make sure source unchanged */ ! 183: jeql m5 ! 184: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 185: movl $3,_ercode /* error code operand was modiefied */ ! 186: movl oprd,_actual /* actual data */ ! 187: movl oldval,_expected /* expected data */ ! 188: jmp *badrtn ! 189: ! 190: m5: /* MOVE MEMORY TO MEMORY */ ! 191: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 192: am5: callf $4,_setjmp /* save context for return from error */ ! 193: movab am5,_stpc /* save subtest starting address */ ! 194: movl $5,_subtst /* subtest number */ ! 195: movl $1,_no_opr /* number of operands */ ! 196: movl $0x5555,_opr /* first operand in use */ ! 197: 0: movl $0x5555,tstloc ! 198: movl tstloc,oldval /* save source */ ! 199: bispsw $(N|V|Z) /* set n,v,z flags */ ! 200: bicpsw $C /* clear c flag */ ! 201: movow tstloc+2,oprd+2 ! 202: jlss error5 /* error if n flag set */ ! 203: jeql error5 /* error if z flag set */ ! 204: jvs error5 /* error if v flag set */ ! 205: jcc error5 /* error if c flag not set */ ! 206: jmp 1f ! 207: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 208: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 209: movl $2,_ercode /* error code flag failure */ ! 210: jmp *badrtn ! 211: 1: ! 212: andl2 $0xffff,oprd ! 213: cmpl $0x5555,oprd /* compare oprd to expected value */ ! 214: jeql 1f ! 215: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 216: movl $1,_ercode /* error code data miscompare */ ! 217: movl oprd,_actual /* actual data */ ! 218: movl $0x5555,_expected /* expected data */ ! 219: jmp *badrtn ! 220: 1: bicpsw $Z ! 221: cmpl tstloc,oldval /* make sure source unchanged */ ! 222: jeql movwdm ! 223: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 224: movl $3,_ercode /* error code operand was modiefied */ ! 225: movl tstloc,_actual /* actual data */ ! 226: movl oldval,_expected /* expected data */ ! 227: jmp *badrtn ! 228: movwdm: /* MOVE DATA TO MEMORY */ ! 229: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 230: m6: callf $4,_setjmp /* save context for return from error */ ! 231: movab m6,_stpc /* save subtest starting address */ ! 232: movl $6,_subtst /* subtest number */ ! 233: movl $1,_no_opr /* number of operands */ ! 234: movl $0x5555,_opr /* first operand in use */ ! 235: 0: movl $0x0,tstloc ! 236: movl $0xffff0000,oprd ! 237: movl oprd,oldval /* save source */ ! 238: bispsw $(Z|V) /* set z,v flags */ ! 239: bicpsw $(C|N) /* clear n,c flag */ ! 240: movow $-0x0001,tstloc+2 ! 241: jgeq error6 /* error if n flag not set */ ! 242: jeql error6 /* error if z flag set */ ! 243: jvs error6 /* error if v flag set */ ! 244: jcc error6 /* error if c flag not set */ ! 245: jmp 1f ! 246: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 247: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 248: movl $2,_ercode /* error code flag failure */ ! 249: jmp *badrtn ! 250: 1: ! 251: andl2 $0xffff,tstloc ! 252: cmpl $0xffff,tstloc /* compare tstloc to expected value */ ! 253: jeql 1f ! 254: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 255: movl $1,_ercode /* error code data miscompare */ ! 256: movl tstloc,_actual /* actual data */ ! 257: movl $0x0000ffff,_expected /* expected data */ ! 258: jmp *badrtn ! 259: 1: bicpsw $Z ! 260: cmpl oprd,oldval /* make sure source unchanged */ ! 261: jeql movwrm ! 262: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 263: movl $3,_ercode /* error code operand was modiefied */ ! 264: movl oprd,_actual /* actual data */ ! 265: movl oldval,_expected /* expected data */ ! 266: jmp *badrtn ! 267: movwrm: ! 268: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 269: m7: callf $4,_setjmp /* save context for return from error */ ! 270: movab m7,_stpc /* save subtest starting address */ ! 271: movl $7,_subtst /* subtest number */ ! 272: movl $1,_no_opr /* number of operands */ ! 273: movl $0xff0f,_opr /* first operand in use */ ! 274: 0: movl $0xff0f,expval /* move word 0xff0f to expval */ ! 275: movl $0xff0f,tmp /* save source */ ! 276: movw tmp+2,r3 ! 277: bispsw $(Z|V) ! 278: bicpsw $(C|N) ! 279: movow r3,tstloc+2 /* move 0xffffff0f to tstloc+2 */ ! 280: jgeq error7 /* error if n flag not set */ ! 281: jeql error7 /* error if z flag set */ ! 282: jvs error7 /* error if v flag set */ ! 283: jcc error7 /* error if c flag not set */ ! 284: jmp 1f ! 285: error7: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 286: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 287: movl $2,_ercode /* error code flag failure */ ! 288: jmp *badrtn ! 289: 1: ! 290: andl2 $0xffff,tstloc ! 291: cmpl tstloc,expval ! 292: jeql movwdr ! 293: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 294: movl $1,_ercode /* error code data miscompare */ ! 295: movl tstloc,_actual /* actual data */ ! 296: movl expval,_expected /* expected data */ ! 297: jmp *badrtn ! 298: ! 299: movwdr: /* MOVE DATA TO REGISTER */ ! 300: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 301: m8: callf $4,_setjmp /* save context for return from error */ ! 302: movab m8,_stpc /* save subtest starting address */ ! 303: movl $8,_subtst /* subtest number */ ! 304: movl $1,_no_opr /* number of operands */ ! 305: movl negval,_opr /* first operand in use */ ! 306: 0: movl $0x0,r4 ! 307: movow negval,r3 /* move word 0xff0f to r3 */ ! 308: movl r3,expval /* save source */ ! 309: bispsw $(Z|V) ! 310: bicpsw $(C|N) ! 311: movow $-0x00f1,r4 /* move 0xffffff0f to r4 */ ! 312: jgeq error8 /* error if n flag not set */ ! 313: jeql error8 /* error if z flag set */ ! 314: jvs error8 /* error if v flag set */ ! 315: jcc error8 /* error if c flag not set */ ! 316: jmp 1f ! 317: error8: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 318: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 319: movl $2,_ercode /* error code flag failure */ ! 320: jmp *badrtn ! 321: 1: cmpl r4,expval ! 322: jeql 1f ! 323: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 324: movl $1,_ercode /* error code data miscompare */ ! 325: movl r4,_actual /* actual data */ ! 326: movl expval,_expected /* expected data */ ! 327: jmp *badrtn ! 328: 1: bicpsw $Z ! 329: cmpl r3,expval ! 330: jeql aldn ! 331: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 332: movl $3,_ercode /* error code operand was modiefied */ ! 333: movl r3,_actual /* actual data */ ! 334: movl oldval,_expected /* expected data */ ! 335: jmp *badrtn ! 336: ! 337: ! 338: aldn: bbs $0,_force_lp,0b /* if set loop on last error */ ! 339: jmp *return /* good, return to monitor */ ! 340: ! 341: /* test data */ ! 342: .align 2 ! 343: negval: .long NEGVAL /* 0xf0ffffff */ ! 344: zero: .long 0x0 ! 345: expval: .long 0x0 ! 346: oldval: .long 0x0 ! 347: negno: .long NEGNO ! 348: expr5: .long 0xffffa000 ! 349: tstloc: .long 0x0 ! 350: tmp: .long 0x0 ! 351: oprd: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.