|
|
1.1 ! root 1: /* SHLL instruction test */ ! 2: /* Privilege registers */ ! 3: ! 4: .set IPL,8 ! 5: .set MAPEN,9 ! 6: .set KSP,19 ! 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 HIGH,31 /* highest interrupt priority */ ! 20: ! 21: .globl _shiftll ! 22: _shiftll: ! 23: callf $4,_setjmp /* save context for error return */ ! 24: movab _shiftll,_stpc /* save starting address of subtest */ ! 25: movl $1,_subtst /* subtest number */ ! 26: movl $2,_no_opr /* number of operands in use */ ! 27: movl $1,_opr /* first operand */ ! 28: movl $0x55555555,_opr + 4 /* second operand */ ! 29: 0: bicpsw $(IV|T) /* disable exceptions */ ! 30: shftl: /* SHIFT LEFT LONG FROM MEMORY TO REGISTER */ ! 31: movl $0x55555555,srcloc /* set srcloc = 0x55555555 */ ! 32: movl $0xaaaaaaaa,r4 /* set r4 = 0xaaaaaaaa */ ! 33: bispsw $(Z|V) /* set z,v flags */ ! 34: bicpsw $(N|C) /* clear n,c flag */ ! 35: /* data memory register */ ! 36: shll $1,srcloc,r3 /* shift left 1 and put in r3 */ ! 37: jgeq error1 /* error if n flag not set */ ! 38: jcc error1 /* error if c flag not set */ ! 39: jeql error1 /* error if z flag still set */ ! 40: jvs error1 /* error if v flag still set */ ! 41: jmp 1f ! 42: error1: movpsl _actual /* actual = psl MAYBE */ ! 43: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 44: movl $2,_ercode /* error code flag failure */ ! 45: jmp *badrtn ! 46: 1: cmpl r3,r4 /* check result */ ! 47: jeql 1f /* no error then continue */ ! 48: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 49: movl $1,_ercode /* error code data miscompare */ ! 50: movl r3,_actual /* actual data */ ! 51: movl r4,_expected /* expected data */ ! 52: jmp *badrtn ! 53: 1: bicpsw $Z ! 54: cmpl $0x55555555,srcloc /* check if source get affected */ ! 55: jeql s2 /* no error then continue */ ! 56: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 57: movl $3,_ercode /* error code operand miscompare */ ! 58: movl srcloc,_actual /* actual data */ ! 59: movl $0x55555555,_expected /* expected data */ ! 60: jmp *badrtn ! 61: /* SHIFT LEFT LONG FROM REGISTER TO MEMORY */ ! 62: s2: ! 63: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 64: as2: callf $4,_setjmp /* save context for error return */ ! 65: movab as2,_stpc /* save starting address of subtest */ ! 66: movl $2,_subtst /* subtest number */ ! 67: movl $2,_no_opr /* number of operands in use */ ! 68: movl $1,_opr /* first operand */ ! 69: movl r3,_opr + 4 /* second operand */ ! 70: 0: movb $1,temp /* set temp = shift count */ ! 71: bispsw $(N|Z|V) /* set n,z,v flags */ ! 72: bicpsw $C /* clear C flag */ ! 73: /* memory reg memory */ ! 74: shll temp,r3,dstloc /* shift r3 left 1 and put in dstloc */ ! 75: jlss error2 /* error if n,z,v flag still set */ ! 76: jeql error2 ! 77: jvs error2 ! 78: jcc error2 /* error if c flag not set */ ! 79: jmp 1f ! 80: error2: movpsl _actual /* actual = psl MAYBE */ ! 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 dstloc,$0x55555554 /* check result */ ! 85: jeql 1f /* no error then continue */ ! 86: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 87: movl $1,_ercode /* error code data miscompare */ ! 88: movl dstloc,_actual /* actual data */ ! 89: movl $0x55555554,_expected /* expected data */ ! 90: jmp *badrtn ! 91: 1: bicpsw $Z ! 92: cmpl r3,$0xaaaaaaaa /* make sure source unchanged */ ! 93: jeql s3 /* no error then continue */ ! 94: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 95: movl $3,_ercode /* error code operand miscompare */ ! 96: movl r3,_actual /* actual data */ ! 97: movl $0xaaaaaaaa,_expected /* expected data */ ! 98: jmp *badrtn ! 99: /* SHIFT LEFT LONG FROM MEMORY TO MEMORY */ ! 100: s3: ! 101: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 102: as3: callf $4,_setjmp /* save context for error return */ ! 103: movab as3,_stpc /* save starting address of subtest */ ! 104: movl $3,_subtst /* subtest number */ ! 105: movl $2,_no_opr /* number of operands in use */ ! 106: movl $4,_opr /* first operand */ ! 107: movl srcloc,_opr + 4 /* second operand */ ! 108: 0: movl $4,r3 /* set r3 = shift count */ ! 109: bispsw $(N|Z|V) /* set n,z,v flags */ ! 110: bicpsw $C /* clear C flag */ ! 111: /* reg memory memory */ ! 112: shll r3,srcloc,srcloc /* shift and put result back in srcloc */ ! 113: jlss error3 /* error if n flag still set */ ! 114: jeql error3 /* error if z flag still set */ ! 115: jvs error3 ! 116: jcc error3 /* error if c flags not set */ ! 117: jmp 1f ! 118: error3: movpsl _actual /* actual = psl MAYBE */ ! 119: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 120: movl $2,_ercode /* error code flag failure */ ! 121: jmp *badrtn ! 122: 1: cmpl srcloc,$0x55555550 /* check result */ ! 123: jeql s4 /* no error then continue */ ! 124: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 125: movl $1,_ercode /* error code data miscompare */ ! 126: movl srcloc,_actual /* actual data */ ! 127: movl $0x55555550,_expected /* expected data */ ! 128: jmp *badrtn ! 129: /* SPECIAL CASES */ ! 130: /* shift count = 0 */ ! 131: s4: ! 132: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 133: as4: callf $4,_setjmp /* save context for error return */ ! 134: movab as4,_stpc /* save starting address of subtest */ ! 135: movl $4,_subtst /* subtest number */ ! 136: movl $2,_no_opr /* number of operands in use */ ! 137: movl $0,_opr /* first operand */ ! 138: movl $0x55555555,_opr + 4 /* second operand */ ! 139: 0: movl $0x55555555,srcloc /* set srcloc = 0x55555555 */ ! 140: bispsw $(N|Z|V) /* set n,z,v flags */ ! 141: bicpsw $C /* clear C flag */ ! 142: shll $0,srcloc,r3 /* shift left 0 and put in r3 */ ! 143: jlss error4 /* error if n flag still set */ ! 144: jeql error4 /* error if z flag still set */ ! 145: jvs error4 /* error if v flag still set */ ! 146: jcc error4 /* error if c flag not set */ ! 147: jmp 1f ! 148: error4: movpsl _actual /* actual = psl MAYBE */ ! 149: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 150: movl $2,_ercode /* error code flag failure */ ! 151: jmp *badrtn ! 152: 1: cmpl $0x55555555,r3 /* check result */ ! 153: jeql 1f /* no error then continue */ ! 154: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 155: movl $1,_ercode /* error code data miscompare */ ! 156: movl r3,_actual /* actual data */ ! 157: movl $0x55555555,_expected /* expected data */ ! 158: jmp *badrtn ! 159: 1: bicpsw $Z ! 160: cmpl $0x55555555,srcloc /* check if source get affected */ ! 161: jeql s5 /* no error then continue */ ! 162: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 163: movl $3,_ercode /* error code operand miscompare */ ! 164: movl srcloc,_actual /* actual data */ ! 165: movl $0x55555555,_expected /* expected data */ ! 166: jmp *badrtn ! 167: /* shift count > 32 */ ! 168: s5: ! 169: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 170: as5: callf $4,_setjmp /* save context for error return */ ! 171: movab as5,_stpc /* save starting address of subtest */ ! 172: movl $5,_subtst /* subtest number */ ! 173: movl $2,_no_opr /* number of operands in use */ ! 174: movl $0,_opr /* first operand */ ! 175: movl $0x55555555,_opr + 4 /* second operand */ ! 176: 0: movb $33,temp /* set shift count = 33 */ ! 177: bispsw $(N|C) /* set n,c flags */ ! 178: bicpsw $(V|Z) /* clear z,v flag */ ! 179: shll temp,r3,r5 /* shift r3 left 33 and put in r5 */ ! 180: jlss error5 /* error if n flag still set */ ! 181: jneq error5 /* error if z flag not set */ ! 182: jvs error5 ! 183: jcc error5 /* error if c flags not set */ ! 184: jmp 1f ! 185: error5: movpsl _actual /* actual = psl MAYBE */ ! 186: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 187: movl $2,_ercode /* error code flag failure */ ! 188: jmp *badrtn ! 189: 1: bicpsw $Z ! 190: cmpl r5,$0 /* check result */ ! 191: jeql 1f /* no error then continue */ ! 192: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 193: movl $1,_ercode /* error code data miscompare */ ! 194: movl r5,_actual /* actual data */ ! 195: movl $0,_expected /* expected data */ ! 196: jmp *badrtn ! 197: 1: bicpsw $Z ! 198: cmpl r3,$0x55555555 /* make sure source unchanged */ ! 199: jeql s6 /* no error then continue */ ! 200: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 201: movl $3,_ercode /* error code operand miscompare */ ! 202: movl r3,_actual /* actual data */ ! 203: movl $0x55555555,_expected /* expected data */ ! 204: jmp *badrtn ! 205: ! 206: s6: ! 207: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 208: as6: callf $4,_setjmp /* save context for error return */ ! 209: movab as6,_stpc /* save starting address of subtest */ ! 210: movl $6,_subtst /* subtest number */ ! 211: movl $2,_no_opr /* number of operands in use */ ! 212: movl $32,_opr /* first operand */ ! 213: movl $0xffffffff,_opr + 4 /* second operand */ ! 214: 0: movb $32,r6 /* set r6 = shift count */ ! 215: movl $0xffffffff,srcloc /* set srcloc = 0xffffffff */ ! 216: bispsw $(N|C|V) /* set n,c,v flags */ ! 217: bicpsw $Z /* clear z flag */ ! 218: shll r6,srcloc,r3 /* shift left 32 and put in r3 */ ! 219: jlss error6 /* error if n flag set */ ! 220: jvs error6 /* error if v flag set */ ! 221: jneq error6 /* error if z flag not set */ ! 222: jcc error6 /* error if c flag not set */ ! 223: jmp 1f ! 224: error6: movpsl _actual /* actual = psl MAYBE */ ! 225: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 226: movl $2,_ercode /* error code flag failure */ ! 227: jmp *badrtn ! 228: 1: bicpsw $Z ! 229: cmpl r3,$0 /* check result */ ! 230: jeql 1f /* no error then continue */ ! 231: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 232: movl $1,_ercode /* error code data miscompare */ ! 233: movl r3,_actual /* actual data */ ! 234: movl $0,_expected /* expected data */ ! 235: jmp *badrtn ! 236: 1: bicpsw $Z ! 237: cmpl $0xffffffff,srcloc /* check if source get affected */ ! 238: jeql aldn /* no error then continue */ ! 239: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 240: movl $3,_ercode /* error code operand miscompare */ ! 241: movl srcloc,_actual /* actual data */ ! 242: movl $0xffffffff,_expected /* expected data */ ! 243: jmp *badrtn ! 244: ! 245: ! 246: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 247: jmp *return ! 248: ! 249: ! 250: /* test data */ ! 251: .align 2 ! 252: srcloc: .long 0 ! 253: dstloc: .long 0 ! 254: temp: .long 0 ! 255: ! 256:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.