|
|
Power 6/32 Unix version 1.2b
/* TESTL (test long) test */ /*Test name = tstl */ /*Description = */ /* This test checks "tstl" instruction to see that */ /* (1)Z, V, & C flags are set to zero (src < 0) & N = 1 */ /* (2)N, V, & C flags are set to zero (src = 0) & Z = 1 */ /* (3)all the flags are zero (src > 0). */ /* Register 1 (r1) & memory location tmloc(lebel) are used as */ /* src(source). */ /* */ /* Constants definition */ /* */ .set IPL,8 .set HIGH,31 .set ZERO,0 .set ONES,0xffffffff .set N,8 .set Z,4 .set V,2 .set C,1 .set PSWMASK,0x003f .set SRCB1,0xff .set SRCW1,0xffff .set SRCL1,0xffffffff .set SRCB2,0 .set SRCW2,0 .set SRCL2,0 .set SRCB3,1 .set SRCW3,1 .set SRCL3,1 .globl _tst_l _tst_l: callf $4,_setjmp /* save context for error return */ movab _tst_l,_stpc /* save subtest starting address */ movl $1,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $SRCL1,_opr /* first operand in use */ 0: movl $SRCL1,r3 /*r3 = source */ bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */ tstl r3 /*execute "tstl" */ beql error1 /*error if Z = 1 */ bgeq error1 /*error if N = 0 */ bvs error1 /*error if V = 1 */ bcc error1 /*error if C = 0 */ jmp t2 /* if no error continue */ error1: movpsl _actual /* actual = psl it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* */ /* Now try src = 0 */ /* */ t2: bbs $0,_force_lp,0b /* if set loop on last subtest */ at2: callf $4,_setjmp /* save context for error return */ movab at2,_stpc /* save subtest starting address */ movl $2,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $SRCL2,_opr /* first operand in use */ 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ movl $SRCL2,r3 /*r3 = source */ bispsw $(N|V|C) /*turn neg, overflow, & carry ON */ tstl r3 /*execute "tstl" */ bneq error2 /*error if Z = 0 */ blss error2 /*error if N = 1 */ bvs error2 /*error if V = 1 */ bcc error2 /*error if C = 0 */ jmp t3 /* if no error continue */ error2: movpsl _actual /* actual = psl it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* */ /* Now try src > 0 */ /* */ t3: bbs $0,_force_lp,0b /* if set loop on last subtest */ at3: callf $4,_setjmp /* save context for error return */ movab at3,_stpc /* save subtest starting address */ movl $3,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $SRCL3,_opr /* first operand in use */ 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ movl $SRCL3,r3 /*r3 = source */ bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */ tstl r3 /*execute "tstl" */ beql error3 /*error if Z = 1 */ blss error3 /*error if N = 1 */ bvs error3 /*error if V = 1 */ bcc error3 /*error if C = 0 */ jmp tstlm /* if no error continue */ error3: movpsl _actual /* actual = psl it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* */ /* Now use memory location(tmloc) instead of r1 */ /* */ tstlm: bbs $0,_force_lp,0b /* if set loop on last subtest */ at4: callf $4,_setjmp /* save context for error return */ movab at4,_stpc /* save subtest starting address */ movl $4,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $SRCL1,_opr /* first operand in use */ 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */ tstl $SRCL1 /*execute "tstl" immediate data */ beql error4 /*error if Z = 1 */ bgeq error4 /*error if N = 0 */ bvs error4 /*error if V = 1 */ bcc error4 /*error if C = 0 */ jmp t5 /* if no error continue */ error4: movpsl _actual /* actual = psl it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* */ /* Now try src = 0 */ /* */ t5: bbs $0,_force_lp,0b /* if set loop on last subtest */ at5: callf $4,_setjmp /* save context for error return */ movab at5,_stpc /* save subtest starting address */ movl $5,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $SRCL2,_opr /* first operand in use */ 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ movl $SRCL2,tmloc /*tmloc = source */ bispsw $(N|V|C) /*turn neg, overflow, & carry ON */ tstl tmloc /*execute "tstl" */ bneq error5 /*error if Z = 0 */ blss error5 /*error if N = 1 */ bvs error5 /*error if V = 1 */ bcc error5 /*error if C = 0 */ jmp t6 /* if no error continue */ error5: movpsl _actual /* actual = psl it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* */ /* Now try src > 0 */ /* */ t6: bbs $0,_force_lp,0b /* if set loop on last subtest */ at6: callf $4,_setjmp /* save context for error return */ movab at6,_stpc /* save subtest starting address */ movl $6,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $SRCL3,_opr /* first operand in use */ 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ movl $SRCL3,tmloc /*tmloc = source */ bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */ tstl tmloc /*execute "tstl" */ beql error6 /*error if Z = 1 */ blss error6 /*error if N = 1 */ bvs error6 /*error if V = 1 */ bcc error6 /*error if C = 0 */ jmp aldn /* if no error continue */ error6: movpsl _actual /* actual = psl it is incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ jmp *return /* good, return to monitor */ /* */ /* Variables */ /* */ .align 2 tmloc: .space 4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.