|
|
1.1 ! root 1: #* INSQUE, REMQUE instruction test */ ! 2: #* Privilege registers */ ! 3: ! 4: .set IPL,0x8 ! 5: .set MAPEN,0x9 ! 6: .set KSP,0x19 ! 7: #* PSL fields */ ! 8: .set IV,32 ! 9: .set T,16 ! 10: .set N,8 ! 11: .set Z,4 ! 12: .set V,2 ! 13: .set C,1 ! 14: ! 15: #* constants */ ! 16: .set DISABLE,0 ! 17: .set ENABLE,1 ! 18: .set MAXPOSL,0x7fffffff ! 19: .set MAXNEGL,0x80000000 ! 20: .set MAXPOSW,0x7fff ! 21: .set MAXNEGW,0x8000 ! 22: .set MAXPOSB,0x7f ! 23: .set MAXNEGB,0x80 ! 24: .set ZERO,0 ! 25: .set ONES,0xffffffff ! 26: .set HIGH,31 /* highest interrupt priority */ ! 27: ! 28: ! 29: .globl _insque ! 30: _insque: ! 31: # Init queue to initial state : has 3 entries ! 32: # ! 33: callf $4,_setjmp /* save context for error return */ ! 34: movab _insque,_stpc /* save starting address of subtest */ ! 35: movl $1,_subtst /* subtest number */ ! 36: movl $1,_no_opr /* number of operands in use */ ! 37: movab e4,_opr /* first operand */ ! 38: 0: movab e1,qhead ! 39: movab e3,qtail ! 40: movab e2,e1 ! 41: movab qhead,e1+4 ! 42: movab e3,e2 ! 43: movab e1,e2+4 ! 44: movab qhead,e3 ! 45: movab e2,e3+4 ! 46: ! 47: # INSQUE at head of queue ! 48: ! 49: bicpsw $(IV|T) /* disable overflow,trace exceptions */ ! 50: insque e4,qhead ! 51: ! 52: movl qhead,r3 /* Check forward link of queue header */ ! 53: movab e4,r4 ! 54: cmpl r3,r4 ! 55: jeql 1f ! 56: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 57: movl $1,_ercode /* error code data miscompare */ ! 58: movl r3,_actual /* actual data */ ! 59: movl r4,_expected /* expected data */ ! 60: jmp *badrtn ! 61: ! 62: 1: movl qtail,r3 /* Check backward link of queue header */ ! 63: movab e3,r4 ! 64: cmpl r3,r4 ! 65: jeql 1f ! 66: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 67: movl $1,_ercode /* error code data miscompare */ ! 68: movl r3,_actual /* actual data */ ! 69: movl r4,_expected /* expected data */ ! 70: jmp *badrtn ! 71: ! 72: 1: movl e4,r3 /* Check forward link of added entry */ ! 73: movab e1,r4 ! 74: cmpl r3,r4 ! 75: jeql 1f ! 76: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 77: movl $1,_ercode /* error code data miscompare */ ! 78: movl r3,_actual /* actual data */ ! 79: movl r4,_expected /* expected data */ ! 80: jmp *badrtn ! 81: ! 82: 1: movl e4+4,r3 /* Check backward link of added entry */ ! 83: movab qhead,r4 ! 84: cmpl r3,r4 ! 85: jeql 1f ! 86: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 87: movl $1,_ercode /* error code data miscompare */ ! 88: movl r3,_actual /* actual data */ ! 89: movl r4,_expected /* expected data */ ! 90: jmp *badrtn ! 91: ! 92: 1: movl e1,r3 /* Check forward link of previous 1st entry */ ! 93: movab e2,r4 ! 94: cmpl r3,r4 ! 95: jeql 1f ! 96: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 97: movl $1,_ercode /* error code data miscompare */ ! 98: movl r3,_actual /* actual data */ ! 99: movl r4,_expected /* expected data */ ! 100: jmp *badrtn ! 101: ! 102: 1: movl e1+4,r3 /* Check backward link of previous 1st entry */ ! 103: movab e4,r4 ! 104: cmpl r3,r4 ! 105: jeql i2 ! 106: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 107: movl $1,_ercode /* error code data miscompare */ ! 108: movl r3,_actual /* actual data */ ! 109: movl r4,_expected /* expected data */ ! 110: jmp *badrtn ! 111: ! 112: # REMQUE at head of queue ! 113: ! 114: i2: ! 115: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 116: ai2: callf $4,_setjmp /* save context for error return */ ! 117: movab ai2,_stpc /* save starting address of subtest */ ! 118: movl $2,_subtst /* subtest number */ ! 119: movl $1,_no_opr /* number of operands in use */ ! 120: movab e4,_opr /* first operand */ ! 121: 0: remque e4 ! 122: ! 123: movl qhead,r3 /* Check forward link of queue header */ ! 124: movab e1,r4 ! 125: cmpl r3,r4 ! 126: jeql 1f ! 127: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 128: movl $1,_ercode /* error code data miscompare */ ! 129: movl r3,_actual /* actual data */ ! 130: movl r4,_expected /* expected data */ ! 131: jmp *badrtn ! 132: ! 133: 1: movl qtail,r3 /* Check backward link of queue header */ ! 134: movab e3,r4 ! 135: cmpl r3,r4 ! 136: jeql 1f ! 137: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 138: movl $1,_ercode /* error code data miscompare */ ! 139: movl r3,_actual /* actual data */ ! 140: movl r4,_expected /* expected data */ ! 141: jmp *badrtn ! 142: ! 143: 1: movl e1,r3 /* Check forward link of preceeding entry */ ! 144: movab e2,r4 /* after REMQUE */ ! 145: cmpl r3,r4 ! 146: jeql 1f ! 147: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 148: movl $1,_ercode /* error code data miscompare */ ! 149: movl r3,_actual /* actual data */ ! 150: movl r4,_expected /* expected data */ ! 151: jmp *badrtn ! 152: ! 153: 1: movl e1+4,r3 /* Check backward link of preceeding entry */ ! 154: movab qhead,r4 /* after REMQUE */ ! 155: cmpl r3,r4 ! 156: jeql i3 ! 157: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 158: movl $1,_ercode /* error code data miscompare */ ! 159: movl r3,_actual /* actual data */ ! 160: movl r4,_expected /* expected data */ ! 161: jmp *badrtn ! 162: ! 163: # INSQUE at tail of queue ! 164: ! 165: i3: ! 166: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 167: ai3: callf $4,_setjmp /* save context for error return */ ! 168: movab ai3,_stpc /* save starting address of subtest */ ! 169: movl $3,_subtst /* subtest number */ ! 170: movl $2,_no_opr /* number of operands in use */ ! 171: movab e4,_opr /* first operand */ ! 172: movab e3,_opr + 4 /* second operand */ ! 173: 0: movab e3,r7 ! 174: movab e4,r8 ! 175: insque (r8),(r7) ! 176: ! 177: movl qhead,r3 /* Check forward link of queue header */ ! 178: movab e1,r4 ! 179: cmpl r3,r4 ! 180: jeql 1f ! 181: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 182: movl $1,_ercode /* error code data miscompare */ ! 183: movl r3,_actual /* actual data */ ! 184: movl r4,_expected /* expected data */ ! 185: jmp *badrtn ! 186: ! 187: 1: movl qtail,r3 /* Check backward link of queue header */ ! 188: movab e4,r4 ! 189: cmpl r3,r4 ! 190: jeql 1f ! 191: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 192: movl $1,_ercode /* error code data miscompare */ ! 193: movl r3,_actual /* actual data */ ! 194: movl r4,_expected /* expected data */ ! 195: jmp *badrtn ! 196: ! 197: 1: movl e4,r3 /* Check forward link of added entry */ ! 198: movab qhead,r4 ! 199: cmpl r3,r4 ! 200: jeql 1f ! 201: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 202: movl $1,_ercode /* error code data miscompare */ ! 203: movl r3,_actual /* actual data */ ! 204: movl r4,_expected /* expected data */ ! 205: jmp *badrtn ! 206: ! 207: 1: movl e4+4,r3 /* Check backward link of added entry */ ! 208: movab e3,r4 ! 209: cmpl r3,r4 ! 210: jeql 1f ! 211: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 212: movl $1,_ercode /* error code data miscompare */ ! 213: movl r3,_actual /* actual data */ ! 214: movl r4,_expected /* expected data */ ! 215: jmp *badrtn ! 216: ! 217: 1: movl e3,r3 /* Check forward link of preceeding entry */ ! 218: movab e4,r4 /* of added entry when insert at tail */ ! 219: cmpl r3,r4 ! 220: jeql 1f ! 221: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 222: movl $1,_ercode /* error code data miscompare */ ! 223: movl r3,_actual /* actual data */ ! 224: movl r4,_expected /* expected data */ ! 225: jmp *badrtn ! 226: ! 227: 1: movl e3+4,r3 /* Check backward link of preceeding entry */ ! 228: movab e2,r4 /* of added entry when insert at tail */ ! 229: cmpl r3,r4 ! 230: jeql i4 ! 231: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 232: movl $1,_ercode /* error code data miscompare */ ! 233: movl r3,_actual /* actual data */ ! 234: movl r4,_expected /* expected data */ ! 235: jmp *badrtn ! 236: ! 237: # REMQUE at tail of queue ! 238: ! 239: i4: ! 240: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 241: ai4: callf $4,_setjmp /* save context for error return */ ! 242: movab ai4,_stpc /* save starting address of subtest */ ! 243: movl $4,_subtst /* subtest number */ ! 244: movl $1,_no_opr /* number of operands in use */ ! 245: movab e4,_opr /* first operand */ ! 246: 0: movab e4,r7 ! 247: remque (r7) ! 248: ! 249: movl qhead,r3 /* Check forward link of queue header */ ! 250: movab e1,r4 ! 251: cmpl r3,r4 ! 252: jeql 1f ! 253: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 254: movl $1,_ercode /* error code data miscompare */ ! 255: movl r3,_actual /* actual data */ ! 256: movl r4,_expected /* expected data */ ! 257: jmp *badrtn ! 258: ! 259: 1: movl qtail,r3 /* Check backward link of queue header */ ! 260: movab e3,r4 ! 261: cmpl r3,r4 ! 262: jeql 1f ! 263: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 264: movl $1,_ercode /* error code data miscompare */ ! 265: movl r3,_actual /* actual data */ ! 266: movl r4,_expected /* expected data */ ! 267: jmp *badrtn ! 268: ! 269: 1: movl e3,r3 /* Check forward link of preceeding entry */ ! 270: movab qhead,r4 /* after REMQUE */ ! 271: cmpl r3,r4 ! 272: jeql 1f ! 273: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 274: movl $1,_ercode /* error code data miscompare */ ! 275: movl r3,_actual /* actual data */ ! 276: movl r4,_expected /* expected data */ ! 277: jmp *badrtn ! 278: ! 279: 1: movl e3+4,r3 /* Check backward link of preceeding entry */ ! 280: movab e2,r4 /* after REMQUE */ ! 281: cmpl r3,r4 ! 282: jeql i5 ! 283: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 284: movl $1,_ercode /* error code data miscompare */ ! 285: movl r3,_actual /* actual data */ ! 286: movl r4,_expected /* expected data */ ! 287: jmp *badrtn ! 288: # ! 289: # INSQUE to empty queue : check Z flag ! 290: # ! 291: i5: ! 292: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 293: ai5: callf $4,_setjmp /* save context for error return */ ! 294: movab ai5,_stpc /* save starting address of subtest */ ! 295: movl $5,_subtst /* subtest number */ ! 296: movl $1,_no_opr /* number of operands in use */ ! 297: movab qhead,_opr /* first operand */ ! 298: 0: movab qhead,qhead /* Make queue empty */ ! 299: movab qhead,qtail ! 300: ! 301: insque e4,qhead ! 302: jeql 1f ! 303: movpsl _actual /* actual = psl is incorrect */ ! 304: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 305: movl $2,_ercode /* error code flag miscompare */ ! 306: jmp *badrtn ! 307: ! 308: 1: movl qhead,r3 /* Check forward link of queue header */ ! 309: movab e4,r4 ! 310: cmpl r3,r4 ! 311: jeql 1f ! 312: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 313: movl $1,_ercode /* error code data miscompare */ ! 314: movl r3,_actual /* actual data */ ! 315: movl r4,_expected /* expected data */ ! 316: jmp *badrtn ! 317: ! 318: 1: movl qtail,r3 /* Check backward link of queue header */ ! 319: movab e4,r4 ! 320: cmpl r3,r4 ! 321: jeql 1f ! 322: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 323: movl $1,_ercode /* error code data miscompare */ ! 324: movl r3,_actual /* actual data */ ! 325: movl r4,_expected /* expected data */ ! 326: jmp *badrtn ! 327: ! 328: 1: movl e4,r3 /* Check forward link of added entry */ ! 329: movab qhead,r4 ! 330: cmpl r3,r4 ! 331: jeql 1f ! 332: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 333: movl $1,_ercode /* error code data miscompare */ ! 334: movl r3,_actual /* actual data */ ! 335: movl r4,_expected /* expected data */ ! 336: jmp *badrtn ! 337: ! 338: 1: movl e4+4,r3 /* Check backward link of added entry */ ! 339: movab qhead,r4 ! 340: cmpl r3,r4 ! 341: jeql i6 ! 342: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 343: movl $1,_ercode /* error code data miscompare */ ! 344: movl r3,_actual /* actual data */ ! 345: movl r4,_expected /* expected data */ ! 346: jmp *badrtn ! 347: # ! 348: # REMQUE last entry the queue : check Z bit ! 349: # ! 350: i6: ! 351: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 352: ai6: callf $4,_setjmp /* save context for error return */ ! 353: movab ai6,_stpc /* save starting address of subtest */ ! 354: movl $6,_subtst /* subtest number */ ! 355: movl $1,_no_opr /* number of operands in use */ ! 356: movab e4,_opr /* first operand */ ! 357: ! 358: 0: remque e4 ! 359: jeql 1f ! 360: movpsl _actual /* actual = psl is incorrect */ ! 361: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 362: movl $2,_ercode /* error code flag miscompare */ ! 363: jmp *badrtn ! 364: ! 365: 1: movl qhead,r3 /* Check forward link of queue header */ ! 366: movab qhead,r4 ! 367: cmpl r3,r4 ! 368: jeql 1f ! 369: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 370: movl $1,_ercode /* error code data miscompare */ ! 371: movl r3,_actual /* actual data */ ! 372: movl r4,_expected /* expected data */ ! 373: jmp *badrtn ! 374: ! 375: 1: movl qtail,r3 /* Check backward link of queue header */ ! 376: movab qhead,r4 ! 377: cmpl r3,r4 ! 378: jeql i7 ! 379: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 380: movl $1,_ercode /* error code data miscompare */ ! 381: movl r3,_actual /* actual data */ ! 382: movl r4,_expected /* expected data */ ! 383: jmp *badrtn ! 384: ! 385: # ! 386: # REMQUE entry in an empty queue : check V flag ! 387: # ! 388: i7: ! 389: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 390: ai7: callf $4,_setjmp /* save context for error return */ ! 391: movab ai7,_stpc /* save starting address of subtest */ ! 392: movl $7,_subtst /* subtest number */ ! 393: movl $1,_no_opr /* number of operands in use */ ! 394: movab qhead,_opr ! 395: ! 396: 0: remque qhead ! 397: jvs 1f /* error if V flag not set */ ! 398: movpsl _actual /* actual = psl is incorrect */ ! 399: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 400: movl $2,_ercode /* error code flag miscompare */ ! 401: jmp *badrtn ! 402: 1: bicpsw $V ! 403: ! 404: movl qhead,r3 /* Check forward link of queue header */ ! 405: movab qhead,r4 ! 406: cmpl r3,r4 ! 407: jeql 1f ! 408: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 409: movl $1,_ercode /* error code data miscompare */ ! 410: movl r3,_actual /* actual data */ ! 411: movl r4,_expected /* expected data */ ! 412: jmp *badrtn ! 413: ! 414: 1: movl qtail,r3 /* Check backward link of queue header */ ! 415: movab qhead,r4 ! 416: cmpl r3,r4 ! 417: jeql aldn ! 418: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 419: movl $1,_ercode /* error code data miscompare */ ! 420: movl r3,_actual /* actual data */ ! 421: movl r4,_expected /* expected data */ ! 422: jmp *badrtn ! 423: ! 424: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 425: jmp *return ! 426: ! 427: # ********* ! 428: # test data ! 429: .align 2 ! 430: ! 431: qhead: /* Queue head */ ! 432: .long e1 ! 433: qtail: /* Queue tail */ ! 434: .long e3 /* Initial queue has 3 entries */ ! 435: .space 20*4 ! 436: ! 437: e1: ! 438: .long e2 /* Forward link */ ! 439: .long qhead /* Backward link */ ! 440: .long 0xaaaaaaaa /* entry */ ! 441: .space 20*4 ! 442: e2: ! 443: .long e3 /* Forward link */ ! 444: .long e1 /* Backward link */ ! 445: .long 0xbbbbbbbb /* entry */ ! 446: .space 20*4 ! 447: ! 448: e3: ! 449: .long qhead /* Forward link */ ! 450: .long e2 /* Backward link */ ! 451: .long 0xcccccccc /* entry */ ! 452: .space 20*4 ! 453: ! 454: e4: ! 455: .long 0 /* Forward link */ ! 456: .long 0 /* Backward link */ ! 457: .long 0xdddddddd /* entry */ ! 458: .space 20*4 ! 459:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.