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

1991/0115/ss/main.c (diff list | history)

1990/1223/sys/src/9/ss/main.c:14,231990/1226/sys/src/9/ss/main.c:14,24 (short | long)
1990/1223    
char bootline[64]; 
char bootserver[64]; 
char bootdevice[64]; 
int bank[2]; 
 
void unloadboot(void); 
 
1990/1226    
#ifdef asdf 
static int ok; 
1990/1223    
int 
Xprint(char *fmt, ...) 
{ 
1990/1223/sys/src/9/ss/main.c:24,291990/1226/sys/src/9/ss/main.c:25,34
1990/1223    
	char buf[PRINTSIZE]; 
	int n; 
 
1990/1226    
	if(!ok){ 
		sccsetup(); 
		ok = 1; 
	} 
1990/1223    
	n = doprint(buf, buf+sizeof(buf), fmt, (&fmt+1)) - buf; 
	sccputs(buf); 
	return n; 
1990/1223/sys/src/9/ss/main.c:34,391990/1226/sys/src/9/ss/main.c:39,48
1990/1223    
{ 
	int i; 
 
1990/1226    
	if(!ok){ 
		sccsetup(); 
		ok = 1; 
	} 
1990/1223    
	for(i=0; i<8; i++){ 
		sccputc("0123456789ABCDEF"[x>>28]); 
		x <<= 4; 
1990/1223/sys/src/9/ss/main.c:40,451990/1226/sys/src/9/ss/main.c:49,55
1990/1223    
	} 
	sccputc('\n'); 
} 
1990/1226    
#endif 
1990/1223    
 
void 
main(void) 
1990/1223/sys/src/9/ss/main.c:51,671990/1226/sys/src/9/ss/main.c:61,73
1990/1223    
 
	unloadboot(); 
	machinit(); 
#ifdef adsf 
	mmuinit(); 
	confinit(); 
1990/1226    
	mmuinit(); 
	printinit(); 
	print("sparc plan 9\n"); 
	trapinit(); 
1990/1223    
	kmapinit(); 
#endif 
	sccsetup(); 
	Xprint("hello world addr %lux pc %lux\n", &a, pc()); 
	reset(); 
#ifdef asdf 
	print("bank 0: %dM  bank 1: %dM\n", bank[0], bank[1]); 
	flushmmu(); 
1990/1226    
	cacheinit(); 
1990/1223    
	procinit0(); 
	pgrpinit(); 
	chaninit(); 
1990/1223/sys/src/9/ss/main.c:71,801990/1226/sys/src/9/ss/main.c:77,84
1990/1223    
/*	serviceinit(); /**/ 
/*	filsysinit(); /**/ 
	pageinit(); 
	kmapinit(); 
	userinit(); 
	schedinit(); 
#endif 
} 
 
void 
1990/1223/sys/src/9/ss/main.c:81,871990/1226/sys/src/9/ss/main.c:85,91
1990/1223    
reset(void) 
{ 
	delay(100); 
	putb2(0x40000000, 4); 
1990/1226    
	putb2(ENAB, ENABRESET); 
1990/1223    
} 
 
void 
1990/1223/sys/src/9/ss/main.c:90,961990/1226/sys/src/9/ss/main.c:94,100
1990/1223    
	strncpy(user, "rob", sizeof user); 
	memcpy(bootline, "9s", sizeof bootline); 
	memcpy(bootserver, "bootes", sizeof bootserver); 
	memcpy(bootdevice, "parnfucky", sizeof bootserver); 
1990/1226    
	memcpy(bootdevice, "parnfucky", sizeof bootdevice); 
1990/1223    
} 
 
void 
1990/1223/sys/src/9/ss/main.c:109,1361990/1226/sys/src/9/ss/main.c:113,118
1990/1223    
} 
 
void 
mmuinit(void) 
{ 
	ulong l, d, i; 
                 
	/* 
	 * Invalidate user addresses 
	 */ 
	for(l=0; l<4*1024*1024; l+=BY2PG) 
		putmmu(l, INVALIDPTE); 
	/* 
	 * Four meg of usable memory, with top 256K for screen 
	 */ 
	for(i=1,l=KTZERO; i<(4*1024*1024-256*1024)/BY2PG; l+=BY2PG,i++) 
		putkmmu(l, PPN(l)|PTEVALID|PTEKERNEL); 
	/* 
	 * Screen at top of memory 
	 */ 
	for(i=0,d=DISPLAYRAM; i<256*1024/BY2PG; d+=BY2PG,l+=BY2PG,i++) 
		putkmmu(l, PPN(d)|PTEVALID|PTEKERNEL); 
} 
                 
void 
init0(void) 
{ 
	Chan *c; 
1990/1223/sys/src/9/ss/main.c:157,1631990/1226/sys/src/9/ss/main.c:139,146
1990/1223    
		close(c); 
	} 
	poperror(); 
	touser(); 
1990/1226    
 
	touser(USTKTOP-5*BY2WD); 
1990/1223    
} 
 
FPsave	initfp; 
1990/1223/sys/src/9/ss/main.c:181,1871990/1226/sys/src/9/ss/main.c:164,169
1990/1223    
	 */ 
	p->sched.pc = (ulong)init0; 
	p->sched.sp = USERADDR+BY2PG-20;	/* BUG */ 
	p->sched.sr = SUPER|SPL(0); 
	p->upage = newpage(0, 0, USERADDR|(p->pid&0xFFFF)); 
 
	/* 
1990/1223/sys/src/9/ss/main.c:226,2331990/1226/sys/src/9/ss/main.c:208,216
1990/1223    
	u = 0; 
	splhi(); 
	print("exiting\n"); 
	for(;;) 
		; 
1990/1226    
for(;;) 
	delay(60*1000); 
	reset(); 
1990/1223    
} 
 
/* 
1990/1223/sys/src/9/ss/main.c:296,3261990/1226/sys/src/9/ss/main.c:279,284
1990/1223    
	where->next = old->next; 
} 
 
banksize(int base) 
{ 
	ulong va; 
                 
	if(&end > (int *)((KZERO|1024L*1024L)-BY2PG)) 
		return 0; 
	va = UZERO;	/* user page 1 is free to play with */ 
	putmmu(va, PTEVALID|(base+0)*1024L*1024L/BY2PG); 
	*(ulong*)va = 0;	/* 0 at 0M */ 
	putmmu(va, PTEVALID|(base+1)*1024L*1024L/BY2PG); 
	*(ulong*)va = 1;	/* 1 at 1M */ 
	putmmu(va, PTEVALID|(base+4)*1024L*1024L/BY2PG); 
	*(ulong*)va = 4;	/* 4 at 4M */ 
	putmmu(va, PTEVALID|(base+0)*1024L*1024L/BY2PG); 
	if(*(ulong*)va == 0) 
		return 16; 
	putmmu(va, PTEVALID|(base+1)*1024L*1024L/BY2PG); 
	if(*(ulong*)va == 1) 
		return 4; 
	putmmu(va, PTEVALID|(base+0)*1024L*1024L/BY2PG); 
	if(*(ulong*)va == 4) 
		return 1; 
	return 0; 
} 
                 
