|
|
1.1 ! root 1: /* PUSHB 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 NEGB,0xffffff80 ! 20: .set MAXNEGB,0x80ffffff ! 21: .set HIGH,31 /* highest interrupt priority */ ! 22: ! 23: .globl _pushbt ! 24: _pushbt: ! 25: callf $4,_setjmp /* save context for error return */ ! 26: movab _pushbt,_stpc /* starting address of subtest */ ! 27: movl $1,_subtst /* subtest number */ ! 28: movl $1,_no_opr /* number of operands in use */ ! 29: movl $NEGB,_opr /* first operand */ ! 30: 0: bicpsw $(IV|T) /* disable exceptions */ ! 31: /* */ ! 32: pushmw: /* PUSH MEMORY ON STACK */ ! 33: movab stk,r14 /* initialize stack pointer */ ! 34: movab stk,r10 ! 35: bispsw $(Z|V) /* set z,v flags */ ! 36: bicpsw $(C|N) /* clear c,n flag */ ! 37: pushb negval /* push negative value on stack */ ! 38: jgeq error1 /* error if n flag not set */ ! 39: jcc error1 /* error if c flag not set */ ! 40: jeql error1 /* error if z flag set */ ! 41: jvs error1 /* error if v flag set */ ! 42: jmp 1f ! 43: error1: movpsl _actual /* actual = psl maybe incorrect */ ! 44: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 45: movl $2,_ercode /* error code flag miscompare */ ! 46: jmp *badrtn ! 47: 1: movab (r14),r13 ! 48: decl r10 ! 49: decl r10 ! 50: decl r10 ! 51: decl r10 ! 52: cmpl r13,r10 /* check if stack get decrement */ ! 53: jeql 1f ! 54: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 55: movl $1,_ercode /* error code data miscompare */ ! 56: movl r10,_actual /* actual data */ ! 57: movl r13,_expected /* expected data */ ! 58: jmp *badrtn ! 59: 1: bicpsw $Z ! 60: cmpl $NEGB,(r14) /* check if value get put on stack */ ! 61: jeql 1f ! 62: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 63: movl $1,_ercode /* error code data miscompare */ ! 64: movl (r14),_actual /* actual data */ ! 65: movl $NEGB,_expected /* expected data */ ! 66: jmp *badrtn ! 67: 1: bicpsw $Z ! 68: cmpl negval,$MAXNEGB /* check if source get affected */ ! 69: jeql p2 ! 70: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 71: movl $3,_ercode /* error code operand miscompare */ ! 72: movl negval,_actual /* actual data */ ! 73: movl $MAXNEGB,_expected /* expected data */ ! 74: jmp *badrtn ! 75: ! 76: p2: ! 77: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 78: ap2: callf $4,_setjmp /* save context for error return */ ! 79: movab _pushbt,_stpc /* starting address of subtest */ ! 80: movl $2,_subtst /* subtest number */ ! 81: movl $1,_no_opr /* number of operands in use */ ! 82: movl result,_opr /* first operand */ ! 83: 0: bispsw $(Z|V|N) /* set z,v,n flags */ ! 84: bicpsw $C /* clear c flag */ ! 85: pushb posval ! 86: jcc error2 /* error if c flag not set */ ! 87: jlss error2 /* error if n flag set */ ! 88: jeql error2 /* error if z flag set */ ! 89: jvs error2 /* error if v flag set */ ! 90: jmp 1f ! 91: error2: movpsl _actual /* actual = psl maybe incorrect */ ! 92: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 93: movl $2,_ercode /* error code flag miscompare */ ! 94: jmp *badrtn ! 95: 1: movab (r14),r13 ! 96: decl r10 ! 97: decl r10 ! 98: decl r10 ! 99: decl r10 ! 100: 1: cmpl r13,r10 /* check if stack get decrement */ ! 101: jeql 1f ! 102: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 103: movl $1,_ercode /* error code data miscompare */ ! 104: movl r10,_actual /* actual data */ ! 105: movl r13,_expected /* expected data */ ! 106: jmp *badrtn ! 107: 1: bicpsw $Z ! 108: cmpl result,(r14) /* check if value get put on stack */ ! 109: jeql 1f ! 110: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 111: movl $1,_ercode /* error code data miscompare */ ! 112: movl (r14),_actual /* actual data */ ! 113: movl result,_expected /* expected data */ ! 114: jmp *badrtn ! 115: 1: bicpsw $Z ! 116: cmpl posval,$0x7faaaaaa /* check if source get affected */ ! 117: jeql pushrw ! 118: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 119: movl $3,_ercode /* error code operand miscompare */ ! 120: movl posval,_actual /* actual data */ ! 121: movl $0x7faaaaaa,_expected /* expected data */ ! 122: jmp *badrtn ! 123: pushrw: /* PUSH REGISTER ON STACK */ ! 124: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 125: ap3: callf $4,_setjmp /* save context for error return */ ! 126: movab ap3,_stpc /* starting address of subtest */ ! 127: movl $3,_subtst /* subtest number */ ! 128: movl $1,_no_opr /* number of operands in use */ ! 129: movl tstdat,_opr /* first operand */ ! 130: 0: movl tstdat,r0 /* move test data to r0 */ ! 131: bispsw $(Z|V) /* set z,v flags */ ! 132: bicpsw $(C|N) /* clear n,c flag */ ! 133: pushb r0 /* push r0 on stack */ ! 134: jgeq error3 /* error if n flag not set */ ! 135: jeql error3 /* error if z flag set */ ! 136: jvs error3 /* error if v flag set */ ! 137: jcc error3 /* error if c flag not set */ ! 138: jmp 1f ! 139: error3: movpsl _actual /* actual = psl maybe incorrect */ ! 140: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 141: movl $2,_ercode /* error code flag miscompare */ ! 142: jmp *badrtn ! 143: 1: movab (r14),r13 ! 144: decl r10 ! 145: decl r10 ! 146: decl r10 ! 147: decl r10 ! 148: cmpl r13,r10 /* check if stack get decrement */ ! 149: jeql 1f ! 150: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 151: movl $1,_ercode /* error code data miscompare */ ! 152: movl r10,_actual /* actual data */ ! 153: movl r13,_expected /* expected data */ ! 154: jmp *badrtn ! 155: 1: bicpsw $Z ! 156: cmpl tstdat,(r14) /* check if value get pushed */ ! 157: jeql 1f ! 158: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 159: movl $1,_ercode /* error code data miscompare */ ! 160: movl (r14),_actual /* actual data */ ! 161: movl tstdat,_expected /* expected data */ ! 162: jmp *badrtn ! 163: 1: bicpsw $Z ! 164: cmpl r0,tstdat /* make sure source unchanged */ ! 165: jeql zflag ! 166: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 167: movl $3,_ercode /* error code operand miscompare */ ! 168: movl tstdat,_actual /* actual data */ ! 169: movl r0,_expected /* expected data */ ! 170: jmp *badrtn ! 171: zflag: /* check z flag */ ! 172: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 173: ap4: callf $4,_setjmp /* save context for error return */ ! 174: movab ap4,_stpc /* starting address of subtest */ ! 175: movl $4,_subtst /* subtest number */ ! 176: movl $1,_no_opr /* number of operands in use */ ! 177: movl $0,_opr /* first operand */ ! 178: 0: movl $0x0,r11 ! 179: bispsw $(N|V) /* set n,v flags */ ! 180: bicpsw $(C|Z) /* clear z,c flag */ ! 181: pushb r11 /* push r11 on stack */ ! 182: jlss error4 /* error if n flag set */ ! 183: jvs error4 /* error if v flag set */ ! 184: jneq error4 /* error if z flag not set */ ! 185: jcc error4 /* error if c flag not set */ ! 186: jmp 1f ! 187: error4: movpsl _actual /* actual = psl maybe incorrect */ ! 188: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 189: movl $2,_ercode /* error code flag miscompare */ ! 190: jmp *badrtn ! 191: 1: movab (r14),r13 ! 192: decl r10 ! 193: decl r10 ! 194: decl r10 ! 195: decl r10 ! 196: cmpl r13,r10 /* check if stack get decrement */ ! 197: jeql 1f ! 198: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 199: movl $1,_ercode /* error code data miscompare */ ! 200: movl r13,_actual /* actual data */ ! 201: movl r10,_expected /* expected data */ ! 202: jmp *badrtn ! 203: 1: bicpsw $Z ! 204: cmpl $0,(r14) /* compare r14 to 0 */ ! 205: jeql 1f ! 206: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 207: movl $1,_ercode /* error code data miscompare */ ! 208: movl (r14),_actual /* actual data */ ! 209: movl $0,_expected /* expected data */ ! 210: jmp *badrtn ! 211: 1: bicpsw $Z ! 212: cmpl $0,r11 /* compare source to 0 */ ! 213: jeql p5 ! 214: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 215: movl $3,_ercode /* error code operand miscompare */ ! 216: movl r11,_actual /* actual data */ ! 217: movl $0,_expected /* expected data */ ! 218: jmp *badrtn ! 219: ! 220: ! 221: p5: ! 222: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 223: ap5: callf $4,_setjmp /* save context for error return */ ! 224: movab ap5,_stpc /* starting address of subtest */ ! 225: movl $5,_subtst /* subtest number */ ! 226: movl $1,_no_opr /* number of operands in use */ ! 227: movl $0x11,_opr /* first operand */ ! 228: 0: bispsw $(N|V) /* set n,v flags */ ! 229: bicpsw $(C|Z) /* clear z,c flag */ ! 230: pushb $0x11 /* push literal */ ! 231: jlss error5 /* error if n flag set */ ! 232: jvs error5 /* error if v flag set */ ! 233: jeql error5 /* error if z flag set */ ! 234: jcc error5 /* error if c flag not set */ ! 235: jmp 1f ! 236: error5: movpsl _actual /* actual = psl maybe incorrect */ ! 237: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 238: movl $2,_ercode /* error code flag miscompare */ ! 239: jmp *badrtn ! 240: 1: movab (r14),r13 ! 241: decl r10 ! 242: decl r10 ! 243: decl r10 ! 244: decl r10 ! 245: cmpl r13,r10 /* check if stack get decrement */ ! 246: jeql 1f ! 247: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 248: movl $1,_ercode /* error code data miscompare */ ! 249: movl r13,_actual /* actual data */ ! 250: movl r10,_expected /* expected data */ ! 251: jmp *badrtn ! 252: 1: bicpsw $Z ! 253: cmpl $0x11,(r14) /* compare r14 to literal */ ! 254: jeql aldn ! 255: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 256: movl $1,_ercode /* error code data miscompare */ ! 257: movl (r14),_actual /* actual data */ ! 258: movl $0x11,_expected /* expected data */ ! 259: jmp *badrtn ! 260: ! 261: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 262: jmp *return /* good, return to monitor */ ! 263: ! 264: ! 265: /* test data */ ! 266: .align 2 ! 267: /* stack */ ! 268: .space 40 ! 269: stk: .long 0 ! 270: negval: .long MAXNEGB ! 271: tstdat: .long 0xffffff7a ! 272: posval: .long 0x7faaaaaa ! 273: result: .long 0x7f
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.