|
|
Power 6/32 Unix version 1.2b
/* MOVOW instruction test */ /* MOVL have been tested prior to this test. */ /* constant definitions */ .set HIGH,31 .set IPL,8 .set ZERO,0 .set ONES,0xffffffff .set IV,32 .set T,16 .set N,8 .set Z,4 .set V,2 .set C,1 .set NEGNO,0xa000ffff .set NEGVAL,0xff0fffff .set WORD,0xffff .set BYTE,0xff .set MASKHW,0x55550000 .set MASKLW,0x5555 .set MASKB,0x55555500 .globl _movow _movow: callf $4,_setjmp /* save context for return from error */ movab _movow,_stpc /* save subtest starting address */ movw $1,_subtst /* subtest no : Used MOVOW to clear latch */ movl $1,_no_opr /* number of operands */ movl negno,_opr /* first operand in use */ 0: bicpsw $(IV|T) /* disable overflow,trace exceptions */ movwmr: /* MOVE MEMORY TO REGISTER */ movl $MASKHW,r4 /* initialize r4 = 0x55550000 */ bispsw $(Z|V|C) /* set z,v,c flags */ bicpsw $N /* clear n flag */ movow negno,r4 /* move word 0xa000 to r4 */ jgeq error1 /* error if n flag not set */ jeql error1 /* error if z flag set */ jvs error1 /* error if v flag set */ jcc error1 /* error if c flag not 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 expr5,r4 /* compare r4 to 0xffffa000 */ jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r4,_actual /* actual data */ movl expr5,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl $NEGNO,negno /* make sure source unchanged */ jeql movwrr bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was modiefied */ movl negno,_actual /* actual data */ movl $NEGNO,_expected /* expected data */ jmp *badrtn movwrr: /* MOVE REGISTER TO REGISTER */ bbs $0,_force_lp,0b /* if set loop on last subtest */ m2: callf $4,_setjmp /* save context for return from error */ movab m2,_stpc /* save subtest starting address */ movl $2,_subtst /* subtest number */ movl $1,_no_opr /* number of operands */ movl $MASKLW,_opr /* first operand in use */ 0: movl $MASKLW,r3 /* initialize r3 = 0x5555 */ movl r3,expval movl $0xffffffff,r4 /* initialize r4 = 0xffffffff */ bispsw $(Z|N|V) /* set Z,V,N flags */ bicpsw $C /* clear C flag */ movow r3,r4 /* move r3 to r4 */ jlss error2 /* error if n flag set */ jeql error2 /* error if z flag set */ jvs error2 /* error if v flag 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 cmpl r4,expval jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r4,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn 1: movow r4,r5 /* move r4 to r5 */ movow r5,r6 /* move r5 to r6 */ movow r6,r7 /* move r6 to r7 */ movow r7,r9 /* move r7 to r9 */ movl r9,oldval /* save value of source = 0x00005555 */ movow r9,r11 /* move r9 to r11 */ cmpl expval,r11 /* compare r11 to 0x00005555 */ jneq error2 /* error if not equal; z flag not set */ jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r4,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl oldval,r9 /* make sure source unchanged */ jeql m3 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was modiefied */ movl r9,_actual /* actual data */ movl oldval,_expected /* expected data */ jmp *badrtn m3: bbs $0,_force_lp,0b /* if set loop on last subtest */ am3: callf $4,_setjmp /* save context for return from error */ movab am3,_stpc /* save subtest starting address */ movl $3,_subtst /* subtest number */ movl $1,_no_opr /* number of operands */ movl negval,_opr /* first operand in use */ 0: movl $0x0,r4 movw negval,r3 /* move word 0xff0f to r3 */ movl r3,expval /* save source */ bispsw $(Z|V) bicpsw $(C|N) movow r3,r4 /* move 0xffffff0f to r4 */ jgeq error3 /* error if n flag not set */ jeql error3 /* error if z flag set */ jvs error3 /* error if v flag set */ jcc error3 /* error if c flag not 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 r4,expval jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r4,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl r3,expval jeql movwmm bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was modiefied */ movl r3,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn movwmm: /* MOVE MEMORY TO MEMORY */ bbs $0,_force_lp,0b /* if set loop on last subtest */ m4: callf $4,_setjmp /* save context for return from error */ movab m4,_stpc /* save subtest starting address */ movl $4,_subtst /* subtest number */ movl $1,_no_opr /* number of operands */ movl $0xffff0000,_opr /* first operand in use */ 0: movl $0x0,tstloc movl $0xffff0000,oprd movl oprd,oldval /* save source */ bispsw $(Z|V) /* set z,v flags */ bicpsw $(C|N) /* clear n,c flag */ movow oprd,tstloc+2 jgeq error4 /* error if n flag not set */ jeql error4 /* error if z flag set */ jvs error4 /* error if v flag set */ jcc error4 /* error if c flag not 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: andl2 $0xffff,tstloc cmpl $0xffff,tstloc /* compare tstloc to expected value */ jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl tstloc,_actual /* actual data */ movl $0xffff,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl oprd,oldval /* make sure source unchanged */ jeql m5 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was modiefied */ movl oprd,_actual /* actual data */ movl oldval,_expected /* expected data */ jmp *badrtn m5: /* MOVE MEMORY TO MEMORY */ bbs $0,_force_lp,0b /* if set loop on last subtest */ am5: callf $4,_setjmp /* save context for return from error */ movab am5,_stpc /* save subtest starting address */ movl $5,_subtst /* subtest number */ movl $1,_no_opr /* number of operands */ movl $0x5555,_opr /* first operand in use */ 0: movl $0x5555,tstloc movl tstloc,oldval /* save source */ bispsw $(N|V|Z) /* set n,v,z flags */ bicpsw $C /* clear c flag */ movow tstloc+2,oprd+2 jlss error5 /* error if n flag set */ jeql error5 /* error if z flag set */ jvs error5 /* error if v flag 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: andl2 $0xffff,oprd cmpl $0x5555,oprd /* compare oprd to expected value */ jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl oprd,_actual /* actual data */ movl $0x5555,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl tstloc,oldval /* make sure source unchanged */ jeql movwdm bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was modiefied */ movl tstloc,_actual /* actual data */ movl oldval,_expected /* expected data */ jmp *badrtn movwdm: /* MOVE DATA TO MEMORY */ bbs $0,_force_lp,0b /* if set loop on last subtest */ m6: callf $4,_setjmp /* save context for return from error */ movab m6,_stpc /* save subtest starting address */ movl $6,_subtst /* subtest number */ movl $1,_no_opr /* number of operands */ movl $0x5555,_opr /* first operand in use */ 0: movl $0x0,tstloc movl $0xffff0000,oprd movl oprd,oldval /* save source */ bispsw $(Z|V) /* set z,v flags */ bicpsw $(C|N) /* clear n,c flag */ movow $-0x0001,tstloc+2 jgeq error6 /* error if n flag not set */ jeql error6 /* error if z flag set */ jvs error6 /* error if v flag set */ jcc error6 /* error if c flag not 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: andl2 $0xffff,tstloc cmpl $0xffff,tstloc /* compare tstloc to expected value */ jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl tstloc,_actual /* actual data */ movl $0x0000ffff,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl oprd,oldval /* make sure source unchanged */ jeql movwrm bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was modiefied */ movl oprd,_actual /* actual data */ movl oldval,_expected /* expected data */ jmp *badrtn movwrm: bbs $0,_force_lp,0b /* if set loop on last subtest */ m7: callf $4,_setjmp /* save context for return from error */ movab m7,_stpc /* save subtest starting address */ movl $7,_subtst /* subtest number */ movl $1,_no_opr /* number of operands */ movl $0xff0f,_opr /* first operand in use */ 0: movl $0xff0f,expval /* move word 0xff0f to expval */ movl $0xff0f,tmp /* save source */ movw tmp+2,r3 bispsw $(Z|V) bicpsw $(C|N) movow r3,tstloc+2 /* move 0xffffff0f to tstloc+2 */ jgeq error7 /* error if n flag not set */ jeql error7 /* error if z flag set */ jvs error7 /* error if v flag set */ jcc error7 /* error if c flag not set */ jmp 1f error7: 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: andl2 $0xffff,tstloc cmpl tstloc,expval jeql movwdr bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl tstloc,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn movwdr: /* MOVE DATA TO REGISTER */ bbs $0,_force_lp,0b /* if set loop on last subtest */ m8: callf $4,_setjmp /* save context for return from error */ movab m8,_stpc /* save subtest starting address */ movl $8,_subtst /* subtest number */ movl $1,_no_opr /* number of operands */ movl negval,_opr /* first operand in use */ 0: movl $0x0,r4 movow negval,r3 /* move word 0xff0f to r3 */ movl r3,expval /* save source */ bispsw $(Z|V) bicpsw $(C|N) movow $-0x00f1,r4 /* move 0xffffff0f to r4 */ jgeq error8 /* error if n flag not set */ jeql error8 /* error if z flag set */ jvs error8 /* error if v flag set */ jcc error8 /* error if c flag not set */ jmp 1f error8: 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 r4,expval jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r4,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl r3,expval jeql aldn bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was modiefied */ movl r3,_actual /* actual data */ movl oldval,_expected /* expected data */ jmp *badrtn aldn: bbs $0,_force_lp,0b /* if set loop on last error */ jmp *return /* good, return to monitor */ /* test data */ .align 2 negval: .long NEGVAL /* 0xf0ffffff */ zero: .long 0x0 expval: .long 0x0 oldval: .long 0x0 negno: .long NEGNO expr5: .long 0xffffa000 tstloc: .long 0x0 tmp: .long 0x0 oprd: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.