Conf	conf; 
 
void 
1990/1223/sys/src/9/ss/main.c:327,3441990/1226/sys/src/9/ss/main.c:285,300
1990/1223    
confinit(void) 
{ 
	int mul; 
1990/1226    
 
1990/1223    
	conf.nmach = 1; 
	if(conf.nmach > MAXMACH) 
		panic("confinit"); 
	bank[0] = banksize(0); 
	bank[1] = banksize(16); 
	conf.npage0 = (bank[0]*1024*1024)/BY2PG; 
1990/1226    
	conf.npage0 = (8*1024*1024)/BY2PG;	/* BUG */ 
	conf.npage = conf.npage0; 
1990/1223    
	conf.base0 = 0; 
	conf.npage1 = (bank[1]*1024*1024)/BY2PG; 
	conf.base1 = 16*1024*1024; 
	conf.npage = conf.npage0+conf.npage1; 
	conf.maxialloc = (4*1024*1024-256*1024-BY2PG); 
	mul = 1 + (conf.npage1>0); 
1990/1226    
	conf.maxialloc = 4*1024*1024;		/* BUG */ 
	mul = 2; 
1990/1223    
	conf.nproc = 50*mul; 
	conf.npgrp = 12*mul; 
	conf.npte = 700*mul; 
1990/1223/sys/src/9/ss/main.c:360,3671990/1226/sys/src/9/ss/main.c:316,321
1990/1223    
	conf.nsrv = 16*mul;			/* was 32 */ 
	conf.nbitmap = 300*mul; 
	conf.nbitbyte = 300*1024*mul; 
	if(*(uchar*)MOUSE & (1<<4)) 
		conf.nbitbyte *= 2;	/* ldepth 1 */ 
	conf.nfont = 10*mul; 
	conf.nurp = 32; 
	conf.nasync = 1; 
1990/1223/sys/src/9/ss/main.c:387,3931990/1226/sys/src/9/ss/main.c:341,346
1990/1223    
	fprestore((FPsave*)&fpnull); 
	spllo(); 
#endif 
	panic("procsetup"); 
} 
 
/* 
1990/1223/sys/src/9/ss/main.c:396,4081990/1226/sys/src/9/ss/main.c:349,355
1990/1223    
void 
procsave(uchar *state, int len) 
{ 
	panic("procsave"); 
#ifdef asdf 
	Balu *balu; 
                 
	if(len < sizeof(Balu)) 
		panic("save state too small"); 
	balu = (Balu *)state; 
	fpsave(&u->fpsave); 
	if(u->fpsave.type){ 
		if(u->fpsave.size > sizeof u->fpsave.junk) 
1990/1223/sys/src/9/ss/main.c:411,4221990/1226/sys/src/9/ss/main.c:358,363
1990/1223    
		u->p->fpstate = FPactive; 
		m->fpstate = FPdirty; 
	} 
	if(BALU->cr0 != 0xFFFFFFFF)	/* balu busy */ 
		memcpy(balu, BALU, sizeof(Balu)); 
	else{ 
		balu->cr0 = 0xFFFFFFFF; 
		BALU->cr0 = 0xFFFFFFFF; 
	} 
#endif 
} 
 
1990/1223/sys/src/9/ss/main.c:428,4381990/1226/sys/src/9/ss/main.c:369,375
1990/1223    
void 
procrestore(Proc *p, uchar *state) 
{ 
	panic("procrestore"); 
#ifdef asdf 
	Balu *balu; 
                 
	balu = (Balu *)state; 
	if(p->fpstate != m->fpstate){ 
		if(p->fpstate == FPinit){ 
			u->p->fpstate = FPinit; 
1990/1223/sys/src/9/ss/main.c:444,4501990/1226/sys/src/9/ss/main.c:381,385
1990/1223    
			m->fpstate = FPdirty; 
		} 
	} 
	if(balu->cr0 != 0xFFFFFFFF)	/* balu busy */ 
		memcpy(BALU, balu, sizeof balu); 
#endif 
} 
1990/1226/sys/src/9/ss/main.c:78,831990/1227/sys/src/9/ss/main.c:78,89 (short | long)
1990/1223    
/*	filsysinit(); /**/ 
	pageinit(); 
	userinit(); 
1990/1227    
{KMap *k; 
k = kmappa(0xF5000000, PTENOCACHE|PTEIO); 
print("interrupt %ux\n", *(uchar*)k->va); 
kunmap(k); 
} 
	clockinit(); 
1990/1223    
	schedinit(); 
} 
 
1990/1227/sys/src/9/ss/main.c:78,881990/1231/sys/src/9/ss/main.c:78,83 (short | long)
1990/1223    
/*	filsysinit(); /**/ 
	pageinit(); 
	userinit(); 
1990/1227    
{KMap *k; 
k = kmappa(0xF5000000, PTENOCACHE|PTEIO); 
print("interrupt %ux\n", *(uchar*)k->va); 
kunmap(k); 
} 
	clockinit(); 
1990/1223    
	schedinit(); 
} 
1990/1227/sys/src/9/ss/main.c:323,3281990/1231/sys/src/9/ss/main.c:318,325
1990/1223    
	conf.nbitmap = 300*mul; 
	conf.nbitbyte = 300*1024*mul; 
	conf.nfont = 10*mul; 
1990/1231    
	conf.nnoifc = 1; 
	conf.nnoconv = 32; 
1990/1223    
	conf.nurp = 32; 
	conf.nasync = 1; 
	conf.npipe = conf.nstream/2; 
1990/1227/sys/src/9/ss/main.c:329,3341990/1231/sys/src/9/ss/main.c:326,389
1990/1223    
	conf.nservice = 3*mul;			/* was conf.nproc/5 */ 
	conf.nfsyschan = 31 + conf.nchan/20; 
	conf.copymode = 0;		/* copy on write */ 
1990/1231    
} 
 
/* 
 *  set up the lance 
 */ 
