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