|
|
@ -444,8 +444,9 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, |
|
|
|
*ptep = pte; |
|
|
|
*ptep = pte; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static inline int ptep_test_and_clear_young(struct mm_struct *mm, |
|
|
|
#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
|
|
|
unsigned long addr, pte_t *ptep) |
|
|
|
static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, |
|
|
|
|
|
|
|
unsigned long address, pte_t *ptep) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return (pte_update(ptep, _PAGE_ACCESSED, 0) & _PAGE_ACCESSED) != 0; |
|
|
|
return (pte_update(ptep, _PAGE_ACCESSED, 0) & _PAGE_ACCESSED) != 0; |
|
|
|
} |
|
|
|
} |
|
|
@ -457,6 +458,7 @@ static inline int ptep_test_and_clear_dirty(struct mm_struct *mm, |
|
|
|
(_PAGE_DIRTY | _PAGE_HWWRITE), 0) & _PAGE_DIRTY) != 0; |
|
|
|
(_PAGE_DIRTY | _PAGE_HWWRITE), 0) & _PAGE_DIRTY) != 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
|
|
|
static inline pte_t ptep_get_and_clear(struct mm_struct *mm, |
|
|
|
static inline pte_t ptep_get_and_clear(struct mm_struct *mm, |
|
|
|
unsigned long addr, pte_t *ptep) |
|
|
|
unsigned long addr, pte_t *ptep) |
|
|
|
{ |
|
|
|
{ |
|
|
|