PERFORCE change 41731 for review

Juli Mallett jmallett at FreeBSD.org
Fri Nov 7 23:30:18 PST 2003


http://perforce.freebsd.org/chv.cgi?CH=41731

Change 41731 by jmallett at jmallett_dalek on 2003/11/07 23:30:06

	Use the TLB more effectively.

Affected files ...

.. //depot/projects/mips/sys/mips/mips/tlb.c#11 edit

Differences ...

==== //depot/projects/mips/sys/mips/mips/tlb.c#11 (text+ko) ====

@@ -110,6 +110,13 @@
 		printf("pmap %p entering invalid mapping for va %lx to pa %lx [%lx]\n",
 		       pmap, (u_long)va, (u_long)pa, (u_long)bits);
 	*pte = MIPS_PA_TO_PFN(pa) | bits;
+#if notyet
+	if ((va >> PAGE_SHIFT) & 1) {
+		tlb_update(va, pte[-1], pte[0]);
+	} else {
+		tlb_update(va, pte[0], pte[1]);
+	}
+#endif
 }
 
 void
@@ -144,6 +151,7 @@
 tlb_insert(vm_offset_t va, pt_entry_t pte0, pt_entry_t pte1)
 {
 	u_long ehi;
+	long i;
 
 	va &= ~PAGE_MASK;
 	ehi = 0;
@@ -153,9 +161,15 @@
 	ehi |= MIPS_HI_VA_TO_VPN2(va);
 	ehi |= /* asid */0;
 	mips_wr_entryhi(ehi);
+	mips_tlbp();
+	i = mips_rd_index();
 	mips_wr_entrylo0(pte0 | PG_G);
 	mips_wr_entrylo1(pte1 | PG_G);
-	mips_tlbwr();
+	mips_wr_entryhi(ehi);
+	if (i < 0)
+		mips_tlbwr();
+	else
+		mips_tlbwi();
 }
 
 void
@@ -193,7 +207,6 @@
 tlb_update(vm_offset_t va, pt_entry_t pte0, pt_entry_t pte1)
 {
 	va &= ~PAGE_MASK;
-	tlb_invalidate_page(va);
 	tlb_insert(va, pte0, pte1);
 }
 


More information about the p4-projects mailing list