File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / event / prvreg.s
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:30:54 2019 UTC (6 years, 11 months ago) by root
Branches: bsd, MAIN
CVS tags: v121, HEAD
Power 6/32 Unix version 1.21

#	prvreg.s	1.0	9/3/82					*/
#
#	*Privileged registers test : MTPR/MFPR
#
#	R2	: expected value		
#	R3	: actual value		
#	R4	: privilege register no. that fail


	.globl	_prvreg
_prvreg:
	.word	0x1fff
	movl	$0x55555554,r2
	mtpr	r2,$SBR		/* Entry point :  Register to Memory	*/
	mfpr	$SBR,r3		/* Entry point :  Memory to Register	*/
	cmpl	r2,r3
	beql	1f
	movl 	$0,r4		/* R4 = privilege reg. no that failed	*/
	jmp    *badrtn			/* **** - r2 & r3 contains exp	*/
				/* and observed values; r4 = prv reg no.*/
1:
	mtpr	$0xaaaaaaa4,$SBR 	/* Entry point : Memory to Memory */
	mfpr	$SBR,prvar		/* Entry point : Memory to Memory */
	cmpl	$0xaaaaaaa4,prvar
	beql	2f
	movl 	$0,r4		/* R4 = privilege reg. no that failed	*/
	movl	$0xaaaaaaa4,r2	/* R2 = Expected value; R3 = Actual value */
	movl	prvar,r3
	jmp    *badrtn
2:

	movl	$SLR,r12	/* System Length Register		*/
	movl	$0x35555555,r2
	mtpr	r2,r12		/* Entry point : Register to Register	*/
	mfpr	r12,r3		/* Entry point : Register to Register	*/
	cmpl	r2,r3
	beql	1f
	movl 	$1,r4		/* R4 = privilege reg. no that failed	*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	mtpr	$0x3aaaaaaa,r12	/* Entry point : Memory to register	*/
	mfpr	r12,prvar	/* Entry point : Register to Memory	*/
	cmpl	$0x3aaaaaaa,prvar
	beql	2f
	movl 	$1,r4		/* R4 = privilege reg. no that failed	*/
	movl	$0x3aaaaaaa,r2	/* R2 = Expected value; R3 = Actual value */
	movl	prvar,r3
	jmp     *badrtn	
2:

	movl	$0x55555554,r2			/*p0 base  register	*/
	mtpr	r2,$P0BR
	movl	$P0BR,_cache1
	mfpr	_cache1,r3		/* Cache to register */
	cmpl	r2,r3
	beql	1f
	movl 	$2,r4		/* R4 = privilege reg. no that failed	*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$0xaaaaaaa4,r2			
	mtpr	r2,$P0BR
	mfpr	_cache1,_cache2		/* Cache to cache */
	movl	_cache2,r3
	cmpl	r2,r3
	beql	2f
	movl $2,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:

	movl	$0x35555555,r2			/*p0 length  register	*/
	andl2	$0x1fffffff,r2
	mtpr	r2,$P0LR
	mfpr	$P0LR,r3
	cmpl	r2,r3
	beql	1f
	movl $3,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$0x3aaaaaaa,r2			
	andl2	$0x1fffffff,r2
	mtpr	r2,$P0LR
	mfpr	$P0LR,r3
	cmpl	r2,r3
	beql	2f
	movl $3,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:

	movl	$0x55555554,r2			/*p1 base  register	*/
	movl	$P1BR,_sreg
	mtpr	r2,_sreg
	mfpr	$P1BR,r3
	cmpl	r2,r3
	beql	1f
	movl $4,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$0xaaaaaaa4,r2			
	mtpr	r2,$P1BR
	mfpr	$P1BR,r3
	cmpl	r2,r3
	beql	2f
	movl $4,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:


	movl	$0x35555555,r2			/*p1 length  register	*/
	andl2	$0x1fffffff,r2
	mtpr	r2,$P1LR
	mfpr	$P1LR,r3
	cmpl	r2,r3
	beql	1f
	movl $5,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$0x3aaaaaaa,r2			
	andl2	$0x1fffffff,r2
	mtpr	r2,$P1LR
	mfpr	$P1LR,r3
	cmpl	r2,r3
	beql	2f
	movl $5,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:


	movl	$0x55555554,r2			/*p2 base  register	*/
	mtpr	r2,$P2BR
	mfpr	$P2BR,r3
	cmpl	r2,r3
	beql	1f
	movl $6,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$0xaaaaaaa4,r2			
	mtpr	r2,$P2BR
	mfpr	$P2BR,r3
	cmpl	r2,r3
	beql	2f
	movl $6,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:

	movl	$0x35555555,r2			/*p2 length  register	*/
	andl2	$0x1fffffff,r2
	mtpr	r2,$P2LR
	mfpr	$P2LR,r3
	cmpl	r2,r3
	beql	1f
	movl $7,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$0x3aaaaaaa,r2			
	andl2	$0x1fffffff,r2
	mtpr	r2,$P2LR
	mfpr	$P2LR,r3
	cmpl	r2,r3
	beql	2f
	movl $7,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:

	movl	$10,r2
	mtpr	r2,$IPL
	mfpr	$IPL,r3
	cmpl	r2,r3
	beql	1f
	movl $8,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$21,r2			
	mtpr	r2,$IPL
	mfpr	$IPL,r3
	cmpl	r2,r3
	beql	2f
	movl $8,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:
	movl	$31,r2			
	mtpr	r2,$IPL
	mfpr	$IPL,r3
	cmpl	r2,r3
	beql	2f
	movl $8,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:

	movl	$0xffffc,r2			/*PCB base register	*/
	mtpr	r2,$PCBB
	mfpr	$PCBB,r3
	cmpl	r2,r3
	beql	1f
	movl    $14,r4				/*reg no.		*/
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$0xeeeec,r2			
	mtpr	r2,$PCBB
	mfpr	$PCBB,r3
	cmpl	r2,r3
	beql	2f
	movl $14,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
