On Wed, 2 May 2007 00:08:31 +0100 (BST) Mark Fortescue <mark@xxxxxxxxxxxxxxxxxx> wrote: > On Wed, 2 May 2007, Benjamin Herrenschmidt wrote: > > > > >> I have attached a patch (so pine does not mangle it) for linux-2.6.20.9. > >> Is this what you had in mind? > >> > >> For linux-2.6.21, more work will be needed as it has more code calling > >> ptep_set_access_flags. > > > > I'm not 100% sure we need the 'update' argument... we can remove the > > whole old_entry, pte_same, etc... and just have pte_set_access_flags() > > read the old PTE and decide wether something needs to be changed or not. > > > > Ben. > > > > > > The attached patch works on sun4c (with my simple ADA compile test) but > the change in functionality may break things other platforms. > > The advantage of the previous patch is that the functionality is only > changed for sparc sun4c so less testing would be required. > > Regards > Mark Fortescue. > > [Update-MMUCache-2.patch TEXT/PLAIN (10.7KB)] > diff -ruNpd linux-2.6.20.9/include/asm-generic/pgtable.h linux-test/include/asm-generic/pgtable.h > --- linux-2.6.20.9/include/asm-generic/pgtable.h 2007-05-01 12:57:56.000000000 +0100 > +++ linux-test/include/asm-generic/pgtable.h 2007-05-01 23:13:23.000000000 +0100 > @@ -30,10 +30,17 @@ do { \ > * to optimize this. > */ > #define ptep_set_access_flags(__vma, __address, __ptep, __entry, __dirty) \ > -do { \ > - set_pte_at((__vma)->vm_mm, (__address), __ptep, __entry); \ > - flush_tlb_page(__vma, __address); \ > -} while (0) > +({ \ > + int __update = !pte_same(*(__ptep), __entry); \ > + \ > + if (__update) { \ > + set_pte_at((__vma)->vm_mm, (__address), __ptep, __entry); \ > + flush_tlb_page(__vma, __address); \ > + } else if (__dirty) { \ > + flush_tlb_page(__vma, __address); \ > + } \ > + __update; \ > +}) We never seemed to reach completion here? - To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html