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

/*	This program tests the instruction STORER	*/
#	R2 = error code
#	     1 = error in flags
#	     2 = register did not get stored correctly
#	     3 = storer stored more than expected
#
	.set	N,8
	.set	Z,4
	.set	V,2
	.set	C,1

	.globl	_storer
_storer:
	callf	$4,_setjmp	/* save context for error return */
	movab	_storer,_stpc	/* starting address of subtest */
	movl	$1,_subtst	/* indicate which subtest */
	movl	$1,_no_opr	/* number of operands in use */
	movl	$0,_opr		/* first operand */
0:	movl	$0,r0		/* load r0 - r14 with known data */
	movl	$0x11111111,r1
	movl	$0x22222222,r2
	movl	$0x33333333,r3
	movl	$0x44444444,r4
	movl	$0x55555555,r5
	movl	$0x66666666,r6
	movl	$0x77777777,r7
	movl	$0x88888888,r8
	movl	$0x99999999,r9
	movl	$0xaaaaaaaa,r10
	movl	$0xbbbbbbbb,r11
	movl	$0xcccccccc,r12
	movl	$0xdddddddd,r13

	movl	$0,mask		/* set mask */
	movl	$0xffffffff,l0	/* init memory */
	movl	$0xffffffff,l1	/* init memory */
	movl	$0xffffffff,l2	/* init memory */
	movl	$0xffffffff,l3	/* init memory */
	movl	$0xffffffff,l4	/* init memory */
	movl	$0xffffffff,l5	/* init memory */
	movl	$0xffffffff,l6	/* init memory */
	movl	$0xffffffff,l7	/* init memory */
	movl	$0xffffffff,l8	/* init memory */
	movl	$0xffffffff,l9	/* init memory */
	movl	$0xffffffff,l10	/* init memory */
	movl	$0xffffffff,l11	/* init memory */
	movl	$0xffffffff,l12	/* init memory */
	movl	$0xffffffff,l13	/* init memory */
	movl	$0xabababab,l14	/* init memory */
	bicpsw	$(Z|V)		/* clear z,v flags      		*/
	bispsw  $(N|C)		/* set n,c flag		*/
	storer	mask,l0		/* this is the tested instruction	*/
	jeql	error0		/* error if Z set */
	jvs	error0		/* error if V set */
	jgeq	error0		/* error if N not set */
	jcc	error0		/* error if C not set */
	jmp	1f
error0:	movpsl	_actual		/* actual = ps maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* werror code flag failure */
	jmp	*badrtn
1:	cmpl	$0,mask			/* check if mask changed */
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$3,_ercode	/* error code operand miscompare */
	movl	mask,_actual	/* actaul data */
	movl	$0,_expected	/* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l0
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l0,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l1
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l1,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l2
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l2,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l3
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l3,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l4,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l5
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l5,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l6
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l6,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l7
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l7,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l8
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l8,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l9
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l9,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l10
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l10,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l11
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l11,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l12
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l12,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l13
	jeql	next
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l13,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn

next:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
as2:	callf	$4,_setjmp	/* save context for error return */
	movab	as2,_stpc	/* starting address of subtest */
	movl	$2,_subtst	/* indicate which subtest */
	movl	$1,_no_opr	/* number of operands in use */
	movl	$0x2ad5,_opr		/* first operand */
0:	movw	$0x2ad5,mask   /* Set mask to store r0,r2,r4,r6,r7,r9,r11,r13 */
	movw	mask,r10	/* load mask value into r10 */
	bicpsw	$(Z|V|N|C)	/* clear all flags      		*/
	storer	r10,l0		/* this is the tested instruction	*/
	jeql	error1		/* error if Z set */
	jvs	error1		/* error if V set */
	jlss	error1		/* error if N set */
	jcs	error1		/* error if C set */
	jmp	1f
error1:	movpsl	_actual		/* actual = ps maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* werror code flag failure */
	jmp	*badrtn

