} 
void iounmap(volatile void __iomem *token){	unsigned long address, start, end, size;	struct mm_struct *mm;	pgd_t *dir;	void *addr;	if (!mem_init_done) {		return;	}		addr = (void *) ((unsigned long __force) token & PAGE_MASK);		if ((size = im_free(addr)) == 0) {		return;	}	address = (unsigned long)addr; 	start = address;	end = address + size;	mm = &ioremap_mm;	spin_lock(&mm->page_table_lock);	dir = pgd_offset_i(address);	flush_cache_vunmap(address, end);	do {		unmap_im_area_pmd(dir, address, end - address);		address = (address + PGDIR_SIZE) & PGDIR_MASK;		dir++;	} while (address && (address < end));	flush_tlb_kernel_range(start, end);	spin_unlock(&mm->page_table_lock);	return;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/58366af5861eee1479426380e3c91ecb334c301d/init.c/clean/arch/ppc64/mm/init.c