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

1992/0704/ss/faultsparc.c (diff list | history)

1992/0321/sys/src/9/ss/faultsparc.c:6,111992/0704/sys/src/9/ss/faultsparc.c:6,18 (short | long | prev | next)
1990/1223    
#include	"ureg.h" 
1992/0111    
#include	"../port/error.h" 
1990/1223    
 
1992/0704    
enum 
{ 
	SE_WRITE	= 0x8000, 
	SE_INV		= 0x0080, 
	SE_PROT		= 0x0040, 
}; 
 
1990/1223    
void 
1990/1226    
faultsparc(Ureg *ur) 
1990/1223    
{ 
1992/0321/sys/src/9/ss/faultsparc.c:12,181992/0704/sys/src/9/ss/faultsparc.c:19,25
1990/1223    
	ulong addr, badvaddr; 
1991/0717    
	char buf[ERRLEN]; 
1991/01151    
	int user, read; 
1990/1226    
	ulong tbr; 
1992/0704    
	ulong tbr, ser; 
1990/1223    
 
1990/1227    
	tbr = (ur->tbr&0xFFF)>>4; 
1990/1226    
	addr = ur->pc;			/* assume instr. exception */ 
1992/0321/sys/src/9/ss/faultsparc.c:22,281992/0704/sys/src/9/ss/faultsparc.c:29,36
1990/1231    
		 * According to the book, this isn't good enough.  We'll see. 
		 */ 
1990/1226    
		addr = getw2(SEVAR); 
1990/1231    
		if(getw2(SER) & 0x8000) 
1992/0704    
		ser = getw2(SER); 
		if(ser&(SE_WRITE|SE_PROT)) 
1990/1231    
			read = 0; 
1990/1226    
	} 
	spllo(); 


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