void 
lancesetup(Lance *lp) 
{ 
	KMap *k; 
	ushort *sp; 
	uchar *cp; 
	ulong pa; 
	int i; 
 
k = kmappa(0xF8400000, PTEIO|PTENOCACHE); 
print("dma reg %lux\n", *(ulong*)k->va); 
kunmap(k); 
 
	k = kmappa(ETHER, PTEIO|PTENOCACHE); 
	lp->rdp = (void*)(k->va+0); 
	lp->rap = (void*)(k->va+2); 
	k = kmappa(EEPROM, PTEIO|PTENOCACHE); 
	cp = (uchar*)(k->va+0x7da); 
	for(i=0; i<6; i++) 
		lp->ea[i] = *cp++; 
	kunmap(k); 
 
	lp->lognrrb = 1;	/* should be larger */ 
	lp->logntrb = 1;	/* should be larger */ 
	lp->nrrb = 1<<lp->lognrrb; 
	lp->ntrb = 1<<lp->logntrb; 
 
	lp->sep = 1; 
 
	/* 
	 *  allocate area for lance init block and descriptor rings 
	 */ 
	pa = (ulong)ialloc(BY2PG, 1)&~KZERO;	/* one whole page */ 
	k = kmappa(pa, PTEMAINMEM|PTENOCACHE); 
	lp->lanceram = (ushort*)k->va; 
	lp->lm = (Lancemem*)k->va; 
	print("lm %lux %lux\n", k->va, k->pa); 
 
	/* 
	 *  Allocate space in host memory for the io buffers. 
	 */ 
	i = lp->nrrb*sizeof(Etherpkt); 
	i = (i+(BY2PG-1))/BY2PG; 
	if(i != 1) 
		panic("lancesetup"); 
	pa = (ulong)ialloc(i*BY2PG, 1)&~KZERO; 
	k = kmappa(pa, PTEMAINMEM|PTENOCACHE); 
	lp->lrp = (Etherpkt*)k->va; 
	lp->rp = (Etherpkt*)k->va; 
	pa = (ulong)ialloc(i*BY2PG, 1)&~KZERO; 
	k = kmappa(pa, PTEMAINMEM|PTENOCACHE); 
	lp->ltp = (Etherpkt*)k->va; 
	lp->tp = (Etherpkt*)k->va; 
1990/1223    
} 
 
/* 
1990/1231/sys/src/9/ss/main.c:337,3491991/0108/sys/src/9/ss/main.c:337,345 (short | long)
1990/1231    
	KMap *k; 
	ushort *sp; 
	uchar *cp; 
	ulong pa; 
	int i; 
1991/0108    
	ulong pa, pte, va; 
	int i, j; 
1990/1231    
 
k = kmappa(0xF8400000, PTEIO|PTENOCACHE); 
print("dma reg %lux\n", *(ulong*)k->va); 
kunmap(k); 
                 
	k = kmappa(ETHER, PTEIO|PTENOCACHE); 
	lp->rdp = (void*)(k->va+0); 
	lp->rap = (void*)(k->va+2); 
1990/1231/sys/src/9/ss/main.c:353,3601991/0108/sys/src/9/ss/main.c:349,356
1990/1231    
		lp->ea[i] = *cp++; 
	kunmap(k); 
 
	lp->lognrrb = 1;	/* should be larger */ 
	lp->logntrb = 1;	/* should be larger */ 
1991/0108    
	lp->lognrrb = 2;	/* should be larger */ 
	lp->logntrb = 2;	/* should be larger */ 
1990/1231    
	lp->nrrb = 1<<lp->lognrrb; 
	lp->ntrb = 1<<lp->logntrb; 
 
1990/1231/sys/src/9/ss/main.c:361,3891991/0108/sys/src/9/ss/main.c:357,403
1990/1231    
	lp->sep = 1; 
 
	/* 
	 *  allocate area for lance init block and descriptor rings 
1991/0108    
	 * Allocate area for lance init block and descriptor rings 
1990/1231    
	 */ 
	pa = (ulong)ialloc(BY2PG, 1)&~KZERO;	/* one whole page */ 
1991/0108    
	/* map at LANCESEGM */ 
1990/1231    
	k = kmappa(pa, PTEMAINMEM|PTENOCACHE); 
1991/0108    
print("init block va %lux\n", k->va); 
1990/1231    
	lp->lanceram = (ushort*)k->va; 
	lp->lm = (Lancemem*)k->va; 
	print("lm %lux %lux\n", k->va, k->pa); 
 
	/* 
	 *  Allocate space in host memory for the io buffers. 
1991/0108    
	 * Allocate space in host memory for the io buffers. 
	 * Allocate a block and kmap it page by page.  kmap's are initially 
	 * in reverse order so rearrange them. 
1990/1231    
	 */ 
	i = lp->nrrb*sizeof(Etherpkt); 
1991/0108    
	i = (lp->nrrb+lp->ntrb)*sizeof(Etherpkt); 
1990/1231    
	i = (i+(BY2PG-1))/BY2PG; 
	if(i != 1) 
		panic("lancesetup"); 
1991/0108    
print("%d lance buffers\n", i); 
1990/1231    
	pa = (ulong)ialloc(i*BY2PG, 1)&~KZERO; 
	k = kmappa(pa, PTEMAINMEM|PTENOCACHE); 
1991/0108    
	va = 0; 
	for(j=i-1; j>=0; j--){ 
		k = kmappa(pa+j*BY2PG, PTEMAINMEM|PTENOCACHE); 
		if(va){ 
			if(va != k->va+BY2PG) 
				panic("lancesetup va unordered"); 
			va = k->va; 
		} 
	} 
	/* 
	 * k->va is the base of the region 
	 */ 
1990/1231    
	lp->lrp = (Etherpkt*)k->va; 
	lp->rp = (Etherpkt*)k->va; 
	pa = (ulong)ialloc(i*BY2PG, 1)&~KZERO; 
	k = kmappa(pa, PTEMAINMEM|PTENOCACHE); 
	lp->ltp = (Etherpkt*)k->va; 
	lp->tp = (Etherpkt*)k->va; 
1991/0108    
	lp->ltp = lp->lrp+lp->nrrb; 
	lp->tp = lp->rp+lp->nrrb; 
print("rp %lux tp %lux lm %lux\n", lp->rp, lp->tp, lp->lm); 
print("*rp %lux *tp %lux *lm %lux\n", *(ulong*)lp->rp, *(ulong*)lp->tp, *(ulong*)lp->lm); 
*(ulong*)lp->rp = 0; 
	k = kmappa(0xF8400000, PTEIO|PTENOCACHE); 
print("dma %lux %lux\n", k->va, *(ulong*)(k->va+4)); 
	*(ulong*)(k->va+4) = 0; 
	kunmap(k); 
1990/1223    
} 
 
