diff options
Diffstat (limited to 'include/asm-i386')
-rw-r--r-- | include/asm-i386/pgtable.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h index f51fd2c956bb..d74185aee15b 100644 --- a/include/asm-i386/pgtable.h +++ b/include/asm-i386/pgtable.h | |||
@@ -260,6 +260,18 @@ static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned | |||
260 | return test_and_clear_bit(_PAGE_BIT_ACCESSED, &ptep->pte_low); | 260 | return test_and_clear_bit(_PAGE_BIT_ACCESSED, &ptep->pte_low); |
261 | } | 261 | } |
262 | 262 | ||
263 | static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long addr, pte_t *ptep, int full) | ||
264 | { | ||
265 | pte_t pte; | ||
266 | if (full) { | ||
267 | pte = *ptep; | ||
268 | *ptep = __pte(0); | ||
269 | } else { | ||
270 | pte = ptep_get_and_clear(mm, addr, ptep); | ||
271 | } | ||
272 | return pte; | ||
273 | } | ||
274 | |||
263 | static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep) | 275 | static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep) |
264 | { | 276 | { |
265 | clear_bit(_PAGE_BIT_RW, &ptep->pte_low); | 277 | clear_bit(_PAGE_BIT_RW, &ptep->pte_low); |
@@ -417,6 +429,7 @@ extern void noexec_setup(const char *str); | |||
417 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 429 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
418 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | 430 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY |
419 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 431 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
432 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL | ||
420 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 433 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
421 | #define __HAVE_ARCH_PTE_SAME | 434 | #define __HAVE_ARCH_PTE_SAME |
422 | #include <asm-generic/pgtable.h> | 435 | #include <asm-generic/pgtable.h> |