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

1991/1111/ss/trap.c (diff list | history)

1991/1108/sys/src/9/ss/trap.c:121,1261991/1111/sys/src/9/ss/trap.c:121,127 (short | long | prev | next)
1991/01151    
		default: 
			break; 
		} 
1991/1111    
    Error: 
1991/01151    
		if(user){ 
			spllo(); 
			sprint(buf, "sys: trap: pc=0x%lux %s", ur->pc, excname(tbr)); 
1991/1108/sys/src/9/ss/trap.c:128,1341991/1111/sys/src/9/ss/trap.c:129,134
1991/01151    
				sprint(buf+strlen(buf), " FSR %lux", u->fpsave.fsr); 
			postnote(u->p, 1, buf, NDebug); 
		}else{ 
    Error: 
			print("kernel trap: %s pc=0x%lux\n", excname(tbr), ur->pc); 
			dumpregs(ur); 
			for(;;); 
1991/1108/sys/src/9/ss/trap.c:136,1451991/1111/sys/src/9/ss/trap.c:136,142
1990/1223    
	} 
1991/01151    
    Return: 
1991/1108    
	if(user) { 
		if(u->p->procctl) 
			procctl(u->p); 
		if(u->nnote) 
			notify(ur); 
1991/1111    
		notify(ur); 
1991/1108    
		if(u->p->fpstate == FPinactive) { 
			restfpregs(&u->fpsave); 
			u->p->fpstate = FPactive; 
1991/1108/sys/src/9/ss/trap.c:219,2241991/1111/sys/src/9/ss/trap.c:216,225
1990/1223    
{ 
	ulong sp; 
 
1991/1111    
	if(u->p->procctl) 
		procctl(u->p); 
	if(u->nnote == 0) 
		return; 
1990/1223    
	lock(&u->p->debug); 
1991/0727    
	u->p->notepending = 0; 
1991/0112    
	if(u->nnote==0){ 
1991/1108/sys/src/9/ss/trap.c:345,3531991/1111/sys/src/9/ss/trap.c:346,351
1990/1223    
	} 
	spllo(); 
1991/1108    
 
	if(u->p->procctl) 
		procctl(u->p); 
                 
1990/1226    
	r7 = ur->r7; 
1990/1223    
	sp = ur->usp; 
 
1991/1108/sys/src/9/ss/trap.c:382,3881991/1111/sys/src/9/ss/trap.c:380,386
1991/0926    
	u->p->psstate = 0; 
1990/1226    
	if(r7 == NOTED)	/* ugly hack */ 
1991/0717    
		noted(&aur, *(ulong*)(sp+1*BY2WD));	/* doesn't return */ 
1991/0724    
	if(u->nnote && r7!=FORK){ 
1991/1111    
	if(u->p->procctl || (u->nnote && r7!=FORK)){ 
1990/1226    
		ur->r7 = ret; 
1990/1223    
		notify(ur); 
	} 
1991/1108/sys/src/9/ss/trap.c:393,3961991/1111/sys/src/9/ss/trap.c:391,403
1990/1226    
execpc(ulong entry) 
{ 
	((Ureg*)UREGADDR)->pc = entry - 4;		/* syscall advances it */ 
1991/1111    
} 
 
/* This routine must save the values of registers the user is not permitted 
 * to write from devproc and restore them before returning 
 */ 
void 
setregisters(Ureg *xp, char *pureg, char *uva, int n) 
{ 
	print("setregisters: no idea\n"); 
1990/1223    
} 


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