/*LET US HOPE WE DON'T GET EXCEPTION DURING THIS TEST			*/

2:
	mfpr	$ISP,_savvec0		/* save value of ISP	*/
	mtpr	$0x1f,$IPL		/* Set IPL to high	*/
	movl	$0x55555554,r2			/*int stck ptr register	*/
	mtpr	r2,$ISP
	mfpr	$ISP,r3
	cmpl	r2,r3
	beql	1f
	movl $15,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$0xaaaaaaac,r2			
	mtpr	r2,$ISP
	mfpr	$ISP,r3
	cmpl	r2,r3
	beql	2f
	movl $15,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:
	mtpr	_savvec0,$ISP	/* Restore ISP			*/
	movl	$0xaaaa,r2	/* Soft int summary register	*/
	movl	r2,*$SSR	/* is a read only register	*/
	mfpr	$SISR,r3	/* funtional test no comparison	*/
	cmpl	r2,r3
	beql	1f
	movl $17,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
1:
	movl	$0x5555,r2			
	movl	r2,*$SSR 
	mfpr	$SISR,r3
	cmpl	r2,r3
	beql	2f
	movl    $17,r4				/*reg no.		*/
	jmp    *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:
	clrl	*$SSR
	movl	$0xfff000,r2
	movab	_iob4,r9
	mtpr	r9,$PCBB	/* Init PCBB	*/
	mtpr	r2,$USP
	mfpr	$USP,r3
	cmpl	r2,r3
	beql	2f
	movl    $20,r4				/*reg no.		*/
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:
	mfpr	$KSP,_savvec9		/* Save KSP	*/
	movl	$0xffe000,r2
	mtpr	r2,$KSP
	mfpr	$KSP,r3
	cmpl	r2,r3
	beql	2f
	movl    $19,r4				/*reg no.		*/
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:
	mtpr	_savvec9,$KSP	/* Restore KSP	*/
	movl	*$0x414,r12	/* Save original SCB value in R12	*/
	movl	$0xeee000,r2
	mtpr	r2,$SCBB
	mfpr	$SCBB,r3
	cmpl	r2,r3
	beql	2f
	movl    $18,r4				/*reg no.		*/
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:
	movl	r12,*$0x414	/* Restore original SCB 	*/
	mtpr	$0x1f,$IPL	/* Set IPL to High	*/
	movl	$0x8000,r2
	mtpr	$0xf,$SIRR	/* Set SIRR at level 15	*/
	mfpr	$SISR,r3	/* Read software int. summary register */
	cmpl	$0x8000,r3	/* Should indicate int. pending at level 15 */
	beql	2f
	movl    $16,r4				/*reg no.		*/
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:
	mtpr	$0,$SIRR	/* Clear SIRR */
	clrl	*$SSR
	movl	$0xaa,r2
	mtpr	r2,$DCK
	movl	*$TDCK,r3
	cmpl	r2,r3
	beql	2f
	movl    $12,r4				/*reg no.		*/
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:
	movl	$0xbb,r2
	mtpr	r2,$CCK
	movl	*$TCCK,r3
	cmpl	r2,r3
	beql	2f
	movl    $13,r4				/*reg no.		*/
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
				/*and observed values; r4 = prv reg no.	*/
2:

	movl	$0xffe000,r2
	movl	$KSP,_cache1
	mtpr	$0xffe000,_cache1	/* Literal to cache */
	mfpr	$KSP,r3
	cmpl	r2,r3
	beql	2f
	movl    $27,r4			/* R4 = which part of the test */
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
2:
	movl	$0xffa000,r2
	movl	r2,_cache2
	mtpr	_cache2,_cache1		/* Cache to cache */
	mfpr	$KSP,r3
	cmpl	r2,r3
	beql	2f
	movl    $28,r4			/* R4 = which part of the test */
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
2:
	movl	$0xffb000,r2
	movl	r2,_cache2
	movl	$KSP,r11
	mtpr	_cache2,r11		/* Cache to register */
	mfpr	$KSP,r3
	cmpl	r2,r3
	beql	2f
	movl    $29,r4			/* R4 = which part of the test */
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
2:
	movl	$0xffc000,r2
	movl	r2,_cache2
	mtpr	_cache2,$KSP		/* Cache to literal */
	mfpr	$KSP,r3
	cmpl	r2,r3
	beql	2f
	movl    $30,r4			/* R4 = which part of the test */
	jmp     *badrtn			/***** - r2 & r3 contains exp	*/
2:
	mtpr	$KSP,_savvec9	/* Restore KSP				*/
	mfpr	$MME,r9		/* The following MTPR/MFPR just to see  */
	mtpr	$1,$TBIA	/* if control return to program !!	*/
	mtpr	$_iob4,$TBIS
	mfpr	$DCB,r9
	mtpr	$4,$PADC
	mtpr	$_iob4,$P1DC
	mtpr	$2,$PACC
	mtpr	$0,$DCR
	mfpr	$DCR,r9
	ret			/* End of privileged registers test	*/

	.align	2
prvar:	.long	0
_cache1:
	.long	0
_cache2:
	.long	0
_sreg:	.long	0


unix.superglobalmegacorp.com

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