/* 
1991/0108/sys/src/9/ss/main.c:92,981991/0109/sys/src/9/ss/main.c:92,98 (short | long)
1990/1223    
void 
unloadboot(void) 
{ 
	strncpy(user, "rob", sizeof user); 
1991/0109    
	strncpy(user, "bootes", sizeof user); 
1990/1223    
	memcpy(bootline, "9s", sizeof bootline); 
	memcpy(bootserver, "bootes", sizeof bootserver); 
1990/1226    
	memcpy(bootdevice, "parnfucky", sizeof bootdevice); 
1991/0108/sys/src/9/ss/main.c:157,1631991/0109/sys/src/9/ss/main.c:157,162
1990/1223    
	p = newproc(); 
	p->pgrp = newpgrp(); 
	strcpy(p->text, "*init*"); 
	strcpy(p->pgrp->user, user); 
	p->fpstate = FPinit; 
 
	/* 
1991/0108/sys/src/9/ss/main.c:340,3601991/0109/sys/src/9/ss/main.c:339,359
1991/0108    
	ulong pa, pte, va; 
	int i, j; 
1990/1231    
 
	k = kmappa(ETHER, PTEIO|PTENOCACHE); 
1991/0109    
	k = kmappa(ETHER, PTEIO); 
1990/1231    
	lp->rdp = (void*)(k->va+0); 
	lp->rap = (void*)(k->va+2); 
	k = kmappa(EEPROM, PTEIO|PTENOCACHE); 
1991/0109    
	k = kmappa(EEPROM, PTEIO); 
1990/1231    
	cp = (uchar*)(k->va+0x7da); 
	for(i=0; i<6; i++) 
		lp->ea[i] = *cp++; 
	kunmap(k); 
 
1991/0108    
	lp->lognrrb = 2;	/* should be larger */ 
	lp->logntrb = 2;	/* should be larger */ 
1991/0109    
	lp->lognrrb = 5; 
	lp->logntrb = 5; 
1990/1231    
	lp->nrrb = 1<<lp->lognrrb; 
	lp->ntrb = 1<<lp->logntrb; 
                 
	lp->sep = 1; 
1991/0109    
	lp->busctl = BSWP | ACON | BCON; 
1990/1231    
 
	/* 
1991/0108    
	 * Allocate area for lance init block and descriptor rings 
1991/0108/sys/src/9/ss/main.c:361,3671991/0109/sys/src/9/ss/main.c:360,366
1990/1231    
	 */ 
	pa = (ulong)ialloc(BY2PG, 1)&~KZERO;	/* one whole page */ 
1991/0108    
	/* map at LANCESEGM */ 
1990/1231    
	k = kmappa(pa, PTEMAINMEM|PTENOCACHE); 
1991/0109    
	k = kmappa(pa, PTEMAINMEM); 
1991/0108    
print("init block va %lux\n", k->va); 
1990/1231    
	lp->lanceram = (ushort*)k->va; 
	lp->lm = (Lancemem*)k->va; 
1991/0108/sys/src/9/ss/main.c:377,3831991/0109/sys/src/9/ss/main.c:376,382
1990/1231    
	pa = (ulong)ialloc(i*BY2PG, 1)&~KZERO; 
1991/0108    
	va = 0; 
	for(j=i-1; j>=0; j--){ 
		k = kmappa(pa+j*BY2PG, PTEMAINMEM|PTENOCACHE); 
1991/0109    
		k = kmappa(pa+j*BY2PG, PTEMAINMEM); 
1991/0108    
		if(va){ 
			if(va != k->va+BY2PG) 
				panic("lancesetup va unordered"); 
1991/0108/sys/src/9/ss/main.c:391,4031991/0109/sys/src/9/ss/main.c:390,395
1990/1231    
	lp->rp = (Etherpkt*)k->va; 
1991/0108    
	lp->ltp = lp->lrp+lp->nrrb; 
	lp->tp = lp->rp+lp->nrrb; 
print("rp %lux tp %lux lm %lux\n", lp->rp, lp->tp, lp->lm); 
print("*rp %lux *tp %lux *lm %lux\n", *(ulong*)lp->rp, *(ulong*)lp->tp, *(ulong*)lp->lm); 
*(ulong*)lp->rp = 0; 
	k = kmappa(0xF8400000, PTEIO|PTENOCACHE); 
print("dma %lux %lux\n", k->va, *(ulong*)(k->va+4)); 
	*(ulong*)(k->va+4) = 0; 
	kunmap(k); 
1990/1223    
} 
 
/* 
1991/0109/sys/src/9/ss/main.c:15,201991/0110/sys/src/9/ss/main.c:15,22 (short | long)
1990/1223    
char bootserver[64]; 
char bootdevice[64]; 
 
1991/0110    
uchar *intrreg; 
 
1990/1223    
void unloadboot(void); 
 
1990/1226    
#ifdef asdf 
1991/0109/sys/src/9/ss/main.c:68,731991/0110/sys/src/9/ss/main.c:70,76
1990/1226    
	trapinit(); 
1990/1223    
	kmapinit(); 
1990/1226    
	cacheinit(); 
1991/0110    
	intrinit(); 
1990/1223    
	procinit0(); 
	pgrpinit(); 
	chaninit(); 
1991/0109/sys/src/9/ss/main.c:83,881991/0110/sys/src/9/ss/main.c:86,100
1990/1223    
} 
 
void 
1991/0110    
intrinit(void) 
{ 
	KMap *k; 
 
	k = kmappa(INTRREG, PTEIO); 
	intrreg = (uchar*)k->va; 
} 
 
void 
1990/1223    
reset(void) 
{ 
	delay(100); 
1991/0109/sys/src/9/ss/main.c:162,1681991/0110/sys/src/9/ss/main.c:174,180
1990/1223    
	/* 
	 * Kernel Stack 
	 */ 
	p->sched.pc = (ulong)init0; 
1991/0110    
	p->sched.pc = (((ulong)init0) - 8);	/* 8 because of RETURN in gotolabel */ 
1990/1223    
	p->sched.sp = USERADDR+BY2PG-20;	/* BUG */ 
	p->upage = newpage(0, 0, USERADDR|(p->pid&0xFFFF)); 
 
1991/0109/sys/src/9/ss/main.c:289,2951991/0110/sys/src/9/ss/main.c:301,307
1990/1223    
	conf.nmach = 1; 
	if(conf.nmach > MAXMACH) 
		panic("confinit"); 
1990/1226    
	conf.npage0 = (8*1024*1024)/BY2PG;	/* BUG */ 
1991/0110    
	conf.npage0 = (6*1024*1024)/BY2PG;	/* BUG */ 
1990/1226    
	conf.npage = conf.npage0; 
1990/1223    
	conf.base0 = 0; 
	conf.npage = conf.npage0+conf.npage1; 
1991/0109/sys/src/9/ss/main.c:297,3041991/0110/sys/src/9/ss/main.c:309,316
1990/1226    
	mul = 2; 
1990/1223    
	conf.nproc = 50*mul; 
	conf.npgrp = 12*mul; 
	conf.npte = 700*mul; 
	conf.nmod = 400*mul; 
1991/0110    
	conf.npte = 1400*mul; 
	conf.nmod = 800*mul; 
1990/1223    
	conf.nalarm = 1000; 
	conf.norig = 150*mul; 
	conf.nchan = 200*mul; 
1991/0110/sys/src/9/ss/main.c:66,741991/0111/sys/src/9/ss/main.c:66,75 (short | long)
1990/1223    
	confinit(); 
1990/1226    
	mmuinit(); 
	printinit(); 
	print("sparc plan 9\n"); 
1991/0111    
	print("sparc plan 9 %lux\n", getb2(ENAB)); 
1990/1226    
	trapinit(); 
1990/1223    
	kmapinit(); 
1991/0111    
	print("sparc plan 9 %lux\n", getb2(ENAB)); 
1990/1226    
	cacheinit(); 
1991/0110    
	intrinit(); 
1990/1223    
	procinit0(); 
1991/0110/sys/src/9/ss/main.c:220,2271991/0111/sys/src/9/ss/main.c:221,227
1990/1223    
	u = 0; 
	splhi(); 
	print("exiting\n"); 
1990/1226    
for(;;) 
	delay(60*1000); 
1991/0111    
	delay(30*1000); 
1990/1226    
	reset(); 
1990/1223    
} 
 
