Index: arch/mips32/src/mm/tlb.c
===================================================================
--- arch/mips32/src/mm/tlb.c	(revision 631ca4d04a2284ebd54da4b84fc569fab1e212a4)
+++ arch/mips32/src/mm/tlb.c	(revision 51cc6bf60f243d22f24cb12000f1c11e6b5fee13)
@@ -39,4 +39,5 @@
 #include <print.h>
 #include <debug.h>
+#include <align.h>
 
 static void tlb_refill_fail(istate_t *istate);
@@ -391,5 +392,5 @@
 void prepare_entry_hi(entry_hi_t *hi, asid_t asid, __address addr)
 {
-	hi->value = (((addr/PAGE_SIZE)/2)*PAGE_SIZE*2);
+	hi->value = ALIGN_DOWN(addr, PAGE_SIZE * 2);
 	hi->asid = asid;
 }
@@ -514,5 +515,5 @@
 	ipl = interrupts_disable();
 
-	for (i = 0; i < cnt; i++) {
+	for (i = 0; i < cnt+1; i+=2) {
 		hi.value = 0;
 		prepare_entry_hi(&hi, asid, page + i * PAGE_SIZE);
