void dvma_init() { register int segva, dmava; dmava = DVMA_BASE; for (segva = SA_MIN_VA; segva < SA_MAX_VA; segva += NBPSG) { setsegmap(dmava, getsegmap(segva)); dmava += NBPSG; } }
void dvma_init(void) { u_int segva, dmava; int nseg; extern int start; /* * Align our address base with the DVMA segment. * Allocate one DVMA segment to cover the stack, which * grows downward from `start'. */ dmava = DVMA_BASE; base_va = segva = (((int)&start) & -NBPSG) - NBPSG; /* Then double-map the DVMA addresses */ nseg = (DVMA_MAPLEN + NBPSG - 1) >> SGSHIFT; while (nseg-- > 0) { setsegmap(dmava, getsegmap(segva)); segva += NBPSG; dmava += NBPSG; } }