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

/*	JMP,BRB,BRW instruction test		*/
/*	  Privilege registers		*/

	.set	IPL,8
	.set	MAPEN,9
	.set	KSP,19

/*	  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	HIGH,31			/* highest interrupt priority	*/
	.globl	_jumpbr
_jumpbr:
	callf	$4,_setjmp	/* save context for error return */
	movab	_jumpbr,_stpc	/* save address of subtest start */
	movl	$1,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movl	$1,_opr		/* first operand */
0:	bicpsw	$(IV|T) 	/* disable exceptions		*/
/*								*/
jump:
	movl	$1,r1		/* error code in reg one	*/
	bispsw	$(N|V)		/* set n,v flags		*/
	bicpsw	$(Z|C)		/* clear z,c flags		*/
	jmp	bb
	movpsl	_actual		/* actual data = psl MAYBE it is wrong */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn		/* error : did not jmp		*/
	.space	32000		/* reserve 32000 bytes		*/
bb:				/* BRANCH WITH BYTE DISPLACEMENT	*/
	jgeq	error0		/* error if n,v flags not set	*/
	jvc	error0
	jeql	error0		/* error if z,c flags not clear */
	jcs	error0
	jmp	loc0
error0:	movpsl	_actual		/* actual data = psl MAYBE it is wrong */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
loc0:
	brb	loc1	
	movpsl	_actual		/* actual data = psl MAYBE it is wrong */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
	.space	90		/* reserve 90 bytes		*/
loc1:
	jgeq	error1		/* error if n,v flags not set	*/
	jvc	error1
	jeql	error1		/* error if z,c flags not clear */
	jcs	error1
	jmp	loc3
error1:	movpsl	_actual		/* actual data = psl MAYBE it is wrong */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
loc2:				/* branch back here from loc3	*/
	jlss	error1		/* error if n,v flags set	*/
	jvs	error1
	jneq	error1		/* error if z,c flags clear	 */
	jcc	error1
	jmp	bw	
	.space	80		/* reserve 80 bytes		*/
loc3:
	movl	$2,r1		/* error code in reg one	*/
	bispsw	$(Z|C)		/* set z,c flags		*/
	bicpsw	$(N|V)		/* clear n,v flags		*/
	brb	loc2		/* branch backward		*/
	movpsl	_actual		/* actual data = psl MAYBE it is wrong */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
;
;
;
bw:				/* BRANCH WITH WORD DISPLACEMENT	*/
	movl	$3,r1		/* error code in reg one	*/
	bispsw	$(N|V)		/* set n,v flags		*/
	bicpsw	$(Z|C)		/* clear z,c flags		*/
loc4:
	brw	loc5	
	movpsl	_actual		/* actual data = psl MAYBE it is wrong */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
	.space	12000		/* reserve 12000 bytes		*/
loc5:
	jgeq	error2		/* error if n,v flags not set	*/
	jvc	error2
	jeql	error2		/* error if z,c flags not clear */
	jcs	error2
	jmp	loc7
error2:	movpsl	_actual		/* actual data = psl MAYBE it is wrong */
	cmpl	$1,_scoplp	/* if set scope loop on error */
	jneq	1f
	jmp	0b
1:	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
loc6:				/* branch back here from loc3	*/
	jlss	error2		/* error if n,v flags set	*/
	jvs	error2
	jneq	error2		/* error if z,c flags clear	 */
	jcc	error2
	jmp	done	
	.space	12000		/* reserve 12000 bytes		*/
loc7:
	movl	$4,r1		/* error code in reg one	*/
	bispsw	$(Z|C)		/* set z,c flags		*/
	bicpsw	$(N|V)		/* clear n,v flags		*/
	brw	loc6		/* branch backward		*/
	movpsl	_actual		/* actual data = psl MAYBE it is wrong */
	cmpl	$1,_scoplp	/* if set scope loop on error */
	jneq	1f
	jmp	0b
1:	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
done:
	cmpl	$1,_force_lp	/* if set loop on last subtest */
	jneq	1f
	jmp	0b
1:	jmp	*return		/* good, return to monitor */


unix.superglobalmegacorp.com

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