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

/*	AOBLSS istruction 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	*/
	.set 	LIMIT,0xffffff

	.globl	_aoblss
_aoblss:
	callf	$4,_setjmp	/* save context for error return */
	movab	_aoblss,_stpc	/* save address of subtest */
	movl	$1,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$-1,_opr	/* first operand */
	movl	$-3,_opr + 4	/* second operand */
0:	bicpsw	$(IV|T)		/* disable exceptions			*/
	movl	$-1,limit	/* set limit = -1			*/
	movl	$-3,index	/* set index = -3			*/
	bispsw	$(Z|V|C) 	/* set z,v,c flags			*/
	bicpsw	$N		/* clear n flag				*/
	aoblss	limit,index,loop0 /* data memory entry point		*/
	movl	$1,_ercode	/* error code data miscompare did not branch */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	index,_actual	/* actual data */
	movl	$-2,_expected	/* expected data */
	jmp	*badrtn
error1:	movpsl	_actual		/* actual = psl */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag miscompare */
	jmp	*badrtn
error2:	movl	$3,_ercode	/* error code operand was modified */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	index,_actual	/* actual data */
	movl	$-2,_expected	/* expected data */
	jmp	*badrtn
	.space	100		/* reserve 100 bytes			*/
loop0:
	jlss	error1  	
	jcc	error1  
	jvs	error1  
	jeql	error1 
	cmpl	$-2,index	/* check index value			*/
	jneq	error2
	bicpsw  $Z
	cmpl    $-1,limit	/* make sure limit unchanged		*/
	jneq    error2

				/* INDEX = LIMIT			*/
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
a2:	callf	$4,_setjmp	/* save context for error return */
	movab	a2,_stpc	/* save address of subtest */
	movl	$2,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$0,_opr	/* first operand */
	movl	$-1,_opr + 4	/* second operand */
0:	movl	$0,r3		/* set limit in r3 = 0			*/
	movl	$-1,r4		/* set index = -1			*/
	bispsw	$(N|V|C)	/* set n,v,c flags			*/
	bicpsw	$Z		/* clear z flag				*/
	aoblss	r3,r4,loop1	/* register register entry point	*/
	jneq	error3 
	jcs	error3 
	jlss	error3 
	jvs	error3 

	bicpsw  $Z
	cmpl	$0,r4		/* check index value			*/
	jneq	error4
	jmp	here
	.space	90		/* reserve 100 bytes			*/
loop1:
	movl	$1,_ercode	/* error code data miscompare did not branch */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	r4,_actual	/* actual data */
	movl	$0,_expected	/* expected data */
	jmp	*badrtn
error3:	movpsl	_actual		/* actual = psl */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag miscompare */
	jmp	*badrtn
error4:	movl	$3,_ercode	/* error code operand was modified */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	r4,_actual	/* actual data */
	movl	$0,_expected	/* expected data */
	jmp	*badrtn
				/* INDEX > LIMIT			*/
here:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
a3:	callf	$4,_setjmp	/* save context for error return */
	movab	a3,_stpc	/* save address of subtest */
	movl	$3,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$-1,_opr	/* first operand */
	movl	$-1,_opr + 4	/* second operand */
0:	movl	$-1,r3		/* set limit in r3 = -1			*/
	movl	$-1,index	/* set index = -1 			*/
	bispsw	$(N|Z|V|C)	/* set all flags			*/
	aoblss	r3,index,loop2	/* regiser to memory entry point	*/
	jgeq	error5 
	jvs	error5 
	jeql	error5 
	jcs	error5 

	cmpl	$0,index	/* check index value			*/
	jneq	error6
	jmp	nxt
	.space	90		/* reserve 100 bytes			*/
loop2:
	movl	$1,_ercode	/* error code data miscompare did not branch */
1:	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	index,_actual	/* actual data */
	movl	$-0,_expected	/* expected data */
	jmp	*badrtn
error5:	movpsl	_actual		/* actual = psl */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag miscompare */
	jmp	*badrtn
error6:	movl	$3,_ercode	/* error code operand was modified */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	index,_actual	/* actual data */
	movl	$0,_expected	/* expected data */
	jmp	*badrtn

				/* CHECK C FLAG				*/
nxt:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
a4:	callf	$4,_setjmp	/* save context for error return */
	movab	a4,_stpc	/* save address of subtest */
	movl	$4,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$5,_opr	/* first operand */
	movl	$0x7fffffff,_opr + 4	/* second operand */
0:	movl	$5,limit	/* set limit in limit = 5		*/
	movl	$0x7fffffff,r4	/* set index to max. positive no */
	bispsw	$(Z|N|C)	/* set n,z,c flags			*/
	bicpsw	$V		/* clear n flags			*/
	aoblss	limit,r4,loop3	/* memory to register entry point	*/
	jvs	error7 
	jeql	error7 
	jgeq	error7 
	jcs	error7	
	cmpl	$0x80000000,r4	/* check index value		*/
	jneq	error8
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
	jmp	*return

	.space	100
loop3:
	movl	$1,_ercode	/* error code data miscompare did not branch */
1:	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	r4,_actual	/* actual data */
	movl	$0x80000000,_expected	/* expected data */
	jmp	*badrtn
error7:	movpsl	_actual		/* actual = psl */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag miscompare */
	jmp	*badrtn
error8:	movl	$3,_ercode	/* error code operand was modified */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	r4,_actual	/* actual data */
	movl	$0x80000000,_expected	/* expected data */
	jmp	*badrtn


/*	test data		*/
	.align  2
limit:
	.long	0
index:
	.long	0
add:
	.long	0


unix.superglobalmegacorp.com

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