## 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<<m->machno;
}
void
tlbinit(void)
{
int i;
for(i=0; i<NTLB; i++)
puttlbx(i, KZERO | PTEPID(i), 0);
}
void
vecinit(void)
{
ulong *p, *q;
int size;
p = (ulong*)EXCEPTION;
q = (ulong*)vector80;
for(size=0; size<4; size++)
*p++ = *q++;
p = (ulong*)UTLBMISS;
q = (ulong*)vector80;
for(size=0; size<4; size++)
*p++ = *q++;
}
/*
* We have to program both the IO2 board to generate interrupts
* and the SBCC on CPU 0 to accept them.
*/
void
io2init(void)
{
long i;
/*
* reset VME bus (MODEREG is on the IO2)
*/
MODEREG->resetforce = (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; i<conf.nmach; i++)
launch(i);
for(i=0; i<1000000; i++)
if(active.machs == (1<<conf.nmach) - 1){
print("all launched\n");
return;
}
print("launch: active = %x\n", active.machs);
}
void
init0(void)
{
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);
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<<m->machno;
unlock(&active);
tlbinit();
clockinit();
schedinit();
}
void
exit(void)
{
int i;
u = 0;
lock(&active);
active.machs &= ~(1<<m->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; i<iolevels; i++)
.
155c
* tell IO2 to send all interrupts to CPU 0's SBCC
.
137a
switch(ioid){
case IO2R1:
case IO2R2:
iolevels = 8;
iomask = 0xff;
break;
case IO3R1:
iolevels = 11;
iomask = 0x7fe;
break;
}
.
136a
/*
* set up interrupts based on IO board type
*/
.
135a
int intrs;
.
40a
int iolevels;
int iomask;
.
38c
* IO board type, number of interrupt levels, and interrupt enable mask
.
## diffname power/main.c 1990/09051
## diff -e /n/bootesdump/1990/0905/sys/src/9/mips/main.c /n/bootesdump/1990/09051/sys/src/9/mips/main.c
64a
sinit();
.
## diffname power/main.c 1990/0907
## diff -e /n/bootesdump/1990/09051/sys/src/9/mips/main.c /n/bootesdump/1990/0907/sys/src/9/mips/main.c
631a
conf.nnoifc = 1;
conf.nnoconv = 32;
conf.nurp = 256;
.
609a
* clear MP bus error caused by sizing memory
*/
i = *SBEADDR;
/*
.
201c
*IO2SETMASK = 0xff;
.
195c
SBCCREG->fintenable |= 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<maxlevel; i++)
.
120a
}
.
119c
} else {
maxlevel = 8;
.
117c
if(ioid >= 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<<lp->lognrrb;
lp->ntrb = 1<<lp->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
|