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

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

1991/0604/sys/src/9/ss/trap.c:309,3141991/0614/sys/src/9/ss/trap.c:309,315 (short | long | prev | next)
1990/1223    
long 
syscall(Ureg *aur) 
{ 
1991/0614    
	int i; 
1990/1223    
	long ret; 
	ulong sp; 
1990/1226    
	ulong r7; 
1991/0604/sys/src/9/ss/trap.c:349,3611991/0614/sys/src/9/ss/trap.c:350,368
1990/1223    
			msg = "sys: odd stack"; 
			goto Bad; 
		} 
		if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-5*BY2WD)) 
			validaddr(sp, 5*BY2WD, 0); 
1991/0614    
		if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-(2+MAXSYSARG)*BY2WD)) 
			validaddr(sp, ((2+MAXSYSARG)*BY2WD), 0); 
1990/1226    
		ret = (*systab[r7])((ulong*)(sp+2*BY2WD)); 
1991/0614    
		poperror(); 
1990/1223    
	} 
1990/1226    
	ur->pc += 4; 
	ur->npc = ur->pc+4; 
1990/1223    
	u->nerrlab = 0; 
1991/0614    
	if(u->nerrlab){ 
		print("unbalanced error stack: %d extra\n", u->nerrlab); 
		for(i = 0; i < NERR; i++) 
			print("sp=%lux pc=%lux\n", u->errlab[i].sp, u->errlab[i].pc); 
		panic("bad rob"); 
	} 
1990/1223    
	u->p->insyscall = 0; 
1990/1226    
	if(r7 == NOTED)	/* ugly hack */ 
1990/1223    
		noted(&aur);	/* doesn't return */ 


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