rem: TRACE(("unmap_tmap: removing page 0x%x\n", start));
add: TRACE(("unmap_tmap: removing page 0x%lx\n", start));
context: unmap_tmap(vm_translation_map *map, addr_t start, addr_t end){	ptentry *pt;	pdentry *pd = map->arch_data->pgdir_virt;	int index;	int err;	start = ROUNDOWN(start, PAGE_SIZE);	end = ROUNDUP(end, PAGE_SIZE);	TRACE(("unmap_tmap: asked to free pages 0x%x to 0x%x\n", start, end));restart:	if (start >= end)		return 0;	index = VADDR_TO_PDENT(start);	if (pd[index].present == 0) {		// no pagetable here, move the start up to access the next page table		start = ROUNDUP(start + 1, PAGE_SIZE);		goto restart;	}	do {		err = get_physical_page_tmap(ADDR_REVERSE_SHIFT(pd[index].addr), (addr_t *)&pt, PHYSICAL_PAGE_NO_WAIT);	} while (err < 0);	for (index = VADDR_TO_PTENT(start); (index < 1024) && (start < end); index++, start += PAGE_SIZE) {		if (pt[index].present == 0) {			// page mapping not valid			continue;		}		TRACE(("unmap_tmap: removing page 0x%x\n", start));		pt[index].present = 0;		map->map_count--;		if (map->arch_data->num_invalidate_pages < PAGE_INVALIDATE_CACHE_SIZE)			map->arch_data->pages_to_invalidate[map->arch_data->num_invalidate_pages] = start;		map->arch_data->num_invalidate_pages++;	}	put_physical_page_tmap((addr_t)pt);	goto restart;}