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

1991/0314/power/trap.c (diff list | history)

1991/0219/sys/src/9/power/trap.c:121,1331991/0314/sys/src/9/power/trap.c:121,133 (short | long | prev | next)
1990/0227    
 
	case CCPU: 
1990/0722    
		if(u && u->p && u->p->fpstate == FPinit) { 
1990/0227    
			restfpregs(&initfp); 
1991/0314    
			restfpregs(&initfp, u->fpsave.fpstatus); 
1990/0227    
			u->p->fpstate = FPactive; 
			ur->status |= CU1; 
			break; 
		} 
1990/0722    
		if(u && u->p && u->p->fpstate == FPinactive) { 
1990/0227    
			restfpregs(&u->fpsave); 
1991/0314    
			restfpregs(&u->fpsave, u->fpsave.fpstatus); 
1990/0227    
			u->p->fpstate = FPactive; 
			ur->status |= CU1; 
			break; 
1991/0219/sys/src/9/power/trap.c:166,1721991/0314/sys/src/9/power/trap.c:166,172
1990/0227    
		notify(ur); 
	splhi(); 
	if(user && u && u->p->fpstate == FPinactive) { 
		restfpregs(&u->fpsave); 
1991/0314    
		restfpregs(&u->fpsave, u->fpsave.fpstatus); 
1990/0227    
		u->p->fpstate = FPactive; 
		ur->status |= CU1; 
	} 
1991/0219/sys/src/9/power/trap.c:458,4661991/0314/sys/src/9/power/trap.c:458,468
1990/0901    
	ur->cause = 15<<2;		/* for debugging: system call is undef 15; 
1990/0227    
	/* 
	 * since the system call interface does not 
	 * guarantee anything about registers, 
1991/0314    
	 * guarantee anything about registers, we can 
	 * smash them.  but we must save fpstatus. 
1990/0227    
	 */ 
	if(u->p->fpstate == FPactive) { 
1991/0314    
		u->fpsave.fpstatus = fcr31(); 
1990/0722    
		u->p->fpstate = FPinit; 
1990/0227    
		ur->status &= ~CU1; 
	} 


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