| plan 9 kernel history: overview | file list | diff list |
1992/0807/ss/main.c (diff list | history)
| 1992/0802/sys/src/9/ss/main.c:9,15 – 1992/0807/sys/src/9/ss/main.c:9,21 (short | long | prev | next) | ||
|
Created.
rsc Fri Mar 4 12:44:25 2005 | ||
| 1992/0211 | #include <libg.h> | |
| 1990/1223 | #include <gnot.h> | |
| 1991/0110 |
| |
| 1992/0807 | uchar *intrreg; int model; uchar idprom[32]; ulong romvec; /* open boot rom vector */ int cpuserver; ulong romputcxsegm; ulong bank[2]; | |
| 1991/0110 | ||
| 1990/1223 | void main(void) | |
| 1992/0802/sys/src/9/ss/main.c:23,34 – 1992/0807/sys/src/9/ss/main.c:29,43 | ||
| 1990/1223 | confinit(); | |
| 1992/0619 | xinit(); | |
| 1990/1226 | mmuinit(); | |
| 1991/0604 |
| |
| 1992/0807 | if(conf.monitor) screeninit(); | |
| 1990/1226 | printinit(); | |
| 1992/0619 |
| |
| 1990/1226 | trapinit(); | |
| 1990/1223 | kmapinit(); | |
| 1991/0604 | ioinit(); | |
| 1992/0807 | if(!conf.monitor) sccspecial(2, &printq, &kbdq, 9600); pageinit(); | |
| 1990/1226 | cacheinit(); | |
| 1991/0110 | intrinit(); | |
| 1990/1223 | procinit0(); | |
| 1992/0802/sys/src/9/ss/main.c:54,60 – 1992/0807/sys/src/9/ss/main.c:63,69 | ||
| 1991/0926 | systemreset(void) | |
| 1990/1223 | { delay(100); | |
| 1990/1226 |
| |
| 1992/0807 | putenab(ENABRESET); | |
| 1990/1223 | } | |
| 1992/0802/sys/src/9/ss/main.c:98,103 – 1992/0807/sys/src/9/ss/main.c:107,113 | ||
| 1990/1223 | u->p->mach = m; spllo(); | |
| 1992/0722 | ||
| 1992/0807 | print("bank 0: %dM 1: %dM\n", bank[0], bank[1]); | |
| 1990/1223 | u->slash = (*devtab[0].attach)(0); u->dot = clone(u->slash, 0); | |
| 1992/0516 | ||
| 1992/0802/sys/src/9/ss/main.c:194,199 – 1992/0807/sys/src/9/ss/main.c:204,239 | ||
| 1991/0926 | systemreset(); | |
| 1990/1223 | } | |
| 1992/0807 | int banksize(ulong addr, ulong nbytes) { int i; ulong min, max, t; ulong va, pa; ulong nmeg; nmeg = nbytes/MB; va = 1*MB-2*BY2PG; for(i=0; i<nmeg; i++){ pa = addr+i*MB; putw4(va, PPN(pa)|PTEVALID|PTEKERNEL|PTENOCACHE|PTEWRITE|PTEMAINMEM); *(ulong*)va = pa; } min = ~0; max = 0; for(i=0; i<nmeg; i++){ pa = addr+i*MB; putw4(va, PPN(pa)|PTEVALID|PTEKERNEL|PTENOCACHE|PTEWRITE|PTEMAINMEM); t = *(ulong*)va; if(min > t) min = t; if(max < t) max = t; } putw4(va, INVALIDPTE); return (max-min)/MB+1; } | |
| 1990/1223 | Conf conf; void | |
| 1992/0802/sys/src/9/ss/main.c:200,229 – 1992/0807/sys/src/9/ss/main.c:240,318 | ||
| 1990/1223 | confinit(void) { int mul; | |
| 1992/0715 |
| |
| 1992/0807 | ulong i; ulong ktop, va, mbytes; | |
| 1990/1226 | ||
| 1990/1223 | conf.nmach = 1; if(conf.nmach > MAXMACH) panic("confinit"); | |
| 1992/0619 | ||
| 1992/0801 |
| |
| 1991/0111 |
| |
| 1991/0115 |
| |
| 1990/1223 |
| |
| 1991/0112 |
| |
| 1990/1223 |
| |
| 1992/0807 | /* map id prom */ va = 1*MB-BY2PG; putw4(va, PPN(EEPROM)|PTEVALID|PTEKERNEL|PTENOCACHE|PTEIO); memmove(idprom, (char*)(va+0x7d8), 32); if(idprom[0]!=1 || (idprom[1]&0xF0)!=0x50) *(ulong*)va = 0; putw4(va, INVALIDPTE); | |
| 1992/0619 |
| |
| 1992/0807 | switch(idprom[1]){ case 0x51: /* sparcstation 1 */ case 0x54: /* slc */ default: conf.ss2 = 0; conf.vacsize = 65536; conf.vaclinesize = 16; conf.ncontext = 8; conf.npmeg = 128; conf.ss2cachebug = 0; conf.monitor = 1; /* BUG */ conf.base0 = 0; conf.base1 = 32*MB; break; | |
| 1992/0715 | ||
| 1992/0807 | case 0x55: /* sparcstation 2 */ conf.ss2 = 1; conf.vacsize = 65536; conf.vaclinesize = 32; conf.ncontext = 16; conf.npmeg = 256; conf.ss2cachebug = 1; conf.monitor = 0; /* BUG */ conf.base0 = 0; conf.base1 = 16*MB; break; } bank[0] = banksize(conf.base0, 16*MB); bank[1] = banksize(conf.base1, 16*MB); conf.npage0 = (bank[0]*MB)/BY2PG; conf.npage1 = (bank[1]*MB)/BY2PG; romputcxsegm = *(ulong*)(romvec+260); conf.npage = conf.npage0+conf.npage1; conf.upages = (conf.npage*70)/100; if(cpuserver){ i = conf.npage-conf.upages; if(i > (6*MB)/BY2PG) conf.upages += i - ((6*MB)/BY2PG); } | |
| 1992/0715 | ktop = PGROUND((ulong)end); ktop = PADDR(ktop); conf.npage0 -= ktop/BY2PG; conf.base0 += ktop; | |
| 1992/0619 | ||
| 1992/0620 |
| |
| 1992/0807 | mbytes = (conf.npage*BY2PG)>>20; mul = 1 + (mbytes+11)/12; if(mul > 2) mul = 2; | |
| 1992/0620 | ||
| 1990/1223 | conf.nproc = 50*mul; | |
| 1991/0706 |
| |
| 1992/0807 | if(cpuserver) conf.nswap = conf.npage*2; else conf.nswap = 4096; | |
| 1991/0706 | conf.nimage = 50; | |
| 1990/1223 | conf.copymode = 0; /* copy on write */ | |
| 1991/0926 | conf.ipif = 8; | |
| 1992/0802/sys/src/9/ss/main.c:230,235 – 1992/0807/sys/src/9/ss/main.c:319,326 | ||
| 1991/0926 | conf.ip = 64; conf.arp = 32; conf.frag = 32; | |
| 1992/0807 | if(cpuserver) conf.nproc = 500; | |
| 1990/1231 | } /* | |