|
|
Power 6/32 Unix version 1.2b
/* INCL 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 _inc_l _inc_l: callf $4,_setjmp /* save context for error return */ movab _inc_l,_stpc /* save subtest starting address */ movl $1,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0xfffffffe,_opr /* first operand */ 0: bicpsw $(IV|T) /* disable overflow,trace exceptions */ movl $0xfffffffe,r3 /* load r3 with -2 */ bispsw $(Z|V|C) /* set z,v,c flags */ bicpsw $N /* clear n flag */ incl r3 /* increment r3 */ jgeq error1 /* error if n flag not set */ jeql error1 /* error if z flag still set */ jvs error1 /* error if v flag still set */ jcs error1 /* error if c flag still set */ jmp 1f error1: movpsl _actual /* actual = psl MAYBE it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl $0xffffffff,r3 /* is r3 == -1 */ jeql step2 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn step2: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai2: callf $4,_setjmp /* save context for error return */ movab ai2,_stpc /* save subtest starting address */ movl $2,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0xffffffff,_opr /* first operand */ 0: bispsw $(N|V) /* set n,v flags */ bicpsw $(Z|C) /* clear z,c flag */ incl r3 /* increment r3 */ jlss error2 /* error if n flag still set */ jvs error2 /* error if v flag still set */ jneq error2 /* error if z flag not set */ jcc error2 /* error if c flag not set */ jmp 1f error2: movpsl _actual /* actual = psl MAYBE it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: bicpsw $Z cmpl $0x0,r3 /* is r3 == 0 */ jeql ovfl bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl $0,_expected /* expected data */ jmp *badrtn ovfl: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai3: callf $4,_setjmp /* save context for error return */ movab ai3,_stpc /* save subtest starting address */ movl $3,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $MAXPOSL,_opr /* first operand */ 0: movl $MAXPOSL,r3 /* set r3 = 0x7fffffff */ bispsw $(Z|C|N) /* set n,z,c flags */ bicpsw $V /* clear v flags */ incl r3 /* increment r3 */ jvc error3 /* error if v flag not set */ jlss error3 /* error if n flag not set; on overflow */ /* sum is replaced by MAX negative no., */ /* and N is reset */ jeql error3 /* error if z flag still set */ jcs error3 /* error if c flag set */ jmp 1f error3: movpsl _actual /* actual = psl MAYBE it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl $MAXNEGL,r3 /* is r3 == $MAXNEGL */ jeql incml bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl $MAXNEGL,_expected /* expected data */ jmp *badrtn incml: /* INCREMENT MEMORY */ bbs $0,_force_lp,0b /* if set loop on last subtest */ ai4: callf $4,_setjmp /* save context for error return */ movab ai4,_stpc /* save subtest starting address */ movl $4,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0xfffffffe,_opr /* first operand */ 0: movl $0xfffffffe,tstloc /* load tstloc with -2 */ bispsw $(Z|V|C) /* set z,v,c flags */ bicpsw $N /* clear n flag */ incl tstloc /* increment tstloc */ jgeq error4 /* error if n flag not set */ jeql error4 /* error if z flag still set */ jvs error4 /* error if v flag still set */ jcs error4 /* error if c flag still set */ jmp 1f error4: movpsl _actual /* actual = psl MAYBE it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl $0xffffffff,tstloc /* is tstloc == -1 */ jeql stp2 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl tstloc,_actual /* actual data */ movl $0xfffffff,_expected /* expected data */ jmp *badrtn stp2: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai5: callf $4,_setjmp /* save context for error return */ movab ai5,_stpc /* save subtest starting address */ movl $5,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0xffffffff,_opr /* first operand */ 0: bispsw $(N|V) /* set n,v flags */ bicpsw $(Z|C) /* clear z,c flag */ incl tstloc /* increment tstloc */ jlss error5 /* error if n flag still set */ jvs error5 /* error if v flag still set */ jneq error5 /* error if z flag not set */ jcc error5 /* error if c flag not set */ jmp 1f error5: movpsl _actual /* actual = psl MAYBE it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl $0x0,tstloc /* is tstloc == 0 */ jeql ovfl1 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl tstloc,_actual /* actual data */ movl $0,_expected /* expected data */ jmp *badrtn ovfl1: bbs $0,_force_lp,0b /* if set loop on last subtest */ ai6: callf $4,_setjmp /* save context for error return */ movab ai6,_stpc /* save subtest starting address */ movl $6,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $MAXPOSL,_opr /* first operand */ 0: movl $MAXPOSL,tstloc /* set tstloc = 0x7fffffff */ bispsw $(Z|C) /* set z,c flags */ bicpsw $(N|V) /* clear n,v flags */ incl tstloc /* increment tstloc */ jvc error6 /* error if v flag not set */ jlss error6 /* error if n flag set */ jeql error6 /* error if z flag still set */ jcs error6 /* error if c flag set */ jmp 1f error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl $MAXNEGL,tstloc /* is tstloc == $MAXNEGL */ jeql aldn bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl tstloc,_actual /* actual data */ movl $MAXNEGL,_expected /* expected data */ jmp *badrtn aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ jmp *return /* jmp absolute */ /* test data */ .align 2 tstloc: .long 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.