Date: Thu, 24 Aug 2006 17:35:56 -0700 From: Peter Grehan <grehan@freebsd.org> To: Marcel Moolenaar <marcel@xcllnt.net> Cc: ppc@freebsd.org Subject: Re: gdb(1) in the tree Message-ID: <44EE45EC.3040403@freebsd.org> In-Reply-To: <46D747A2-7126-450A-83E4-DA7367706F18@xcllnt.net> References: <FF91B2A4-68A6-4F30-B3A2-91B849B51415@xcllnt.net> <44ED2448.7030503@freebsd.org> <46D747A2-7126-450A-83E4-DA7367706F18@xcllnt.net>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
Hi Marcel,
>> I'll see if I can work out what NetBSD does.
Would you be able to give the attached patch a try ?
later,
Peter.
[-- Attachment #2 --]
Index: mmu_oea.c
===================================================================
RCS file: /home/ncvs/src/sys/powerpc/powerpc/mmu_oea.c,v
retrieving revision 1.111
diff -u -r1.111 mmu_oea.c
--- mmu_oea.c 1 Aug 2006 19:06:05 -0000 1.111
+++ mmu_oea.c 25 Aug 2006 00:32:17 -0000
@@ -2012,6 +2012,22 @@
pg = PHYS_TO_VM_PAGE(pvo->pvo_pte.pte_lo & PTE_RPGN);
if (pg != NULL) {
+ /*
+ * From NetBSD pmap.c r1.37
+ * If the page was changed and it is mapped exec,
+ * invalidate it
+ */
+ if ((ptelo & PTE_CHG) &&
+ (moea_attr_fetch(pg) & PTE_EXEC)) {
+ struct pvo_head *pvoh = vm_page_to_pvoh(pg);
+ if (LIST_EMPTY(pvoh)) {
+ moea_attr_clear(pg, PTE_EXEC);
+ } else {
+ moea_syncicache(VM_PAGE_TO_PHYS(pg),
+ PAGE_SIZE);
+ }
+ }
+
moea_attr_save(pg, pvo->pvo_pte.pte_lo &
(PTE_REF | PTE_CHG));
}
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?44EE45EC.3040403>
