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

1991/1113/ss/l.s (diff list | history)

1991/1106/sys/src/9/ss/l.s:1,61991/1113/sys/src/9/ss/l.s:1,7 (short | long | prev | next)
1990/1223    
#include "mem.h" 
 
1991/0112    
#define	SYSPSR	(SPL(0x0)|PSREF|PSRSUPER) 
1991/1113    
#define	SYSPSR	(SPL(0x0)|PSREF|PSRSUPER|0) 
#define	NOOP	OR R0, R0; OR R0, R0; OR R0, R0 
1990/1226    
 
1990/1223    
TEXT	start(SB), $-4 
 
1991/1106/sys/src/9/ss/l.s:16,211991/1113/sys/src/9/ss/l.s:17,23
1990/1226    
	MOVW	$setSB(SB), R2 
	MOVW	$startvirt(SB), R7 
	JMPL	(R7) 
1991/1113    
	MOVW	$_mul(SB), R0	/* touch _mul etc.; doesn't need to execute */ 
1990/1223    
	RETURN			/* can't get here */ 
 
TEXT	startvirt(SB), $-4 
1991/1106/sys/src/9/ss/l.s:47,541991/1113/sys/src/9/ss/l.s:49,56
1991/01151    
	FMOVD	F24, F22 
 
1990/1223    
	MOVW	$mach0(SB), R(MACH) 
1990/1226    
	MOVW	$0x8, R7 
	MOVW	R7, WIM 
1991/1113    
/*	MOVW	$0x8, R7 /**/ 
	MOVW	R0, WIM 
1990/1223    
	JMPL	main(SB) 
1991/0115    
	MOVW	(R0), R0 
1990/1223    
	RETURN 
1991/1106/sys/src/9/ss/l.s:71,791991/1113/sys/src/9/ss/l.s:73,79
1990/1226    
	MOVW	R9, R10 
	AND	$~PSRET, R10		/* BUG: book says this is buggy */ 
	MOVW	R10, PSR 
	OR	R0, R0 
	OR	R0, R0 
	OR	R0, R0 
1991/1113    
	NOOP 
1991/1105    
	MOVW	(R7), R7 
1990/1226    
	CMP	R7, R0 
	BNE	was1 
1991/1106/sys/src/9/ss/l.s:89,971991/1113/sys/src/9/ss/l.s:89,95
1990/1226    
	MOVW	R7, R10 
	OR	$PSRET, R10 
	MOVW	R10, PSR 
	OR	R0, R0 
	OR	R0, R0 
	OR	R0, R0 
1991/1113    
	NOOP 
1990/1226    
	RETURN 
 
TEXT	splhi(SB), $0 
1991/1106/sys/src/9/ss/l.s:101,1091991/1113/sys/src/9/ss/l.s:99,105
1990/1226    
	MOVW	R7, R10 
	AND	$~PSRET, R10	/* BUG: book says this is buggy */ 
	MOVW	R10, PSR 
	OR	R0, R0 
	OR	R0, R0 
	OR	R0, R0 
1991/1113    
	NOOP 
1990/1226    
	RETURN 
 
TEXT	splx(SB), $0 
1991/1106/sys/src/9/ss/l.s:110,1181991/1113/sys/src/9/ss/l.s:106,112
1990/1226    
 
1991/1006    
	MOVW	R15, 4(R(MACH))	/* save PC in m->splpc */ 
1990/1226    
	MOVW	R7, PSR		/* BUG: book says this is buggy */ 
	OR	R0, R0 
	OR	R0, R0 
	OR	R0, R0 
1991/1113    
	NOOP 
1991/1006    
	RETURN 
 
TEXT	spldone(SB), $0 
1991/1106/sys/src/9/ss/l.s:122,1301991/1113/sys/src/9/ss/l.s:116,122
1991/1106    
TEXT	touser(SB), $0 
1991/1105    
	MOVW	$(SYSPSR&~PSREF), R8 
	MOVW	R8, PSR 
1990/1226    
	OR	R0, R0 
	OR	R0, R0 
	OR	R0, R0 
1991/1113    
	NOOP 
1991/0712    
 
1991/1105    
	MOVW	R7, R1 
1990/1226    
	SAVE	R0, R0			/* RETT is implicit RESTORE */ 
1991/1106/sys/src/9/ss/l.s:143,1481991/1113/sys/src/9/ss/l.s:135,141
1990/1226    
	/* R8 to R23 are free to play with */ 
	/* R17 contains PC, R18 contains nPC */ 
	/* R19 has PSR loaded from vector code */ 
1991/1113    
 
1990/1226    
	ANDCC	$PSRPSUPER, R19, R0 
	BE	usertrap 
 
