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

1990/1212/port/sysproc.c (diff list | history)

1990/1211/sys/src/9/port/sysproc.c:205,2141990/1212/sys/src/9/port/sysproc.c:205,211 (short | long | prev | next)
1990/0227    
 
    Binary: 
	t = (UTZERO+sizeof(Exec)+exec.text+(BY2PG-1)) & ~(BY2PG-1); 
	/* 
	 * Last partial page of data goes into BSS. 
	 */ 
	d = (t + exec.data) & ~(BY2PG-1); 
1990/1212    
	d = (t + exec.data + (BY2PG-1)) & ~(BY2PG-1); 
1990/1211    
	bssend = t + exec.data + exec.bss; 
	b = (bssend + (BY2PG-1)) & ~(BY2PG-1); 
1990/0227    
	if((t|d|b) & KZERO) 
1990/1211/sys/src/9/port/sysproc.c:311,3171990/1212/sys/src/9/port/sysproc.c:308,314
1990/0227    
	if(o == 0){ 
		o = neworig(t, (d-t)>>PGSHIFT, OWRPERM|OPURE|OCACHED, tc); 
		o->minca = p->seg[TSEG].o->maxca; 
		o->maxca = o->minca + (exec.data & ~(BY2PG-1)); 
1990/1212    
		o->maxca = o->minca + exec.data; 
1990/0227    
	} 
	s->o = o; 
	s->minva = t; 
1990/1211/sys/src/9/port/sysproc.c:319,3331990/1212/sys/src/9/port/sysproc.c:316,328
1990/0227    
	s->mod = 0; 
 
	/* 
	 * BSS.  Created afresh, starting with last page of data. 
	 * BUG: should pick up the last page of data, which should be cached in the 
	 * data segment. 
1990/1212    
	 * BSS.  Created afresh. 
1990/0227    
	 */ 
	s = &p->seg[BSEG]; 
	s->proc = p; 
	o = neworig(d, (b-d)>>PGSHIFT, OWRPERM, tc); 
	o->minca = p->seg[DSEG].o->maxca; 
	o->maxca = o->minca + (exec.data & (BY2PG-1)); 
1990/1212    
	o = neworig(d, (b-d)>>PGSHIFT, OWRPERM, 0); 
	o->minca = 0; 
	o->maxca = 0; 
1990/0227    
	s->o = o; 
	s->minva = d; 
	s->maxva = b; 
1990/1211/sys/src/9/port/sysproc.c:353,3591990/1212/sys/src/9/port/sysproc.c:348,354
1990/0227    
	unlock(o); 
 
	flushmmu(); 
1990/1211    
 	clearmmucache(); 
1990/1212    
	clearmmucache(); 
1990/1211    
	((Ureg*)UREGADDR)->pc = exec.entry + ENTRYOFFSET; 
1990/0227    
	sp = (ulong*)(USTKTOP - ssize); 
	*--sp = nargs; 
1990/1211/sys/src/9/port/sysproc.c:362,3681990/1212/sys/src/9/port/sysproc.c:357,363
1990/0227    
	u->nnote = 0; 
	u->notify = 0; 
	u->notified = 0; 
1990/1211    
	setup(p); 
1990/1212    
	procsetup(p); 
1990/0227    
	unlock(&p->debug); 
	return 0; 
} 


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