コード例 #1
0
ファイル: dvma.c プロジェクト: MarginC/kame
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;
	}
}
コード例 #2
0
ファイル: dvma.c プロジェクト: lacombar/netbsd-alc
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;
	}
}