Index: kernel/arch/mips32/src/mm/tlb.c
===================================================================
--- kernel/arch/mips32/src/mm/tlb.c	(revision 89f61bee11a0adf231dac8e1ce6dcc5502155514)
+++ kernel/arch/mips32/src/mm/tlb.c	(revision 0dfa93b0cda81f93598fc30620d75a22c14f06d2)
@@ -94,9 +94,11 @@
 	entry_lo_t lo;
 	uintptr_t badvaddr;
+	uintptr_t page;
 	pte_t *pte;
 	
 	badvaddr = cp0_badvaddr_read();
-
-	pte = page_mapping_find(AS, badvaddr, true);
+	page = ALIGN_DOWN(badvaddr, PAGE_SIZE);
+
+	pte = page_mapping_find(AS, page, true);
 	if (pte && pte->p) {
 		/*
@@ -123,5 +125,5 @@
 	}
 
-	(void) as_page_fault(badvaddr, PF_ACCESS_READ, istate);
+	(void) as_page_fault(page, PF_ACCESS_READ, istate);
 }
 
@@ -135,4 +137,5 @@
 	tlb_index_t index;
 	uintptr_t badvaddr;
+	uintptr_t page;
 	pte_t *pte;
 
@@ -158,6 +161,7 @@
 
 	badvaddr = cp0_badvaddr_read();
-
-	pte = page_mapping_find(AS, badvaddr, true);
+	page = ALIGN_DOWN(badvaddr, PAGE_SIZE);
+
+	pte = page_mapping_find(AS, page, true);
 	if (pte && pte->p) {
 		/*
@@ -185,5 +189,5 @@
 	}
 
-	(void) as_page_fault(badvaddr, PF_ACCESS_READ, istate);
+	(void) as_page_fault(page, PF_ACCESS_READ, istate);
 }
 
@@ -197,7 +201,9 @@
 	tlb_index_t index;
 	uintptr_t badvaddr;
+	uintptr_t page;
 	pte_t *pte;
 
 	badvaddr = cp0_badvaddr_read();
+	page = ALIGN_DOWN(badvaddr, PAGE_SIZE);
 
 	/*
@@ -221,5 +227,5 @@
 	}
 
-	pte = page_mapping_find(AS, badvaddr, true);
+	pte = page_mapping_find(AS, page, true);
 	if (pte && pte->p && pte->w) {
 		/*
@@ -248,5 +254,5 @@
 	}
 
-	(void) as_page_fault(badvaddr, PF_ACCESS_WRITE, istate);
+	(void) as_page_fault(page, PF_ACCESS_WRITE, istate);
 }
 
