Пример #1
0
void
startup_build_mem_nodes(struct memlist *list)
{
	pfn_t	start, end;

	/* LINTED: ASSERT will always true or false */
	ASSERT(NBBY * sizeof (mnodeset_t) >= max_mem_nodes);

	if (&plat_build_mem_nodes) {
		plat_build_mem_nodes(list);
	} else {
		/*
		 * Boot install lists are arranged <addr, len>, ...
		 */
		while (list) {
			start = list->ml_address >> PAGESHIFT;
			if (start > physmax)
				continue;
			end =
			    (list->ml_address + list->ml_size - 1) >> PAGESHIFT;
			if (end > physmax)
				end = physmax;
			mem_node_add_range(start, end);
			list = list->ml_next;
		}
		mem_node_physalign = 0;
		mem_node_pfn_shift = 0;
	}
}
Пример #2
0
void
startup_build_mem_nodes(prom_memlist_t *list, size_t nelems)
{
	size_t	elem;
	pfn_t	basepfn;
	pgcnt_t	npgs;

	/* LINTED: ASSERT will always true or false */
	ASSERT(NBBY * sizeof (mnodeset_t) >= max_mem_nodes);

	if (&plat_build_mem_nodes != NULL) {
		plat_build_mem_nodes(list, nelems);
	} else {
		/*
		 * Boot install lists are arranged <addr, len>, ...
		 */
		for (elem = 0; elem < nelems; list++, elem++) {
			basepfn = btop(list->addr);
			npgs = btop(list->size);
			mem_node_add_range(basepfn, basepfn + npgs - 1);
		}
	}
}