1:	cmpl	$0x00002ad5,r10
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r10,_actual	/* actaul data */
	movl	$0x00002ad5,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0,l0		/* Check if registers is stored correctly */
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l0,_actual	/* actaul data */
	movl	$0,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x22222222,l1
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l1,_actual	/* actaul data */
	movl	$0x22222222,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x44444444,l2
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l2,_actual	/* actaul data */
	movl	$0x44444444,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x66666666,l3
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l3,_actual	/* actaul data */
	movl	$0x66666666,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x77777777,l4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l4,_actual	/* actaul data */
	movl	$0x77777777,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x99999999,l5
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l5,_actual	/* actaul data */
	movl	$0x99999999,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xbbbbbbbb,l6
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l6,_actual	/* actaul data */
	movl	$0xbbbbbbbb,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xdddddddd,l7
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l7,_actual	/* actaul data */
	movl	$0xdddddddd,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xffffffff,l8
	jeql	next1
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l8,_actual	/* actaul data */
	movl	$0xffffffff,_expected /* expected data */
	jmp	*badrtn

next1:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
as3:	callf	$4,_setjmp	/* save context for error return */
	movab	as3,_stpc	/* starting address of subtest */
	movl	$3,_subtst	/* indicate which subtest */
	movl	$1,_no_opr	/* number of operands in use */
	movl	$0x3ffff,_opr		/* first operand */
0:	movl	$0xffffffff,l0		/* load l0 - l13 with known data */
	movl	l0,l1
	movl	l1,l2
	movl	l2,l3
	movl	l3,l4
	movl	l4,l5
	movl	l5,l6
	movl	l6,l7
	movl	l7,l8
	movl	l8,l9
	movl	l9,l10
	movl	l10,l11
	movl	l11,l12
	movl	l12,l13

	movl	$0xaaaaaaaa,r10	/* restore value in register r10 */
	movw	$0x3fff,mask	/* Set mask to store all registers */
	bicpsw	$(Z|V|N|C)	/* clear all flags      		*/
	storer	mask,l0		/* this is the tested instruction	*/
	jeql	error2		/* error if Z set */
	jvs	error2		/* error if V set */
	jlss	error2		/* error if N set */
	jcs	error2		/* error if C set */
	jmp	1f
error2:	movpsl	_actual		/* actual = ps maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* werror code flag failure */
	jmp	*badrtn

1:	cmpl	$0x3fff0000,mask
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$3,_ercode	/* error code operand miscompare */
	movl	mask,_actual	/* actaul data */
	movl	$0x3fff0000,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0,l0		/* Check if registers loaded correctly */
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l0,_actual	/* actaul data */
	movl	$0,_expected 	/* expected data */
	jmp	*badrtn
1:	cmpl	$0x11111111,l1
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l1,_actual	/* actaul data */
	movl	$0x11111111,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x22222222,l2
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l2,_actual	/* actaul data */
	movl	$0x22222222,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x33333333,l3
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l3,_actual	/* actaul data */
	movl	$0x33333333,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x44444444,l4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l4,_actual	/* actaul data */
	movl	$0x44444444,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x55555555,l5
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l5,_actual	/* actaul data */
	movl	$0x55555555,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x66666666,l6
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l6,_actual	/* actaul data */
	movl	$0x66666666,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x77777777,l7
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l7,_actual	/* actaul data */
	movl	$0x77777777,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x88888888,l8
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l8,_actual	/* actaul data */
	movl	$0x88888888,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0x99999999,l9
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l9,_actual	/* actaul data */
	movl	$0x99999999,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xaaaaaaaa,l10
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l10,_actual	/* actaul data */
	movl	$0xaaaaaaaa,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xbbbbbbbb,l11
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l11,_actual	/* actaul data */
	movl	$0xbbbbbbbb,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xcccccccc,l12
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l12,_actual	/* actaul data */
	movl	$0xcccccccc,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xdddddddd,l13
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l13,_actual	/* actaul data */
	movl	$0xdddddddd,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$0xabababab,l14		/* check mark at end */
	jeql	aldn
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	l14,_actual	/* actaul data */
	movl	$0xabababab,_expected /* expected data */
	jmp	*badrtn

aldn:	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
	jmp 	*return 

/*	data space	*/

	.align 2
mask:
	.long 	0

l0:	.long	0xffffffff
l1:	.long	0xffffffff
l2:	.long	0xffffffff
l3:	.long	0xffffffff
l4:	.long	0xffffffff
l5:	.long	0xffffffff
l6:	.long	0xffffffff
l7:	.long	0xffffffff
l8:	.long	0xffffffff
l9:	.long	0xffffffff
l10:	.long	0xffffffff
l11:	.long	0xffffffff
l12:	.long	0xffffffff
l13:	.long	0xffffffff
l14:	.long	0xabababab

where:	.long   0

unix.superglobalmegacorp.com

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