|
|
1.1 ! root 1: /* MOVW 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 _movew ! 24: _movew: ! 25: ! 26: callf $4,_setjmp /* save context for error return */ ! 27: movab _movew,_stpc /* save subtst starting address */ ! 28: movl $1,_subtst /* subtest number */ ! 29: movl $1,_no_opr /* number of operands in use */ ! 30: movl negno,_opr /* first operand */ ! 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: movw 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 miscompare */ ! 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: am2: callf $4,_setjmp /* save context for error return */ ! 65: movab am2,_stpc /* save subtst starting address */ ! 66: movl $2,_subtst /* subtest number */ ! 67: movl $1,_no_opr /* number of operands in use */ ! 68: movl $MASKLW,_opr /* first operand */ ! 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: movw 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: 1: 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: movw r4,r5 /* move r4 to r5 */ ! 92: movw r5,r6 /* move r5 to r6 */ ! 93: movw r6,r7 /* move r6 to r7 */ ! 94: movw r7,r9 /* move r7 to r9 */ ! 95: movl r9,oldval /* save value of source = 0x00005555 */ ! 96: movw r9,r11 /* move r9 to r11 */ ! 97: cmpl expval,r11 /* compare r11 to 0x00005555 */ ! 98: jeql 1f ! 99: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 100: movl $1,_ercode /* error code data miscompare */ ! 101: movl r11,_actual /* actual data */ ! 102: movl expval,_expected /* expected data */ ! 103: jmp *badrtn ! 104: 1: bicpsw $Z ! 105: cmpl oldval,r9 /* make sure source unchanged */ ! 106: jeql m3 ! 107: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 108: movl $1,_ercode /* error code data miscompare */ ! 109: movl r9,_actual /* actual data */ ! 110: movl oldval,_expected /* expected data */ ! 111: jmp *badrtn ! 112: ! 113: m3: ! 114: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 115: am3: callf $4,_setjmp /* save context for error return */ ! 116: movab am3,_stpc /* save subtst starting address */ ! 117: movl $3,_subtst /* subtest number */ ! 118: movl $1,_no_opr /* number of operands in use */ ! 119: movl negval,_opr /* first operand */ ! 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: movw 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 miscompare */ ! 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: am4: callf $4,_setjmp /* save context for error return */ ! 153: movab am4,_stpc /* save subtst starting address */ ! 154: movl $4,_subtst /* subtest number */ ! 155: movl $1,_no_opr /* number of operands in use */ ! 156: movl $0xffff0000,_opr /* first operand */ ! 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: movw 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: cmpl $0x0000ffff,tstloc /* compare tstloc to expected value */ ! 173: jeql 1f ! 174: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 175: movl $1,_ercode /* error code data miscompare */ ! 176: movl tstloc,_actual /* actual data */ ! 177: movl $0x0000ffff,_expected /* expected data */ ! 178: jmp *badrtn ! 179: 1: bicpsw $Z ! 180: cmpl oprd,oldval /* make sure source unchanged */ ! 181: jeql m5 ! 182: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 183: movl $3,_ercode /* error code operand miscompare */ ! 184: movl oprd,_actual /* actual data */ ! 185: movl oldval,_expected /* expected data */ ! 186: jmp *badrtn ! 187: ! 188: m5: /* MOVE MEMORY TO MEMORY */ ! 189: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 190: am5: callf $4,_setjmp /* save context for error return */ ! 191: movab am5,_stpc /* save subtst starting address */ ! 192: movl $5,_subtst /* subtest number */ ! 193: movl $1,_no_opr /* number of operands in use */ ! 194: movl $0x5555,_opr /* first operand */ ! 195: 0: movl $0x5555,tstloc ! 196: movl tstloc,oldval /* save source */ ! 197: bispsw $(N|V|Z) /* set n,v,z flags */ ! 198: bicpsw $C /* clear c flag */ ! 199: movw tstloc+2,oprd+2 ! 200: jlss error5 /* error if n flag set */ ! 201: jeql error5 /* error if z flag set */ ! 202: jvs error5 /* error if v flag set */ ! 203: jcc error5 /* error if c flag not set */ ! 204: jmp 1f ! 205: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 206: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 207: movl $2,_ercode /* error code flag failure */ ! 208: jmp *badrtn ! 209: 1: cmpl $0xffff5555,oprd /* compare oprd to expected value */ ! 210: jeql 1f ! 211: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 212: movl $1,_ercode /* error code data miscompare */ ! 213: movl oprd,_actual /* actual data */ ! 214: movl $0xffff5555,_expected /* expected data */ ! 215: jmp *badrtn ! 216: 1: bicpsw $Z ! 217: cmpl tstloc,oldval /* make sure source unchanged */ ! 218: jeql movwdm ! 219: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 220: movl $3,_ercode /* error code operand miscompare */ ! 221: movl tstloc,_actual /* actual data */ ! 222: movl oldval,_expected /* expected data */ ! 223: jmp *badrtn ! 224: movwdm: /* MOVE DATA TO MEMORY */ ! 225: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 226: am6: callf $4,_setjmp /* save context for error return */ ! 227: movab am6,_stpc /* save subtst starting address */ ! 228: movl $6,_subtst /* subtest number */ ! 229: movl $1,_no_opr /* number of operands in use */ ! 230: movl $0xffff0000,_opr /* first operand */ ! 231: 0: movl $0x0,tstloc ! 232: movl $0xffff0000,oprd ! 233: movl oprd,oldval /* save source */ ! 234: bispsw $(Z|V) /* set z,v flags */ ! 235: bicpsw $(C|N) /* clear n,c flag */ ! 236: movw $-0x0001,tstloc+2 ! 237: jgeq error6 /* error if n flag not set */ ! 238: jeql error6 /* error if z flag set */ ! 239: jvs error6 /* error if v flag set */ ! 240: jcc error6 /* error if c flag not set */ ! 241: jmp 1f ! 242: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 243: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 244: movl $2,_ercode /* error code flag failure */ ! 245: jmp *badrtn ! 246: 1: cmpl $0x0000ffff,tstloc /* compare tstloc to expected value */ ! 247: jeql 1f ! 248: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 249: movl $1,_ercode /* error code data miscompare */ ! 250: movl tstloc,_actual /* actual data */ ! 251: movl $0x0000ffff,_expected /* expected data */ ! 252: jmp *badrtn ! 253: 1: bicpsw $Z ! 254: cmpl oprd,oldval /* make sure source unchanged */ ! 255: jeql movwrm ! 256: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 257: movl $3,_ercode /* error code operand miscompare */ ! 258: movl oprd,_actual /* actual data */ ! 259: movl oldval,_expected /* expected data */ ! 260: jmp *badrtn ! 261: movwrm: ! 262: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 263: am7: callf $4,_setjmp /* save context for error return */ ! 264: movab am7,_stpc /* save subtst starting address */ ! 265: movl $7,_subtst /* subtest number */ ! 266: movl $1,_no_opr /* number of operands in use */ ! 267: movl $0xff0f,_opr /* first operand */ ! 268: 0: movl $0xff0f,expval /* move word 0xff0f to expval*/ ! 269: movl $0xff0f,tmp /* move word 0xff0f to tmp */ ! 270: movw tmp+2,r3 /* move word 0xff0f to r7 */ ! 271: bispsw $(Z|V) ! 272: bicpsw $(C|N) ! 273: movw r3,tstloc+2 /* move 0xffffff0f to tstloc+2*/ ! 274: jgeq error7 /* error if n flag not set */ ! 275: jeql error7 /* error if z flag set */ ! 276: jvs error7 /* error if v flag set */ ! 277: jcc error7 /* error if c flag not set */ ! 278: jmp 1f ! 279: error7: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 280: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 281: movl $2,_ercode /* error code flag failure */ ! 282: jmp *badrtn ! 283: 1: cmpl tstloc,expval ! 284: jeql movwdr ! 285: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 286: movl $1,_ercode /* error code data miscompare */ ! 287: movl tstloc,_actual /* actual data */ ! 288: movl expval,_expected /* expected data */ ! 289: jmp *badrtn ! 290: movwdr: /* MOVE DATA TO REGISTER */ ! 291: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 292: am8: callf $4,_setjmp /* save context for error return */ ! 293: movab am8,_stpc /* save subtst starting address */ ! 294: movl $8,_subtst /* subtest number */ ! 295: movl $1,_no_opr /* number of operands in use */ ! 296: movl negval,_opr /* first operand */ ! 297: 0: movl $0x0,r8 ! 298: movw negval,r3 /* move word 0xff0f to r7 */ ! 299: movl r3,expval /* save source */ ! 300: bispsw $(Z|V) ! 301: bicpsw $(C|N) ! 302: movw $-0x00f1,r4 /* move 0xffffff0f to r4 */ ! 303: jgeq error8 /* error if n flag not set */ ! 304: jeql error8 /* error if z flag set */ ! 305: jvs error8 /* error if v flag set */ ! 306: jcc error8 /* error if c flag not set */ ! 307: jmp 1f ! 308: error8: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 309: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 310: movl $2,_ercode /* error code flag failure */ ! 311: jmp *badrtn ! 312: 1: cmpl r4,expval ! 313: jeql 1f ! 314: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 315: movl $1,_ercode /* error code data miscompare */ ! 316: movl r4,_actual /* actual data */ ! 317: movl expval,_expected /* expected data */ ! 318: jmp *badrtn ! 319: 1: bicpsw $Z ! 320: cmpl r3,expval ! 321: jeql aldn ! 322: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 323: movl $3,_ercode /* error code operand miscompare */ ! 324: movl r3,_actual /* actual data */ ! 325: movl expval,_expected /* expected data */ ! 326: jmp *badrtn ! 327: ! 328: ! 329: ! 330: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 331: jmp *return /* good, return to monitor */ ! 332: ! 333: /* test data */ ! 334: .align 2 ! 335: negval: .long NEGVAL /* 0xf0ffffff */ ! 336: zero: .long 0x0 ! 337: expval: .long 0x0 ! 338: oldval: .long 0x0 ! 339: negno: .long NEGNO ! 340: expr5: .long 0xffffa000 ! 341: tstloc: .long 0x0 ! 342: tmp: .long 0x0 ! 343: oprd: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.