File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / entry / bispsw.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

/*	BISPSW 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	_bispsw
_bispsw:
	bicpsw	$(IV|T)		/* disable exceptions		*/
/*								*/
spsw:
	callf	$4,_setjmp	/* save context for error return */
	movab	spsw,_stpc	/* save address of subtest */
	movl	$1,_subtst	/* subtest number */
	movl	$0,_no_opr	/* no operands we manipulate psw */
	movl	$0,_actual	/*  no actual data */
	movl	$0,_expected	/* no expected data */
0:	movl	$0xf,r3  /* R3 : mask clear all flags N Z V C */
	bicpsw 	r3		/* clear all flags		*/
	bispsw 	$(N|Z|V|C)	/* set all flags		*/
	movpsl	r4
	andl2	$0xf,r4
	cmpl	$0xf,r4
	jeql	nxt		/* if correct continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r4,_actual	/* actual data */
	movl	$0xf,_expected	/* expected data */
	jmp	*badrtn

nxt:
	bbs	$0,_force_lp,0b	/* if set loop on error */
st2:	callf	$4,_setjmp	/* save context for error return */
	movab	st2,_stpc	/* save address of subtest */
	movl	$2,_subtst	/* subtest number */
0:	movl	$0xf,r3  /* R3 : mask clear all flags N Z V C */
	bicpsw 	r3		/* clear all flags		*/
	bispsw	$N		/* set n flag			*/
	jlss	nxt1
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r4,_actual	/* actual data */
	movl	$0xf,_expected	/* expected data */
	jmp	*badrtn
nxt1:	
	jeql	error1		/* error if z also set		*/
	jvs	error1		/* error if v also set		*/
	jcs	error1		/* error if c also set		*/
	jmp	t3
error1:	movpsl	_actual		/* actual psl may be bad */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn

t3:	bbs	$0,_force_lp,0b	/* if set loop on error */
st3:	callf	$4,_setjmp	/* save context for error return */
	movab	st3,_stpc	/* save address of subtest */
	movl	$3,_subtst	/* subtest number */
0:	bicpsw	$(N|Z|V|C)	/* clear all flags		*/
	bispsw	$Z		/* set z flag			*/
	jeql	nxt2
	jmp	error2
nxt2:
	jlss	error2		/* error if n also set		*/
	jvs	error2		/* error if v also set		*/
	jcs	error2		/* error if c also set 		*/
	jmp	t4
error2:	movpsl	_actual		/* actual psl may be bad */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
t4:
	bbs	$0,_force_lp,0b	/* if set loop on error */
st4:	callf	$4,_setjmp	/* save context for error return */
	movab	st4,_stpc	/* save address of subtest */
	movl	$4,_subtst	/* subtest number */
0:	movl	vflg,r3		/* r3 = mask			*/
	bicpsw	$(N|Z|V|C)	/* clear all flags		*/
	bispsw	r3		/* set v flag			*/
	jvs	nxt3
	jmp	error3
nxt3:
	jlss	error3		/* error if n also set		*/
	jeql	error3		/* error if z also set		*/
	jcs	error3		/* error if c also set		*/
	jmp	t5
error3:	movpsl	_actual		/* actual psl may be bad */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn

t5:	bbs	$0,_force_lp,0b	/* if set loop on error */
st5:	callf	$4,_setjmp	/* save context for error return */
	movab	st5,_stpc	/* save address of subtest */
	movl	$5,_subtst	/* subtest number */
0:	bicpsw	$(N|Z|V|C)	/* clear all flags		*/
	bispsw	cflg		/* set c flag			*/
	jcs	nxt4
	jmp	error4
nxt4:
	jlss	error4		/* error if n also set		*/
	jeql	error4		/* error if z also set		*/
	jvs	error4		/* error if v also set		*/
	jmp	comb
error4:	movpsl	_actual		/* actual psl may be bad */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn

comb:
	bbs	$0,_force_lp,0b	/* if set loop on error */
st6:	callf	$4,_setjmp	/* save context for error return */
	movab	st6,_stpc	/* save address of subtest */
	movl	$6,_subtst	/* subtest number */
0:	bicpsw	$(N|V|C|V)
	bispsw	$(V|C)
	jvc	error5
	jcc	error5
	jlss	error5
	jeql	error5
	jmp	t7
error5:	movpsl	_actual		/* actual psl may be bad */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn

t7:	bbs	$0,_force_lp,0b	/* if set loop on error */
st7:	callf	$4,_setjmp	/* save context for error return */
	movab	st7,_stpc	/* save address of subtest */
	movl	$7,_subtst	/* subtest number */
0:	bicpsw	$(N|V|C|V)
	bispsw	$(Z|C)
	jvs	error6
	jcc	error6
	jlss	error6
	jneq	error6
	jmp	t8
error6:	movpsl	_actual		/* actual psl may be bad */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn

t8:	bbs	$0,_force_lp,0b	/* if set loop on error */
st8:	callf	$4,_setjmp	/* save context for error return */
	movab	st8,_stpc	/* save address of subtest */
	movl	$8,_subtst	/* subtest number */
0:	bicpsw	$(N|V|C|V)
	bispsw	$(N|C)
	jvs	error7
	jcc	error7
	jeql	error7
	jlss	1f
error7:	movpsl	_actual		/* actual psl may be bad */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn

1:
	bbs	$0,_force_lp,0b	/* if set loop on error */
	jmp	*return

/*	test data		*/
	.align	2
vflg:	.long   V
zflg:	.long	Z
t0:	.long   0xffffffff
cflg:	.word	C
t1:	.word   0xffff


unix.superglobalmegacorp.com

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