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

#*	  INSQUE, REMQUE instruction test		*/
#*	  Privilege registers				*/

	.set	IPL,0x8
	.set	MAPEN,0x9
	.set	KSP,0x19
#*	  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 	MAXPOSL,0x7fffffff
	.set	MAXNEGL,0x80000000
	.set	MAXPOSW,0x7fff
	.set	MAXNEGW,0x8000
	.set	MAXPOSB,0x7f
	.set	MAXNEGB,0x80
	.set	ZERO,0
	.set	ONES,0xffffffff
	.set	HIGH,31			/* highest interrupt priority	*/


	.globl	_insque
_insque:
#	Init queue to initial state : has 3 entries
#
	callf	$4,_setjmp	/* save context for error return */
	movab	_insque,_stpc	/* save starting address of subtest */
	movl	$1,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movab	e4,_opr		/* first operand */
0:	movab	e1,qhead
	movab	e3,qtail
	movab	e2,e1
	movab	qhead,e1+4
	movab	e3,e2
	movab	e1,e2+4
	movab	qhead,e3
	movab	e2,e3+4

#	INSQUE at head of queue	

	bicpsw	$(IV|T)		/* disable overflow,trace exceptions 	*/
	insque	e4,qhead

	movl	qhead,r3	/* Check forward link of queue header */
	movab	e4,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	qtail,r3	/* Check backward link of queue header */
	movab	e3,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e4,r3		/* Check forward link of added entry */
	movab	e1,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e4+4,r3		/* Check backward link of added entry */
	movab	qhead,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e1,r3		/* Check forward link of previous 1st entry */
	movab	e2,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e1+4,r3		/* Check backward link of previous 1st entry */
	movab	e4,r4
	cmpl	r3,r4
	jeql	i2
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

#	REMQUE at head of queue	

i2:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai2:	callf	$4,_setjmp	/* save context for error return */
	movab	ai2,_stpc	/* save starting address of subtest */
	movl	$2,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movab	e4,_opr		/* first operand */
0:	remque	e4

	movl	qhead,r3	/* Check forward link of queue header */
	movab	e1,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	qtail,r3	/* Check backward link of queue header */
	movab	e3,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e1,r3		/* Check forward link of preceeding entry */
	movab	e2,r4		/* after REMQUE				*/
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e1+4,r3		/* Check backward link of preceeding entry */
	movab	qhead,r4	/* after REMQUE				*/
	cmpl	r3,r4
	jeql	i3
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

#	INSQUE at tail of queue	

i3:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai3:	callf	$4,_setjmp	/* save context for error return */
	movab	ai3,_stpc	/* save starting address of subtest */
	movl	$3,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movab	e4,_opr		/* first operand */
	movab	e3,_opr + 4	/* second operand */
0:	movab	e3,r7
	movab	e4,r8
	insque	(r8),(r7)

	movl	qhead,r3	/* Check forward link of queue header */
	movab	e1,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	qtail,r3	/* Check backward link of queue header */
	movab	e4,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e4,r3		/* Check forward link of added entry */
	movab	qhead,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e4+4,r3		/* Check backward link of added entry */
	movab	e3,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e3,r3		/* Check forward link of preceeding entry */
	movab	e4,r4		/* of added entry when insert at tail 	*/
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e3+4,r3		/* Check backward link of preceeding entry */
	movab	e2,r4		/* of added entry when insert at tail 	*/
	cmpl	r3,r4
	jeql	i4
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

#	REMQUE at tail of queue	

i4:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai4:	callf	$4,_setjmp	/* save context for error return */
	movab	ai4,_stpc	/* save starting address of subtest */
	movl	$4,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movab	e4,_opr		/* first operand */
0:	movab	e4,r7
	remque	(r7)
	
	movl	qhead,r3	/* Check forward link of queue header */
	movab	e1,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	qtail,r3	/* Check backward link of queue header */
	movab	e3,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e3,r3		/* Check forward link of preceeding entry */
	movab	qhead,r4	/* after REMQUE				*/
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e3+4,r3		/* Check backward link of preceeding entry */
	movab	e2,r4		/* after REMQUE				*/
	cmpl	r3,r4
	jeql	i5
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn
#
#	INSQUE to empty queue : check Z flag
#
i5:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai5:	callf	$4,_setjmp	/* save context for error return */
	movab	ai5,_stpc	/* save starting address of subtest */
	movl	$5,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movab	qhead,_opr		/* first operand */
0:	movab	qhead,qhead	/* Make queue empty */
	movab	qhead,qtail

	insque	e4,qhead
	jeql	1f
	movpsl	_actual		/* actual = psl is incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag miscompare */
	jmp	*badrtn
	
1:	movl	qhead,r3	/* Check forward link of queue header */
	movab	e4,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	qtail,r3	/* Check backward link of queue header */
	movab	e4,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e4,r3		/* Check forward link of added entry */
	movab	qhead,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	e4+4,r3		/* Check backward link of added entry */
	movab	qhead,r4
	cmpl	r3,r4
	jeql	i6
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn
#
#	REMQUE last entry the queue : check Z bit
#
i6:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai6:	callf	$4,_setjmp	/* save context for error return */
	movab	ai6,_stpc	/* save starting address of subtest */
	movl	$6,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movab	e4,_opr		/* first operand */
	
0:	remque	e4
	jeql	1f
	movpsl	_actual		/* actual = psl is incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag miscompare */
	jmp	*badrtn
	
1:	movl	qhead,r3	/* Check forward link of queue header */
	movab	qhead,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	qtail,r3	/* Check backward link of queue header */
	movab	qhead,r4
	cmpl	r3,r4
	jeql	i7
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

#
#	REMQUE entry in an empty queue : check V flag
#
i7:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai7:	callf	$4,_setjmp	/* save context for error return */
	movab	ai7,_stpc	/* save starting address of subtest */
	movl	$7,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movab	qhead,_opr

0:	remque	qhead
	jvs	1f		/* error if V flag not set 		*/
	movpsl	_actual		/* actual = psl is incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag miscompare */
	jmp	*badrtn
1:	bicpsw  $V
	
	movl	qhead,r3	/* Check forward link of queue header */
	movab	qhead,r4
	cmpl	r3,r4
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

1:	movl	qtail,r3	/* Check backward link of queue header */
	movab	qhead,r4
	cmpl	r3,r4
	jeql	aldn
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	r4,_expected	/* expected data */
	jmp	*badrtn

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

#	*********
#	test data
	.align	2

qhead:				/* Queue head */
	.long	e1
qtail:				/* Queue tail */
	.long	e3		/* Initial queue has 3 entries */
	.space	20*4

e1:
	.long	e2		/* Forward link  */
	.long	qhead		/* Backward link */
	.long	0xaaaaaaaa	/* entry */
	.space	20*4
e2:
	.long	e3		/* Forward link  */
	.long	e1		/* Backward link */
	.long	0xbbbbbbbb	/* entry */
	.space	20*4

e3:
	.long	qhead		/* Forward link  */
	.long	e2		/* Backward link */
	.long	0xcccccccc	/* entry */
	.space	20*4

e4:
	.long	0		/* Forward link  */
	.long	0		/* Backward link */
	.long	0xdddddddd	/* entry */
	.space	20*4


unix.superglobalmegacorp.com

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