I'm not exactly sure, but I think I found a bug in the bank16k
implementation. When ptab_alloc() calls pagemap_alloc(), p_top is not
set yet. pagemap_alloc, then proceeds to assign only one bank to the
new processes. Assuming normal copy forking, should p_top be set to
the parent's p_top *before* calling pagemap_alloc() ?
This fix seems to make my coco3 UDATA mods start working
&& p->p_pid == nextpid)
newp->p_pid = 0; /* try again */
}
+ newp->p_top = udata.u_top;
if (pagemap_alloc(newp) == 0) {
newp->p_status = P_FORKING;
nproc++;