1991/0110/sys/src/9/ss/main.c:301,3121991/0111/sys/src/9/ss/main.c:301,315
1990/1223    
	conf.nmach = 1; 
	if(conf.nmach > MAXMACH) 
		panic("confinit"); 
1991/0110    
	conf.npage0 = (6*1024*1024)/BY2PG;	/* BUG */ 
1990/1226    
	conf.npage = conf.npage0; 
1991/0111    
	conf.npage0 = (4*1024*1024)/BY2PG;	/* BUG */ 
	conf.npage1 = 0*(4*1024*1024)/BY2PG;	/* BUG */ 
1990/1223    
	conf.base0 = 0; 
1991/0111    
	conf.base1 = 16*1024*1024; 
1990/1223    
	conf.npage = conf.npage0+conf.npage1; 
1990/1226    
	conf.maxialloc = 4*1024*1024;		/* BUG */ 
	mul = 2; 
1991/0111    
	mul = 1; 
	if(conf.npage1 > 0) 
		mul = 2; 
1990/1223    
	conf.nproc = 50*mul; 
	conf.npgrp = 12*mul; 
1991/0110    
	conf.npte = 1400*mul; 
1991/0110/sys/src/9/ss/main.c:320,3261991/0111/sys/src/9/ss/main.c:323,329
1990/1223    
	conf.nmtab = 50*mul; 
	conf.nmount = 80*mul; 
	conf.nmntdev = 10*mul; 
	conf.nmntbuf = conf.nmntdev+3; 
1991/0111    
	conf.nmntbuf = conf.nmntdev+6; 
1990/1223    
	conf.nmnthdr = 2*conf.nmntdev; 
	conf.nstream = 40 + 32*mul; 
	conf.nqueue = 5 * conf.nstream; 
1991/0111/sys/src/9/ss/main.c:11,591991/0112/sys/src/9/ss/main.c:11,20 (short | long)
1990/1223    
#include	<gnot.h> 
 
char user[NAMELEN]; 
char bootline[64]; 
char bootserver[64]; 
char bootdevice[64]; 
 
1991/0110    
uchar *intrreg; 
 
1990/1223    
void unloadboot(void); 
                 
1990/1226    
#ifdef asdf 
static int ok; 
1990/1223    
int 
Xprint(char *fmt, ...) 
{ 
	char buf[PRINTSIZE]; 
	int n; 
                 
1990/1226    
	if(!ok){ 
		sccsetup(); 
		ok = 1; 
	} 
1990/1223    
	n = doprint(buf, buf+sizeof(buf), fmt, (&fmt+1)) - buf; 
	sccputs(buf); 
	return n; 
} 
                 
void 
putx(ulong x) 
{ 
	int i; 
                 
1990/1226    
	if(!ok){ 
		sccsetup(); 
		ok = 1; 
	} 
1990/1223    
	for(i=0; i<8; i++){ 
		sccputc("0123456789ABCDEF"[x>>28]); 
		x <<= 4; 
	} 
	sccputc('\n'); 
} 
1990/1226    
#endif 
1990/1223    
                 
void 
main(void) 
{ 
	int a; 
1991/0111/sys/src/9/ss/main.c:61,751991/0112/sys/src/9/ss/main.c:22,34
1990/1223    
	u = 0; 
	memset(&edata, 0, (char*)&end-(char*)&edata); 
 
	unloadboot(); 
	machinit(); 
	confinit(); 
1990/1226    
	mmuinit(); 
	printinit(); 
1991/0111    
	print("sparc plan 9 %lux\n", getb2(ENAB)); 
1991/0112    
	print("sparc plan 9\n"); 
1990/1226    
	trapinit(); 
1990/1223    
	kmapinit(); 
1991/0111    
	print("sparc plan 9 %lux\n", getb2(ENAB)); 
1990/1226    
	cacheinit(); 
1991/0110    
	intrinit(); 
1990/1223    
	procinit0(); 
1991/0111/sys/src/9/ss/main.c:102,1151991/0112/sys/src/9/ss/main.c:61,66
1990/1226    
	putb2(ENAB, ENABRESET); 
1990/1223    
} 
 
void 
unloadboot(void) 
{ 
1991/0109    
	strncpy(user, "bootes", sizeof user); 
1990/1223    
	memcpy(bootline, "9s", sizeof bootline); 
	memcpy(bootserver, "bootes", sizeof bootserver); 
1990/1226    
	memcpy(bootdevice, "parnfucky", sizeof bootdevice); 
1990/1223    
} 
 
void 
machinit(void) 
1991/0111/sys/src/9/ss/main.c:141,1581991/0112/sys/src/9/ss/main.c:92,97
1990/1223    
	 
	u->slash = (*devtab[0].attach)(0); 
	u->dot = clone(u->slash, 0); 
	if(!waserror()){ 
		c = namec("#e/bootline", Acreate, OWRITE, 0600); 
		(*devtab[c->type].write)(c, bootline, 64); 
		close(c); 
		c = namec("#e/bootserver", Acreate, OWRITE, 0600); 
		(*devtab[c->type].write)(c, bootserver, 64); 
		close(c); 
		c = namec("#e/bootdevice", Acreate, OWRITE, 0600); 
		(*devtab[c->type].write)(c, bootdevice, 2); 
		close(c); 
	} 
	poperror(); 
1990/1226    
 
	touser(USTKTOP-5*BY2WD); 
1990/1223    
} 
1991/0111/sys/src/9/ss/main.c:304,3101991/0112/sys/src/9/ss/main.c:243,249
1991/0111    
	conf.npage0 = (4*1024*1024)/BY2PG;	/* BUG */ 
	conf.npage1 = 0*(4*1024*1024)/BY2PG;	/* BUG */ 
1990/1223    
	conf.base0 = 0; 
1991/0111    
	conf.base1 = 16*1024*1024; 
1991/0112    
	conf.base1 = 32*1024*1024; 
1990/1223    
	conf.npage = conf.npage0+conf.npage1; 
1990/1226    
	conf.maxialloc = 4*1024*1024;		/* BUG */ 
