|
|
1.1 ! root 1: /* MOVB 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 _moveb ! 23: _moveb: /* MOVE MEMORY TO REGISTER */ ! 24: callf $4,_setjmp /* save context for error return */ ! 25: movab _moveb,_stpc /* save starting address of subtest */ ! 26: movl $1,_subtst /* subtest number */ ! 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: movb 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 /* error if not equal; z flag not set */ ! 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 /* make sure source unchanged */ ! 51: jeql movwrr /* error if not equal; z flag not set */ ! 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: movb 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 /* error if not equal; z flag not set */ ! 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: movb r4,r5 ! 87: movb r5,r6 /* move r5 to r6 */ ! 88: movb r6,r7 /* move r6 to r7 */ ! 89: movb r7,r9 /* move r7 to r9 */ ! 90: movl r9,oldval /* save value of source = 0x00000055 */ ! 91: movb r9,r11 /* move r9 to r11 */ ! 92: cmpl expval,r11 /* compare r11 to 0x00000055 */ ! 93: jeql 1f /* error if not equal; z flag not set */ ! 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 /* error if not equal; z flag not set */ ! 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: ! 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: movb $-16,r3 /* move byte 0xf0 to r3 */ ! 117: movl r3,expval /* save source */ ! 118: bispsw $(Z|V) ! 119: bicpsw $(C|N) ! 120: movb 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 /* error if not equal; z flag not set */ ! 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 /* error if not equal; z flag not set */ ! 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: movb 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: cmpl $0x000000ff,tstloc /* compare tstloc to expected value */ ! 168: jeql 1f /* error if not equal; z flag not set */ ! 169: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 170: movl $1,_ercode /* error code data miscompare */ ! 171: movl tstloc,_actual /* actual data */ ! 172: movl $0x000000ff,_expected /* expected data */ ! 173: jmp *badrtn ! 174: 1: bicpsw $Z ! 175: cmpl oprd,oldval /* make sure source unchanged */ ! 176: jeql m5 /* error if not equal; z flag not set */ ! 177: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 178: movl $3,_ercode /* error code operand miscompare */ ! 179: movl oprd,_actual /* actual data */ ! 180: movl oldval,_expected /* expected data */ ! 181: jmp *badrtn ! 182: ! 183: m5: ! 184: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 185: am5: callf $4,_setjmp /* save context for error return */ ! 186: movab am5,_stpc /* save starting address of subtest */ ! 187: movl $5,_subtst /* subtest number */ ! 188: movl $1,_no_opr /* number of operands in use */ ! 189: movl $0x55,_opr /* first operand */ ! 190: 0: movl $0x55,tstloc ! 191: movl tstloc,oldval /* save source */ ! 192: bispsw $(N|V|Z) /* set n,v,z flags */ ! 193: bicpsw $C /* clear c flag */ ! 194: movb tstloc+3,oprd+3 ! 195: jlss error5 /* error if n flag set */ ! 196: jeql error5 /* error if z flag set */ ! 197: jvs error5 /* error if v flag set */ ! 198: jcc error5 /* error if c flag not set */ ! 199: jmp 1f ! 200: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 201: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 202: movl $2,_ercode /* error code flag failure */ ! 203: jmp *badrtn ! 204: 1: cmpl $0xff000055,oprd /* compare oprd to expected value */ ! 205: jeql 1f /* error if not equal; z flag not set */ ! 206: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 207: movl $1,_ercode /* error code data miscompare */ ! 208: movl oprd,_actual /* actual data */ ! 209: movl $0xff000055,_expected /* expected data */ ! 210: jmp *badrtn ! 211: 1: bicpsw $Z ! 212: cmpl tstloc,oldval /* make sure source unchanged */ ! 213: jeql movbdm /* error if not equal; z flag not set */ ! 214: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 215: movl $3,_ercode /* error code operand miscompare */ ! 216: movl tstloc,_actual /* actual data */ ! 217: movl oldval,_expected /* expected data */ ! 218: jmp *badrtn ! 219: movbdm: /* MOVE DATA TO MEMORY */ ! 220: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 221: am6: callf $4,_setjmp /* save context for error return */ ! 222: movab am6,_stpc /* save starting address of subtest */ ! 223: movl $6,_subtst /* subtest number */ ! 224: movl $1,_no_opr /* number of operands in use */ ! 225: movl $-1,_opr /* first operand */ ! 226: 0: movl $0x0,tstloc ! 227: bispsw $(Z|V) /* set z,v flags */ ! 228: bicpsw $(C|N) /* clear n,c flag */ ! 229: movb $-1,tstloc+3 ! 230: jgeq error6 /* error if n flag not set */ ! 231: jeql error6 /* error if z flag set */ ! 232: jvs error6 /* error if v flag set */ ! 233: jcc error6 /* error if c flag not set */ ! 234: jmp 1f ! 235: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 236: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 237: movl $2,_ercode /* error code flag failure */ ! 238: jmp *badrtn ! 239: 1: cmpl $0x000000ff,tstloc /* compare tstloc to expected value */ ! 240: jeql movbrm /* error if not equal; z flag not set */ ! 241: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 242: movl $1,_ercode /* error code data miscompare */ ! 243: movl tstloc,_actual /* actual data */ ! 244: movl $0x000000ff,_expected /* expected data */ ! 245: jmp *badrtn ! 246: ! 247: movbrm: /* MOVE DATA TO MEMORY */ ! 248: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 249: am7: callf $4,_setjmp /* save context for error return */ ! 250: movab am7,_stpc /* save starting address of subtest */ ! 251: movl $7,_subtst /* subtest number */ ! 252: movl $1,_no_opr /* number of operands in use */ ! 253: movl $0xaa,_opr /* first operand */ ! 254: 0: movl $0x0,tstloc ! 255: movl $0xaa,tmp /* load tmp to sign extend r5 contents */ ! 256: movb tmp+3,r3 ! 257: bispsw $(Z|V) /* set z,v flags */ ! 258: bicpsw $(C|N) /* clear n,c flag */ ! 259: movb r3,tstloc+3 ! 260: jgeq error7 /* error if n flag not set */ ! 261: jeql error7 /* error if z flag set */ ! 262: jvs error7 /* error if v flag set */ ! 263: jcc error7 /* error if c flag not set */ ! 264: jmp 1f ! 265: error7: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 266: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 267: movl $2,_ercode /* error code flag failure */ ! 268: jmp *badrtn ! 269: 1: cmpl $0x000000aa,tstloc /* compare tstloc to expected value */ ! 270: jeql movbdr /* error if not equal; z flag not set */ ! 271: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 272: movl $1,_ercode /* error code data miscompare */ ! 273: movl tstloc,_actual /* actual data */ ! 274: movl $0x000000aa,_expected /* expected data */ ! 275: jmp *badrtn ! 276: ! 277: movbdr: /* MOVE DATA TO REGISTER */ ! 278: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 279: am8: callf $4,_setjmp /* save context for error return */ ! 280: movab am8,_stpc /* save starting address of subtest */ ! 281: movl $8,_subtst /* subtest number */ ! 282: movl $1,_no_opr /* number of operands in use */ ! 283: movl $0x55,_opr /* first operand */ ! 284: 0: movl $MASKHW,r5 /* initialize r5 = 0x55550000 */ ! 285: bispsw $(Z|V|C) /* set z,v,c flags */ ! 286: bicpsw $N /* clear n flag */ ! 287: movb $-0x60,r5 /* move word 0xa0 to r5 */ ! 288: jgeq error8 /* error if n flag not set */ ! 289: jeql error8 /* error if z flag set */ ! 290: jvs error8 /* error if v flag set */ ! 291: jcc error8 /* error if c flag not set */ ! 292: jmp 1f ! 293: error8: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 294: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 295: movl $2,_ercode /* error code flag failure */ ! 296: jmp *badrtn ! 297: 1: cmpl expr4,r5 /* compare r5 to 0xffffffa0 */ ! 298: jeql aldn /* error if not equal; z flag not set */ ! 299: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 300: movl $1,_ercode /* error code data miscompare */ ! 301: movl r5,_actual /* actual data */ ! 302: movl expr4,_expected /* expected data */ ! 303: jmp *badrtn ! 304: ! 305: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 306: jmp *return ! 307: ! 308: /* test data */ ! 309: .align 2 ! 310: expval: .long 0x0 ! 311: oldval: .long 0x0 ! 312: negno: .long NEGNO ! 313: expr4: .long 0xffffffa0 ! 314: tstloc: .long 0x0 ! 315: oprd: .long 0x0 ! 316: tmp: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.