## diffname ss/main.c 1990/1223 ## diff -e /dev/null /n/bootesdump/1990/1223/sys/src/9/sparc/main.c 0a #include "u.h" #include "lib.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" #include "ureg.h" #include "init.h" #include #include char user[NAMELEN]; char bootline[64]; char bootserver[64]; char bootdevice[64]; int bank[2]; void unloadboot(void); int Xprint(char *fmt, ...) { char buf[PRINTSIZE]; int n; n = doprint(buf, buf+sizeof(buf), fmt, (&fmt+1)) - buf; sccputs(buf); return n; } void putx(ulong x) { int i; for(i=0; i<8; i++){ sccputc("0123456789ABCDEF"[x>>28]); x <<= 4; } sccputc('\n'); } void main(void) { int a; u = 0; memset(&edata, 0, (char*)&end-(char*)&edata); unloadboot(); machinit(); #ifdef adsf mmuinit(); confinit(); 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(); procinit0(); pgrpinit(); chaninit(); alarminit(); chandevreset(); streaminit(); /* serviceinit(); /**/ /* filsysinit(); /**/ pageinit(); kmapinit(); userinit(); schedinit(); #endif } void reset(void) { delay(100); putb2(0x40000000, 4); } void unloadboot(void) { strncpy(user, "rob", sizeof user); memcpy(bootline, "9s", sizeof bootline); memcpy(bootserver, "bootes", sizeof bootserver); memcpy(bootdevice, "parnfucky", sizeof bootserver); } void machinit(void) { int n; n = m->machno; memset(m, 0, sizeof(Mach)); m->machno = n; m->mmask = 1<machno; #ifdef adsf m->fpstate = FPinit; fprestore(&initfp); #endif } 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; u->nerrlab = 0; m->proc = u->p; u->p->state = Running; u->p->mach = m; spllo(); chandevinit(); 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(); touser(); } FPsave initfp; void userinit(void) { Proc *p; Seg *s; User *up; KMap *k; p = newproc(); p->pgrp = newpgrp(); strcpy(p->text, "*init*"); strcpy(p->pgrp->user, user); p->fpstate = FPinit; /* * Kernel Stack */ 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)); /* * User */ k = kmap(p->upage); up = (User*)VA(k); up->p = p; kunmap(k); /* * User Stack */ s = &p->seg[SSEG]; s->proc = p; s->o = neworig(USTKTOP-BY2PG, 1, OWRPERM, 0); s->minva = USTKTOP-BY2PG; s->maxva = USTKTOP; /* * 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); memcpy((ulong*)VA(k), initcode, sizeof initcode); kunmap(k); s->minva = UTZERO; s->maxva = UTZERO+BY2PG; ready(p); } void exit(void) { int i; u = 0; splhi(); print("exiting\n"); for(;;) ; } /* * 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; } 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 confinit(void) { int mul; conf.nmach = 1; if(conf.nmach > MAXMACH) panic("confinit"); bank[0] = banksize(0); bank[1] = banksize(16); conf.npage0 = (bank[0]*1024*1024)/BY2PG; 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); conf.nproc = 50*mul; conf.npgrp = 12*mul; conf.npte = 700*mul; conf.nmod = 400*mul; conf.nalarm = 1000; conf.norig = 150*mul; conf.nchan = 200*mul; conf.nenv = 100*mul; conf.nenvchar = 8000*mul; conf.npgenv = 200*mul; conf.nmtab = 50*mul; conf.nmount = 80*mul; conf.nmntdev = 10*mul; conf.nmntbuf = conf.nmntdev+3; conf.nmnthdr = 2*conf.nmntdev; conf.nstream = 40 + 32*mul; conf.nqueue = 5 * conf.nstream; conf.nblock = 24 * conf.nstream; 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; conf.npipe = conf.nstream/2; conf.nservice = 3*mul; /* was conf.nproc/5 */ conf.nfsyschan = 31 + conf.nchan/20; conf.copymode = 0; /* copy on write */ } /* * 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 panic("procsetup"); } /* * Save the part of the process state. */ 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) panic("fpsize %d max %d\n", u->fpsave.size, sizeof u->fpsave.junk); fpregsave(u->fpsave.reg); 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 } /* * Restore what procsave() saves * * Procsave() makes sure that what state points to is long enough */ 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; fprestore(&initfp); m->fpstate = FPinit; }else{ fpregrestore(u->fpsave.reg); fprestore(&u->fpsave); m->fpstate = FPdirty; } } if(balu->cr0 != 0xFFFFFFFF) /* balu busy */ memcpy(BALU, balu, sizeof balu); #endif } . ## diffname ss/main.c 1990/1226 ## diff -e /n/bootesdump/1990/1223/sys/src/9/sparc/main.c /n/bootesdump/1990/1226/sys/src/9/sparc/main.c 447,448d 433,435d 431d 414,419d 401,405d 399d 390d 363,364d 340,341c conf.maxialloc = 4*1024*1024; /* BUG */ mul = 2; . 337,338d 333,335c conf.npage0 = (8*1024*1024)/BY2PG; /* BUG */ conf.npage = conf.npage0; . 329a . 299,323d 229,230c for(;;) delay(60*1000); reset(); . 184d 160c touser(USTKTOP-5*BY2WD); . 112,133d 93c memcpy(bootdevice, "parnfucky", sizeof bootdevice); . 84c putb2(ENAB, ENABRESET); . 77d 74d 58,64c cacheinit(); . 56a mmuinit(); printinit(); print("sparc plan 9\n"); trapinit(); . 54,55d 42a #endif . 36a if(!ok){ sccsetup(); ok = 1; } . 26a if(!ok){ sccsetup(); ok = 1; } . 20a #ifdef asdf static int ok; . 17d ## diffname ss/main.c 1990/1227 ## diff -e /n/bootesdump/1990/1226/sys/src/9/sparc/main.c /n/bootesdump/1990/1227/sys/src/9/sparc/main.c 80a {KMap *k; k = kmappa(0xF5000000, PTENOCACHE|PTEIO); print("interrupt %ux\n", *(uchar*)k->va); kunmap(k); } clockinit(); . ## diffname ss/main.c 1990/1231 ## diff -e /n/bootesdump/1990/1227/sys/src/9/sparc/main.c /n/bootesdump/1990/1231/sys/src/9/sparc/main.c 331a } /* * 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<lognrrb; lp->ntrb = 1<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; . 325a conf.nnoifc = 1; conf.nnoconv = 32; . 81,85d ## diffname ss/main.c 1991/0108 ## diff -e /n/bootesdump/1990/1231/sys/src/9/sparc/main.c /n/bootesdump/1991/0108/sys/src/9/sparc/main.c 383,386c 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); . 380c 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 */ . 377,378c print("%d lance buffers\n", i); . 375c i = (lp->nrrb+lp->ntrb)*sizeof(Etherpkt); . 373c * 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. . 370d 367a print("init block va %lux\n", k->va); . 366a /* map at LANCESEGM */ . 364c * Allocate area for lance init block and descriptor rings . 356,357c lp->lognrrb = 2; /* should be larger */ lp->logntrb = 2; /* should be larger */ . 343,346d 340,341c ulong pa, pte, va; int i, j; . ## diffname ss/main.c 1991/0109 ## diff -e /n/bootesdump/1991/0108/sys/src/9/sparc/main.c /n/bootesdump/1991/0109/sys/src/9/sparc/main.c 394,400d 380c k = kmappa(pa+j*BY2PG, PTEMAINMEM); . 364c k = kmappa(pa, PTEMAINMEM); . 357a lp->busctl = BSWP | ACON | BCON; . 356d 352,353c lp->lognrrb = 5; lp->logntrb = 5; . 346c k = kmappa(EEPROM, PTEIO); . 343c k = kmappa(ETHER, PTEIO); . 160d 95c strncpy(user, "bootes", sizeof user); . ## diffname ss/main.c 1991/0110 ## diff -e /n/bootesdump/1991/0109/sys/src/9/sparc/main.c /n/bootesdump/1991/0110/sys/src/9/sparc/main.c 300,301c conf.npte = 1400*mul; conf.nmod = 800*mul; . 292c conf.npage0 = (6*1024*1024)/BY2PG; /* BUG */ . 165c p->sched.pc = (((ulong)init0) - 8); /* 8 because of RETURN in gotolabel */ . 85a intrinit(void) { KMap *k; k = kmappa(INTRREG, PTEIO); intrreg = (uchar*)k->va; } void . 70a intrinit(); . 17a uchar *intrreg; . ## diffname ss/main.c 1991/0111 ## diff -e /n/bootesdump/1991/0110/sys/src/9/sparc/main.c /n/bootesdump/1991/0111/sys/src/9/sparc/main.c 323c conf.nmntbuf = conf.nmntdev+6; . 309c mul = 1; if(conf.npage1 > 0) mul = 2; . 306a conf.base1 = 16*1024*1024; . 304,305c conf.npage0 = (4*1024*1024)/BY2PG; /* BUG */ conf.npage1 = 0*(4*1024*1024)/BY2PG; /* BUG */ . 223,224c delay(30*1000); . 71a print("sparc plan 9 %lux\n", getb2(ENAB)); . 69c print("sparc plan 9 %lux\n", getb2(ENAB)); . ## diffname ss/main.c 1991/0112 ## diff -e /n/bootesdump/1991/0111/sys/src/9/sparc/main.c /n/bootesdump/1991/0112/sys/src/9/sparc/main.c 307c conf.base1 = 32*1024*1024; . 144,155d 105,112d 72d 69c print("sparc plan 9\n"); . 64d 40,56d 20,38d 14,16d ## diffname ss/main.c 1991/0115 ## diff -e /n/bootesdump/1991/0112/sys/src/9/sparc/main.c /n/bootesdump/1991/0115/sys/src/9/sparc/main.c 244c conf.npage1 = (4*1024*1024)/BY2PG; /* BUG */ . ## diffname ss/main.c 1991/01151 ## diff -e /n/bootesdump/1991/0115/sys/src/9/sparc/main.c /n/bootesdump/1991/01151/sys/src/9/sparc/main.c 347,405d 111a savefpregs(&initfp); . 76,77d 74d ## diffname ss/main.c 1991/0117 ## diff -e /n/bootesdump/1991/01151/sys/src/9/sparc/main.c /n/bootesdump/1991/0117/sys/src/9/sparc/main.c 263c conf.nmntbuf = conf.nmntdev+3; . ## diffname ss/main.c 1991/0318 ## diff -e /n/bootesdump/1991/0201/sys/src/9/sparc/main.c /n/bootesdump/1991/0318/sys/src/9/slc/main.c 145c memmove((ulong*)VA(k), initcode, sizeof initcode); . ## diffname ss/main.c 1991/0604 ## diff -e /n/bootesdump/1991/0318/sys/src/9/slc/main.c /n/bootesdump/1991/0604/sys/src/9/slc/main.c 344a } void firmware(void) { reset(); . 77a 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 . 31a ioinit(); . 27a screeninit(); . ## diffname ss/main.c 1991/0608 ## diff -e /n/bootesdump/1991/0604/sys/src/9/slc/main.c /n/bootesdump/1991/0608/sys/src/9/slc/main.c 293a conf.cntrlp = 0; . 174,175d 172a spllo(); print("cpu %d exiting\n", m->machno); while(consactive()) for(i=0; i<1000; i++) ; . 88c /* scc port 1 is the mouse */ sccspecial(1, 0, &mouseq, 2400); . 86c /* scc port 0 is the keyboard */ sccspecial(0, 0, &kbdq, 2400); . 83a /* tell scc driver it's address */ . ## diffname ss/main.c 1991/0706 ## diff -e /n/bootesdump/1991/0608/sys/src/9/slc/main.c /n/bootesdump/1991/0706/sys/src/9/slc/main.c 277d 274,275c conf.nseg = conf.nproc*4; conf.npagetab = conf.nseg*2; conf.nswap = 4096; conf.nimage = 50; . 166,167d 158,163c s = newseg(SG_TEXT, UTZERO, 1); p->seg[TSEG] = s; segpage(s, newpage(1, 0, UTZERO)); k = kmap(s->map[0]->pages[0]); . 149,153c s = newseg(SG_STACK, USTKTOP-BY2PG, 1); p->seg[SSEG] = s; . 126a p->egrp = newegrp(); p->fgrp = newfgrp(); . 121c Segment *s; . 111a kickpager(); . 37c initseg(); grpinit(); . ## diffname ss/main.c 1991/0710 ## diff -e /n/bootesdump/1991/0706/sys/src/9/slc/main.c /n/bootesdump/1991/0710/sys/src/9/slc/main.c 185,250d ## diffname ss/main.c 1991/0711 ## diff -e /n/bootesdump/1991/0710/sys/src/9/slc/main.c /n/bootesdump/1991/0711/sys/src/9/slc/main.c 140c p->sched.sp = USERADDR+BY2PG-(1+MAXSYSARG)*BY2WD; . 114c touser(USTKTOP-(1+MAXSYSARG)*BY2WD); . ## diffname ss/main.c 1991/0712 ## diff -e /n/bootesdump/1991/0711/sys/src/9/slc/main.c /n/bootesdump/1991/0712/sys/src/9/slc/main.c 113c kickpager(); /**/ . ## diffname ss/main.c 1991/0717 ## diff -e /n/bootesdump/1991/0712/sys/src/9/slc/main.c /n/bootesdump/1991/0717/sys/src/9/slc/main.c 113d ## diffname ss/main.c 1991/0926 ## diff -e /n/bootesdump/1991/0717/sys/src/9/slc/main.c /n/bootesdump/1991/0926/sys/src/9/slc/main.c 305c systemreset(); . 233a conf.ipif = 8; conf.ip = 64; conf.arp = 32; conf.frag = 32; . 181c systemreset(); . 112a 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(); } . 61c systemreset(void) . ## diffname ss/main.c 1991/0927 ## diff -e /n/bootesdump/1991/0926/sys/src/9/slc/main.c /n/bootesdump/1991/0927/sys/src/9/slc/main.c 114,119c ksetenv("terminal", "sun sparc slc"); ksetenv("cputype", "sparc"); . ## diffname ss/main.c 1991/1011 ## diff -e /n/bootesdump/1991/0927/sys/src/9/slc/main.c /n/bootesdump/1991/1011/sys/src/9/slc/main.c 137a strcpy(p->pgrp->user, "bootes"); . ## diffname ss/main.c 1991/1030 ## diff -e /n/bootesdump/1991/1011/sys/src/9/slc/main.c /n/bootesdump/1991/1030/sys/src/9/slc/main.c 269c lp->lognrrb = 7; . ## diffname ss/main.c 1991/1101 ## diff -e /n/bootesdump/1991/1030/sys/src/9/slc/main.c /n/bootesdump/1991/1101/sys/src/9/slc/main.c 114c ksetenv("terminal", "sun slc"); . ## diffname ss/main.c 1991/1102 ## diff -e /n/bootesdump/1991/1101/sys/src/9/slc/main.c /n/bootesdump/1991/1102/sys/src/9/slc/main.c 114c ksetterm("sun %s"); . ## diffname ss/main.c 1991/1105 ## diff -e /n/bootesdump/1991/1102/sys/src/9/slc/main.c /n/bootesdump/1991/1105/sys/src/9/slc/main.c 138c strcpy(p->user, "bootes"); . ## diffname ss/main.c 1991/1106 ## diff -e /n/bootesdump/1991/1105/sys/src/9/slc/main.c /n/bootesdump/1991/1106/sys/src/9/slc/main.c 293d 282d ## diffname ss/main.c 1991/1107 ## diff -e /n/bootesdump/1991/1106/sys/src/9/slc/main.c /n/bootesdump/1991/1107/sys/src/9/slc/main.c 245a conf.dkif = 1; . ## diffname ss/main.c 1991/1109 ## diff -e /n/bootesdump/1991/1107/sys/src/9/slc/main.c /n/bootesdump/1991/1109/sys/src/9/slc/main.c 138c strcpy(p->user, eve); . 13,14d ## diffname ss/main.c 1991/1112 ## diff -e /n/bootesdump/1991/1109/sys/src/9/slc/main.c /n/bootesdump/1991/1112/sys/src/9/slc/main.c 133a p->procmode = 0640; . ## diffname ss/main.c 1991/1113 ## diff -e /n/bootesdump/1991/1112/sys/src/9/slc/main.c /n/bootesdump/1991/1113/sys/src/9/slc/main.c 23a active.exiting = 0; active.machs = 1; . ## diffname ss/main.c 1991/1115 ## diff -e /n/bootesdump/1991/1113/sys/src/9/slc/main.c /n/bootesdump/1991/1115/sys/src/9/slc/main.c 43,44d ## diffname ss/main.c 1991/1222 ## diff -e /n/bootesdump/1991/1115/sys/src/9/slc/main.c /n/bootesdump/1991/1222/sys/src/9/slc/main.c 146c p->upage = newpage(1, 0, USERADDR|(p->pid&0xFFFF)); . ## diffname ss/main.c 1991/1225 ## diff -e /n/bootesdump/1991/1222/sys/src/9/slc/main.c /n/bootesdump/1991/1225/sys/src/9/slc/main.c 85c sccsetup((void*)(k->va), KMFREQ); k = kmappa(EIADUART, PTEIO|PTENOCACHE); sccsetup((void*)(k->va), EIAFREQ); . 83c /* tell scc driver it's addresses */ . ## diffname ss/main.c 1992/0101 ## diff -e /n/bootesdump/1991/1225/sys/src/9/slc/main.c /n/bootesdump/1992/0101/sys/src/9/slc/main.c 297c k = kmappa(pa+j*BY2PG, PTEMAINMEM|PTENOCACHE); . 283c k = kmappa(pa, PTEMAINMEM|PTENOCACHE); . 265c k = kmappa(EEPROM, PTEIO|PTENOCACHE); . 262c k = kmappa(ETHER, PTEIO|PTENOCACHE); . 54c k = kmappa(INTRREG, PTEIO|PTENOCACHE); . ## diffname ss/main.c 1992/0120 ## diff -e /n/bootesdump/1992/0101/sys/src/9/slc/main.c /n/bootesdump/1992/0120/sys/src/9/slc/main.c 7d ## diffname ss/main.c 1992/0208 ## diff -e /n/bootesdump/1992/0120/sys/src/9/slc/main.c /n/bootesdump/1992/0208/sys/src/9/slc/main.c 232c conf.nsubfont = 10*mul; . ## diffname ss/main.c 1992/0209 ## diff -e /n/bootesdump/1992/0208/sys/src/9/slc/main.c /n/bootesdump/1992/0209/sys/src/9/slc/main.c 231a conf.nfont = 10*mul; . 9c #include . ## diffname ss/main.c 1992/0211 ## diff -e /n/bootesdump/1992/0209/sys/src/9/slc/main.c /n/bootesdump/1992/0211/sys/src/9/slc/main.c 9c #include . ## diffname ss/main.c 1992/0228 ## diff -e /n/bootesdump/1992/0211/sys/src/9/slc/main.c /n/bootesdump/1992/0228/sys/src/9/slc/main.c 234,235d ## diffname ss/main.c 1992/0321 ## diff -e /n/bootesdump/1992/0228/sys/src/9/slc/main.c /n/bootesdump/1992/0321/sys/src/9/slc/main.c 2c #include "../port/lib.h" . ## diffname ss/main.c 1992/0325 ## diff -e /n/bootesdump/1992/0321/sys/src/9/slc/main.c /n/bootesdump/1992/0325/sys/src/9/slc/main.c 20c memset(edata, 0, (char*)end-(char*)edata); . ## diffname ss/main.c 1992/0516 ## diff -e /n/bootesdump/1992/0325/sys/src/9/slc/main.c /n/bootesdump/1992/0516/sys/src/9/slc/main.c 110a kproc("alarm", alarmkproc, 0); chandevinit(); . 106,107d ## diffname ss/main.c 1992/0602 ## diff -e /n/bootesdump/1992/0516/sys/src/9/slc/main.c /n/bootesdump/1992/0602/sys/src/9/slc/main.c 39d ## diffname ss/main.c 1992/0610 ## diff -e /n/bootesdump/1992/0602/sys/src/9/slc/main.c /n/bootesdump/1992/0610/sys/src/9/slc/main.c 310,315d ## diffname ss/main.c 1992/0619 ## diff -e /n/bootesdump/1992/0610/sys/src/9/slc/main.c /n/bootesdump/1992/0619/sys/src/9/slc/main.c 206c conf.upages = 1400; . 200a . 41d 37d 29c pageinit(); . 25a xinit(); . ## diffname ss/main.c 1992/0620 ## diff -e /n/bootesdump/1992/0619/sys/src/9/slc/main.c /n/bootesdump/1992/0620/sys/src/9/slc/main.c 239,240d 230d 223,227d 218,219d 213,215d 209,211c mul = conf.upages/700; . 38d ## diffname ss/main.c 1992/0621 ## diff -e /n/bootesdump/1992/0620/sys/src/9/slc/main.c /n/bootesdump/1992/0621/sys/src/9/slc/main.c 266c pa = (ulong)xspanalloc(BY2PG, BY2PG, 0); . 225d ## diffname ss/main.c 1992/0622 ## diff -e /n/bootesdump/1992/0621/sys/src/9/slc/main.c /n/bootesdump/1992/0622/sys/src/9/slc/main.c 279c pa = (ulong)xspanalloc(i*BY2PG, BY2PG, 0)&~KZERO; . 218,222d ## diffname ss/main.c 1992/0623 ## diff -e /n/bootesdump/1992/0622/sys/src/9/slc/main.c /n/bootesdump/1992/0623/sys/src/9/slc/main.c 213,219d 131,132c p->egrp = smalloc(sizeof(Egrp)); p->egrp->ref = 1; p->fgrp = smalloc(sizeof(Fgrp)); p->fgrp->ref = 1; . ## diffname ss/main.c 1992/0625 ## diff -e /n/bootesdump/1992/0623/sys/src/9/slc/main.c /n/bootesdump/1992/0625/sys/src/9/slc/main.c 221d ## diffname ss/main.c 1992/0711 ## diff -e /n/bootesdump/1992/0625/sys/src/9/slc/main.c /n/bootesdump/1992/0711/sys/src/9/slc/main.c 232c ulong pa, va; . 230d 96,97d 17,18d ## diffname ss/main.c 1992/0715 ## diff -e /n/bootesdump/1992/0711/sys/src/9/slc/main.c /n/bootesdump/1992/0715/sys/src/9/slc/main.c 204a ktop = PGROUND((ulong)end); ktop = PADDR(ktop); conf.npage0 -= ktop/BY2PG; conf.base0 += ktop; . 192a ulong ktop; . ## diffname ss/main.c 1992/0720 ## diff -e /n/bootesdump/1992/0715/sys/src/9/slc/main.c /n/bootesdump/1992/0720/sys/src/9/slc/main.c 135a /* initfp.fsr |= 0x1E << 23; /* trap on all but INEXACT */ . ## diffname ss/main.c 1992/0722 ## diff -e /n/bootesdump/1992/0720/sys/src/9/slc/main.c /n/bootesdump/1992/0722/sys/src/9/slc/main.c 104a print("alarmkp:\n"); prflush(); . 99c print("init0:\n"); prflush(); . 77c /* tell scc driver its addresses */ . ## diffname ss/main.c 1992/0724 ## diff -e /n/bootesdump/1992/0722/sys/src/9/slc/main.c /n/bootesdump/1992/0724/sys/src/9/slc/main.c 106d 99d ## diffname ss/main.c 1992/0725 ## diff -e /n/bootesdump/1992/0724/sys/src/9/slc/main.c /n/bootesdump/1992/0725/sys/src/9/slc/main.c 223d ## diffname ss/main.c 1992/0727 ## diff -e /n/bootesdump/1992/0725/sys/src/9/slc/main.c /n/bootesdump/1992/0727/sys/src/9/slc/main.c 135,136c /* must align initfpp to an ODD word boundary */ l = (ulong)initfpa; l += 3; l &= ~7; l += 4; initfpp = (FPsave*)l; savefpregs(initfpp); . 123a ulong l; . 115c FPsave *initfpp; uchar initfpa[sizeof(FPsave)+7]; . 37a swapinit(); . ## diffname ss/main.c 1992/0801 ## diff -e /n/bootesdump/1992/0727/sys/src/9/slc/main.c /n/bootesdump/1992/0801/sys/src/9/slc/main.c 207a conf.ss2 = 0; . ## diffname ss/main.c 1992/0802 ## diff -e /n/bootesdump/1992/0801/sys/src/9/slc/main.c /n/bootesdump/1992/0802/sys/src/9/slc/main.c 151a p->sched.sp &= ~7; /* SP must be 8-byte aligned */ . ## diffname ss/main.c 1992/0807 ## diff -e /n/bootesdump/1992/0807/sys/src/9/slc/main.c /n/bootesdump/1992/0807/sys/src/9/ss/main.c 232a if(cpuserver) conf.nproc = 500; . 226c if(cpuserver) conf.nswap = conf.npage*2; else conf.nswap = 4096; . 223c mbytes = (conf.npage*BY2PG)>>20; mul = 1 + (mbytes+11)/12; if(mul > 2) mul = 2; . 217a 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); } . 216c 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; . 209,214c /* 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); . 203c ulong i; ulong ktop, va, mbytes; . 196a 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 t) min = t; if(max < t) max = t; } putw4(va, INVALIDPTE); return (max-min)/MB+1; } . 100a print("bank 0: %dM 1: %dM\n", bank[0], bank[1]); . 57c putenab(ENABRESET); . 31a if(!conf.monitor) sccspecial(2, &printq, &kbdq, 9600); pageinit(); . 28d 26c if(conf.monitor) screeninit(); . 12c uchar *intrreg; int model; uchar idprom[32]; ulong romvec; /* open boot rom vector */ int cpuserver; ulong romputcxsegm; ulong bank[2]; . ## diffname ss/main.c 1992/0808 ## diff -e /n/bootesdump/1992/0807/sys/src/9/ss/main.c /n/bootesdump/1992/0808/sys/src/9/ss/main.c 299a romputcxsegm = rom->putcxsegm; . 291,292c bank[0] = conf.npage0*BY2PG/MB; bank[1] = conf.npage1*BY2PG/MB; . 286,289c scanmem(mempres, nmeg); for(i=0; iv; j++) v = mempres[j]; npg = ((v+1)-mempres[i])*MB/BY2PG; if(conf.npage0 == 0){ conf.base0 = i*MB; conf.npage0 = npg; }else if(conf.npage1 < npg){ conf.base1 = i*MB; conf.npage1 = npg; } i = v-'0'; } . 281,282c nmeg = 64; . 273c /* sparcstation 2 */ case 0x55: /* sparcstation 2 4/75 */ case 0x56: /* ELC 4/25 */ case 0x57: /* IPX 4/50 */ . 269,270c nmeg = 64; . 259,260c /* sparcstation 1+ BUG: unknown! */ case 0x52: /* IPC 4/40 */ case 0x53: /* sparcstation 1+ 4/65 */ /* fall through */ /* sparcstation 1 */ case 0x51: /* sparcstation 1 4/60 */ case 0x54: /* slc 4/20 */ . 243,244c ulong i, j; ulong ktop, va, mbytes, nmeg, npg, v; . 236a void romwalk(ulong d, char* namep) { char *endp; *namep++ = '/'; *namep = 0; while(d){ romprops(d, namep, call(rom->conf->nextprop, d, 0)); endp = namep+strlen(namep); romwalk(call(rom->conf->child, d), endp); *endp = 0; d = call(rom->conf->next, d); } } void fuck(void) { name[0] = 0; romwalk(call(rom->conf->next, 0), name); } . 233,234d 222,231c for(i=0; iconf->getproplen, d, p); if(n>=0 && nconf->getprop, d, p, buf); if(strcmp((char*)p, "name")==0){ strcpy(namep, (char*)buf); romp += sprint(rombuf+romp, "`%s'\n", name); }else{ romp += sprint(rombuf+romp, "%lux: %s: ", d, p); for(i=0; iconf->nextprop, d, p); . 217,220c for(i=0; imemscan && mempres[j]>v; j++) . 349,350c /* Chart memory */ scanmem(mempres, sparam->memscan); /* Find mirrors and allocate banks */ for(i=0; imemscan; i++) . 334,347c conf.ss2 = sparam->ss2; conf.vacsize = sparam->vacsize; conf.vaclinesize = sparam->vacline; conf.ncontext = sparam->ncontext; conf.npmeg = sparam->npmeg; conf.ss2cachebug = sparam->cachebug; conf.monitor = sparam->monitor; /* BUG */ . 316,332c /* First entry in the table is the default */ if(sparam->id == 0) sparam = sysparam; . 314c for(sparam = sysparam; sparam->id; sparam++) if(sparam->id == idprom[1]) break; . 300c ulong ktop, va, mbytes, npg, v; . 241,292d 235c putw4(va, PPN(addr)|PTEPROBEMEM); . 221c putw4(va, PPN(addr)|PTEPROBEMEM); . 113a . 112a print("Sun Sparcstation %s\n", sparam->name); . 22a typedef struct Sysparam Sysparam; struct Sysparam { int id; /* Model type from id prom */ char *name; /* System name */ char ss2; /* Is sparcstation 2 ? */ int vacsize; /* Cache size */ int vacline; /* Cache line size */ int ncontext; /* Number of MMU contexts */ int npmeg; /* Number of process maps */ char cachebug; /* Machine needs cache bug work around */ char monitor; /* Needs to be computed */ int memscan; /* Number of Meg to scan looking for memory */ } sysparam[] = { { 0x51, "1 4/60", 0, 65536, 16, 8, 128, 0, 1, 64 }, { 0x52, "IPC 4/40", 0, 65536, 16, 8, 128, 0, 1, 64 }, { 0x53, "1+ 4/65", 0, 65536, 16, 8, 128, 0, 1, 64 }, { 0x54, "SLC 4/20", 0, 65536, 16, 8, 128, 0, 1, 64 }, { 0x55, "2 4/75", 1, 65536, 32, 16, 256, 1, 0, 64 }, { 0x56, "ELC 4/25", 1, 65536, 32, 16, 256, 1, 0, 64 }, { 0x57, "IPX 4/50", 1, 65536, 32, 16, 256, 1, 0, 64 }, { 0 } }; Sysparam *sparam; . 20d 14d ## diffname ss/main.c 1992/0810 ## diff -e /n/bootesdump/1992/0809/sys/src/9/ss/main.c /n/bootesdump/1992/0810/sys/src/9/ss/main.c 336c romputcxsegm = *(ulong*)(rom+260); . 303d 288a /* map frame buffer id */ putw4(va, ((FRAMEBUFID>>PGSHIFT)&0xFFFF)|PTEVALID|PTEKERNEL|PTENOCACHE|PTEIO); i = getpsr(); conf.monitor = 0; /* if frame buffer not present, we will trap, so prepare to catch it */ if(setlabel(&catch) == 0){ setpsr(i|PSRET|(0xF<<8)); /* enable traps, not interrupts */ conf.monitor = *(ulong*)va; } setpsr(i); catch.pc = 0; putw4(va, INVALIDPTE); . 139a print("frame buffer id %lux\n", conf.monitor); . 93c delay(200); . 66c if(conf.monitor == 0) . 63d 60,61c screeninit(); . 56a trapinit(); . 37,43c { 0x51, "1 4/60", 0, 65536, 16, 8, 128, 0, 64 }, { 0x52, "IPC 4/40", 0, 65536, 16, 8, 128, 0, 64 }, { 0x53, "1+ 4/65", 0, 65536, 16, 8, 128, 0, 64 }, { 0x54, "SLC 4/20", 0, 65536, 16, 8, 128, 0, 64 }, { 0x55, "2 4/75", 1, 65536, 32, 16, 256, 1, 64 }, { 0x56, "ELC 4/25", 1, 65536, 32, 16, 256, 1, 64 }, { 0x57, "IPX 4/50", 1, 65536, 32, 16, 256, 1, 64 }, . 32d 19a Label catch; . 17c ulong romputcxsegm; . 15c ulong rom; /* open boot rom vector */ . 8d ## diffname ss/main.c 1992/0811 ## diff -e /n/bootesdump/1992/0810/sys/src/9/ss/main.c /n/bootesdump/1992/0811/sys/src/9/ss/main.c 297d 295a putw4(va, (((FRAMEBUFID+BY2PG)>>PGSHIFT)&0xFFFF)|PTEVALID|PTEKERNEL|PTENOCACHE|PTEIO); memmove(fbcrap, (void*)va, BY2PG); j = *(ulong*)(va+4); fbsz = j; j = BY2PG - 8; /* for safety */ for(i=0; i 8) conf.ncontext = 8; /* BUG to enlarge NKLUDGE */ . 297,314c switch(conf.monitor){ case 0xFE010101: strcpy(fbstr, "cgthree"); break; case 0xFE010104: strcpy(fbstr, "bwtwo"); break; } if(fbstr[0] == 0){ j = *(ulong*)(va+4); if(j > BY2PG-8) j = BY2PG - 8; /* -8 for safety */ for(i=0; i>PGSHIFT)&0xFFFF)|PTEPROBEIO); . 285c putw4(va, PPN(EEPROM)|PTEPROBEIO); . 236a if(ispanic) for(;;); . 226c exit(int ispanic) . 141c print("frame buffer id %lux %s\n", conf.monitor, fbstr); print("NKLUDGE %d\n", NKLUDGE); . 65a if(conf.monitor) screeninit(fbstr); printinit(); . 63,64d 33c int npmeg; /* Number of page map entry groups */ . 29c char ss2; /* Is Sparcstation 2? */ . 22a int NKLUDGE; . 21d 19d ## diffname ss/main.c 1992/0813 ## diff -e /n/bootesdump/1992/0812/sys/src/9/ss/main.c /n/bootesdump/1992/0813/sys/src/9/ss/main.c 327,328d 308,325c catch.pc = 0; putw4(va, INVALIDPTE); . 294,306c /* * Look for a frame buffer. This isn't done the way the * ROM does it. Instead we ask if we know the machine type * and just use the builtin frame buffer if we can. Otherwise * we just look in slot 3 which is where it usually is. * The ROM scans the slots in a specified order and uses * the first one it finds. Too much bother. * * If we find a frame buffer, we always use it as a console * rather than the attached terminal, if any. This means * if you have a frame buffer you'd better have a builtin * keyboard, too. */ switch(idprom[1]){ case 0x52: /* IPC */ case 0x54: /* SLC */ conf.monitor = 1; strcpy(fbstr, "bwtwo"); break; case 0x57: /* IPX */ conf.monitor = 1; strcpy(fbstr, "cgsix"); break; default: /* map frame buffer id in SBUS slot 3 */ putw4(va, ((FRAMEBUFID>>PGSHIFT)&0xFFFF)|PTEPROBEIO); conf.monitor = 0; /* if frame buffer not present, we will trap, so prepare to catch it */ if(setlabel(&catch) == 0){ conf.monitor = *(ulong*)va; switch(conf.monitor){ case 0xFE010101: strcpy(fbstr, "cgthree"); break; case 0xFE010104: strcpy(fbstr, "bwtwo"); break; } if(fbstr[0] == 0){ j = *(ulong*)(va+4); if(j > BY2PG-8) j = BY2PG - 8; /* -8 for safety */ for(i=0; i>PGSHIFT)&0xFFFF)|PTEPROBEIO); conf.monitor = 0; /* if frame buffer not present, we will trap, so prepare to catch it */ if(setlabel(&catch) == 0){ conf.monitor = *(ulong*)va; switch(conf.monitor & 0xF0FFFFFF){ case 0xF0010101: strcpy(fbstr, "cgthree"); break; case 0xF0010104: strcpy(fbstr, "bwtwo"); break; } if(fbstr[0] == 0){ j = *(ulong*)(va+4); if(j > BY2PG-8) j = BY2PG - 8; /* -8 for safety */ for(i=0; ilrp = (Etherpkt*)va; lp->rp = (Etherpkt*)va; . 464c int i; . ## diffname ss/main.c 1992/0910 ## diff -e /n/bootesdump/1992/0908/sys/src/9/ss/main.c /n/bootesdump/1992/0910/sys/src/9/ss/main.c 452a conf.monitor = 0; . ## diffname ss/main.c 1992/0911 ## diff -e /n/bootesdump/1992/0910/sys/src/9/ss/main.c /n/bootesdump/1992/0911/sys/src/9/ss/main.c 377,378d 143d 60a conf.monitor = 0; . 22d ## diffname ss/main.c 1992/0912 ## diff -e /n/bootesdump/1992/0911/sys/src/9/ss/main.c /n/bootesdump/1992/0912/sys/src/9/ss/main.c 450,451d 143,144d 60d ## diffname ss/main.c 1992/0913 ## diff -e /n/bootesdump/1992/0912/sys/src/9/ss/main.c /n/bootesdump/1992/0913/sys/src/9/ss/main.c 418,419c if(i > (12*MB)/BY2PG) conf.upages += i - ((12*MB)/BY2PG); . ## diffname ss/main.c 1992/0914 ## diff -e /n/bootesdump/1992/0913/sys/src/9/ss/main.c /n/bootesdump/1992/0914/sys/src/9/ss/main.c 294,299c * Look for a frame buffer. Do it the way the * ROM does it: scan the slots in a specified order and use * the first one it finds. . 149d ## diffname ss/main.c 1992/0922 ## diff -e /n/bootesdump/1992/0914/sys/src/9/ss/main.c /n/bootesdump/1992/0922/sys/src/9/ss/main.c 120c sccsetup((void*)(k->va), EIAFREQ, 1); . 118c sccsetup((void*)(k->va), KMFREQ, 1); . ## diffname ss/main.c 1992/1002 ## diff -e /n/bootesdump/1992/0922/sys/src/9/ss/main.c /n/bootesdump/1992/1002/sys/src/9/ss/main.c 303d ## diffname ss/main.c 1992/1020 ## diff -e /n/bootesdump/1992/1002/sys/src/9/ss/main.c /n/bootesdump/1992/1020/sys/src/9/ss/main.c 221a } uchar * pusharg(char *p) { int n; n = strlen(p)+1; sp -= n; memmove(sp, p, n); return sp; } void bootargs(ulong base) { int i, ac; uchar *av[32]; uchar **lsp; sp = (uchar*)base + BY2PG - MAXSYSARG*BY2WD; ac = 0; av[ac++] = pusharg("/sparc/9ss"); av[ac++] = pusharg("-p"); /* 4 byte word align stack */ sp = (uchar*)((ulong)sp & ~3); /* build argc, argv on stack */ sp -= (ac+1)*sizeof(sp); lsp = (uchar**)sp; for(i = 0; i < ac; i++) *lsp++ = av[i] + ((USTKTOP - BY2PG) - base); *lsp = 0; sp += (USTKTOP - BY2PG) - base - sizeof(sp); . 209a pg = newpage(1, 0, USTKTOP-BY2PG); segpage(s, pg); k = kmap(pg); bootargs(VA(k)); kunmap(k); . 168a Page *pg; . 155c touser((long)sp); . 21a uchar *sp; . ## diffname ss/main.c 1992/1029 ## diff -e /n/bootesdump/1992/1020/sys/src/9/ss/main.c /n/bootesdump/1992/1029/sys/src/9/ss/main.c 423c npg = (j-i)*MB/BY2PG; . ## diffname ss/main.c 1992/1105 ## diff -e /n/bootesdump/1992/1029/sys/src/9/ss/main.c /n/bootesdump/1992/1105/sys/src/9/ss/main.c 476c conf.nswap = 16*MB/BY2PG; . 453c i = screenbits()-1; /* Calculate % of memory for page pool */ i = 70 - (i*10); conf.upages = (conf.npage*i)/100; . 451d ## diffname ss/main.c 1993/0206 ## diff -e /n/bootesdump/1992/1105/sys/src/9/ss/main.c /n/bootesdump/1993/0206/sys/src/9/ss/main.c 480,483d ## diffname ss/main.c 1993/0416 ## diff -e /n/bootesdump/1993/0206/sys/src/9/ss/main.c /n/bootesdump/1993/0416/sys/src/9/ss/main.c 447d 445c conf.base1 = conf.base0 + 8*MB; . 420a i = v-'0'; . 345a case 0x52: /* IPC */ . ## diffname ss/main.c 1993/0501 # deleted ## diff -e /n/bootesdump/1993/0416/sys/src/9/ss/main.c /n/fornaxdump/1993/0501/sys/src/brazil/ss/main.c 1,536d