|
|
1.1 ! root 1: /* AOBLEQ 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 _aobleq ! 23: _aobleq: ! 24: bicpsw $(IV|T) /* disable exceptions */ ! 25: /* */ ! 26: addob: /* INDEX < LIMIT */ ! 27: callf $4,_setjmp /* save context for error return */ ! 28: movab addob,_stpc /* save subtest address */ ! 29: movl $1,_subtst /* subtest number */ ! 30: movl $2,_no_opr /* number of operands */ ! 31: movl $-1,_opr /* first operand */ ! 32: movl $-3,_opr + 4 /* second operand */ ! 33: 0: movl $-1,limit /* set limit = -1 */ ! 34: movl $-3,index /* set index = -3 */ ! 35: bispsw $(Z|V|C) /* set z,v,c flags */ ! 36: bicpsw $N /* clear n flag */ ! 37: aobleq limit,index,loop0 /* memory memory entry point */ ! 38: movl $1,_ercode /* error code data miscompare did not branch */ ! 39: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 40: movl index,_actual /* actual data */ ! 41: movl $-2,_expected /* expected data */ ! 42: jmp *badrtn ! 43: error1: movpsl _actual /* actual = psl */ ! 44: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 45: movl $2,_ercode /* error code flag miscompare */ ! 46: jmp *badrtn ! 47: error2: movl $3,_ercode /* error code operand was changed */ ! 48: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 49: movl index,_actual /* actual data */ ! 50: movl $-2,_expected /* expected data */ ! 51: jmp *badrtn ! 52: .space 100 /* reserve 100 bytes */ ! 53: loop0: ! 54: jlss error1 ! 55: jcc error1 ! 56: jvs error1 ! 57: jeql error1 ! 58: ! 59: cmpl $-2,index /* check index value */ ! 60: jneq error2 ! 61: bicpsw $Z ! 62: cmpl $-1,limit /* make sure limit unchanged */ ! 63: jneq error2 ! 64: ! 65: /* INDEX = LIMIT */ ! 66: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 67: a2: callf $4,_setjmp /* save context for error return */ ! 68: movab a2,_stpc /* save subtest address */ ! 69: movl $2,_subtst /* subtest number */ ! 70: movl $2,_no_opr /* number of operands */ ! 71: movl $0,_opr /* first operand */ ! 72: movl $-1,_opr + 4 /* second operand */ ! 73: 0: movl $0,r3 /* set limit in r3 = 0 */ ! 74: movl $-1,r4 /* set index = -1 */ ! 75: bispsw $(N|V|C) /* set n,v,c flags */ ! 76: bicpsw $Z /* clear z flag */ ! 77: aobleq r3,r4,loop1 /* register register entry point */ ! 78: movl $1,_ercode /* error code data miscompare did not branch */ ! 79: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 80: movl r4,_actual /* actual data */ ! 81: movl $0,_expected /* expected data */ ! 82: jmp *badrtn ! 83: error3: movpsl _actual /* actual = psl */ ! 84: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 85: movl $2,_ercode /* error code flag miscompare */ ! 86: jmp *badrtn ! 87: error4: movl $3,_ercode /* error code operand was changed */ ! 88: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 89: movl r4,_actual /* actual data */ ! 90: movl $0,_expected /* expected data */ ! 91: jmp *badrtn ! 92: .space 100 /* reserve 100 bytes */ ! 93: loop1: ! 94: jneq error3 ! 95: jcs error3 ! 96: jlss error3 ! 97: jvs error3 ! 98: cmpl $0,r4 /* check index value */ ! 99: jneq error4 ! 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 subtest address */ ! 105: movl $3,_subtst /* subtest number */ ! 106: movl $2,_no_opr /* number of operands */ ! 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: aobleq r3,index,loop2 /* register memory entry point */ ! 113: jgeq error5 ! 114: jeql error5 ! 115: jvs error5 ! 116: jcs error5 ! 117: cmpl $0,index /* check index value */ ! 118: jneq error6 ! 119: jmp nxt ! 120: .space 90 /* reserve 100 bytes */ ! 121: loop2: ! 122: ! 123: movl $1,_ercode /* error code data miscompare did branch */ ! 124: 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 changed */ ! 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: /* CHECK V FLAG */ ! 138: nxt: ! 139: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 140: a4: callf $4,_setjmp /* save context for error return */ ! 141: movab a4,_stpc /* save subtest address */ ! 142: movl $4,_subtst /* subtest number */ ! 143: movl $2,_no_opr /* number of operands */ ! 144: movl $5,_opr /* first operand */ ! 145: movl $0x7fffffff,_opr + 4 /* second operand */ ! 146: 0: movl $5,limit /* set limit in limit = 5 */ ! 147: movl $0x7fffffff,r4 /* set r4 to max. positive no */ ! 148: bispsw $(Z|C|N) /* set z,c,n flags */ ! 149: bicpsw $(V|N) /* clear v flags */ ! 150: aobleq limit,r4,loop3 /* memory to register entry point */ ! 151: jvs error7 ! 152: jeql error7 ! 153: jgeq error7 ! 154: jcs error7 ! 155: cmpl $0x80000000,r4 /* check index value */ ! 156: jneq error8 ! 157: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 158: jmp *return /* stop test */ ! 159: ! 160: .space 100 ! 161: loop3: ! 162: movl $1,_ercode /* error code data miscompare did branch */ ! 163: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 164: movl r4,_actual /* actual data */ ! 165: movl $0x80000000,_expected /* expected data */ ! 166: jmp *badrtn ! 167: error7: movpsl _actual /* actual = psl */ ! 168: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 169: movl $2,_ercode /* error code flag miscompare */ ! 170: jmp *badrtn ! 171: error8: movl $3,_ercode /* error code operand was changed */ ! 172: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 173: movl r4,_actual /* actual data */ ! 174: movl $0x80000000,_expected /* expected data */ ! 175: jmp *badrtn ! 176: ! 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.