PERFORCE change 106367 for review
Suleiman Souhlal
ssouhlal at FreeBSD.org
Tue Sep 19 16:16:35 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=106367
Change 106367 by ssouhlal at ssouhlal-maho on 2006/09/19 23:15:45
Make the TLB Modified exception handler work for !kernel.
Affected files ...
.. //depot/projects/mips2/src/sys/mips/include/tlb.h#4 edit
.. //depot/projects/mips2/src/sys/mips/mips/tlb.c#8 edit
.. //depot/projects/mips2/src/sys/mips/mips/trap.c#7 edit
Differences ...
==== //depot/projects/mips2/src/sys/mips/include/tlb.h#4 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $P4: //depot/projects/mips2/src/sys/mips/include/tlb.h#3 $
+ * $P4: //depot/projects/mips2/src/sys/mips/include/tlb.h#4 $
*/
#ifndef _MACHINE_TLB_H_
@@ -40,7 +40,7 @@
void tlb_invalidate_all(void);
void tlb_invalidate_one(int);
void tlb_invalidate_page(vm_offset_t);
-void tlb_modified(void *);
+void tlb_modified(pmap_t, void *);
void tlb_remove(pmap_t, vm_offset_t);
void tlb_remove_pages(pmap_t, vm_offset_t, int);
void tlb_remove_range(pmap_t, vm_offset_t, vm_offset_t);
==== //depot/projects/mips2/src/sys/mips/mips/tlb.c#8 (text+ko) ====
@@ -246,13 +246,13 @@
* PTE was not dirty and is being written to. XXX kernel only for now.
*/
void
-tlb_modified(void *badvaddr)
+tlb_modified(pmap_t pmap, void *badvaddr)
{
pt_entry_t *pte;
vm_offset_t va;
va = (vm_offset_t) badvaddr;
- pte = tlb_pte_find(kernel_pmap->pm_lev1, va);
+ pte = pmap_pte(pmap, va);
/*
* Do we really want to dirty this page?
==== //depot/projects/mips2/src/sys/mips/mips/trap.c#7 (text+ko) ====
@@ -122,8 +122,12 @@
*/
switch (code) {
case TrMod:
- /* XXX Kernel only. */
- tlb_modified(badvaddr);
+ va = trunc_page(badvaddr);
+ if (va >= KERNBASE)
+ tlb_modified(kernel_pmap, (void *)va);
+ else
+ tlb_modified(&curthread->td_proc->p_vmspace->vm_pmap,
+ (void *)va);
goto done;
case TrTLBL:
case TrTLBS:
More information about the p4-projects
mailing list