|
|
1.1 ! root 1: /* AOBLSS istruction 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: .set LIMIT,0xffffff ! 21: ! 22: .globl _aoblss ! 23: _aoblss: ! 24: callf $4,_setjmp /* save context for error return */ ! 25: movab _aoblss,_stpc /* save address of subtest */ ! 26: movl $1,_subtst /* subtest number */ ! 27: movl $2,_no_opr /* number of operands in use */ ! 28: movl $-1,_opr /* first operand */ ! 29: movl $-3,_opr + 4 /* second operand */ ! 30: 0: bicpsw $(IV|T) /* disable exceptions */ ! 31: movl $-1,limit /* set limit = -1 */ ! 32: movl $-3,index /* set index = -3 */ ! 33: bispsw $(Z|V|C) /* set z,v,c flags */ ! 34: bicpsw $N /* clear n flag */ ! 35: aoblss limit,index,loop0 /* data memory entry point */ ! 36: movl $1,_ercode /* error code data miscompare did not branch */ ! 37: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 38: movl index,_actual /* actual data */ ! 39: movl $-2,_expected /* expected data */ ! 40: jmp *badrtn ! 41: error1: movpsl _actual /* actual = psl */ ! 42: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 43: movl $2,_ercode /* error code flag miscompare */ ! 44: jmp *badrtn ! 45: error2: movl $3,_ercode /* error code operand was modified */ ! 46: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 47: movl index,_actual /* actual data */ ! 48: movl $-2,_expected /* expected data */ ! 49: jmp *badrtn ! 50: .space 100 /* reserve 100 bytes */ ! 51: loop0: ! 52: jlss error1 ! 53: jcc error1 ! 54: jvs error1 ! 55: jeql error1 ! 56: cmpl $-2,index /* check index value */ ! 57: jneq error2 ! 58: bicpsw $Z ! 59: cmpl $-1,limit /* make sure limit unchanged */ ! 60: jneq error2 ! 61: ! 62: /* INDEX = LIMIT */ ! 63: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 64: a2: callf $4,_setjmp /* save context for error return */ ! 65: movab a2,_stpc /* save address of subtest */ ! 66: movl $2,_subtst /* subtest number */ ! 67: movl $2,_no_opr /* number of operands in use */ ! 68: movl $0,_opr /* first operand */ ! 69: movl $-1,_opr + 4 /* second operand */ ! 70: 0: movl $0,r3 /* set limit in r3 = 0 */ ! 71: movl $-1,r4 /* set index = -1 */ ! 72: bispsw $(N|V|C) /* set n,v,c flags */ ! 73: bicpsw $Z /* clear z flag */ ! 74: aoblss r3,r4,loop1 /* register register entry point */ ! 75: jneq error3 ! 76: jcs error3 ! 77: jlss error3 ! 78: jvs error3 ! 79: ! 80: bicpsw $Z ! 81: cmpl $0,r4 /* check index value */ ! 82: jneq error4 ! 83: jmp here ! 84: .space 90 /* reserve 100 bytes */ ! 85: loop1: ! 86: movl $1,_ercode /* error code data miscompare did not branch */ ! 87: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 88: movl r4,_actual /* actual data */ ! 89: movl $0,_expected /* expected data */ ! 90: jmp *badrtn ! 91: error3: movpsl _actual /* actual = psl */ ! 92: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 93: movl $2,_ercode /* error code flag miscompare */ ! 94: jmp *badrtn ! 95: error4: movl $3,_ercode /* error code operand was modified */ ! 96: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 97: movl r4,_actual /* actual data */ ! 98: movl $0,_expected /* expected data */ ! 99: jmp *badrtn ! 100: /* INDEX > LIMIT */ ! 101: here: ! 102: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 103: a3: callf $4,_setjmp /* save context for error return */ ! 104: movab a3,_stpc /* save address of subtest */ ! 105: movl $3,_subtst /* subtest number */ ! 106: movl $2,_no_opr /* number of operands in use */ ! 107: movl $-1,_opr /* first operand */ ! 108: movl $-1,_opr + 4 /* second operand */ ! 109: 0: movl $-1,r3 /* set limit in r3 = -1 */ ! 110: movl $-1,index /* set index = -1 */ ! 111: bispsw $(N|Z|V|C) /* set all flags */ ! 112: aoblss r3,index,loop2 /* regiser to memory entry point */ ! 113: jgeq error5 ! 114: jvs error5 ! 115: jeql error5 ! 116: jcs error5 ! 117: ! 118: cmpl $0,index /* check index value */ ! 119: jneq error6 ! 120: jmp nxt ! 121: .space 90 /* reserve 100 bytes */ ! 122: loop2: ! 123: movl $1,_ercode /* error code data miscompare did not branch */ ! 124: 1: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 125: movl index,_actual /* actual data */ ! 126: movl $-0,_expected /* expected data */ ! 127: jmp *badrtn ! 128: error5: movpsl _actual /* actual = psl */ ! 129: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 130: movl $2,_ercode /* error code flag miscompare */ ! 131: jmp *badrtn ! 132: error6: movl $3,_ercode /* error code operand was modified */ ! 133: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 134: movl index,_actual /* actual data */ ! 135: movl $0,_expected /* expected data */ ! 136: jmp *badrtn ! 137: ! 138: /* CHECK C FLAG */ ! 139: nxt: ! 140: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 141: a4: callf $4,_setjmp /* save context for error return */ ! 142: movab a4,_stpc /* save address of subtest */ ! 143: movl $4,_subtst /* subtest number */ ! 144: movl $2,_no_opr /* number of operands in use */ ! 145: movl $5,_opr /* first operand */ ! 146: movl $0x7fffffff,_opr + 4 /* second operand */ ! 147: 0: movl $5,limit /* set limit in limit = 5 */ ! 148: movl $0x7fffffff,r4 /* set index to max. positive no */ ! 149: bispsw $(Z|N|C) /* set n,z,c flags */ ! 150: bicpsw $V /* clear n flags */ ! 151: aoblss limit,r4,loop3 /* memory to register entry point */ ! 152: jvs error7 ! 153: jeql error7 ! 154: jgeq error7 ! 155: jcs error7 ! 156: cmpl $0x80000000,r4 /* check index value */ ! 157: jneq error8 ! 158: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 159: jmp *return ! 160: ! 161: .space 100 ! 162: loop3: ! 163: movl $1,_ercode /* error code data miscompare did not branch */ ! 164: 1: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 165: movl r4,_actual /* actual data */ ! 166: movl $0x80000000,_expected /* expected data */ ! 167: jmp *badrtn ! 168: error7: movpsl _actual /* actual = psl */ ! 169: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 170: movl $2,_ercode /* error code flag miscompare */ ! 171: jmp *badrtn ! 172: error8: movl $3,_ercode /* error code operand was modified */ ! 173: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 174: movl r4,_actual /* actual data */ ! 175: movl $0x80000000,_expected /* expected data */ ! 176: jmp *badrtn ! 177: ! 178: ! 179: /* test data */ ! 180: .align 2 ! 181: limit: ! 182: .long 0 ! 183: index: ! 184: .long 0 ! 185: add: ! 186: .long 0 ! 187:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.