return ret; 
/* Get PTE and page size from page tables */ ptep = find_linux_pte(pgdir, ea); if (ptep == NULL || !pte_present(*ptep)) { DBG_LOW(" no PTE !\n"); return 1; }  #ifndef CONFIG_PPC_64K_PAGES DBG_LOW(" i-pte: %016lx\n", pte_val(*ptep)); #else DBG_LOW(" i-pte: %016lx %016lx\n", pte_val(*ptep), pte_val(*(ptep + PTRS_PER_PTE))); #endif /* Pre-check access permissions (will be re-checked atomically * in __hash_page_XX but this pre-check is a fast path */ if (access & ~pte_val(*ptep)) { DBG_LOW(" no access !\n"); return 1; }  /* Do actual hashing */ #ifndef CONFIG_PPC_64K_PAGES rc = __hash_page_4K(ea, access, vsid, ptep, trap, local); #else if (mmu_virtual_psize == MMU_PAGE_64K) rc = __hash_page_64K(ea, access, vsid, ptep, trap, local); else rc = __hash_page_4K(ea, access, vsid, ptep, trap, local); #endif /* CONFIG_PPC_64K_PAGES */  #ifndef CONFIG_PPC_64K_PAGES DBG_LOW(" o-pte: %016lx\n", pte_val(*ptep)); #else DBG_LOW(" o-pte: %016lx %016lx\n", pte_val(*ptep), pte_val(*(ptep + PTRS_PER_PTE))); #endif DBG_LOW(" -> rc=%d\n", rc); return rc; 
int hash_page(unsigned long ea, unsigned long access, unsigned long trap){	void *pgdir;	unsigned long vsid;	struct mm_struct *mm;	pte_t *ptep;	int ret;	int user_region = 0;	int local = 0;	cpumask_t tmp;	if ((ea & ~REGION_MASK) >= PGTABLE_RANGE)		return 1; 	switch (REGION_ID(ea)) {	case USER_REGION_ID:		user_region = 1;		mm = current->mm;		if (! mm)			return 1;		vsid = get_vsid(mm->context.id, ea);		break;	case VMALLOC_REGION_ID:		mm = &init_mm;		vsid = get_kernel_vsid(ea);		break;#if 0	case KERNEL_REGION_ID:		/*		 * Should never get here - entire 0xC0... region is bolted.		 * Send the problem up to do_page_fault 		 */#endif	default:		/* Not a valid range		 * Send the problem up to do_page_fault 		 */		return 1;		break;	}	pgdir = mm->pgd;	if (pgdir == NULL)		return 1;	tmp = cpumask_of_cpu(smp_processor_id());	if (user_region && cpus_equal(mm->cpu_vm_mask, tmp))		local = 1;	/* Is this a huge page ? */	if (unlikely(in_hugepage_area(mm->context, ea)))		ret = hash_huge_page(mm, access, ea, vsid, local);	else {		ptep = find_linux_pte(pgdir, ea);		if (ptep == NULL)			return 1;		ret = __hash_page(ea, access, vsid, ptep, trap, local);	}	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3c726f8dee6f55e96475574e9f645327e461884c/hash_utils_64.c/clean/arch/powerpc/mm/hash_utils_64.c