--- /sys/src/9k/k10/main.c +++ /sys/src/9k/k10/main.c @@ -392,7 +392,7 @@ userinit(void) */ s = newseg(SG_STACK, USTKTOP-USTKSIZE, USTKTOP); p->seg[SSEG] = s; - pg = newpage(1, s, USTKTOP-(1<lg2pgsize), 0); + pg = newpage(1, s, USTKTOP-segpgsize(s), 0); segpage(s, pg); k = kmap(pg); bootargs(VA(k)); --- /sys/src/9k/port/devproc.c +++ /sys/src/9k/port/devproc.c @@ -1590,7 +1590,7 @@ procctlmemio(Proc *p, uintptr offset, int n, void *va, int read) if(pagedout(pg)) panic("procctlmemio1"); - pgsize = 1<lg2pgsize; + pgsize = segpgsize(s); l = pgsize - (offset&(pgsize-1)); if(n > l) n = l; --- /sys/src/9k/port/fault.c +++ /sys/src/9k/port/fault.c @@ -76,7 +76,7 @@ fixfault(Segment *s, uintptr addr, int read, int dommuput) Page *(*fn)(Segment*, uintptr); uintptr mmuphys, pgsize, soff; - pgsize = 1<lg2pgsize; + pgsize = segpgsize(s); addr &= ~(pgsize-1); soff = addr-s->base; p = &s->map[soff/s->ptemapmem]; @@ -201,7 +201,7 @@ pio(Segment *s, uintptr addr, uintptr soff, Page **p) Page *loadrec; uintptr pgsize; - pgsize = 1<lg2pgsize; + pgsize = segpgsize(s); loadrec = *p; if(!pagedout(*p) || loadrec != nil) return; @@ -363,7 +363,7 @@ checkpages(void) if(s == nil) continue; qlock(&s->lk); - pgsize = 1<lg2pgsize; + pgsize = segpgsize(s); for(addr=s->base; addrtop; addr+=pgsize){ off = addr - s->base; p = s->map[off/s->ptemapmem]; --- /sys/src/9k/port/portdat.h +++ /sys/src/9k/port/portdat.h @@ -411,6 +411,8 @@ struct Segment Sema sema; }; +#define segpgsize(s) (1<<(s)->lg2pgsize) + enum { RENDLOG = 5, --- /sys/src/9k/port/sysseg.c +++ /sys/src/9k/port/sysseg.c @@ -84,7 +84,7 @@ ibrk(uintptr addr, int seg) addr = s->base; } - pgsize = 1<lg2pgsize; + pgsize = segpgsize(s); newtop = ROUNDUP(addr, pgsize); newsize = (newtop-s->base)/pgsize; if(newtop < s->top) { @@ -400,7 +400,7 @@ syssegflush(Ar0* ar0, va_list list) error(Ebadarg); s->flushme = 1; - pgsize = 1<lg2pgsize; + pgsize = segpgsize(s); more: l = len; if(addr+l > s->top)