Index: kernel/arch/amd64/src/mm/page.c
===================================================================
--- kernel/arch/amd64/src/mm/page.c	(revision 8fe2c9bdbf4cd735969137d973f2ce061bae7aa9)
+++ kernel/arch/amd64/src/mm/page.c	(revision 1715b7feb70e6c6d6bf5f4c8cb293a7bf73f8247)
@@ -78,5 +78,5 @@
 void page_fault(unsigned int n, istate_t *istate)
 {
-	uintptr_t page = read_cr2();
+	uintptr_t badvaddr = read_cr2();
 	
 	if (istate->error_word & PFERR_CODE_RSVD)
@@ -92,5 +92,5 @@
 		access = PF_ACCESS_READ;
 	
-	as_page_fault(page, access, istate);
+	(void) as_page_fault(badvaddr, access, istate);
 }
 
Index: kernel/arch/ia32/src/mm/page.c
===================================================================
--- kernel/arch/ia32/src/mm/page.c	(revision 8fe2c9bdbf4cd735969137d973f2ce061bae7aa9)
+++ kernel/arch/ia32/src/mm/page.c	(revision 1715b7feb70e6c6d6bf5f4c8cb293a7bf73f8247)
@@ -84,8 +84,8 @@
 void page_fault(unsigned int n __attribute__((unused)), istate_t *istate)
 {
-	uintptr_t page;
+	uintptr_t badvaddr;
 	pf_access_t access;
 	
-	page = read_cr2();
+	badvaddr = read_cr2();
 		
 	if (istate->error_word & PFERR_CODE_RSVD)
@@ -97,8 +97,5 @@
 		access = PF_ACCESS_READ;
 	
-	if (as_page_fault(page, access, istate) == AS_PF_FAULT) {
-		fault_if_from_uspace(istate, "Page fault: %#x.", page);
-		panic_memtrap(istate, access, page, NULL);
-	}
+	(void) as_page_fault(badvaddr, access, istate);
 }
 
Index: kernel/arch/mips32/src/mm/tlb.c
===================================================================
--- kernel/arch/mips32/src/mm/tlb.c	(revision 8fe2c9bdbf4cd735969137d973f2ce061bae7aa9)
+++ kernel/arch/mips32/src/mm/tlb.c	(revision 1715b7feb70e6c6d6bf5f4c8cb293a7bf73f8247)
@@ -94,11 +94,9 @@
 	entry_lo_t lo;
 	uintptr_t badvaddr;
-	uintptr_t page;
 	pte_t *pte;
 	
 	badvaddr = cp0_badvaddr_read();
-	page = ALIGN_DOWN(badvaddr, PAGE_SIZE);
-
-	pte = page_mapping_find(AS, page, true);
+
+	pte = page_mapping_find(AS, badvaddr, true);
 	if (pte && pte->p) {
 		/*
@@ -125,5 +123,5 @@
 	}
 
-	(void) as_page_fault(page, PF_ACCESS_READ, istate);
+	(void) as_page_fault(badvaddr, PF_ACCESS_READ, istate);
 }
 
@@ -137,5 +135,4 @@
 	tlb_index_t index;
 	uintptr_t badvaddr;
-	uintptr_t page;
 	pte_t *pte;
 
@@ -161,7 +158,6 @@
 
 	badvaddr = cp0_badvaddr_read();
-	page = ALIGN_DOWN(badvaddr, PAGE_SIZE);
-
-	pte = page_mapping_find(AS, page, true);
+
+	pte = page_mapping_find(AS, badvaddr, true);
 	if (pte && pte->p) {
 		/*
@@ -189,5 +185,5 @@
 	}
 
-	(void) as_page_fault(page, PF_ACCESS_READ, istate);
+	(void) as_page_fault(badvaddr, PF_ACCESS_READ, istate);
 }
 
@@ -201,9 +197,7 @@
 	tlb_index_t index;
 	uintptr_t badvaddr;
-	uintptr_t page;
 	pte_t *pte;
 
 	badvaddr = cp0_badvaddr_read();
-	page = ALIGN_DOWN(badvaddr, PAGE_SIZE);
 
 	/*
@@ -227,5 +221,5 @@
 	}
 
-	pte = page_mapping_find(AS, page, true);
+	pte = page_mapping_find(AS, badvaddr, true);
 	if (pte && pte->p && pte->w) {
 		/*
@@ -254,5 +248,5 @@
 	}
 
-	(void) as_page_fault(page, PF_ACCESS_WRITE, istate);
+	(void) as_page_fault(badvaddr, PF_ACCESS_WRITE, istate);
 }
 
Index: kernel/arch/sparc64/src/mm/sun4u/tlb.c
===================================================================
--- kernel/arch/sparc64/src/mm/sun4u/tlb.c	(revision 8fe2c9bdbf4cd735969137d973f2ce061bae7aa9)
+++ kernel/arch/sparc64/src/mm/sun4u/tlb.c	(revision 1715b7feb70e6c6d6bf5f4c8cb293a7bf73f8247)
@@ -196,9 +196,8 @@
 void fast_instruction_access_mmu_miss(sysarg_t unused, istate_t *istate)
 {
-	uintptr_t page_16k = ALIGN_DOWN(istate->tpc, PAGE_SIZE);
 	size_t index = (istate->tpc >> MMU_PAGE_WIDTH) % MMU_PAGES_PER_PAGE;
 	pte_t *t;
 
-	t = page_mapping_find(AS, page_16k, true);
+	t = page_mapping_find(AS, istate->tpc, true);
 	if (t && PTE_EXECUTABLE(t)) {
 		/*
@@ -216,5 +215,5 @@
 		 * handler.
 		 */
-		as_page_fault(page_16k, PF_ACCESS_EXEC, istate);
+		as_page_fault(istate->tpc, PF_ACCESS_EXEC, istate);
 	}
 }
