SysIII/usr/src/uts/vax/ml/power.s

Compare this file to the similar file:
Show the results in this format:

# Power Fail Interrup Handler

	.align	2
Xpowfail:
	tstl	pftime
	bneq	pfwait
	pushr	$0x3fff
#
# Save registers in restart parameter block
#
	moval	Rpbbase,r5
	movl	_Sysmap,r4	 	#this code assumes rpb at physical 0
	movl	$PG_V|PG_KW,_Sysmap
	mfpr	$PCBB,RPB_PCBB(r5)
	mfpr	$SCBB,RPB_SCBB(r5)
	mfpr	$SBR,RPB_SBR(r5)
	mfpr	$SISR,RPB_SISR(r5)
	mfpr	$SLR,RPB_SLR(r5)
	mfpr	$TODR,pftime
#
# Save all other volatile processor registers on the current stack (ISP)
#
	mfpr	$KSP,-(sp)
	mfpr	$ESP,-(sp)
	mfpr	$SSP,-(sp)
	mfpr	$USP,-(sp)
	mfpr	$ASTLVL,-(sp)
	mfpr	$PMR,-(sp)
	mfpr	$P0BR,-(sp)
	mfpr	$P0LR,-(sp)
	mfpr	$P1BR,-(sp)
	mfpr	$P1LR,-(sp)
	movl	sp,RPB_ISP(r5)
	movl	r4,_Sysmap
	movl	$-1,_pwr_act
	incl	_pwr_cnt
pfwait:
	brb	pfwait
#
# restore state and restart after power on
#
	.set POWERUP,3
	.align	9
	.globl	_clkset
restart:
	cmpl	ap,$POWERUP
	beql	powerup
	halt
powerup:
	mfpr	$TXCS,r6
	bbc	$TXCS_BRDY,r6,restart
	mtpr	$0xf03,$TXDB
restart1:
	mfpr	$TXCS,r6
	bbc	$TXCS_BRDY,r6,restart1
	movab	-512(sp),r5
	bicl2	$1,RPB_FLAG(r5)
	mtpr	RPB_SBR(r5),$SBR
	mtpr	RPB_SLR(r5),$SLR
	mtpr	RPB_SISR(r5),$SISR
	mtpr	RPB_SCBB(r5),$SCBB
	mtpr	RPB_PCBB(r5),$PCBB
	mtpr	$_Sysmap,$P0BR
	mtpr	$Syssize,$P0LR
	movl	RPB_ISP(r5),r6
	movl	$1,PHYSMBA0+4
	movl	$4,PHYSMBA0+4
	movl	$1,PHYSMBA1+4
	movl	$4,PHYSMBA1+4
	movl	$1,PHYSUBA+4
	movl	$0x78,PHYSUBA+4
	mtpr	$1,$TBIA
	mtpr	$1,$MAPEN
	jmp	*$restmap
restmap:
	movl	r6,sp
	mtpr	(r6)+,$P1LR
	mtpr	(r6)+,$P1BR
	mtpr	(r6)+,$P0LR
	mtpr	(r6)+,$P0BR
	mtpr	(r6)+,$PMR
	mtpr	(r6)+,$ASTLVL
	mtpr	(r6)+,$USP
	mtpr	(r6)+,$SSP
	mtpr	(r6)+,$ESP
	mtpr	(r6)+,$KSP
	pushl	r6
	mtpr	$0,$SBIFS
	calls	$0,_clkstart
	movl	_time,-(sp)
	calls	$1,_clkset
	movl	(sp)+,sp
	clrl	pftime
	popr	$0x3fff
	mtpr	$1,$SIRR
	rei
	.data
	.align 2
	.globl	pftime
pftime:	.space	1*4

	.globl	_pwr_act
_pwr_act:	.space	1*4

	.globl	_pwr_cnt
_pwr_cnt:	.space	1*4

.text