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