Index: kernel/arch/ppc32/src/mm/pht.c
===================================================================
--- kernel/arch/ppc32/src/mm/pht.c	(revision 7852625a9a2570fb916023a5d354900c1c23d3ed)
+++ kernel/arch/ppc32/src/mm/pht.c	(revision 2f33fbc9504dfbfbeb2d4827e8753b7428860b26)
@@ -49,6 +49,4 @@
  * @param access   Access mode that caused the fault.
  * @param istate   Pointer to interrupted state.
- * @param pfrc     Pointer to variable where as_page_fault() return code
- *                 will be stored.
  *
  * @return PTE on success, NULL otherwise.
@@ -56,5 +54,5 @@
  */
 static pte_t *find_mapping_and_check(as_t *as, uintptr_t badvaddr, int access,
-    istate_t *istate, int *pfrc)
+    istate_t *istate)
 {
 	/*
@@ -68,38 +66,20 @@
 		 */
 		return pte;
-	} else {
+	}
+	/*
+	 * Mapping not found in page tables.
+	 * Resort to higher-level page fault handler.
+	 */
+	if (as_page_fault(badvaddr, access, istate) == AS_PF_OK) {
 		/*
-		 * Mapping not found in page tables.
-		 * Resort to higher-level page fault handler.
+		 * The higher-level page fault handler succeeded,
+		 * The mapping ought to be in place.
 		 */
-		int rc = as_page_fault(badvaddr, access, istate);
-		switch (rc) {
-		case AS_PF_OK:
-			/*
-			 * The higher-level page fault handler succeeded,
-			 * The mapping ought to be in place.
-			 */
-			pte = page_mapping_find(as, badvaddr, true);
-			ASSERT((pte) && (pte->present));
-			*pfrc = 0;
-			return pte;
-		case AS_PF_DEFER:
-			*pfrc = rc;
-			return NULL;
-		case AS_PF_FAULT:
-			*pfrc = rc;
-			return NULL;
-		default:
-			panic("Unexpected rc (%d).", rc);
-		}
-	}
-}
-
-static void pht_refill_fail(uintptr_t badvaddr, istate_t *istate)
-{
-	fault_if_from_uspace(istate, "PHT Refill Exception on %p.",
-	    (void *) badvaddr);
-	panic_memtrap(istate, PF_ACCESS_UNKNOWN, badvaddr,
-	    "PHT Refill Exception.");
+		pte = page_mapping_find(as, badvaddr, true);
+		ASSERT((pte) && (pte->present));
+		return pte;
+	}
+
+	return NULL;
 }
 
@@ -202,27 +182,12 @@
 		badvaddr = istate->pc;
 	
-	int pfrc;
 	pte_t *pte = find_mapping_and_check(AS, badvaddr,
-	    PF_ACCESS_READ /* FIXME */, istate, &pfrc);
-	
-	if (!pte) {
-		switch (pfrc) {
-		case AS_PF_FAULT:
-			pht_refill_fail(badvaddr, istate);
-			return;
-		case AS_PF_DEFER:
-			/*
-			 * The page fault came during copy_from_uspace()
-			 * or copy_to_uspace().
-			 */
-			return;
-		default:
-			panic("Unexpected pfrc (%d).", pfrc);
-		}
-	}
-	
-	/* Record access to PTE */
-	pte->accessed = 1;
-	pht_insert(badvaddr, pte);
+	    PF_ACCESS_READ /* FIXME */, istate);
+	
+	if (pte) {
+		/* Record access to PTE */
+		pte->accessed = 1;
+		pht_insert(badvaddr, pte);
+	}
 }
 
