rem: addr phys_pgtable; addr virt_pgtable;
add: addr_t phys_pgtable; addr_t virt_pgtable;
context: vm_translation_map_module_init(kernel_args *ka){	TRACE(("vm_translation_map_module_init: entry\n"));	// page hole set up in stage2	page_hole = (ptentry *)ka->arch_args.page_hole;	// calculate where the pgdir would be	page_hole_pgdir = (pdentry *)(((unsigned int)ka->arch_args.page_hole) + (PAGE_SIZE * 1024 - PAGE_SIZE));	// clear out the bottom 2 GB, unmap everything	memset(page_hole_pgdir + FIRST_USER_PGDIR_ENT, 0, sizeof(pdentry) * NUM_USER_PGDIR_ENTS);	kernel_pgdir_phys = (pdentry *)ka->arch_args.phys_pgdir;	kernel_pgdir_virt = (pdentry *)ka->arch_args.vir_pgdir;	tmap_list_lock = 0;	tmap_list = NULL;	// allocate some space to hold physical page mapping info	paddr_desc = (paddr_chunk_desc *)vm_alloc_from_ka_struct(ka,		sizeof(paddr_chunk_desc) * 1024, LOCK_RW|LOCK_KERNEL);	num_virtual_chunks = IOSPACE_SIZE / IOSPACE_CHUNK_SIZE;	virtual_pmappings = (paddr_chunk_desc **)vm_alloc_from_ka_struct(ka,		sizeof(paddr_chunk_desc *) * num_virtual_chunks, LOCK_RW|LOCK_KERNEL);	iospace_pgtables = (ptentry *)vm_alloc_from_ka_struct(ka,		PAGE_SIZE * (IOSPACE_SIZE / (PAGE_SIZE * 1024)), LOCK_RW|LOCK_KERNEL);	TRACE(("paddr_desc %p, virtual_pmappings %p, iospace_pgtables %p\n",		paddr_desc, virtual_pmappings, iospace_pgtables));	// initialize our data structures	memset(paddr_desc, 0, sizeof(paddr_chunk_desc) * 1024);	memset(virtual_pmappings, 0, sizeof(paddr_chunk_desc *) * num_virtual_chunks);	first_free_vmapping = 0;	queue_init(&mapped_paddr_lru);	memset(iospace_pgtables, 0, PAGE_SIZE * (IOSPACE_SIZE / (PAGE_SIZE * 1024)));	iospace_mutex.sem = -1;	iospace_mutex.holder = -1;	iospace_full_sem = -1;	TRACE(("mapping iospace_pgtables\n"));	// put the array of pgtables directly into the kernel pagedir	// these will be wired and kept mapped into virtual space to be easy to get to	{		addr phys_pgtable;		addr virt_pgtable;		pdentry *e;		int i;		virt_pgtable = (addr)iospace_pgtables;		for (i = 0; i < (IOSPACE_SIZE / (PAGE_SIZE * 1024)); i++, virt_pgtable += PAGE_SIZE) {			vm_translation_map_quick_query(virt_pgtable, &phys_pgtable);			e = &page_hole_pgdir[(IOSPACE_BASE / (PAGE_SIZE * 1024)) + i];			put_pgtable_in_pgdir(e, phys_pgtable, LOCK_RW|LOCK_KERNEL);		}	}	TRACE(("vm_translation_map_module_init: done\n"));	return 0;}