File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / entry / tst_l.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:24:19 2019 UTC (6 years, 11 months ago) by root
Branches: bsd, MAIN
CVS tags: v12b, v121, HEAD
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


unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.