1991/0111    
	mul = 1; 
1991/0112/sys/src/9/ss/main.c:241,2471991/0115/sys/src/9/ss/main.c:241,247 (short | long)
1990/1223    
	if(conf.nmach > MAXMACH) 
		panic("confinit"); 
1991/0111    
	conf.npage0 = (4*1024*1024)/BY2PG;	/* BUG */ 
	conf.npage1 = 0*(4*1024*1024)/BY2PG;	/* BUG */ 
1991/0115    
	conf.npage1 = (4*1024*1024)/BY2PG;	/* BUG */ 
1990/1223    
	conf.base0 = 0; 
1991/0112    
	conf.base1 = 32*1024*1024; 
1990/1223    
	conf.npage = conf.npage0+conf.npage1; 
1991/0115/sys/src/9/ss/main.c:71,801991/01151/sys/src/9/ss/main.c:71,77 (short | long)
1990/1223    
	memset(m, 0, sizeof(Mach)); 
	m->machno = n; 
	m->mmask = 1<<m->machno; 
#ifdef adsf 
	m->fpstate = FPinit; 
	fprestore(&initfp); 
#endif 
} 
 
void 
1991/0115/sys/src/9/ss/main.c:109,1141991/01151/sys/src/9/ss/main.c:106,112
1990/1223    
	p = newproc(); 
	p->pgrp = newpgrp(); 
	strcpy(p->text, "*init*"); 
1991/01151    
	savefpregs(&initfp); 
1990/1223    
	p->fpstate = FPinit; 
 
	/* 
1991/0115/sys/src/9/ss/main.c:344,4061991/01151/sys/src/9/ss/main.c:342,345
1990/1231    
	lp->rp = (Etherpkt*)k->va; 
1991/0108    
	lp->ltp = lp->lrp+lp->nrrb; 
	lp->tp = lp->rp+lp->nrrb; 
1990/1223    
} 
                 
/* 
 *  set up floating point for a new process 
 */ 
void 
procsetup(Proc *p) 
{ 
#ifdef asdf 
	long fpnull; 
                 
	fpnull = 0; 
	splhi(); 
	m->fpstate = FPinit; 
	p->fpstate = FPinit; 
	fprestore((FPsave*)&fpnull); 
	spllo(); 
#endif 
} 
                 
/* 
 * Save the part of the process state. 
 */ 
void 
procsave(uchar *state, int len) 
{ 
#ifdef asdf 
	fpsave(&u->fpsave); 
	if(u->fpsave.type){ 
		if(u->fpsave.size > sizeof u->fpsave.junk) 
			panic("fpsize %d max %d\n", u->fpsave.size, sizeof u->fpsave.junk); 
		fpregsave(u->fpsave.reg); 
		u->p->fpstate = FPactive; 
		m->fpstate = FPdirty; 
	} 
#endif 
} 
                 
/* 
 *  Restore what procsave() saves 
 * 
 *  Procsave() makes sure that what state points to is long enough 
 */ 
void 
procrestore(Proc *p, uchar *state) 
{ 
#ifdef asdf 
	if(p->fpstate != m->fpstate){ 
		if(p->fpstate == FPinit){ 
			u->p->fpstate = FPinit; 
			fprestore(&initfp); 
			m->fpstate = FPinit; 
		}else{ 
			fpregrestore(u->fpsave.reg); 
			fprestore(&u->fpsave); 
			m->fpstate = FPdirty; 
		} 
	} 
#endif 
} 
1991/01151/sys/src/9/ss/main.c:260,2661991/0117/sys/src/9/ss/main.c:260,266 (short | long)
1990/1223    
	conf.nmtab = 50*mul; 
	conf.nmount = 80*mul; 
	conf.nmntdev = 10*mul; 
1991/0111    
	conf.nmntbuf = conf.nmntdev+6; 
1991/0117    
	conf.nmntbuf = conf.nmntdev+3; 
1990/1223    
	conf.nmnthdr = 2*conf.nmntdev; 
	conf.nstream = 40 + 32*mul; 
	conf.nqueue = 5 * conf.nstream; 
1991/0117/sys/src/9/ss/main.c:142,1481991/0318/sys/src/9/ss/main.c:142,148 (short | long)
1990/1223    
	s->o->pte[0].page = newpage(0, 0, UTZERO); 
	s->o->npage = 1; 
	k = kmap(s->o->pte[0].page); 
	memcpy((ulong*)VA(k), initcode, sizeof initcode); 
1991/0318    
	memmove((ulong*)VA(k), initcode, sizeof initcode); 
1990/1223    
	kunmap(k); 
	s->minva = UTZERO; 
	s->maxva = UTZERO+BY2PG; 
1991/0318/sys/src/9/ss/main.c:25,341991/0604/sys/src/9/ss/main.c:25,36 (short | long)
1990/1223    
	machinit(); 
	confinit(); 
1990/1226    
	mmuinit(); 
1991/0604    
	screeninit(); 
1990/1226    
	printinit(); 
1991/0112    
	print("sparc plan 9\n"); 
1990/1226    
	trapinit(); 
1990/1223    
	kmapinit(); 
1991/0604    
	ioinit(); 
1990/1226    
	cacheinit(); 
1991/0110    
	intrinit(); 
1990/1223    
	procinit0(); 
1991/0318/sys/src/9/ss/main.c:75,801991/0604/sys/src/9/ss/main.c:77,94
1990/1223    
} 
 
void 
1991/0604    
ioinit(void) 
{ 
	KMap *k; 
 
	k = kmappa(KMDUART, PTEIO|PTENOCACHE); 
	sccsetup((void*)(k->va)); 
	sccspecial(0, 0, &kbdq, 2400);		/* scc port 0 is the keyboard */ 
	kbdq.putc = kbdstate; 
	sccspecial(1, 0, &mouseq, 2400);	/* scc port 1 is the mouse */ 
} 
 
void 
1990/1223    
init0(void) 
{ 
	Chan *c; 
1991/0318/sys/src/9/ss/main.c:342,3451991/0604/sys/src/9/ss/main.c:356,365
1990/1231    
	lp->rp = (Etherpkt*)k->va; 
1991/0108    
	lp->ltp = lp->lrp+lp->nrrb; 
	lp->tp = lp->rp+lp->nrrb; 
1991/0604    
} 
 
void 
firmware(void) 
{ 
	reset(); 
1990/1223    
} 
1991/0604/sys/src/9/ss/main.c:81,911991/0608/sys/src/9/ss/main.c:81,96 (short | long)
1991/0604    
{ 
	KMap *k; 
 
1991/0608    
	/* tell scc driver it's address */ 
1991/0604    
	k = kmappa(KMDUART, PTEIO|PTENOCACHE); 
	sccsetup((void*)(k->va)); 
	sccspecial(0, 0, &kbdq, 2400);		/* scc port 0 is the keyboard */ 
1991/0608    
 
	/* scc port 0 is the keyboard */ 
	sccspecial(0, 0, &kbdq, 2400); 
1991/0604    
	kbdq.putc = kbdstate; 
	sccspecial(1, 0, &mouseq, 2400);	/* scc port 1 is the mouse */ 
1991/0608    
 
	/* scc port 1 is the mouse */ 
	sccspecial(1, 0, &mouseq, 2400); 
1991/0604    
} 
 
