Loading arch/x86/mm/pgtable.c +16 −0 Original line number Diff line number Diff line #include <linux/mm.h> #include <asm/pgalloc.h> #include <asm/pgtable.h> #include <asm/tlb.h> pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) Loading Loading @@ -264,3 +265,18 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd) free_page((unsigned long)pgd); } #endif int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, pte_t *ptep, pte_t entry, int dirty) { int changed = !pte_same(*ptep, entry); if (changed && dirty) { *ptep = entry; pte_update_defer(vma->vm_mm, address, ptep); flush_tlb_page(vma, address); } return changed; } include/asm-x86/pgtable.h +3 −10 Original line number Diff line number Diff line Loading @@ -389,16 +389,9 @@ static inline void native_set_pte_at(struct mm_struct *mm, unsigned long addr, * bit at the same time. */ #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS #define ptep_set_access_flags(vma, address, ptep, entry, dirty) \ ({ \ int __changed = !pte_same(*(ptep), entry); \ if (__changed && dirty) { \ *ptep = entry; \ pte_update_defer((vma)->vm_mm, (address), (ptep)); \ flush_tlb_page(vma, address); \ } \ __changed; \ }) extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, pte_t *ptep, pte_t entry, int dirty); #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG #define ptep_test_and_clear_young(vma, addr, ptep) ({ \ Loading Loading
arch/x86/mm/pgtable.c +16 −0 Original line number Diff line number Diff line #include <linux/mm.h> #include <asm/pgalloc.h> #include <asm/pgtable.h> #include <asm/tlb.h> pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) Loading Loading @@ -264,3 +265,18 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd) free_page((unsigned long)pgd); } #endif int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, pte_t *ptep, pte_t entry, int dirty) { int changed = !pte_same(*ptep, entry); if (changed && dirty) { *ptep = entry; pte_update_defer(vma->vm_mm, address, ptep); flush_tlb_page(vma, address); } return changed; }
include/asm-x86/pgtable.h +3 −10 Original line number Diff line number Diff line Loading @@ -389,16 +389,9 @@ static inline void native_set_pte_at(struct mm_struct *mm, unsigned long addr, * bit at the same time. */ #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS #define ptep_set_access_flags(vma, address, ptep, entry, dirty) \ ({ \ int __changed = !pte_same(*(ptep), entry); \ if (__changed && dirty) { \ *ptep = entry; \ pte_update_defer((vma)->vm_mm, (address), (ptep)); \ flush_tlb_page(vma, address); \ } \ __changed; \ }) extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, pte_t *ptep, pte_t entry, int dirty); #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG #define ptep_test_and_clear_young(vma, addr, ptep) ({ \ Loading