|
|
1.1 ! root 1: /* MOVOB instruction test */ ! 2: /* MOVL,MOVW 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,0xa0ffffff ! 16: .set NEGVAL,0xff0fffff ! 17: .set WORD,0xffff ! 18: .set BYTE,0xff ! 19: .set MASKHW,0x55550000 ! 20: .set MASKLB,0x55 ! 21: .set MASKB,0x55555500 ! 22: .globl _movob ! 23: _movob: /* MOVE MEMORY TO REGISTER */ ! 24: callf $4,_setjmp /* save context for error return */ ! 25: movab _movob,_stpc /* save starting address of subtest */ ! 26: movb $1,_subtst /* subtest no : Used MOVB to clear latch */ ! 27: movl $1,_no_opr /* number of operands in use */ ! 28: movl negno,_opr /* first operand */ ! 29: 0: movl $MASKHW,r4 /* initialize r4 = 0x55550000 */ ! 30: bispsw $(Z|V|C) /* set z,v,c flags */ ! 31: bicpsw $N /* clear n flag */ ! 32: movob negno,r4 /* move word 0xa0 to r4 */ ! 33: jgeq error1 /* error if n flag not set */ ! 34: jeql error1 /* error if z flag set */ ! 35: jvs error1 /* error if v flag set */ ! 36: jcc error1 /* error if c flag not set */ ! 37: jmp 1f ! 38: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 39: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 40: movl $2,_ercode /* error code flag failure */ ! 41: jmp *badrtn ! 42: 1: cmpl expr4,r4 /* compare r4 to 0xffffffa0 */ ! 43: jeql 1f ! 44: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 45: movl $1,_ercode /* error code data miscompare */ ! 46: movl r4,_actual /* actual data */ ! 47: movl expr4,_expected /* expected data */ ! 48: jmp *badrtn ! 49: 1: bicpsw $Z ! 50: cmpl $NEGNO,negno ! 51: jeql movwrr ! 52: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 53: movl $3,_ercode /* error code operand miscompare */ ! 54: movl negno,_actual /* actual data */ ! 55: movl $NEGNO,_expected /* expected data */ ! 56: jmp *badrtn ! 57: movwrr: /* MOVE REGISTER TO REGISTER */ ! 58: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 59: am2: callf $4,_setjmp /* save context for error return */ ! 60: movab am2,_stpc /* save starting address of subtest */ ! 61: movl $2,_subtst /* subtest number */ ! 62: movl $1,_no_opr /* number of operands in use */ ! 63: movl $MASKLB,_opr /* first operand */ ! 64: 0: movl $MASKLB,r3 /* initialize r3 = 0x55 */ ! 65: movl r3,expval ! 66: movl $0xffffffff,r4 /* initialize r4 = 0xffffffff */ ! 67: bispsw $(Z|N|V) /* set Z,V,N flags */ ! 68: bicpsw $C /* clear C flag */ ! 69: movob r3,r4 /* move r3 to r4 */ ! 70: jlss error2 /* error if n flag set */ ! 71: jeql error2 /* error if z flag set */ ! 72: jvs error2 /* error if v flag set */ ! 73: jcc error2 /* error if c flag not set */ ! 74: jmp 1f ! 75: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 76: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 77: movl $2,_ercode /* error code flag failure */ ! 78: jmp *badrtn ! 79: 1: cmpl r4,expval ! 80: jeql 1f ! 81: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 82: movl $1,_ercode /* error code data miscompare */ ! 83: movl r4,_actual /* actual data */ ! 84: movl expval,_expected /* expected data */ ! 85: jmp *badrtn ! 86: 1: movob r4,r5 /* move r4 to r5 */ ! 87: movob r5,r6 /* move r5 to r6 */ ! 88: movob r6,r7 /* move r6 to r7 */ ! 89: movob r7,r9 /* move r7 to r9 */ ! 90: movl r9,oldval /* save value of source = 0x00000055 */ ! 91: movob r9,r11 /* move r9 to r11 */ ! 92: cmpl expval,r11 /* compare r11 to 0x00000055 */ ! 93: jeql 1f ! 94: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 95: movl $1,_ercode /* error code data miscompare */ ! 96: movl r11,_actual /* actual data */ ! 97: movl expval,_expected /* expected data */ ! 98: jmp *badrtn ! 99: 1: bicpsw $Z ! 100: cmpl oldval,r9 /* make sure source unchanged */ ! 101: jeql m3 ! 102: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 103: movl $1,_ercode /* error code data miscompare */ ! 104: movl r9,_actual /* actual data */ ! 105: movl oldval,_expected /* expected data */ ! 106: jmp *badrtn ! 107: ! 108: m3: /* MOVE REGISTER TO REGISTER */ ! 109: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 110: am3: callf $4,_setjmp /* save context for error return */ ! 111: movab am3,_stpc /* save starting address of subtest */ ! 112: movl $3,_subtst /* subtest number */ ! 113: movl $1,_no_opr /* number of operands in use */ ! 114: movl $-16,_opr /* first operand */ ! 115: 0: movl $0x0,r4 ! 116: movob $-16,r3 /* move byte 0xf0 to r3 */ ! 117: movl r3,expval /* save source */ ! 118: bispsw $(Z|V) ! 119: bicpsw $(C|N) ! 120: movob r3,r4 /* move 0xfffffff0 to r4 */ ! 121: jgeq error3 /* error if n flag not set */ ! 122: jeql error3 /* error if z flag set */ ! 123: jvs error3 /* error if v flag set */ ! 124: jcc error3 /* error if c flag not set */ ! 125: jmp 1f ! 126: error3: 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 r4,expval ! 131: jeql 1f ! 132: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 133: movl $1,_ercode /* error code data miscompare */ ! 134: movl r4,_actual /* actual data */ ! 135: movl expval,_expected /* expected data */ ! 136: jmp *badrtn ! 137: 1: bicpsw $Z ! 138: cmpl r3,expval ! 139: jeql movbmm ! 140: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 141: movl $3,_ercode /* error code operand miscompare */ ! 142: movl r3,_actual /* actual data */ ! 143: movl expval,_expected /* expected data */ ! 144: jmp *badrtn ! 145: movbmm: /* MOVE MEMORY TO MEMORY */ ! 146: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 147: am4: callf $4,_setjmp /* save context for error return */ ! 148: movab am4,_stpc /* save starting address of subtest */ ! 149: movl $4,_subtst /* subtest number */ ! 150: movl $1,_no_opr /* number of operands in use */ ! 151: movl $0xff000000,_opr /* first operand */ ! 152: 0: movl $0x0,tstloc ! 153: movl $0xff000000,oprd ! 154: movl oprd,oldval /* save source */ ! 155: bispsw $(Z|V) /* set z,v flags */ ! 156: bicpsw $(C|N) /* clear n,c flag */ ! 157: movob oprd,tstloc+3 ! 158: jgeq error4 /* error if n flag not set */ ! 159: jeql error4 /* error if z flag set */ ! 160: jvs error4 /* error if v flag set */ ! 161: jcc error4 /* error if c flag not set */ ! 162: jmp 1f ! 163: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 164: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 165: movl $2,_ercode /* error code flag failure */ ! 166: jmp *badrtn ! 167: 1: ! 168: andl2 $0xff,tstloc ! 169: cmpl $0xff,tstloc /* compare tstloc to expected value */ ! 170: jeql 1f ! 171: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 172: movl $1,_ercode /* error code data miscompare */ ! 173: movl tstloc,_actual /* actual data */ ! 174: movl $0x0ff,_expected /* expected data */ ! 175: jmp *badrtn ! 176: 1: bicpsw $Z ! 177: cmpl oprd,oldval /* make sure source unchanged */ ! 178: jeql m5 ! 179: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 180: movl $3,_ercode /* error code data miscompare */ ! 181: movl oprd,_actual /* actual data */ ! 182: movl oldval,_expected /* expected data */ ! 183: jmp *badrtn ! 184: ! 185: m5: /* MOVE MEMORY TO MEMORY */ ! 186: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 187: am5: callf $4,_setjmp /* save context for error return */ ! 188: movab am5,_stpc /* save starting address of subtest */ ! 189: movl $5,_subtst /* subtest number */ ! 190: movl $1,_no_opr /* number of operands in use */ ! 191: movl $0x55,_opr /* first operand */ ! 192: 0: movl $0x55,tstloc ! 193: movl tstloc,oldval /* save source */ ! 194: movl $0,oprd /* clear destination */ ! 195: bispsw $(N|V|Z) /* set n,v,z flags */ ! 196: bicpsw $C /* clear c flag */ ! 197: movob tstloc+3,oprd+3 ! 198: jlss error5 /* error if n flag set */ ! 199: jeql error5 /* error if z flag set */ ! 200: jvs error5 /* error if v flag set */ ! 201: jcc error5 /* error if c flag not set */ ! 202: jmp 1f ! 203: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 204: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 205: movl $2,_ercode /* error code flag failure */ ! 206: jmp *badrtn ! 207: 1: ! 208: andl2 $0xff,oprd ! 209: cmpl $0x55,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 $0x55,_expected /* expected data */ ! 215: jmp *badrtn ! 216: 1: bicpsw $Z ! 217: cmpl tstloc,oldval /* make sure source unchanged */ ! 218: jeql movobdm ! 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: movobdm: /* 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 starting address of subtest */ ! 228: movl $6,_subtst /* subtest number */ ! 229: movl $1,_no_opr /* number of operands in use */ ! 230: movl $-1,_opr /* first operand */ ! 231: 0: movl $0x0,tstloc ! 232: bispsw $(Z|V) /* set z,v flags */ ! 233: bicpsw $(C|N) /* clear n,c flag */ ! 234: movob $-1,tstloc+3 ! 235: jgeq error6 /* error if n flag not set */ ! 236: jeql error6 /* error if z flag set */ ! 237: jvs error6 /* error if v flag set */ ! 238: jcc error6 /* error if c flag not set */ ! 239: jmp 1f ! 240: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 241: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 242: movl $2,_ercode /* error code flag failure */ ! 243: jmp *badrtn ! 244: 1: ! 245: andl2 $0xff,tstloc ! 246: cmpl $0xff,tstloc /* compare tstloc to expected value */ ! 247: jeql movbrm ! 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 $0x000000ff,_expected /* expected data */ ! 252: jmp *badrtn ! 253: ! 254: movbrm: /* MOVE DATA TO MEMORY */ ! 255: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 256: am7: callf $4,_setjmp /* save context for error return */ ! 257: movab am7,_stpc /* save starting address of subtest */ ! 258: movl $7,_subtst /* subtest number */ ! 259: movl $1,_no_opr /* number of operands in use */ ! 260: movl $0xaa,_opr /* first operand */ ! 261: 0: movl $0x0,tstloc ! 262: movl $0xaa,tmp /* load tmp to sign extend r5 contents */ ! 263: movb tmp+3,r3 ! 264: bispsw $(Z|V) /* set z,v flags */ ! 265: bicpsw $(C|N) /* clear n,c flag */ ! 266: movob r3,tstloc+3 ! 267: jgeq error7 /* error if n flag not set */ ! 268: jeql error7 /* error if z flag set */ ! 269: jvs error7 /* error if v flag set */ ! 270: jcc error7 /* error if c flag not set */ ! 271: jmp 1f ! 272: error7: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 273: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 274: movl $2,_ercode /* error code flag failure */ ! 275: jmp *badrtn ! 276: 1: ! 277: andl2 $0xff,tstloc ! 278: cmpl $0xaa,tstloc /* compare tstloc to expected value */ ! 279: jeql movbdr ! 280: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 281: movl $1,_ercode /* error code data miscompare */ ! 282: movl tstloc,_actual /* actual data */ ! 283: movl $0x000000aa,_expected /* expected data */ ! 284: jmp *badrtn ! 285: ! 286: movbdr: /* MOVE DATA TO REGISTER */ ! 287: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 288: am8: callf $4,_setjmp /* save context for error return */ ! 289: movab am8,_stpc /* save starting address of subtest */ ! 290: movl $8,_subtst /* subtest number */ ! 291: movl $1,_no_opr /* number of operands in use */ ! 292: movl $0xaa,_opr /* first operand */ ! 293: 0: movl $MASKHW,r4 /* initialize r4 = 0x55550000 */ ! 294: bispsw $(Z|V|C) /* set z,v,c flags */ ! 295: bicpsw $N /* clear n flag */ ! 296: movob $-0x60,r4 /* move word 0xa0 to r4 */ ! 297: jgeq error8 /* error if n flag not set */ ! 298: jeql error8 /* error if z flag set */ ! 299: jvs error8 /* error if v flag set */ ! 300: jcc error8 /* error if c flag not set */ ! 301: jmp 1f ! 302: error8: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 303: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 304: movl $2,_ercode /* error code flag failure */ ! 305: jmp *badrtn ! 306: 1: cmpl expr4,r4 /* compare r4 to 0xffffffa0 */ ! 307: jeql aldn ! 308: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 309: movl $1,_ercode /* error code data miscompare */ ! 310: movl r4,_actual /* actual data */ ! 311: movl expr4,_expected /* expected data */ ! 312: jmp *badrtn ! 313: ! 314: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 315: jmp *return ! 316: ! 317: /* test data */ ! 318: .align 2 ! 319: expval: .long 0x0 ! 320: oldval: .long 0x0 ! 321: negno: .long NEGNO ! 322: expr4: .long 0xffffffa0 ! 323: tstloc: .long 0x0 ! 324: tmp: .long 0x0 ! 325: oprd: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.