|
|
1.1 ! root 1: /* BISPSW 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: ! 22: .globl _bispsw ! 23: _bispsw: ! 24: bicpsw $(IV|T) /* disable exceptions */ ! 25: /* */ ! 26: spsw: ! 27: callf $4,_setjmp /* save context for error return */ ! 28: movab spsw,_stpc /* save address of subtest */ ! 29: movl $1,_subtst /* subtest number */ ! 30: movl $0,_no_opr /* no operands we manipulate psw */ ! 31: movl $0,_actual /* no actual data */ ! 32: movl $0,_expected /* no expected data */ ! 33: 0: movl $0xf,r3 /* R3 : mask clear all flags N Z V C */ ! 34: bicpsw r3 /* clear all flags */ ! 35: bispsw $(N|Z|V|C) /* set all flags */ ! 36: movpsl r4 ! 37: andl2 $0xf,r4 ! 38: cmpl $0xf,r4 ! 39: jeql nxt /* if correct continue */ ! 40: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 41: movl $1,_ercode /* error code data miscompare */ ! 42: movl r4,_actual /* actual data */ ! 43: movl $0xf,_expected /* expected data */ ! 44: jmp *badrtn ! 45: ! 46: nxt: ! 47: bbs $0,_force_lp,0b /* if set loop on error */ ! 48: st2: callf $4,_setjmp /* save context for error return */ ! 49: movab st2,_stpc /* save address of subtest */ ! 50: movl $2,_subtst /* subtest number */ ! 51: 0: movl $0xf,r3 /* R3 : mask clear all flags N Z V C */ ! 52: bicpsw r3 /* clear all flags */ ! 53: bispsw $N /* set n flag */ ! 54: jlss nxt1 ! 55: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 56: movl $1,_ercode /* error code data miscompare */ ! 57: movl r4,_actual /* actual data */ ! 58: movl $0xf,_expected /* expected data */ ! 59: jmp *badrtn ! 60: nxt1: ! 61: jeql error1 /* error if z also set */ ! 62: jvs error1 /* error if v also set */ ! 63: jcs error1 /* error if c also set */ ! 64: jmp t3 ! 65: error1: movpsl _actual /* actual psl may be bad */ ! 66: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 67: movl $2,_ercode /* error code flag failure */ ! 68: jmp *badrtn ! 69: ! 70: t3: bbs $0,_force_lp,0b /* if set loop on error */ ! 71: st3: callf $4,_setjmp /* save context for error return */ ! 72: movab st3,_stpc /* save address of subtest */ ! 73: movl $3,_subtst /* subtest number */ ! 74: 0: bicpsw $(N|Z|V|C) /* clear all flags */ ! 75: bispsw $Z /* set z flag */ ! 76: jeql nxt2 ! 77: jmp error2 ! 78: nxt2: ! 79: jlss error2 /* error if n also set */ ! 80: jvs error2 /* error if v also set */ ! 81: jcs error2 /* error if c also set */ ! 82: jmp t4 ! 83: error2: movpsl _actual /* actual psl may be bad */ ! 84: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 85: movl $2,_ercode /* error code flag failure */ ! 86: jmp *badrtn ! 87: t4: ! 88: bbs $0,_force_lp,0b /* if set loop on error */ ! 89: st4: callf $4,_setjmp /* save context for error return */ ! 90: movab st4,_stpc /* save address of subtest */ ! 91: movl $4,_subtst /* subtest number */ ! 92: 0: movl vflg,r3 /* r3 = mask */ ! 93: bicpsw $(N|Z|V|C) /* clear all flags */ ! 94: bispsw r3 /* set v flag */ ! 95: jvs nxt3 ! 96: jmp error3 ! 97: nxt3: ! 98: jlss error3 /* error if n also set */ ! 99: jeql error3 /* error if z also set */ ! 100: jcs error3 /* error if c also set */ ! 101: jmp t5 ! 102: error3: movpsl _actual /* actual psl may be bad */ ! 103: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 104: movl $2,_ercode /* error code flag failure */ ! 105: jmp *badrtn ! 106: ! 107: t5: bbs $0,_force_lp,0b /* if set loop on error */ ! 108: st5: callf $4,_setjmp /* save context for error return */ ! 109: movab st5,_stpc /* save address of subtest */ ! 110: movl $5,_subtst /* subtest number */ ! 111: 0: bicpsw $(N|Z|V|C) /* clear all flags */ ! 112: bispsw cflg /* set c flag */ ! 113: jcs nxt4 ! 114: jmp error4 ! 115: nxt4: ! 116: jlss error4 /* error if n also set */ ! 117: jeql error4 /* error if z also set */ ! 118: jvs error4 /* error if v also set */ ! 119: jmp comb ! 120: error4: movpsl _actual /* actual psl may be bad */ ! 121: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 122: movl $2,_ercode /* error code flag failure */ ! 123: jmp *badrtn ! 124: ! 125: comb: ! 126: bbs $0,_force_lp,0b /* if set loop on error */ ! 127: st6: callf $4,_setjmp /* save context for error return */ ! 128: movab st6,_stpc /* save address of subtest */ ! 129: movl $6,_subtst /* subtest number */ ! 130: 0: bicpsw $(N|V|C|V) ! 131: bispsw $(V|C) ! 132: jvc error5 ! 133: jcc error5 ! 134: jlss error5 ! 135: jeql error5 ! 136: jmp t7 ! 137: error5: movpsl _actual /* actual psl may be bad */ ! 138: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 139: movl $2,_ercode /* error code flag failure */ ! 140: jmp *badrtn ! 141: ! 142: t7: bbs $0,_force_lp,0b /* if set loop on error */ ! 143: st7: callf $4,_setjmp /* save context for error return */ ! 144: movab st7,_stpc /* save address of subtest */ ! 145: movl $7,_subtst /* subtest number */ ! 146: 0: bicpsw $(N|V|C|V) ! 147: bispsw $(Z|C) ! 148: jvs error6 ! 149: jcc error6 ! 150: jlss error6 ! 151: jneq error6 ! 152: jmp t8 ! 153: error6: movpsl _actual /* actual psl may be bad */ ! 154: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 155: movl $2,_ercode /* error code flag failure */ ! 156: jmp *badrtn ! 157: ! 158: t8: bbs $0,_force_lp,0b /* if set loop on error */ ! 159: st8: callf $4,_setjmp /* save context for error return */ ! 160: movab st8,_stpc /* save address of subtest */ ! 161: movl $8,_subtst /* subtest number */ ! 162: 0: bicpsw $(N|V|C|V) ! 163: bispsw $(N|C) ! 164: jvs error7 ! 165: jcc error7 ! 166: jeql error7 ! 167: jlss 1f ! 168: error7: movpsl _actual /* actual psl may be bad */ ! 169: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 170: movl $2,_ercode /* error code flag failure */ ! 171: jmp *badrtn ! 172: ! 173: 1: ! 174: bbs $0,_force_lp,0b /* if set loop on error */ ! 175: jmp *return ! 176: ! 177: /* test data */ ! 178: .align 2 ! 179: vflg: .long V ! 180: zflg: .long Z ! 181: t0: .long 0xffffffff ! 182: cflg: .word C ! 183: t1: .word 0xffff ! 184:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.