|
|
Power 6/32 Unix version 1.2b
/* INCW 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_w _inc_w: callf $4,_setjmp /* save context for error return */ movab _inc_w,_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 */ incw r3 /* increment r8 */ 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 om error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl $0xffffffff,r3 /* is r3 == -1 */ jeql step2 /* error if not equal */ bbs $0,_scoplp,0b /* if set scope loop om 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 */ incw 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 om error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: bicpsw $Z cmpl $0x0,r3 /* is r3 == 0 */ jeql ovfl /* error if not equal */ bbs $0,_scoplp,0b /* if set scope loop om error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl $0,_expected /* expected data */ jmp *badrtn ovfl: /* To be tested in Phase 2 */ 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 $0x7fffffff,_opr /* first operand */ 0: movl $0x7fffffff,r3 /* set r3 = 0x7fffffff */ bispsw $(Z|C|N) /* set n,z,c flags */ bicpsw $V /* clear v flags */ incw r3 /* increment r3 */ jvs error3 /* error if v flag not set */ jlss error3 /* error if n flag still set */ jeql error3 /* error if z flag still set */ jcs error3 /* error if c flag still set */ jmp 1f error3: movpsl _actual /* actual = psl MAYBE it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop om error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl $MAXNEGL,r3 /* is r3 == 0x80000000 */ jeql incml /* error if not equal */ bbs $0,_scoplp,0b /* if set scope loop om 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 $0xfffeffff,_opr /* first operand */ 0: movl $0xfffeffff,tstloc /* load tstloc with -2 (word) */ bispsw $(Z|V|C) /* set z,v,c flags */ bicpsw $N /* clear n flag */ incw 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 om error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl $0xffffffff,tstloc /* is tstloc == -1 */ jeql stp2 /* error if not equal */ bbs $0,_scoplp,0b /* if set scope loop om error */ movl $1,_ercode /* error code data miscompare */ movl tstloc,_actual /* actual data */ movl $0xffffffff,_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 */ incw 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 om error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: bicpsw $Z cmpl $0x0000ffff,tstloc /* is tstloc == 0x0000ffff */ jeql ovfl1 /* error if not equal */ bbs $0,_scoplp,0b /* if set scope loop om error */ movl $1,_ercode /* error code data miscompare */ movl tstloc,_actual /* actual data */ movl $0x0000ffff,_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 $0x7fff3333,_opr /* first operand */ 0: movl $0x7fff3333,tstloc /* tstloc = 0x7fff3333 */ bispsw $(Z|C|N) /* set n,z,c flags */ bicpsw $V /* clear v flags */ incw tstloc /* increment tstloc */ jvc error6 /* error if v flag not set */ jlss error6 /* error if n flag still set */ jeql error6 /* error if z flag still set */ jcs error6 /* error if c flag still set */ jmp 1f error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop om error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl $0x80003333,tstloc /* is tstloc == 0x80003333 */ jeql aldn /* error if not equal */ bbs $0,_scoplp,0b /* if set scope loop om error */ movl $1,_ercode /* error code data miscompare */ movl tstloc,_actual /* actual data */ movl $0x0000ffff,_expected /* expected data */ jmp *badrtn aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ jmp *return /* */ /* 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.