plan 9 kernel history: overview | file list | diff list

2000/1001/bitsy/l.s (diff list | history)

2000/0929/sys/src/9/bitsy/l.s:143,1582000/1001/sys/src/9/bitsy/l.s:143,161 (short | long | prev | next)
2000/0904    
	MOVW	0x18(R15), R15		/* reserved */ 
	MOVW	0x18(R15), R15		/* IRQ */ 
	MOVW	0x18(R15), R15		/* FIQ */ 
	WORD	$_vsvc(SB)		/* reset, in svc mode already */ 
2000/1001    
	WORD	$_vrst(SB)		/* reset, in svc mode already */ 
2000/0904    
	WORD	$_vund(SB)		/* undefined, switch to svc mode */ 
	WORD	$_vsvc(SB)		/* swi, in svc mode already */ 
	WORD	$_vpab(SB)		/* prefetch abort, switch to svc mode */ 
	WORD	$_vdab(SB)		/* data abort, switch to svc mode */ 
	WORD	$_vsvc(SB)		/* reserved */ 
2000/1001    
	WORD	$_vabt(SB)		/* prefetch abort, switch to svc mode */ 
	WORD	$_vabt(SB)		/* data abort, switch to svc mode */ 
	WORD	$_vrst(SB)		/* reserved, shouldn't happen */ 
2000/0904    
	WORD	$_virq(SB)		/* IRQ, switch to svc mode */ 
	WORD	$_vfiq(SB)		/* FIQ, switch to svc mode */ 
2000/0831    
 
2000/0904    
TEXT _vsvc(SB), $-4			/* reset or SWI or reserved */ 
2000/1001    
TEXT _vrst(SB), $-4 
	BL	reset 
 
TEXT _vsvc(SB), $-4			/* SWI */ 
2000/0904    
	SUB	$12, R13		/* make room for pc, psr, & type */ 
	MOVW	R14, 8(R13)		/* ureg->pc = interupted PC */ 
	MOVW	SPSR, R14		/* ureg->psr = SPSR */ 
2000/0929/sys/src/9/bitsy/l.s:167,1822000/1001/sys/src/9/bitsy/l.s:170,180
2000/0831    
	MOVW	$PsrMund, R0 
	B	_vswitch 
 
2000/0904    
TEXT _vpab(SB), $-4			/* prefetch abort */ 
2000/1001    
TEXT _vabt(SB), $-4			/* prefetch abort */ 
2000/0904    
	MOVM.IA	[R0-R3], (R13)		/* free some working space */ 
	MOVW	$PsrMabt, R0		/* r0 = type */ 
2000/0831    
	B	_vswitch 
 
2000/0904    
TEXT _vdab(SB), $-4			/* data abort */ 
	MOVM.IA	[R0-R3], (R13)		/* free some working space */ 
	MOVW	$(PsrMabt+1), R0	/* r0 = type */ 
2000/0831    
	B	_vswitch 
                 
2000/0904    
TEXT _virq(SB), $-4			/* IRQ */ 
	MOVM.IA	[R0-R3], (R13)		/* free some working space */ 
	MOVW	$PsrMirq, R0		/* r0 = type */ 
2000/0929/sys/src/9/bitsy/l.s:204,2162000/1001/sys/src/9/bitsy/l.s:202,214
2000/0904    
	 *  R13 and R14 are no longer accessible.  That's why R3 was left to point to where 
	 *  the old [r0-r3] are stored. 
	 */ 
2000/0903    
	MOVM.DB.W [R0-R2], (R13)	/* set ureg->{pc, psr, type}; r13 points to ureg->type  */ 
2000/1001    
	MOVM.DB.W [R0-R2], (R13)	/* set ureg->{type, psr, pc}; r13 points to ureg->type  */ 
2000/0903    
	MOVM.IA	  (R3), [R0-R3]		/* restore [R0-R3] from previous mode's stack */ 
2000/0904    
	MOVM.DB.W.S [R0-R14], (R13)	/* save user level registers, at end r13 points to ureg */ 
2000/0831    
 
2000/0904    
	/* 
	 *  if the original interrupt happened while executing SVC mode, the User R14 in the Ureg is 
	 *  wrong.  We need to save the SVC one there. 
2000/1001    
	 *  if the original interrupt happened while executing SVC mode, 
	 *  the User R14 in the Ureg is wrong.  We need to save the SVC one there. 
2000/0903    
	 */ 
2000/0904    
	MOVW	0x40(R13), R1 
	AND.S	$0xf, R1 
2000/0929/sys/src/9/bitsy/l.s:231,2372000/1001/sys/src/9/bitsy/l.s:229,235
2000/0903    
	MOVW	8(R13), R14		/* restore link */ 
	MOVW	4(R13), R0		/* restore SPSR */ 
	MOVW	R0, SPSR		/* ... */ 
	MOVM.DB.S (R13), [R0-R14]	/* restore registers */ 
2000/1001    
	MOVM.DB.W.S (R13), [R0-R14]	/* restore registers */ 
2000/0904    
	ADD	$8, R13			/* pop past ureg->{type+psr} */ 
2000/0831    
	RFE				/* MOVM.IA.S.W (R13), [R15] */ 
 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)