void __init mmu_init()

in mm/init.c [128:152]


void __init mmu_init(unsigned long min_pfn, unsigned long max_pfn)
{
	int i;

	for (i = 0; i < USER_PTRS_PER_PGD; i++)
		swapper_pg_dir[i].pgd = __pa(invalid_pte_table);

	for (i = USER_PTRS_PER_PGD; i < PTRS_PER_PGD; i++)
		swapper_pg_dir[i].pgd =
			__pa(kernel_pte_tables + (PTRS_PER_PTE * (i - USER_PTRS_PER_PGD)));

	for (i = 0; i < PTRS_KERN_TABLE; i++)
		set_pte(&kernel_pte_tables[i], __pte(_PAGE_GLOBAL));

	for (i = min_pfn; i < max_pfn; i++)
		set_pte(&kernel_pte_tables[i - PFN_DOWN(va_pa_offset)], pfn_pte(i, PAGE_KERNEL));

	flush_tlb_all();
	local_icache_inv_all(NULL);

	/* Setup page mask to 4k */
	write_mmu_pagemask(0);

	setup_pgd(swapper_pg_dir, 0);
}