|
|
1.1 ! root 1: /* JMP,BRB,BRW 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: .globl _jumpbr ! 21: _jumpbr: ! 22: callf $4,_setjmp /* save context for error return */ ! 23: movab _jumpbr,_stpc /* save address of subtest start */ ! 24: movl $1,_subtst /* subtest number */ ! 25: movl $1,_no_opr /* number of operands in use */ ! 26: movl $1,_opr /* first operand */ ! 27: 0: bicpsw $(IV|T) /* disable exceptions */ ! 28: /* */ ! 29: jump: ! 30: movl $1,r1 /* error code in reg one */ ! 31: bispsw $(N|V) /* set n,v flags */ ! 32: bicpsw $(Z|C) /* clear z,c flags */ ! 33: jmp bb ! 34: movpsl _actual /* actual data = psl MAYBE it is wrong */ ! 35: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 36: movl $2,_ercode /* error code flag failure */ ! 37: jmp *badrtn /* error : did not jmp */ ! 38: .space 32000 /* reserve 32000 bytes */ ! 39: bb: /* BRANCH WITH BYTE DISPLACEMENT */ ! 40: jgeq error0 /* error if n,v flags not set */ ! 41: jvc error0 ! 42: jeql error0 /* error if z,c flags not clear */ ! 43: jcs error0 ! 44: jmp loc0 ! 45: error0: movpsl _actual /* actual data = psl MAYBE it is wrong */ ! 46: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 47: movl $2,_ercode /* error code flag failure */ ! 48: jmp *badrtn ! 49: loc0: ! 50: brb loc1 ! 51: movpsl _actual /* actual data = psl MAYBE it is wrong */ ! 52: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 53: movl $2,_ercode /* error code flag failure */ ! 54: jmp *badrtn ! 55: .space 90 /* reserve 90 bytes */ ! 56: loc1: ! 57: jgeq error1 /* error if n,v flags not set */ ! 58: jvc error1 ! 59: jeql error1 /* error if z,c flags not clear */ ! 60: jcs error1 ! 61: jmp loc3 ! 62: error1: movpsl _actual /* actual data = psl MAYBE it is wrong */ ! 63: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 64: movl $2,_ercode /* error code flag failure */ ! 65: jmp *badrtn ! 66: loc2: /* branch back here from loc3 */ ! 67: jlss error1 /* error if n,v flags set */ ! 68: jvs error1 ! 69: jneq error1 /* error if z,c flags clear */ ! 70: jcc error1 ! 71: jmp bw ! 72: .space 80 /* reserve 80 bytes */ ! 73: loc3: ! 74: movl $2,r1 /* error code in reg one */ ! 75: bispsw $(Z|C) /* set z,c flags */ ! 76: bicpsw $(N|V) /* clear n,v flags */ ! 77: brb loc2 /* branch backward */ ! 78: movpsl _actual /* actual data = psl MAYBE it is wrong */ ! 79: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 80: movl $2,_ercode /* error code flag failure */ ! 81: jmp *badrtn ! 82: ; ! 83: ; ! 84: ; ! 85: bw: /* BRANCH WITH WORD DISPLACEMENT */ ! 86: movl $3,r1 /* error code in reg one */ ! 87: bispsw $(N|V) /* set n,v flags */ ! 88: bicpsw $(Z|C) /* clear z,c flags */ ! 89: loc4: ! 90: brw loc5 ! 91: movpsl _actual /* actual data = psl MAYBE it is wrong */ ! 92: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 93: movl $2,_ercode /* error code flag failure */ ! 94: jmp *badrtn ! 95: .space 12000 /* reserve 12000 bytes */ ! 96: loc5: ! 97: jgeq error2 /* error if n,v flags not set */ ! 98: jvc error2 ! 99: jeql error2 /* error if z,c flags not clear */ ! 100: jcs error2 ! 101: jmp loc7 ! 102: error2: movpsl _actual /* actual data = psl MAYBE it is wrong */ ! 103: cmpl $1,_scoplp /* if set scope loop on error */ ! 104: jneq 1f ! 105: jmp 0b ! 106: 1: movl $2,_ercode /* error code flag failure */ ! 107: jmp *badrtn ! 108: loc6: /* branch back here from loc3 */ ! 109: jlss error2 /* error if n,v flags set */ ! 110: jvs error2 ! 111: jneq error2 /* error if z,c flags clear */ ! 112: jcc error2 ! 113: jmp done ! 114: .space 12000 /* reserve 12000 bytes */ ! 115: loc7: ! 116: movl $4,r1 /* error code in reg one */ ! 117: bispsw $(Z|C) /* set z,c flags */ ! 118: bicpsw $(N|V) /* clear n,v flags */ ! 119: brw loc6 /* branch backward */ ! 120: movpsl _actual /* actual data = psl MAYBE it is wrong */ ! 121: cmpl $1,_scoplp /* if set scope loop on error */ ! 122: jneq 1f ! 123: jmp 0b ! 124: 1: movl $2,_ercode /* error code flag failure */ ! 125: jmp *badrtn ! 126: done: ! 127: cmpl $1,_force_lp /* if set loop on last subtest */ ! 128: jneq 1f ! 129: jmp 0b ! 130: 1: jmp *return /* good, return to monitor */ ! 131:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.