void 
1991/0604/sys/src/9/ss/main.c:170,1781991/0608/sys/src/9/ss/main.c:175,186
1990/1223    
	int i; 
 
	u = 0; 
1991/0608    
	spllo(); 
	print("cpu %d exiting\n", m->machno); 
	while(consactive()) 
		for(i=0; i<1000; i++) 
			; 
1990/1223    
	splhi(); 
	print("exiting\n"); 
1991/0111    
	delay(30*1000); 
1990/1226    
	reset(); 
1990/1223    
} 
 
1991/0604/sys/src/9/ss/main.c:291,2961991/0608/sys/src/9/ss/main.c:299,305
1990/1223    
	conf.nservice = 3*mul;			/* was conf.nproc/5 */ 
	conf.nfsyschan = 31 + conf.nchan/20; 
	conf.copymode = 0;		/* copy on write */ 
1991/0608    
	conf.cntrlp = 0; 
1990/1231    
} 
 
/* 
1991/0608/sys/src/9/ss/main.c:34,401991/0706/sys/src/9/ss/main.c:34,41 (short | long)
1990/1226    
	cacheinit(); 
1991/0110    
	intrinit(); 
1990/1223    
	procinit0(); 
	pgrpinit(); 
1991/0706    
	initseg(); 
	grpinit(); 
1990/1223    
	chaninit(); 
	alarminit(); 
	chandevreset(); 
1991/0608/sys/src/9/ss/main.c:109,1141991/0706/sys/src/9/ss/main.c:110,116
1990/1223    
	u->slash = (*devtab[0].attach)(0); 
	u->dot = clone(u->slash, 0); 
1990/1226    
 
1991/0706    
	kickpager(); 
1990/1226    
	touser(USTKTOP-5*BY2WD); 
1990/1223    
} 
 
1991/0608/sys/src/9/ss/main.c:118,1291991/0706/sys/src/9/ss/main.c:120,134
1990/1223    
userinit(void) 
{ 
	Proc *p; 
	Seg *s; 
1991/0706    
	Segment *s; 
1990/1223    
	User *up; 
	KMap *k; 
 
	p = newproc(); 
	p->pgrp = newpgrp(); 
1991/0706    
	p->egrp = newegrp(); 
	p->fgrp = newfgrp(); 
 
1990/1223    
	strcpy(p->text, "*init*"); 
1991/01151    
	savefpregs(&initfp); 
1990/1223    
	p->fpstate = FPinit; 
1991/0608/sys/src/9/ss/main.c:146,1701991/0706/sys/src/9/ss/main.c:151,168
1990/1223    
	/* 
	 * User Stack 
	 */ 
	s = &p->seg[SSEG]; 
	s->proc = p; 
	s->o = neworig(USTKTOP-BY2PG, 1, OWRPERM, 0); 
	s->minva = USTKTOP-BY2PG; 
	s->maxva = USTKTOP; 
1991/0706    
	s = newseg(SG_STACK, USTKTOP-BY2PG, 1); 
	p->seg[SSEG] = s; 
1990/1223    
 
	/* 
	 * Text 
	 */ 
	s = &p->seg[TSEG]; 
	s->proc = p; 
	s->o = neworig(UTZERO, 1, 0, 0); 
	s->o->pte[0].page = newpage(0, 0, UTZERO); 
	s->o->npage = 1; 
	k = kmap(s->o->pte[0].page); 
1991/0706    
	s = newseg(SG_TEXT, UTZERO, 1); 
	p->seg[TSEG] = s; 
	segpage(s, newpage(1, 0, UTZERO)); 
	k = kmap(s->map[0]->pages[0]); 
1991/0318    
	memmove((ulong*)VA(k), initcode, sizeof initcode); 
1990/1223    
	kunmap(k); 
	s->minva = UTZERO; 
	s->maxva = UTZERO+BY2PG; 
 
	ready(p); 
} 
1991/0608/sys/src/9/ss/main.c:271,2801991/0706/sys/src/9/ss/main.c:269,279
1991/0111    
		mul = 2; 
1990/1223    
	conf.nproc = 50*mul; 
	conf.npgrp = 12*mul; 
1991/0110    
	conf.npte = 1400*mul; 
	conf.nmod = 800*mul; 
1991/0706    
	conf.nseg = conf.nproc*4; 
	conf.npagetab = conf.nseg*2; 
	conf.nswap = 4096; 
	conf.nimage = 50; 
1990/1223    
	conf.nalarm = 1000; 
	conf.norig = 150*mul; 
	conf.nchan = 200*mul; 
	conf.nenv = 100*mul; 
	conf.nenvchar = 8000*mul; 
1991/0706/sys/src/9/ss/main.c:182,2531991/0710/sys/src/9/ss/main.c:182,187 (short | long)
1990/1226    
	reset(); 
1990/1223    
} 
 
/* 
 * Insert new into list after where 
 */ 
void 
insert(List **head, List *where, List *new) 
{ 
	if(where == 0){ 
		new->next = *head; 
		*head = new; 
	}else{ 
		new->next = where->next; 
		where->next = new; 
	} 
		                 
} 
                 
/* 
 * Insert new into list at end 
 */ 
void 
append(List **head, List *new) 
{ 
	List *where; 
                 
	where = *head; 
	if(where == 0) 
		*head = new; 
	else{ 
		while(where->next) 
			where = where->next; 
		where->next = new; 
	} 
	new->next = 0; 
} 
                 
/* 
 * Delete old from list 
 */ 
void 
delete0(List **head, List *old) 
{ 
	List *l; 
                 
	l = *head; 
	if(l == old){ 
		*head = old->next; 
		return; 
	} 
	while(l->next != old) 
		l = l->next; 
	l->next = old->next; 
} 
                 
/* 
 * Delete old from list.  where->next is known to be old. 
 */ 
void 
delete(List **head, List *where, List *old) 
{ 
	if(where == 0){ 
		*head = old->next; 
		return; 
	} 
	where->next = old->next; 
} 
                 
Conf	conf; 
 
void 
1991/0710/sys/src/9/ss/main.c:111,1171991/0711/sys/src/9/ss/main.c:111,117 (short | long)
1990/1223    
	u->dot = clone(u->slash, 0); 
1990/1226    
 
1991/0706    
	kickpager(); 
1990/1226    
	touser(USTKTOP-5*BY2WD); 
1991/0711    
	touser(USTKTOP-(1+MAXSYSARG)*BY2WD); 
