M port/fault.c => port/fault.c +29 -0
@@ 7,6 7,35 @@
void faulterror(char*);
+ulong
+getpte(ulong addr)
+{
+ Pte **p, *etp;
+ Segment *s;
+ Page **pg;
+ ulong soff;
+
+ s = seg(up, addr, 1);
+ if(s == 0)
+ return -1;
+
+ addr &= ~(BY2PG-1);
+ soff = addr-s->base;
+ p = &s->map[soff/PTEMAPMEM];
+ if(*p == 0) {
+ qunlock(&s->lk);
+ return -1;
+ }
+ etp = *p;
+ pg = &etp->pages[(soff&(PTEMAPMEM-1))/BY2PG];
+ if(*pg == 0) {
+ qunlock(&s->lk);
+ return -1;
+ }
+ qunlock(&s->lk);
+ return (*pg)->pa;
+}
+
int
fault(ulong addr, int read)
{
M port/portdat.h => port/portdat.h +2 -1
@@ 599,7 599,8 @@ struct Proc
void *dbgreg; /* User registers for devproc */
ulong svstatus;
ulong svr1;
-
+int entpc;
+int entr31;
/*
* machine specific MMU
*/
M port/qio.c => port/qio.c +0 -1
@@ 407,7 407,6 @@ qread(Queue *q, void *vp, int len)
if(q->state & Qclosed){
unlock(q);
splx(x);
-print("Qclosed %lux\n", q);
return 0;
}
M port/sysproc.c => port/sysproc.c +1 -2
@@ 294,7 294,7 @@ sysexec(ulong *arg)
if((ssize+4) & 7)
ssize += 4;
spage = (ssize+(BY2PG-1)) >> PGSHIFT;
-print("ssize %d spage %lux\n", ssize, spage);
+
/*
* Build the stack segment, putting it in kernel virtual for the moment
*/
@@ 319,7 319,6 @@ print("ssize %d spage %lux\n", ssize, spage);
argp = (char**)arg[1];
}
*argv++ = charp + (USTKTOP-TSTKTOP);
-print("arg[%d] %s\n", i, *argp);
n = strlen(*argp) + 1;
memmove(charp, *argp++, n);
charp += n;