M boot/boot.c => boot/boot.c +10 -4
@@ 168,10 168,16 @@ rootserver(char *arg)
n += sprint(prompt+n, ", %s", mp->name);
sprint(prompt+n, ")");
- if(arg)
- strcpy(reply, arg);
- else
- strcpy(reply, method->name);
+ strcpy(reply, method->name);
+ if(arg){
+ j = strlen(arg);
+ for(mp = method; mp->name; mp++)
+ if(strncmp(arg, mp->name, j) == 0)
+ break;
+ if(mp->name)
+ strcpy(reply, arg);
+ }
+
for(notfirst = 0;; notfirst = 1){
if(pflag || notfirst)
outin(prompt, reply, sizeof(reply));
M pc/clock.c => pc/clock.c +1 -0
@@ 55,6 55,7 @@ clock(Ureg *ur, void *arg)
checkalarms();
mouseclock();
hardclock();
+ uartclock();
/*
* process time accounting
M pc/fns.h => pc/fns.h +1 -0
@@ 84,6 84,7 @@ void toscreen(void*);
void touser(void*);
void trapinit(void);
int tas(void*);
+void uartclock(void);
void vgainit(void);
#define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
#define kmapperm(x) kmap(x)
M pc/main.c => pc/main.c +1 -1
@@ 215,7 215,7 @@ bootargs(ulong base)
sp = (uchar*)base + BY2PG - MAXSYSARG*BY2WD;
ac = 0;
- av[ac++] = pusharg("/386/9safari");
+ av[ac++] = pusharg("/386/9dos");
av[ac++] = pusharg("-p");
cp[64] = 0;
buf[0] = 0;
M pc/trap.c => pc/trap.c +1 -1
@@ 672,5 672,5 @@ void
setkernur(Ureg *xp, Proc *p)
{
xp->pc = p->sched.pc;
- xp->sp = p->sched.sp;
+ xp->sp = p->sched.sp+4;
}
M port/devcons.c => port/devcons.c +1 -0
@@ 142,6 142,7 @@ panic(char *fmt, ...)
putstrn(buf, n+1);
prflush();
dumpstack();
+
exit(1);
}
int
M port/devproc.c => port/devproc.c +2 -1
@@ 296,7 296,8 @@ procread(Chan *c, void *va, long n, ulong offset)
switch(QID(c->qid)){
case Qmem:
- if(offset < KZERO)
+ if(offset < KZERO
+ || (offset >= USTKTOP-USTKSIZE && offset < USTKTOP))
return procctlmemio(p, offset, n, va, 1);
/* Protect crypt key memory */
M port/qio.c => port/qio.c +1 -0
@@ 721,6 721,7 @@ qclose(Queue *q)
q->state |= Qclosed;
bfirst = q->bfirst;
q->bfirst = 0;
+ q->len = 0;
unlock(q);
splx(x);