1990/1223    
} 
 
FPsave	initfp; 
1991/0710/sys/src/9/ss/main.c:137,1431991/0711/sys/src/9/ss/main.c:137,143
1990/1223    
	 * Kernel Stack 
	 */ 
1991/0110    
	p->sched.pc = (((ulong)init0) - 8);	/* 8 because of RETURN in gotolabel */ 
1990/1223    
	p->sched.sp = USERADDR+BY2PG-20;	/* BUG */ 
1991/0711    
	p->sched.sp = USERADDR+BY2PG-(1+MAXSYSARG)*BY2WD; 
1990/1223    
	p->upage = newpage(0, 0, USERADDR|(p->pid&0xFFFF)); 
 
	/* 
1991/0711/sys/src/9/ss/main.c:110,1161991/0712/sys/src/9/ss/main.c:110,116 (short | long)
1990/1223    
	u->slash = (*devtab[0].attach)(0); 
	u->dot = clone(u->slash, 0); 
1990/1226    
 
1991/0706    
	kickpager(); 
1991/0712    
	kickpager(); /**/ 
1991/0711    
	touser(USTKTOP-(1+MAXSYSARG)*BY2WD); 
1990/1223    
} 
 
1991/0712/sys/src/9/ss/main.c:110,1161991/0717/sys/src/9/ss/main.c:110,115 (short | long)
1990/1223    
	u->slash = (*devtab[0].attach)(0); 
	u->dot = clone(u->slash, 0); 
1990/1226    
 
1991/0712    
	kickpager(); /**/ 
1991/0711    
	touser(USTKTOP-(1+MAXSYSARG)*BY2WD); 
1990/1223    
} 
 
1991/0717/sys/src/9/ss/main.c:58,641991/0926/sys/src/9/ss/main.c:58,64 (short | long)
1991/0110    
} 
 
void 
1990/1223    
reset(void) 
1991/0926    
systemreset(void) 
1990/1223    
{ 
	delay(100); 
1990/1226    
	putb2(ENAB, ENABRESET); 
1991/0717/sys/src/9/ss/main.c:110,1151991/0926/sys/src/9/ss/main.c:110,125
1990/1223    
	u->slash = (*devtab[0].attach)(0); 
	u->dot = clone(u->slash, 0); 
1990/1226    
 
1991/0926    
	if(!waserror()){ 
		c = namec("#e/terminal", Acreate, OWRITE, 0600); 
		(*devtab[c->type].write)(c, "sun sparc slc", strlen("sun sparc slc"), 0); 
		close(c); 
		c = namec("#e/cputype", Acreate, OWRITE, 0600); 
		(*devtab[c->type].write)(c, "sparc", strlen("sparc"), 0); 
		close(c); 
		poperror(); 
	} 
 
1991/0711    
	touser(USTKTOP-(1+MAXSYSARG)*BY2WD); 
1990/1223    
} 
 
1991/0717/sys/src/9/ss/main.c:178,1841991/0926/sys/src/9/ss/main.c:188,194
1991/0608    
		for(i=0; i<1000; i++) 
			; 
1990/1223    
	splhi(); 
1990/1226    
	reset(); 
1991/0926    
	systemreset(); 
1990/1223    
} 
 
Conf	conf; 
1991/0717/sys/src/9/ss/main.c:231,2361991/0926/sys/src/9/ss/main.c:241,250
1990/1223    
	conf.nservice = 3*mul;			/* was conf.nproc/5 */ 
	conf.nfsyschan = 31 + conf.nchan/20; 
	conf.copymode = 0;		/* copy on write */ 
1991/0926    
	conf.ipif = 8; 
	conf.ip = 64; 
	conf.arp = 32; 
	conf.frag = 32; 
1991/0608    
	conf.cntrlp = 0; 
1990/1231    
} 
 
1991/0717/sys/src/9/ss/main.c:302,3061991/0926/sys/src/9/ss/main.c:316,320
1991/0604    
void 
firmware(void) 
{ 
	reset(); 
1991/0926    
	systemreset(); 
1990/1223    
} 
1991/0926/sys/src/9/ss/main.c:111,1221991/0927/sys/src/9/ss/main.c:111,118 (short | long)
1990/1223    
	u->dot = clone(u->slash, 0); 
1990/1226    
 
1991/0926    
	if(!waserror()){ 
		c = namec("#e/terminal", Acreate, OWRITE, 0600); 
		(*devtab[c->type].write)(c, "sun sparc slc", strlen("sun sparc slc"), 0); 
		close(c); 
		c = namec("#e/cputype", Acreate, OWRITE, 0600); 
		(*devtab[c->type].write)(c, "sparc", strlen("sparc"), 0); 
		close(c); 
1991/0927    
		ksetenv("terminal", "sun sparc slc"); 
		ksetenv("cputype", "sparc"); 
1991/0926    
		poperror(); 
	} 
 
1991/0927/sys/src/9/ss/main.c:135,1401991/1011/sys/src/9/ss/main.c:135,141 (short | long)
1991/0706    
	p->fgrp = newfgrp(); 
 
1990/1223    
	strcpy(p->text, "*init*"); 
1991/1011    
	strcpy(p->pgrp->user, "bootes"); 
1991/01151    
	savefpregs(&initfp); 
1990/1223    
	p->fpstate = FPinit; 
 
1991/1011/sys/src/9/ss/main.c:266,2721991/1030/sys/src/9/ss/main.c:266,272 (short | long)
1990/1231    
		lp->ea[i] = *cp++; 
	kunmap(k); 
 
1991/0109    
	lp->lognrrb = 5; 
1991/1030    
	lp->lognrrb = 7; 
1991/0109    
	lp->logntrb = 5; 
1990/1231    
	lp->nrrb = 1<<lp->lognrrb; 
	lp->ntrb = 1<<lp->logntrb; 
1991/1030/sys/src/9/ss/main.c:111,1171991/1101/sys/src/9/ss/main.c:111,117 (short | long)
1990/1223    
	u->dot = clone(u->slash, 0); 
1990/1226    
 
1991/0926    
	if(!waserror()){ 
1991/0927    
		ksetenv("terminal", "sun sparc slc"); 
1991/1101    
		ksetenv("terminal", "sun slc"); 
1991/0927    
		ksetenv("cputype", "sparc"); 
1991/0926    
		poperror(); 
	} 
1991/1101/sys/src/9/ss/main.c:111,1171991/1102/sys/src/9/ss/main.c:111,117 (short | long)
1990/1223    
	u->dot = clone(u->slash, 0); 
1990/1226    
 
1991/0926    
	if(!waserror()){ 
1991/1101    
		ksetenv("terminal", "sun slc"); 
1991/1102    
		ksetterm("sun %s"); 
1991/0927    
		ksetenv("cputype", "sparc"); 
1991/0926    
		poperror(); 
	} 
Too many diffs (26 > 25). Stopping.


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