## diffname power/main.c 1990/0227 ## diff -e /dev/null /n/bootesdump/1990/0227/sys/src/9/mips/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" void main(void) { active.exiting = 0; active.machs = 1; machinit(); confinit(); lockinit(); printinit(); tlbinit(); vecinit(); procinit0(); pgrpinit(); chaninit(); clockinit(); alarminit(); io2init(); chandevreset(); streaminit(); pageinit(); userinit(); launchinit(); schedinit(); } void machinit(void) { int n; n = m->machno; memset(m, 0, sizeof(Mach)); m->machno = n; m->mmask = 1<machno; } void tlbinit(void) { int i; for(i=0; iresetforce = (1<<1); for(i=0; i<1000000; i++) ; MODEREG->resetforce = 0; MODEREG->masterslave = (SLAVE<<4) | MASTER; /* * all VME interrupts to the error routine */ for(i=0; i<256; i++) setvmevec(i, novme); /* * tell IO2 to sent all interrupts to CPU 0's SBCC */ for(i=0; i<8; i++) INTVECREG->i[i].vec = 0<<8; /* * Tell CPU 0's SBCC to map all interrupts from the IO2 to MIPS level 5 * * Since there are 6 MIPS hardware interrupts and the SBCC can generate * only 5, one hardware interrupt can't be generated by the SBCC. SBCC * interrupt 4 maps to MIPS interrupt 5, SBCC interrupt 0 maps to MIPS * interrupt 0. I don't know which interrupt is missing. -- presotto */ SBCCREG->flevel = 0x10; /* * Tell CPU 0's SBCC to enable all interrupts from the IO2. * * The SBCC 16 bit registers are read/written as ulong, but only * bits 23-16 and 7-0 are meaningful. */ SBCCREG->fintenable |= 0xff; /* allow all interrupts on the IO2 */ SBCCREG->idintenable |= 0x800000; /* allow interrupts from the IO2 */ /* * enable all interrupts on the IO2 */ *IO2SETMASK = 0xff; } void launchinit(void) { int i; for(i=1; iproc = u->p; u->p->state = Running; u->p->mach = m; spllo(); chandevinit(); u->slash = (*devtab[0].attach)(0); u->dot = clone(u->slash, 0); touser(); } FPsave initfp; void userinit(void) { Proc *p; Seg *s; User *up; p = newproc(); p->pgrp = newpgrp(); strcpy(p->text, "*init*"); strcpy(p->pgrp->user, "bootes"); savefpregs(&initfp); p->fpstate = FPinit; /* * Kernel Stack */ p->sched.pc = (ulong)init0; p->sched.sp = USERADDR+BY2PG-20; p->upage = newpage(0, 0, USERADDR|(p->pid&0xFFFF)); /* * User */ up = (User*)(p->upage->pa|KZERO); up->p = p; /* * 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); memcpy((ulong*)(s->o->pte[0].page->pa|KZERO), initcode, sizeof initcode); s->minva = 0x1000; s->maxva = 0x2000; ready(p); } void lights(int v) { *LED = ~v; } typedef struct Beef Beef; struct Beef { long deadbeef; long sum; long cpuid; long virid; long erno; void (*launch)(void); void (*rend)(void); long junk1[4]; long isize; long dsize; long nonbss; long junk2[18]; }; void launch(int n) { Beef *p; long i; p = (Beef*) 0xb0000500 + n; p->launch = newstart; p->sum -= (long)newstart; for(i=0; i<3000000; i++) if(p->launch == 0) break; } void online(void) { machinit(); lock(&active); active.machs |= 1<machno; unlock(&active); tlbinit(); clockinit(); schedinit(); } void exit(void) { int i; u = 0; lock(&active); active.machs &= ~(1<machno); active.exiting = 1; unlock(&active); spllo(); print("cpu %d exiting\n", m->machno); while(active.machs || consactive()) for(i=0; i<1000; i++) ; splhi(); for(i=0; i<2000000; i++) ; duartreset(); firmware(); } /* * 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 confinit(void) { long x, i, j, *l; conf.nmach = 4; if(conf.nmach > MAXMACH) panic("confinit"); conf.nproc = 193; conf.npgrp = 100; x = 0x12345678; for(i=4; i<64; i+=4){ l = (long*)(KSEG1|(i*1024L*1024L)); *l = x; wbflush(); *(ulong*)KSEG1 = *(ulong*)KSEG1; /* clear latches */ if(*l != x) break; x += 0x3141526; } conf.npage = i*1024/4; conf.npte = 20000; conf.nmod = 500; conf.nalarm = 1000; conf.norig = 500; conf.nchan = 500; conf.nenv = 200; conf.nenvchar = 10000; conf.npgenv = 200; conf.nmtab = 100; conf.nmount = 500; conf.nmntdev = 30; conf.nmntbuf = 60; conf.nmnthdr = 60; conf.nstream = 512; conf.nqueue = 5 * conf.nstream; conf.nblock = 16 * conf.nstream; conf.nsrv = 32; } . ## diffname power/main.c 1990/0312 ## diff -e /n/bootesdump/1990/0227/sys/src/9/mips/main.c /n/bootesdump/1990/0312/sys/src/9/mips/main.c 374c conf.nmod = 2000; . ## diffname power/main.c 1990/0321 ## diff -e /n/bootesdump/1990/0312/sys/src/9/mips/main.c /n/bootesdump/1990/0321/sys/src/9/mips/main.c 378,380c conf.nenv = 400; conf.nenvchar = 20000; conf.npgenv = 400; . ## diffname power/main.c 1990/0322 ## diff -e /n/bootesdump/1990/0321/sys/src/9/mips/main.c /n/bootesdump/1990/0322/sys/src/9/mips/main.c 375c conf.nalarm = 10000; . 362c for(i=4; i<128; i+=4){ . ## diffname power/main.c 1990/0325 ## diff -e /n/bootesdump/1990/0322/sys/src/9/mips/main.c /n/bootesdump/1990/0325/sys/src/9/mips/main.c 373c conf.npte = 40000; . ## diffname power/main.c 1990/0409 ## diff -e /n/bootesdump/1990/0325/sys/src/9/mips/main.c /n/bootesdump/1990/0409/sys/src/9/mips/main.c 373c conf.npte = 50000; . ## diffname power/main.c 1990/04101 ## diff -e /n/bootesdump/1990/0409/sys/src/9/mips/main.c /n/bootesdump/1990/04101/sys/src/9/mips/main.c 373c conf.npte = 60000; . ## diffname power/main.c 1990/0412 ## diff -e /n/bootesdump/1990/04101/sys/src/9/mips/main.c /n/bootesdump/1990/0412/sys/src/9/mips/main.c 373c conf.npte = 4*conf.npage; . ## diffname power/main.c 1990/0424 ## diff -e /n/bootesdump/1990/0412/sys/src/9/mips/main.c /n/bootesdump/1990/0424/sys/src/9/mips/main.c 389d 372,386c conf.npte = 4 * conf.npage; . 358,359d 355c #include "conf.h" . 150c . 144a int i; . 35a arginit(void) { int i; if(_argc > 5) _argc = 5; for(i = 1; i < _argc; i++){ strcpy(argx[i-1], _argv[i]); argv[i-1] = &(argx[i-1][0]); } } void . 14a arginit(); . 12a int i; . 9a /* * args passed by boot process */ int _argc; char **_argv; char **_env; char *argv[5]; char argx[4][64]; . ## diffname power/main.c 1990/0427 ## diff -e /n/bootesdump/1990/0424/sys/src/9/mips/main.c /n/bootesdump/1990/0427/sys/src/9/mips/main.c 218a s->o->pte[0].page = newpage(0, 0, USTKTOP-BY2PG); memcpy((ulong*)(s->o->pte[0].page->pa|KZERO|(BY2PG-argsize)), argbuf + sizeof(argbuf) - argsize, argsize); av = (char **)(s->o->pte[0].page->pa|KZERO|(BY2PG-argsize)); for(i = 0; i < _argc; i++) av[i] += (char *)USTKTOP - (argbuf + sizeof(argbuf)); . 214c * User Stack, pass input arguments to boot process . 191a int i; char **av; . 181c sp = (ulong*)(USTKTOP - argsize); touser(sp); . 175a . 170a ulong *sp; . 57a _argv = argv; argsize = ssize; . 54,56c /* * copy arguments into the buffer */ argv = (char**)(argbuf + sizeof(argbuf) - ssize); charp = (char*)(argbuf + sizeof(argbuf) - nbytes); for(i=0; i<_argc; i++){ argv[i] = charp; n = strlen(_argv[i]) + 1; memcpy(charp, _argv[i], n); charp += n; . 51,52c /* * trim arguments to make them fit in the buffer */ for(nbytes = i = 0; i < _argc; i++){ n = strlen(_argv[i]) + 1; ssize = BY2WD*(i+2) + ((nbytes+n+(BY2WD-1)) & ~(BY2WD-1)); if(ssize > sizeof(argbuf)) break; nbytes += n; } _argc = i; ssize = BY2WD*(i+1) + ((nbytes+(BY2WD-1)) & ~(BY2WD-1)); . 49c int i, n; int nbytes; int ssize; char *p; char **argv; char *charp; . 45a /* * copy arguments into a temporary buffer. we do this because the arguments * are in memory that may be allocated to processes or kernel buffers. */ . 15,16c char argbuf[512]; int argsize; . ## diffname power/main.c 1990/0430 ## diff -e /n/bootesdump/1990/0427/sys/src/9/mips/main.c /n/bootesdump/1990/0430/sys/src/9/mips/main.c 441a /* * zero memory from bss up */ e = (long *)(i*1024*1024); for(l = &end; l < e; l++) *l = 0; . 421c long x, i, j, *l, *e; . ## diffname power/main.c 1990/0504 ## diff -e /n/bootesdump/1990/0430/sys/src/9/mips/main.c /n/bootesdump/1990/0504/sys/src/9/mips/main.c 446,448c if(*sysname == 0){ for(argv = _env; *argv; argv++){ if(strncmp(*argv, SYSENV, sizeof(SYSENV)-1)==0){ strcpy(sysname, (*argv) + sizeof(SYSENV)-1); break; } } } strcpy(envbuf, SYSENV); strcat(envbuf, sysname); env[0] = envbuf; env[1] = 0; /* * trim arguments to make them fit in the buffer (argv[0] is sysname) */ nbytes = 0; _argv[0] = sysname; for(i = 0; i < _argc; i++){ n = strlen(_argv[i]) + 1; ssize = BY2WD*(i+2) + ((nbytes+n+(BY2WD-1)) & ~(BY2WD-1)); if(ssize > sizeof(argbuf)) break; nbytes += n; } _argc = i; ssize = BY2WD*(i+1) + ((nbytes+(BY2WD-1)) & ~(BY2WD-1)); /* * copy arguments into the buffer */ argv = (char**)(argbuf + sizeof(argbuf) - ssize); charp = (char*)(argbuf + sizeof(argbuf) - nbytes); for(i=0; i<_argc; i++){ argv[i] = charp; n = strlen(_argv[i]) + 1; memcpy(charp, _argv[i], n); charp += n; } _argv = argv; argsize = ssize; . 444c * get the system name from the environment . 442a confread(); if(conf.nmach > MAXMACH) panic("confinit"); } /* * copy arguments passed by the boot kernel (or ROM) into a temporary buffer. * we do this because the arguments are in memory that may be allocated * to processes or kernel buffers. */ #define SYSENV "netaddr=" void arginit(void) { int i, n; int nbytes; int ssize; char *p; char **argv; char *charp; . 438a /* * set minimal default values */ conf.nmach = 1; conf.nmod = 2000; conf.nalarm = 1000; conf.norig = 9; conf.nchan = 64; conf.nenv = 4; conf.nenvchar = 1000; conf.npgenv = 400; conf.nmtab = 4; conf.nmount = 4; conf.nmntdev = 4; conf.nmntbuf = 4; conf.nmnthdr = 4; conf.nstream = 4; conf.nsrv = 0; conf.nproc = 4; conf.npgrp = 4; . 427a /* skip white */ for(p = sym; *p==' ' || *p=='\t'; p++) ; sym = p; /* skip sym */ for(; *p && *p!=' ' && *p!='\t' && *p!='='; p++) ; if(*p) *p++ = 0; /* skip white */ for(; *p==' ' || *p=='\t' || *p=='='; p++) ; val = p; /* * lookup value */ for(ct = conftab; ct->sym; ct++) if(strcmp(sym, ct->sym) == 0){ *(ct->x) = confeval(val); return; } if(strcmp(sym, "sysname")==0){ p = strchr(val, ' '); if(p) *p = 0; strcpy(sysname, val); } } /* * read the ascii configuration left by the boot kernel */ void confread(void) { char *line; char *end; /* * process configuration file */ line = confbuf; while(end = strchr(line, '\n')){ *end = 0; confset(line); line = end+1; } } void confprint(void) { Conftab *ct; /* * lookup value */ for(ct = conftab; ct->sym; ct++) print("%s == %d\n", ct->sym, *ct->x); } void confinit(void) { long x, i, j, *l; /* * copy configuration down from high memory */ strcpy(confbuf, (char *)(0x80000000 + 4*1024*1024 - 4*1024)); /* * size memory */ . 425,426c /* comment */ if(p = strchr(sym, '#')) *p = 0; . 423c /* * parse line */ . 421c char *val, *p; Conftab *ct; ulong x; . 419c confset(char *sym) . 417a ulong confeval(char *exp) { char *op; Conftab *ct; /* crunch leading white */ while(*exp==' ' || *exp=='\t') exp++; op = strchr(exp, '+'); if(op != 0){ *op++ = 0; return confeval(exp) + confeval(op); } op = strchr(exp, '*'); if(op != 0){ *op++ = 0; return confeval(exp) * confeval(op); } if(*exp >= '0' && *exp <= '9') return strtoul(exp, 0, 0); /* crunch trailing white */ op = strchr(exp, ' '); if(op) *op = 0; op = strchr(exp, '\t'); if(op) *op = 0; /* lookup in symbol table */ for(ct = conftab; ct->sym; ct++) if(strcmp(exp, ct->sym) == 0) return *(ct->x); return 0; } /* * each line of the configuration is of the form `param = expression'. */ . 415a typedef struct Conftab { char *sym; ulong *x; } Conftab; #include "conf.h" . 51,89d 46,49d 27a arginit(); . 25d 22a icflush(0, 64*1024); . 17a /* * environment passed to any kernel started by this kernel */ char envbuf[64]; char *env[2]; /* * configuration file read by boot program */ char confbuf[4*1024]; /* * system name */ char sysname[64]; . 14a /* * arguments passed to initcode */ . ## diffname power/main.c 1990/0614 ## diff -e /n/bootesdump/1990/0504/sys/src/9/mips/main.c /n/bootesdump/1990/0614/sys/src/9/mips/main.c 549c conf.npage0 = i*1024/4; conf.npage = conf.npage0; . ## diffname power/main.c 1990/0617 ## diff -e /n/bootesdump/1990/0614/sys/src/9/mips/main.c /n/bootesdump/1990/0617/sys/src/9/mips/main.c 247c k = kmap(s->o->pte[0].page); memcpy((ulong*)VA(k), initcode, sizeof initcode); kunmap(k); . 223a kunmap(k); . 222c k = kmap(p->upage); up = (User*)VA(k); . 201a KMap *k; . ## diffname power/main.c 1990/0718 ## diff -e /n/bootesdump/1990/0617/sys/src/9/mips/main.c /n/bootesdump/1990/0718/sys/src/9/mips/main.c 59a sysloginit(); . ## diffname power/main.c 1990/0801 ## diff -e /n/bootesdump/1990/0718/sys/src/9/mips/main.c /n/bootesdump/1990/0801/sys/src/9/mips/main.c 71a icflush(0, 64*1024); . 45d 42c machinit(); . ## diffname power/main.c 1990/0802 ## diff -e /n/bootesdump/1990/0801/sys/src/9/mips/main.c /n/bootesdump/1990/0802/sys/src/9/mips/main.c 250a s->o->npage = 1; . 249c /* * On the mips, init text must be OCACHED to avoid reusing page * and getting in trouble with the hardware instruction cache. */ s->o = neworig(UTZERO, 1, OCACHED, 0); . ## diffname power/main.c 1990/0825 ## diff -e /n/bootesdump/1990/0802/sys/src/9/mips/main.c /n/bootesdump/1990/0825/sys/src/9/mips/main.c 136,139c * 0x01 level 0 * 0x02 level 1 * 0x04 level 2 * 0x08 level 4 * 0x10 level 5 . ## diffname power/main.c 1990/0826 ## diff -e /n/bootesdump/1990/0825/sys/src/9/mips/main.c /n/bootesdump/1990/0826/sys/src/9/mips/main.c 110a ioid = *IOID; . 108c ioboardinit(void) . 102a void ioboardid(void) { switch(ioid){ case IO2R1: print("IO2 revision 1\n"); break; case IO2R2: print("IO2 revision 2\n"); break; case IO3R1: print("IO3 revision 1\n"); break; default: print("unknown IO board\n"); break; } } . 61a ioboardid(); . 56c ioboardinit(); . 36a /* * IO board type */ int ioid; . ## diffname power/main.c 1990/0905 ## diff -e /n/bootesdump/1990/0826/sys/src/9/mips/main.c /n/bootesdump/1990/0905/sys/src/9/mips/main.c 183c *IO2SETMASK = iomask; . 177c SBCCREG->fintenable |= iomask; /* turn on all interrupts */ . 157c for(i=0; ifintenable |= 0xff; /* allow all interrupts on the IO2 */ . 175c for(i=0; i<8; i++) . 173c * tell IO2 to sent all interrupts to CPU 0's SBCC . 163c MODEREG->resetforce = (1<<0); . 160c MODEREG->resetforce = (1<<1) | (1<<0); . 145,155d 141,143d 139d 126c iprint("unknown IO board\n"); . 123c iprint("IO3 revision 1\n"); . 120c iprint("IO2 revision 2\n"); . 117c iprint("IO2 revision 1\n"); . 70d 65d 63a ioboardid(); . 47,48d 41,42d 38c * IO board type . ## diffname power/main.c 1990/0911 ## diff -e /n/bootesdump/1990/0907/sys/src/9/mips/main.c /n/bootesdump/1990/0911/sys/src/9/mips/main.c 619a conf.nenv = 15*conf.nproc; conf.nenvchar = 20 * conf.nenv; conf.npte = 4 * conf.npage; conf.nqueue = 3 * conf.nstream; conf.nblock = 10 * conf.nstream; . 599,616c conf.nalarm = 10000; conf.norig = 500; conf.nchan = 1000; conf.npgenv = 800; conf.nmtab = 100; conf.nmount = 5000; conf.nmntdev = 150; conf.nmntbuf = 120; conf.nmnthdr = 120; conf.nstream = 128; conf.nsrv = 32; conf.nproc = 386; conf.npgrp = 100; . 143c MODEREG->resetforce = noforce; . 140c MODEREG->resetforce = (1<<1) | noforce; . 136a . 135a if(ioid >= IO3R1) noforce = 1; else noforce = 0; . 133a int noforce; . 107,125d 60d ## diffname power/main.c 1990/0912 ## diff -e /n/bootesdump/1990/0911/sys/src/9/mips/main.c /n/bootesdump/1990/0912/sys/src/9/mips/main.c 309c p->sum = 0; s = 0; ptr = (ulong*)p; for (i = 0; i < sizeof(Beef)/sizeof(ulong); i++) s += *ptr++; p->sum = -(s+1); . 305c long i, s; ulong *ptr; . 141c for(i=0; i= IO3R1){ maxlevel = 11; . 114a int maxlevel; . 62d 49a sysloginit(); . ## diffname power/main.c 1990/0928 ## diff -e /n/bootesdump/1990/0912/sys/src/9/mips/main.c /n/bootesdump/1990/0928/sys/src/9/mips/main.c 50d ## diffname power/main.c 1990/1002 ## diff -e /n/bootesdump/1990/0928/sys/src/9/mips/main.c /n/bootesdump/1990/1002/sys/src/9/mips/main.c 124c print("IO %d\n", ioid); . ## diffname power/main.c 1990/1004 ## diff -e /n/bootesdump/1990/1002/sys/src/9/mips/main.c /n/bootesdump/1990/1004/sys/src/9/mips/main.c 593c conf.nmach = 2; . 124d ## diffname power/main.c 1990/1009 ## diff -e /n/bootesdump/1990/1004/sys/src/9/mips/main.c /n/bootesdump/1990/1009/sys/src/9/mips/main.c 614a conf.npipe = conf.nstream/2; . ## diffname power/main.c 1990/1013 ## diff -e /n/bootesdump/1990/1009/sys/src/9/mips/main.c /n/bootesdump/1990/1013/sys/src/9/mips/main.c 593c conf.nmod = 10000; . ## diffname power/main.c 1990/11151 ## diff -e /n/bootesdump/1990/1013/sys/src/9/mips/main.c /n/bootesdump/1990/11151/sys/src/9/mips/main.c 613c conf.nqueue = 5 * conf.nstream; . ## diffname power/main.c 1990/11161 ## diff -e /n/bootesdump/1990/11151/sys/src/9/mips/main.c /n/bootesdump/1990/11161/sys/src/9/mips/main.c 125,131c vmereset(); . 122,123d 119,120c else . 117c if(ioid >= IO3R1) . 113d 105a * reset the vme bus */ void vmereset(void) { long i; int noforce; if(ioid >= IO3R1) noforce = 1; else noforce = 0; MODEREG->resetforce = (1<<1) | noforce; for(i=0; i<1000000; i++) ; MODEREG->resetforce = noforce; } /* . ## diffname power/main.c 1990/11211 ## diff -e /n/bootesdump/1990/11161/sys/src/9/mips/main.c /n/bootesdump/1990/11211/sys/src/9/mips/main.c 41a char user[NAMELEN] = "bootes"; . ## diffname power/main.c 1990/1127 ## diff -e /n/bootesdump/1990/11211/sys/src/9/mips/main.c /n/bootesdump/1990/1127/sys/src/9/mips/main.c 603c conf.nmach = 1; . ## diffname power/main.c 1990/1202 ## diff -e /n/bootesdump/1990/1127/sys/src/9/mips/main.c /n/bootesdump/1990/1202/sys/src/9/mips/main.c 623a conf.nalarm = 500; conf.nmount = 500; conf.nsrv = 3; conf.nnoifc = 1; conf.nnoconv = 32; conf.nurp = 25; . 622a conf.nmtab = conf.nproc; conf.norig = 4 * conf.nproc; conf.nmod = 10 * conf.norig; conf.nchan = 20 * conf.nproc; conf.nmntdev = conf.nproc; conf.nmntbuf = conf.nproc; conf.nmnthdr = conf.nproc; conf.nstream = 2 * conf.nproc; . 604,621c conf.nproc = 32; conf.npgrp = conf.nproc / 4; conf.npgenv = 4 * conf.npgrp; conf.nenv = 4 * conf.nproc; . ## diffname power/main.c 1990/1211 ## diff -e /n/bootesdump/1990/1202/sys/src/9/mips/main.c /n/bootesdump/1990/1211/sys/src/9/mips/main.c 694a } /* * set up machine dependent process state for a new process */ void setup(Proc *p) { } /* * Save machine dependent process state */ void save(uchar *state, int len) { } /* * Restore what save() saves */ void restore(Proc *p, uchar *state) { . 593a conf.maxialloc = (128*1024*1024-256*1024-BY2PG); . 592a conf.base0 = 0; . ## diffname power/main.c 1990/1212 ## diff -e /n/bootesdump/1990/1211/sys/src/9/mips/main.c /n/bootesdump/1990/1212/sys/src/9/mips/main.c 697,720d 633a conf.copymode = 1; /* copy on reference */ . ## diffname power/main.c 1990/1214 ## diff -e /n/bootesdump/1990/1212/sys/src/9/mips/main.c /n/bootesdump/1990/1214/sys/src/9/mips/main.c 600a USED(i); . ## diffname power/main.c 1990/1228 ## diff -e /n/bootesdump/1990/1214/sys/src/9/mips/main.c /n/bootesdump/1990/1228/sys/src/9/mips/main.c 180a /* * get our ether addr out of the non-volatile ram */ ea[0] = LANCEID[20]>>8; ea[1] = LANCEID[16]>>8; ea[2] = LANCEID[12]>>8; ea[3] = LANCEID[8]>>8; ea[4] = LANCEID[4]>>8; ea[5] = LANCEID[0]>>8; /* * reset the lance. * configure the lance software parameters. * run through all lance memory to set parity. */ if(ioid >= IO3R1){ MODEREG->promenet |= 1; MODEREG->promenet &= ~1; lanceconfig(LANCE3RAM, LANCE3END, LANCERAP, LANCERDP, 4, (void*)0x800000, ea); for(sp = LANCE3RAM; sp < LANCE3END; sp += 2) *sp = 0; } else { MODEREG->promenet &= ~1; MODEREG->promenet |= 1; lanceconfig(LANCERAM, LANCEEND, LANCERAP, LANCERDP, 1, (void*)0x0, ea); for(sp = LANCERAM; sp < LANCEEND; sp += 1) *sp = 0; } /* * initialize the map/buffer use */ lm.ttot = 128; lm.rtot = 128; lm.rnext = lm.rused = lm.tnext = lm.tused = 0; } /* * map/copy a list of blocks to somewhere the lance can access * * if bp==0, just create a block and map it in */ static int isomap(void *x) { int next; next = (int)x; return x != lm.tused; } Block * lancemap(Block *bp, int len) { Block *nbp, *tbp; int next; ulong x; if(bp == 0){ next = lm.rnext+1 % lm.rtot; if(ioid >= IO3R1){ bp = allocb(sizeof(Etherpkt)); x = (ulong)(bp->wptr); *WRITEMAP = (next<<16) | ((x>>12)&0xFFFF); bp->va = (next<<12) | (x & 0xFFF)); } else { bp = allocb(0); x = (ulong)(LANCEMEM+4*1024+next*sizeof(Etherpkt)); bp->va = x; bp->rptr = (uchar *)x; bp->wptr = (uchar *)x; } lm.rnext = next; return bp; } if(ioid >= IO3R1){ for(nbp = bp; nbp; nbp = nbp->next){ next = lm.tnext+1 % lm.ttot; if(next == lm.tused) sleep(&lm.tr, isomap, (void *)next); x = (ulong)(nbp->rptr); *WRITEMAP = ((lm.rtot + next)<<16) | ((x>>12)&0xFFFF); nbp->va = ((lm.rtot + next)<<12) | (x & 0xFFF)); lm.tnext = next; } } else { tbp = bp; bp = allocb(0); next = lm.tnext+1 % lm.ttot; if(next == lm.tused) sleep(&lm.tr, isomap, (void *)next); x = (ulong)(LANCEMEM+4*1024+(next+lm.rtot)*sizeof(Etherpkt)); bp->va = x; bp->rptr = (uchar *)x; bp->wptr = (uchar *)x; for(nbp = tbp; nbp; nbp = nbp->next){ n = BLEN(nbp); if(BLEN(bp) + n < sizeof(Etherpkt)) n = sizeof(Etherpkt) - BLEN(bp); memcpy(bp->wptr, nbp->rptr, n); bp->wptr += n; } freeb(tbp); lm.tnext = next; } } /* * get a block back from the lance */ Block * lanceunmap(Block *bp) { . 134a ushort *sp; uchar ea[6]; . 41a /* * lance memory mapping */ typedef struct Lancemap Lancemap; struct Lancemap { int rused; /* first used receive map */ int rnext; /* next receive map to use */ int rtot; int tused; /* first used transmit map */ int tnext; /* next transmit map to use */ int ttot; Rendez tr; /* where to wait for a transmit map */ }; Lancemap lm; extern int ioid; . ## diffname power/main.c 1990/1229 ## diff -e /n/bootesdump/1990/1228/sys/src/9/mips/main.c /n/bootesdump/1990/1229/sys/src/9/mips/main.c 835a } /* * get our ether addr out of the non-volatile ram */ void lanceeaddr(uchar *ea) { ea[0] = LANCEID[20]>>8; ea[1] = LANCEID[16]>>8; ea[2] = LANCEID[12]>>8; ea[3] = LANCEID[8]>>8; ea[4] = LANCEID[4]>>8; ea[5] = LANCEID[0]>>8; } /* * allocate command memory for the initialization block * and descriptor rings. * * pass back the host's address of the memory, the lance's address * of the memory, and the span (in shorts) of each short as seen * by the host. The latter is only for a peculiarity of the SGI IO3. * It is normally 1. */ void lancectlmem(ushort **hostaddr, ushort **lanceaddr, int *sep, int len) { len = (len + sizeof(ushort) - 1)/sizeof(ushort); if(ioid >= IO3R1) *sep = 4; else *sep = 1; if(len+lancehmem > lancehend) panic("lancecmdmem"); *lanceaddr = lancelmem; *hostaddr = lancehmem; lancelmem += len; lancehmem += len; } /* * allocate packet buffer memory for the lance. * * pass back the host's address of the memory and the lance's address * of the memory. */ void lancepktmem(ushort **hostaddr, ushort **lanceaddr, int len) { ulong x; ulong y; if(ioid >= IO3R1){ /* * allocate some host mempry and map it into lance * space */ *hostaddr = (ushort*)ialloc(len, 1); x = (ulong)*hostaddr; *lanceaddr = (ushort*)((lancemap<<12) | (x & 0xFFF)); for(y = x; y < x+len; y += 0x1000){ *WRITEMAP = ((0x1E00+lancemap)<<16) | (y>>12)&0xFFFF; lancemap++; } } else { /* * allocate lance memory */ len = (len + sizeof(ushort) - 1)/sizeof(ushort); if(len+lancehmem > lancehend) panic("lancecmdmem"); *lanceaddr = lancelmem; *hostaddr = lancehmem; lancelmem += len; lancehmem += len; } } void lanceparity(void) { print("lance DRAM parity error\n"); MODEREG->promenet &= ~4; MODEREG->promenet |= 4; . 242,319d 233,239d 231a lancehmem = LANCERAM; lancehend = LANCEEND; lancelmem = (ushort*)0; . 228,229d 224a lancehmem = LANCE3RAM; lancehend = LANCE3END; lancelmem = (ushort*)0x800000; . 221,222d 215d 204,213d 155d 59,60d 52,57c /* * next free lance memory map */ int lancemap; . 45,50c ushort *lancelmem; /* next free lance mem as seen by lance */ ushort *lancehmem; /* next free lance mem as seen by host */ ushort *lancehend; . 43c * lance memory allocation . ## diffname power/main.c 1990/1231 ## diff -e /n/bootesdump/1990/1229/sys/src/9/mips/main.c /n/bootesdump/1990/1231/sys/src/9/mips/main.c 784,810c lp->rap = LANCERAP; lp->rdp = LANCERDP; lp->ea[0] = LANCEID[20]>>8; lp->ea[1] = LANCEID[16]>>8; lp->ea[2] = LANCEID[12]>>8; lp->ea[3] = LANCEID[8]>>8; lp->ea[4] = LANCEID[4]>>8; lp->ea[5] = LANCEID[0]>>8; lp->lognrrb = 7; lp->logntrb = 7; lp->nrrb = 1<lognrrb; lp->ntrb = 1<logntrb; if(ioid >= IO3R1) lanceIO3setup(lp); else lanceIO2setup(lp); . 782c lancesetup(Lance *lp) . 776,779c * set up the lance . 762,772c ulong x, y; int index; ushort *sp; int len; /* * reset lance and set parity on its memory */ MODEREG->promenet |= 1; MODEREG->promenet &= ~1; for(sp = LANCE3RAM; sp < LANCE3END; sp += 2) *sp = 0; lp->sep = 4; lp->lanceram = LANCE3RAM; lp->lm = (Lancemem*)0x800000; /* * allocate some host memory for buffers and map it into lance * space */ len = (lp->nrrb + lp->ntrb)*sizeof(Etherpkt); lp->rp = (Etherpkt*)ialloc(len , 1); lp->tp = lp->rp + lp->nrrb; x = (ulong)lp->rp; lp->lrp = (Etherpkt*)(x & 0xFFF); lp->ltp = lp->lrp + lp->nrrb; index = LANCEINDEX; for(y = x+len; x < y; x += 0x1000){ *WRITEMAP = (index<<16) | (x>>12)&0xFFFF; index++; } . 760c lanceIO3setup(Lance *lp) . 751,757c * setup the IO3 lance, io buffers are in host memory mapped to * lance address space . 742,747c ushort *sp; /* * reset lance and set parity on its memory */ MODEREG->promenet &= ~1; MODEREG->promenet |= 1; for(sp = LANCERAM; sp < LANCEEND; sp += 1) *sp = 0; lp->sep = 1; lp->lanceram = LANCERAM; lp->lm = (Lancemem*)0; /* * Allocate space in lance memory for the io buffers. * Start at 4k to avoid the initialization block and * descriptor rings. */ lp->lrp = (Etherpkt*)(4*1024); lp->ltp = lp->lrp + lp->nrrb; lp->rp = (Etherpkt*)(((ulong)LANCERAM) + (ulong)lp->lrp); lp->tp = lp->rp + lp->nrrb; . 740c lanceIO2setup(Lance *lp) . 737c * setup the IO2 lance, io buffers are in lance memory . 195,215d 49,53d 42,47d ## diffname power/main.c 1991/0109 ## diff -e /n/bootesdump/1990/1231/sys/src/9/mips/main.c /n/bootesdump/1991/0109/sys/src/9/mips/main.c 793a lp->busctl = BSWP; . ## diffname power/main.c 1991/0125 ## diff -e /n/bootesdump/1991/0109/sys/src/9/mips/main.c /n/bootesdump/1991/0125/sys/src/9/mips/main.c 635a conf.npipe = conf.nstream/2; /* must be after confread */ . 632d ## diffname power/main.c 1991/0212 ## diff -e /n/bootesdump/1991/0201/sys/src/9/mips/main.c /n/bootesdump/1991/0212/sys/src/9/power/main.c 182c *IO2SETMASK = 0xff000000; . 180c * Enable all interrupts on the IO2. If IO3, run in compatibility mode. . 140c maxlevel = 8; . ## diffname power/main.c 1991/0314 ## diff -e /n/bootesdump/1991/0212/sys/src/9/power/main.c /n/bootesdump/1991/0314/sys/src/9/power/main.c 254a up->fpsave.fpstatus = initfp.fpstatus; . ## diffname power/main.c 1991/0315 ## diff -e /n/bootesdump/1991/0314/sys/src/9/power/main.c /n/bootesdump/1991/0315/sys/src/9/power/main.c 216a chandevinit(); . 213,214c /* * These are o.k. because rootinit is null. * Then early kproc's will have a root and dot. */ . ## diffname power/main.c 1991/0318 ## diff -e /n/bootesdump/1991/0315/sys/src/9/power/main.c /n/bootesdump/1991/0318/sys/src/9/power/main.c 702c memmove(charp, _argv[i], n); . 290c memmove((ulong*)VA(k), initcode, sizeof initcode); . 269c memmove((ulong*)(s->o->pte[0].page->pa|KZERO|(BY2PG-argsize)), . ## diffname power/main.c 1991/0424 ## diff -e /n/bootesdump/1991/0318/sys/src/9/power/main.c /n/bootesdump/1991/0424/sys/src/9/power/main.c 636a conf.ipif = 8; conf.ip = 64; conf.arp = 32; conf.frag = 32; . ## diffname power/main.c 1991/0425 ## diff -e /n/bootesdump/1991/0424/sys/src/9/power/main.c /n/bootesdump/1991/0425/sys/src/9/power/main.c 103c q = (ulong*)vector0; . 80c m->stb = &stlb[n][0]; . 10a * software tlb simulation */ Softtlb stlb[4][STLBSIZE]; /* . ## diffname power/main.c 1991/0426 ## diff -e /n/bootesdump/1991/0425/sys/src/9/power/main.c /n/bootesdump/1991/0426/sys/src/9/power/main.c 109c for(size=0; size<0x80/sizeof(*q); size++) . ## diffname power/main.c 1991/0607 ## diff -e /n/bootesdump/1991/0426/sys/src/9/power/main.c /n/bootesdump/1991/0607/sys/src/9/power/main.c 821a /* * for the sake of a single devcons.c */ void buzz(int f, int d) { } int mouseputc(IOQ *q, int c) { return 0; } . 379c duartenable0(); . 373c while(active.machs || duartactive()) . 85a duartinit(); . 59a duartspecial(0, &printq, &kbdq, 9600); . ## diffname power/main.c 1991/0608 ## diff -e /n/bootesdump/1991/0607/sys/src/9/power/main.c /n/bootesdump/1991/0608/sys/src/9/power/main.c 647a conf.cntrlp = 1; . ## diffname power/main.c 1991/0611 ## diff -e /n/bootesdump/1991/0608/sys/src/9/power/main.c /n/bootesdump/1991/0611/sys/src/9/power/main.c 293c s->o = neworig(UTZERO, 1, OCACHED|OISMEM, 0); . 274c s->o = neworig(USTKTOP-BY2PG, 1, OWRPERM|OISMEM, 0); . ## diffname power/main.c 1991/0705 ## diff -e /n/bootesdump/1991/0611/sys/src/9/power/main.c /n/bootesdump/1991/0705/sys/src/9/power/main.c 832a . 656a conf.copymode = 1; /* copy on reference */ conf.cntrlp = 1; . 655d 648d 635d 628,629c conf.nseg = 4 * conf.nproc; conf.npagetab = conf.nseg*3; conf.nswap = 20000; conf.nimage = 200; . 381c duartreset(); . 375c while(active.machs || consactive()) . 299,300d 287,296c s = newseg(SG_TEXT, UTZERO, 1); p->seg[TSEG] = s; segpage(s, newpage(1, 0, UTZERO)); k = kmap(s->map[0]->pages[0]); . 281,282d 278c av = (char **)(pg->pa|KZERO|(BY2PG-argsize)); . 272,276c s = newseg(SG_STACK, USTKTOP-USTKSIZE, USTKSIZE/BY2PG); p->seg[SSEG] = s; pg = newpage(1, 0, USTKTOP-BY2PG); segpage(s, pg); memmove((ulong*)(pg->pa|KZERO|(BY2PG-argsize)), . 247a p->egrp = newegrp(); p->fgrp = newfgrp(); . 244a Page *pg; . 240c Segment *s; . 230a kickpager(); . 70a swapinit(); . 64c initseg(); grpinit(); . ## diffname power/main.c 1991/0707 ## diff -e /n/bootesdump/1991/0705/sys/src/9/power/main.c /n/bootesdump/1991/0707/sys/src/9/power/main.c 380c /* duartreset(); /**/ . ## diffname power/main.c 1991/0708 ## diff -e /n/bootesdump/1991/0707/sys/src/9/power/main.c /n/bootesdump/1991/0708/sys/src/9/power/main.c 380c duartenable0(); . ## diffname power/main.c 1991/0710 ## diff -e /n/bootesdump/1991/0708/sys/src/9/power/main.c /n/bootesdump/1991/0710/sys/src/9/power/main.c 382,447d 264c p->sched.sp = USERADDR+BY2PG-24; /* BUG */ . ## diffname power/main.c 1991/0711 ## diff -e /n/bootesdump/1991/0710/sys/src/9/power/main.c /n/bootesdump/1991/0711/sys/src/9/power/main.c 264c p->sched.sp = USERADDR+BY2PG-(1+MAXSYSARG)*BY2WD; . ## diffname power/main.c 1991/0717 ## diff -e /n/bootesdump/1991/0711/sys/src/9/power/main.c /n/bootesdump/1991/0717/sys/src/9/power/main.c 233d ## diffname power/main.c 1991/0803 ## diff -e /n/bootesdump/1991/0717/sys/src/9/power/main.c /n/bootesdump/1991/0803/sys/src/9/power/main.c 541a conf.npage1 = 0; conf.base1 = 0; . ## diffname power/main.c 1991/0926 ## diff -e /n/bootesdump/1991/0803/sys/src/9/power/main.c /n/bootesdump/1991/0926/sys/src/9/power/main.c 232a sp = (ulong*)(USTKTOP - argsize); . 231c if(!waserror()){ c = namec("#e/cputype", Acreate, OWRITE, 0600); (*devtab[c->type].write)(c, "mips", strlen("mips"), 0); close(c); poperror(); } . 215a Chan *c; . ## diffname power/main.c 1991/0927 ## diff -e /n/bootesdump/1991/0926/sys/src/9/power/main.c /n/bootesdump/1991/0927/sys/src/9/power/main.c 233,235c ksetenv("cputype", "mips"); . ## diffname power/main.c 1991/1101 ## diff -e /n/bootesdump/1991/0927/sys/src/9/power/main.c /n/bootesdump/1991/1101/sys/src/9/power/main.c 233a ksetenv("terminal", "sgi power 4D"); ksetenv("sysname", sysname); . ## diffname power/main.c 1991/1102 ## diff -e /n/bootesdump/1991/1101/sys/src/9/power/main.c /n/bootesdump/1991/1102/sys/src/9/power/main.c 234c ksetterm("sgi %s 4D"); . ## diffname power/main.c 1991/1105 ## diff -e /n/bootesdump/1991/1102/sys/src/9/power/main.c /n/bootesdump/1991/1105/sys/src/9/power/main.c 262c strcpy(p->user, "bootes"); . 131,132c delay(140); . ## diffname power/main.c 1991/1107 ## diff -e /n/bootesdump/1991/1105/sys/src/9/power/main.c /n/bootesdump/1991/1107/sys/src/9/power/main.c 597a conf.dkif = 2; . ## diffname power/main.c 1991/1109 ## diff -e /n/bootesdump/1991/1107/sys/src/9/power/main.c /n/bootesdump/1991/1109/sys/src/9/power/main.c 261c strcpy(p->user, eve); . 47,49d ## diffname power/main.c 1991/1110 ## diff -e /n/bootesdump/1991/1109/sys/src/9/power/main.c /n/bootesdump/1991/1110/sys/src/9/power/main.c 255a p->procmode = 0644; . ## diffname power/main.c 1991/1112 ## diff -e /n/bootesdump/1991/1110/sys/src/9/power/main.c /n/bootesdump/1991/1112/sys/src/9/power/main.c 256c p->procmode = 0640; . ## diffname power/main.c 1991/1115 ## diff -e /n/bootesdump/1991/1112/sys/src/9/power/main.c /n/bootesdump/1991/1115/sys/src/9/power/main.c 596d 580a conf.dkif = 1; . ## diffname power/main.c 1991/1127 ## diff -e /n/bootesdump/1991/1115/sys/src/9/power/main.c /n/bootesdump/1991/1127/sys/src/9/power/main.c 484a } else if(strcmp(sym, "eve")==0){ p = strchr(val, ' '); if(p) *p = 0; strcpy(eve, val); . ## diffname power/main.c 1991/1214 ## diff -e /n/bootesdump/1991/1127/sys/src/9/power/main.c /n/bootesdump/1991/1214/sys/src/9/power/main.c 781a USED(q); . 776a USED(f); . ## diffname power/main.c 1991/1222 ## diff -e /n/bootesdump/1991/1214/sys/src/9/power/main.c /n/bootesdump/1991/1222/sys/src/9/power/main.c 268c p->upage = newpage(1, 0, USERADDR|(p->pid&0xFFFF)); . 225d ## diffname power/main.c 1992/0101 ## diff -e /n/bootesdump/1991/1222/sys/src/9/power/main.c /n/bootesdump/1992/0101/sys/src/9/power/main.c 581c conf.nsrv = 20; . 564c conf.nproc = 100; . ## diffname power/main.c 1992/0120 ## diff -e /n/bootesdump/1992/0101/sys/src/9/power/main.c /n/bootesdump/1992/0120/sys/src/9/power/main.c 7d ## diffname power/main.c 1992/0209 ## diff -e /n/bootesdump/1992/0120/sys/src/9/power/main.c /n/bootesdump/1992/0209/sys/src/9/power/main.c 571c conf.nswap = 262144; . 551c conf.maxialloc = 16*1024*1024; . ## diffname power/main.c 1992/0228 ## diff -e /n/bootesdump/1992/0209/sys/src/9/power/main.c /n/bootesdump/1992/0228/sys/src/9/power/main.c 581,582d ## diffname power/main.c 1992/0321 ## diff -e /n/bootesdump/1992/0228/sys/src/9/power/main.c /n/bootesdump/1992/0321/sys/src/9/power/main.c 35,39d 2c #include "../port/lib.h" . ## diffname power/main.c 1992/0325 ## diff -e /n/bootesdump/1992/0321/sys/src/9/power/main.c /n/bootesdump/1992/0325/sys/src/9/power/main.c 592c conf.cntrlp = cpuserver; . 573c conf.nalarm = 2500; . ## diffname power/main.c 1992/0509 ## diff -e /n/bootesdump/1992/0325/sys/src/9/power/main.c /n/bootesdump/1992/0509/sys/src/9/power/main.c 80a m->ledval = 0xff; . ## diffname power/main.c 1992/0516 ## diff -e /n/bootesdump/1992/0509/sys/src/9/power/main.c /n/bootesdump/1992/0516/sys/src/9/power/main.c 220a kproc("alarm", alarmkproc, 0); . ## diffname power/main.c 1992/0517 ## diff -e /n/bootesdump/1992/0516/sys/src/9/power/main.c /n/bootesdump/1992/0517/sys/src/9/power/main.c 230a kproc("alarm", alarmkproc, 0); . 221d ## diffname power/main.c 1992/0602 ## diff -e /n/bootesdump/1992/0517/sys/src/9/power/main.c /n/bootesdump/1992/0602/sys/src/9/power/main.c 625,626d 617,622c strcpy(envbuf, IPADDRENV); for(argv = _env; *argv; argv++){ if(strncmp(*argv, IPADDRENV, sizeof(IPADDRENV)-1)==0){ strcat(envbuf, (*argv) + sizeof(IPADDRENV)-1); break; . 603c #define IPADDRENV "netaddr=" . 59d ## diffname power/main.c 1992/0607 ## diff -e /n/bootesdump/1992/0602/sys/src/9/power/main.c /n/bootesdump/1992/0607/sys/src/9/power/main.c 63a print("userinit\n"); . ## diffname power/main.c 1992/0610 ## diff -e /n/bootesdump/1992/0607/sys/src/9/power/main.c /n/bootesdump/1992/0610/sys/src/9/power/main.c 645,654c if(diskless[0] > '1') av[i++] = pusharg(diskless); av[i] = 0; . 643c * if no boot method is specified, look for * a default in the diskless environment variable . 639,640d 633,637c if(i && *(_argv[i]) != '-') diskless[0] = 0; av[i] = pusharg(_argv[i]); . 630,631c av = (char**)argbuf; sp = argbuf + sizeof(argbuf); . 628c * pack args into buffer . 617,625c if(*sysname == 0) for(av = _env; *av; av++) for(i=0; i < sizeof bootenv/sizeof bootenv[0]; i++){ n = strlen(bootenv[i].name); if(strncmp(*av, bootenv[i].name, n) == 0){ strncpy(bootenv[i].val, (*av)+n, NAMELEN); bootenv[i].val[NAMELEN-1] = '\0'; break; } } . 615c * get boot env variables . 608,612c char **av; . 603c struct{ char *name; char *val; }bootenv[] = { {"netaddr=", sysname}, {"console=", consname}, {"diskless=", diskless}, }; char *sp; char * pusharg(char *p) { int n; n = strlen(p)+1; sp -= n; memmove(sp, p, n); return sp; } . 601a * * also grab any environment variables that might be useful . 380c firmware(conf.cntrlp ? PROM_AUTOBOOT : PROM_REINIT); . 283,289d 281a k = kmap(pg); for(av = (char**)argbuf; *av; av++) *av += (USTKTOP - sizeof(argbuf)) - (ulong)argbuf; memmove((uchar*)VA(k) + BY2PG - sizeof(argbuf), argbuf, sizeof argbuf); kunmap(k); . 231,232c touser((uchar*)(USTKTOP - sizeof(argbuf))); . 207d 64d 48a confinit(); . 47d 28,29c char consname[NAMELEN]; char diskless[NAMELEN]; . 26c * environment variables extracted from NVRAM . 22c char argbuf[128]; . ## diffname power/main.c 1992/0622 ## diff -e /n/bootesdump/1992/0610/sys/src/9/power/main.c /n/bootesdump/1992/0622/sys/src/9/power/main.c 721c lp->rp = (Etherpkt*)xspanalloc(len , BY2PG, 0); . 600c struct { . 585d 577d 571,573d 566,569d 561,563d 557,558c conf.npgenv = 4 * conf.nproc; . 545a conf.upages = (conf.npage*70)/100; i = conf.npage-conf.upages; if(i > (12*MB)/BY2PG) conf.upages += i - ((12*MB)/BY2PG); . 544d 531c l = (long*)(KSEG1|(i*MB)); . 524c strcpy(confbuf, (char *)(0x80000000 + (4*MB) - BY2PG)); . 63d 56,57d 51a pageinit(); xsummary(); . 49a xinit(); . 14,40d 9,12c Softtlb stlb[MAXMACH][STLBSIZE]; /* software tlb simulation */ int _argc; /* args passed by boot process */ char **_argv; char **_env; char argbuf[128]; /* arguments passed to initcode */ int argsize; char consname[NAMELEN]; /* environment vars from NVRAM */ char diskless[NAMELEN]; char confbuf[4*1024]; /* config file read by boot program */ int ioid; /* IO board type */ . ## diffname power/main.c 1992/0623 ## diff -e /n/bootesdump/1992/0622/sys/src/9/power/main.c /n/bootesdump/1992/0623/sys/src/9/power/main.c 547d 544,545d 539,541d 33d ## diffname power/main.c 1992/0625 ## diff -e /n/bootesdump/1992/0623/sys/src/9/power/main.c /n/bootesdump/1992/0625/sys/src/9/power/main.c 540d 225,226c p->egrp = smalloc(sizeof(Egrp)); p->egrp->ref = 1; p->fgrp = smalloc(sizeof(Fgrp)); p->fgrp->ref = 1; . ## diffname power/main.c 1992/0711 ## diff -e /n/bootesdump/1992/0625/sys/src/9/power/main.c /n/bootesdump/1992/0711/sys/src/9/power/main.c 742a USED(c); . 736a USED(d); . 499c long x, i, *l; . 416d 219d 183,185d 114d 93d ## diffname power/main.c 1992/0715 ## diff -e /n/bootesdump/1992/0711/sys/src/9/power/main.c /n/bootesdump/1992/0715/sys/src/9/power/main.c 516a ktop = PGROUND((ulong)end); ktop = PADDR(ktop); conf.npage0 -= ktop/BY2PG; conf.base0 += ktop; . 492a ulong ktop; . ## diffname power/main.c 1992/0725 ## diff -e /n/bootesdump/1992/0715/sys/src/9/power/main.c /n/bootesdump/1992/0725/sys/src/9/power/main.c 552d 349c firmware(cpuserver ? PROM_AUTOBOOT : PROM_REINIT); . ## diffname power/main.c 1992/0812 ## diff -e /n/bootesdump/1992/0725/sys/src/9/power/main.c /n/bootesdump/1992/0812/sys/src/9/power/main.c 334a USED(ispanic); . 331c exit(int ispanic) . ## diffname power/main.c 1992/1125 ## diff -e /n/bootesdump/1992/0812/sys/src/9/power/main.c /n/bootesdump/1992/1125/sys/src/9/power/main.c 746d 200a kproc("kdebug", debugger, 0); . ## diffname power/main.c 1992/1203 ## diff -e /n/bootesdump/1992/1125/sys/src/9/power/main.c /n/bootesdump/1992/1203/sys/src/9/power/main.c 201c if(conf.nmach > 2) kproc("kdebug", debugger, 0); . ## diffname power/main.c 1992/1220 ## diff -e /n/bootesdump/1992/1203/sys/src/9/power/main.c /n/bootesdump/1992/1220/sys/src/9/power/main.c 201c if(conf.debugger && conf.nmach > 2) . ## diffname power/main.c 1993/0106 ## diff -e /n/bootesdump/1992/1220/sys/src/9/power/main.c /n/bootesdump/1993/0106/sys/src/9/power/main.c 540c conf.nmach = 2; . ## diffname power/main.c 1993/0123 ## diff -e /n/bootesdump/1993/0106/sys/src/9/power/main.c /n/bootesdump/1993/0123/sys/src/9/power/main.c 476c line = lend+1; . 473,474c while(lend = strchr(line, '\n')){ *lend = 0; . 467c char *lend; . ## diffname power/main.c 1993/0206 ## diff -e /n/bootesdump/1993/0123/sys/src/9/power/main.c /n/bootesdump/1993/0206/sys/src/9/power/main.c 544,547d 540,541c conf.nmach = 1; . 521a conf.nproc = 128 + 3*i; . ## diffname power/main.c 1993/0501 ## diff -e /n/bootesdump/1993/0206/sys/src/9/power/main.c /n/fornaxdump/1993/0501/sys/src/brazil/power/main.c 544a conf.ipif = 8; conf.ip = 64; conf.arp = 32; conf.frag = 32; . 542c conf.nmach = 2; conf.nproc = 100; . 522,523d 476c line = end+1; . 473,474c while(end = strchr(line, '\n')){ *end = 0; . 467c char *end; . 351a firmware(PROM_REINIT); . 338d 261,263c /* Text */ . 257a . 240,248d 236,238c p->sched.sp = (ulong)p->kstack+KSTACK-(1+MAXSYSARG)*BY2WD; . 230a p->fpsave.fpstatus = initfp.fpstatus; . 228a . 217a char **av; Segment *s; . 216d 213,214d 204c touser((uchar*)(USTKTOP-sizeof(argbuf))); . 201,202d 196c sprint(buf, "sgi %s 4D", conffile); ksetenv("terminal", buf); . 190,191c up->slash = namec("#/", Atodir, 0, 0); up->dot = clone(up->slash, 0); . 181,183c char buf[2*NAMELEN]; . 177d 171c print("all launched\n");/**/ . 31a print("\n\nBRAZIL\n"); . 17,18c char confbuf[4*1024]; /* config file read by boot program */ int ioid; /* IO board type */ . 15c char consname[NAMELEN]; /* environment vars from NVRAM */ . 13c char argbuf[128]; /* arguments passed to initcode */ . 9,10c Softtlb stlb[MAXMACH][STLBSIZE]; /* software tlb simulation */ int _argc; /* args passed by boot process */ . ## diffname power/main.c 1993/0806 ## diff -e /n/fornaxdump/1993/0501/sys/src/brazil/power/main.c /n/fornaxdump/1993/0806/sys/src/brazil/power/main.c 677c lp->lrp = (Lancepkt*)(x & 0xFFF); . 673,674c len = (lp->nrrb + lp->ntrb)*sizeof(Lancepkt); lp->rp = (Lancepkt*)xspanalloc(len , BY2PG, 0); . 641c lp->rp = (Lancepkt*)(((ulong)LANCERAM) + (ulong)lp->lrp); . 639c lp->lrp = (Lancepkt*)(4*1024); . 315a duartinit(); . 310d 58d 41d 36a vecinit(); . 35d 31,32c duartspecial(0, 9600, &kbdq, &printq, kbdcr2nl); iprint("F:\n", printq); print("\n\nBrazil\n"); . 29a duartinit(); . 25a iprint("Boot baby\n"); . ## diffname power/main.c 1993/0807 ## diff -e /n/fornaxdump/1993/0806/sys/src/brazil/power/main.c /n/fornaxdump/1993/0807/sys/src/brazil/power/main.c 192a iallocinit(); . 82a . 43a rootfiles(); . 34d 26d ## diffname power/main.c 1993/0915 ## diff -e /n/fornaxdump/1993/0807/sys/src/brazil/power/main.c /n/fornaxdump/1993/0915/sys/src/brazil/power/main.c 42d 40a links(); . ## diffname power/main.c 1993/1201 ## diff -e /n/fornaxdump/1993/0915/sys/src/brazil/power/main.c /n/fornaxdump/1993/1201/sys/src/brazil/power/main.c 730,737d ## diffname power/main.c 1994/0322 ## diff -e /n/fornaxdump/1993/1201/sys/src/brazil/power/main.c /n/fornaxdump/1994/0322/sys/src/brazil/power/main.c 193d ## diffname power/main.c 1994/0406 ## diff -e /n/fornaxdump/1994/0322/sys/src/brazil/power/main.c /n/fornaxdump/1994/0406/sys/src/brazil/power/main.c 519a conf.ialloc = ((conf.npage-conf.upages)/2)*BY2PG; . 60a /* Setup call back ring buffer */ m->cbin = m->calls; m->cbout = m->calls; m->cbend = &m->calls[NCALLBACK]; . 54a dcflush(0, 64*1024); . ## diffname power/main.c 1994/0509 ## diff -e /n/fornaxdump/1994/0406/sys/src/brazil/power/main.c /n/fornaxdump/1994/0509/sys/src/brazil/power/main.c 62,66d ## diffname power/main.c 1997/0327 # deleted ## diff -e /n/fornaxdump/1994/0509/sys/src/brazil/power/main.c /n/emeliedump/1997/0327/sys/src/brazil/power/main.c 1,730d