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