if (touches_hugepage_high_range(addr, len)) { addr = TASK_HPAGE_END; 
if (touches_hugepage_high_range(mm, addr, len)) { addr = ALIGN(addr+1, 1UL<<HTLB_AREA_SHIFT); 
unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,				     unsigned long len, unsigned long pgoff,				     unsigned long flags){	struct mm_struct *mm = current->mm;	struct vm_area_struct *vma;	unsigned long start_addr;	if (len > TASK_SIZE)		return -ENOMEM;	if (addr) {		addr = PAGE_ALIGN(addr);		vma = find_vma(mm, addr);		if (((TASK_SIZE - len) >= addr)		    && (!vma || (addr+len) <= vma->vm_start)		    && !is_hugepage_only_range(mm, addr,len))			return addr;	}	if (len > mm->cached_hole_size) {	        start_addr = addr = mm->free_area_cache;	} else {	        start_addr = addr = TASK_UNMAPPED_BASE;	        mm->cached_hole_size = 0;	}full_search:	vma = find_vma(mm, addr);	while (TASK_SIZE - len >= addr) {		BUG_ON(vma && (addr >= vma->vm_end));		if (touches_hugepage_low_range(mm, addr, len)) {			addr = ALIGN(addr+1, 1<<SID_SHIFT);			vma = find_vma(mm, addr);			continue;		}		if (touches_hugepage_high_range(addr, len)) {			addr = TASK_HPAGE_END;			vma = find_vma(mm, addr);			continue;		}		if (!vma || addr + len <= vma->vm_start) {			/*			 * Remember the place where we stopped the search:			 */			mm->free_area_cache = addr + len;			return addr;		}		if (addr + mm->cached_hole_size < vma->vm_start)		        mm->cached_hole_size = vma->vm_start - addr;		addr = vma->vm_end;		vma = vma->vm_next;	}	/* Make sure we didn't miss any holes */	if (start_addr != TASK_UNMAPPED_BASE) {		start_addr = addr = TASK_UNMAPPED_BASE;		mm->cached_hole_size = 0;		goto full_search;	}	return -ENOMEM;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c594adad5653491813959277fb87a2fef54c4e05/hugetlbpage.c/clean/arch/ppc64/mm/hugetlbpage.c