1991/1106/sys/src/9/ss/l.s:191,1991991/1113/sys/src/9/ss/l.s:184,190
1990/1226    
	SUB	$8, R1 
1991/1106    
	MOVW	$SYSPSR, R8 
	MOVW	R8, PSR 
1990/1226    
	OR	R0, R0 
	OR	R0, R0 
	OR	R0, R0 
1991/1113    
	NOOP 
1991/01151    
	JMPL	trap(SB) 
1990/1226    
 
	ADD	$8, R1 
1991/1106/sys/src/9/ss/l.s:200,2081991/1113/sys/src/9/ss/l.s:191,197
1991/0112    
restore: 
	MOVW	(4*(32+2))(R1), R8		/* PSR */ 
	MOVW	R8, PSR 
1990/1226    
	OR	R0, R0 
	OR	R0, R0 
	OR	R0, R0 
1991/1113    
	NOOP 
1990/1226    
 
1991/0112    
	MOVD	(4*30)(R1), R30 
	MOVD	(4*28)(R1), R28 
1991/1106/sys/src/9/ss/l.s:250,2551991/1113/sys/src/9/ss/l.s:239,245
1990/1226    
	/* R17 contains PC, R18 contains nPC */ 
	/* R19 has PSR loaded from vector code */ 
	/* assume user did it; syscall checks */ 
1991/1113    
 
1990/1226    
	MOVW	R1, R8 
	MOVW	R2, R9 
	MOVW	$setSB(SB), R2 
1991/1106/sys/src/9/ss/l.s:282,2901991/1113/sys/src/9/ss/l.s:272,278
1990/1226    
	ADD	$8, R1 
	MOVW	(4*(32+2))(R1), R8		/* PSR */ 
	MOVW	R8, PSR 
	OR	R0, R0 
	OR	R0, R0 
	OR	R0, R0 
1991/1113    
	NOOP 
1990/1226    
 
	MOVW	(4*15)(R1), R15 
	SAVE	R0, R0 
1991/1106/sys/src/9/ss/l.s:299,3071991/1113/sys/src/9/ss/l.s:287,293
1990/1226    
TEXT	puttbr(SB), $0 
 
	MOVW	R7, TBR 
	OR	R0, R0 
	OR	R0, R0 
	OR	R0, R0 
1991/1113    
	NOOP 
1990/1226    
	RETURN 
 
TEXT	gettbr(SB), $0 
1991/1106/sys/src/9/ss/l.s:342,3471991/1113/sys/src/9/ss/l.s:328,338
1990/1226    
	JMPL	(R7) 
1990/1223    
	RETURN 
 
1991/1113    
TEXT	getpsr(SB), $0 
 
	MOVW	PSR, R7 
	RETURN 
 
1990/1231    
TEXT	putcxreg(SB), $0 
1990/1226    
 
1991/1105    
	MOVW	$CONTEXT, R8 
1991/1106/sys/src/9/ss/l.s:376,3811991/1113/sys/src/9/ss/l.s:367,377
1990/1227    
	MOVW	R8, (R7, 4) 
1990/1226    
	RETURN 
 
1991/1113    
TEXT	getw4(SB), $0 
 
	MOVW	(R7, 4), R7 
	RETURN 
 
1990/1227    
TEXT	putwC(SB), $0 
1990/1226    
 
	MOVW	4(FP), R8 
1991/1106/sys/src/9/ss/l.s:475,4841991/1113/sys/src/9/ss/l.s:471,478
1991/01151    
TEXT	savefpregs(SB), $0 
 
	MOVW	FSR, 0(R7) 
1991/1113    
	ADD	$4, R7		/* assumes R7 is now MOVD-aligned */ 
1991/01151    
 
	ADD	$(4+7), R7		/* double-align so can MOVD */ 
	ANDN	$7, R7 
                 
	MOVD	F0, (0*4)(R7) 
	MOVD	F2, (2*4)(R7) 
	MOVD	F4, (4*4)(R7) 
1991/1106/sys/src/9/ss/l.s:507,5161991/1113/sys/src/9/ss/l.s:501,510
1991/01151    
	OR	$PSREF, R8 
	MOVW	R8, PSR 
 
	MOVW	(R7), FSR 
1991/1113    
	NOOP 
1991/01151    
 
	ADD	$(4+7), R7		/* double-align so can MOVD */ 
	ANDN	$7, R7 
1991/1113    
	MOVW	(R7), FSR 
	ADD	$4, R7		/* assumes R7 is now MOVD-aligned */ 
1991/01151    
 
	MOVD	(0*4)(R7), F0 
	MOVD	(2*4)(R7), F2 


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