|
|
Power 6/32 Unix version 1.2b
#* INSQUE, REMQUE instruction test */ #* Privilege registers */ .set IPL,0x8 .set MAPEN,0x9 .set KSP,0x19 #* PSL fields */ .set IV,32 .set T,16 .set N,8 .set Z,4 .set V,2 .set C,1 #* constants */ .set DISABLE,0 .set ENABLE,1 .set MAXPOSL,0x7fffffff .set MAXNEGL,0x80000000 .set MAXPOSW,0x7fff .set MAXNEGW,0x8000 .set MAXPOSB,0x7f .set MAXNEGB,0x80 .set ZERO,0 .set ONES,0xffffffff .set HIGH,31 /* highest interrupt priority */ .globl _insque _insque: # Init queue to initial state : has 3 entries # callf $4,_setjmp /* save context for error return */ movab _insque,_stpc /* save starting address of subtest */ movl $1,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movab e4,_opr /* first operand */ 0: movab e1,qhead movab e3,qtail movab e2,e1 movab qhead,e1+4 movab e3,e2 movab e1,e2+4 movab qhead,e3 movab e2,e3+4 # INSQUE at head of queue bicpsw $(IV|T) /* disable overflow,trace exceptions */ insque e4,qhead movl qhead,r3 /* Check forward link of queue header */ movab e4,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl qtail,r3 /* Check backward link of queue header */ movab e3,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e4,r3 /* Check forward link of added entry */ movab e1,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e4+4,r3 /* Check backward link of added entry */ movab qhead,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e1,r3 /* Check forward link of previous 1st entry */ movab e2,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e1+4,r3 /* Check backward link of previous 1st entry */ movab e4,r4 cmpl r3,r4 jeql i2 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn # REMQUE at head of queue i2: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai2: callf $4,_setjmp /* save context for error return */ movab ai2,_stpc /* save starting address of subtest */ movl $2,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movab e4,_opr /* first operand */ 0: remque e4 movl qhead,r3 /* Check forward link of queue header */ movab e1,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl qtail,r3 /* Check backward link of queue header */ movab e3,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e1,r3 /* Check forward link of preceeding entry */ movab e2,r4 /* after REMQUE */ cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e1+4,r3 /* Check backward link of preceeding entry */ movab qhead,r4 /* after REMQUE */ cmpl r3,r4 jeql i3 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn # INSQUE at tail of queue i3: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai3: callf $4,_setjmp /* save context for error return */ movab ai3,_stpc /* save starting address of subtest */ movl $3,_subtst /* subtest number */ movl $2,_no_opr /* number of operands in use */ movab e4,_opr /* first operand */ movab e3,_opr + 4 /* second operand */ 0: movab e3,r7 movab e4,r8 insque (r8),(r7) movl qhead,r3 /* Check forward link of queue header */ movab e1,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl qtail,r3 /* Check backward link of queue header */ movab e4,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e4,r3 /* Check forward link of added entry */ movab qhead,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e4+4,r3 /* Check backward link of added entry */ movab e3,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e3,r3 /* Check forward link of preceeding entry */ movab e4,r4 /* of added entry when insert at tail */ cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e3+4,r3 /* Check backward link of preceeding entry */ movab e2,r4 /* of added entry when insert at tail */ cmpl r3,r4 jeql i4 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn # REMQUE at tail of queue i4: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai4: callf $4,_setjmp /* save context for error return */ movab ai4,_stpc /* save starting address of subtest */ movl $4,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movab e4,_opr /* first operand */ 0: movab e4,r7 remque (r7) movl qhead,r3 /* Check forward link of queue header */ movab e1,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl qtail,r3 /* Check backward link of queue header */ movab e3,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e3,r3 /* Check forward link of preceeding entry */ movab qhead,r4 /* after REMQUE */ cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e3+4,r3 /* Check backward link of preceeding entry */ movab e2,r4 /* after REMQUE */ cmpl r3,r4 jeql i5 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn # # INSQUE to empty queue : check Z flag # i5: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai5: callf $4,_setjmp /* save context for error return */ movab ai5,_stpc /* save starting address of subtest */ movl $5,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movab qhead,_opr /* first operand */ 0: movab qhead,qhead /* Make queue empty */ movab qhead,qtail insque e4,qhead jeql 1f movpsl _actual /* actual = psl is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag miscompare */ jmp *badrtn 1: movl qhead,r3 /* Check forward link of queue header */ movab e4,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl qtail,r3 /* Check backward link of queue header */ movab e4,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e4,r3 /* Check forward link of added entry */ movab qhead,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl e4+4,r3 /* Check backward link of added entry */ movab qhead,r4 cmpl r3,r4 jeql i6 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn # # REMQUE last entry the queue : check Z bit # i6: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai6: callf $4,_setjmp /* save context for error return */ movab ai6,_stpc /* save starting address of subtest */ movl $6,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movab e4,_opr /* first operand */ 0: remque e4 jeql 1f movpsl _actual /* actual = psl is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag miscompare */ jmp *badrtn 1: movl qhead,r3 /* Check forward link of queue header */ movab qhead,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl qtail,r3 /* Check backward link of queue header */ movab qhead,r4 cmpl r3,r4 jeql i7 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn # # REMQUE entry in an empty queue : check V flag # i7: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai7: callf $4,_setjmp /* save context for error return */ movab ai7,_stpc /* save starting address of subtest */ movl $7,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movab qhead,_opr 0: remque qhead jvs 1f /* error if V flag not set */ movpsl _actual /* actual = psl is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag miscompare */ jmp *badrtn 1: bicpsw $V movl qhead,r3 /* Check forward link of queue header */ movab qhead,r4 cmpl r3,r4 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn 1: movl qtail,r3 /* Check backward link of queue header */ movab qhead,r4 cmpl r3,r4 jeql aldn bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl r4,_expected /* expected data */ jmp *badrtn aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ jmp *return # ********* # test data .align 2 qhead: /* Queue head */ .long e1 qtail: /* Queue tail */ .long e3 /* Initial queue has 3 entries */ .space 20*4 e1: .long e2 /* Forward link */ .long qhead /* Backward link */ .long 0xaaaaaaaa /* entry */ .space 20*4 e2: .long e3 /* Forward link */ .long e1 /* Backward link */ .long 0xbbbbbbbb /* entry */ .space 20*4 e3: .long qhead /* Forward link */ .long e2 /* Backward link */ .long 0xcccccccc /* entry */ .space 20*4 e4: .long 0 /* Forward link */ .long 0 /* Backward link */ .long 0xdddddddd /* entry */ .space 20*4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.