diff options
| author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-07-17 07:03:03 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-17 13:22:59 -0400 |
| commit | e21ea246bce5bb93dd822de420172ec280aed492 (patch) | |
| tree | d624d1257728d8d869d54420c83d4bf4c4e19189 /include | |
| parent | f0e47c229b489e37ba7e4159ef7f9cf9ccd44e19 (diff) | |
mm: remove ptep_test_and_clear_dirty and ptep_clear_flush_dirty
Nobody is using ptep_test_and_clear_dirty and ptep_clear_flush_dirty. Remove
the functions from all architectures.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-frv/pgtable.h | 8 | ||||
| -rw-r--r-- | include/asm-generic/pgtable.h | 25 | ||||
| -rw-r--r-- | include/asm-i386/pgtable.h | 21 | ||||
| -rw-r--r-- | include/asm-ia64/pgtable.h | 17 | ||||
| -rw-r--r-- | include/asm-m32r/pgtable.h | 6 | ||||
| -rw-r--r-- | include/asm-parisc/pgtable.h | 16 | ||||
| -rw-r--r-- | include/asm-powerpc/pgtable-ppc32.h | 7 | ||||
| -rw-r--r-- | include/asm-powerpc/pgtable-ppc64.h | 31 | ||||
| -rw-r--r-- | include/asm-ppc/pgtable.h | 7 | ||||
| -rw-r--r-- | include/asm-s390/pgtable.h | 15 | ||||
| -rw-r--r-- | include/asm-x86_64/pgtable.h | 8 | ||||
| -rw-r--r-- | include/asm-xtensa/pgtable.h | 12 |
12 files changed, 0 insertions, 173 deletions
diff --git a/include/asm-frv/pgtable.h b/include/asm-frv/pgtable.h index adde699852..147e995bec 100644 --- a/include/asm-frv/pgtable.h +++ b/include/asm-frv/pgtable.h | |||
| @@ -388,13 +388,6 @@ static inline pte_t pte_mkdirty(pte_t pte) { (pte).pte |= _PAGE_DIRTY; return pt | |||
| 388 | static inline pte_t pte_mkyoung(pte_t pte) { (pte).pte |= _PAGE_ACCESSED; return pte; } | 388 | static inline pte_t pte_mkyoung(pte_t pte) { (pte).pte |= _PAGE_ACCESSED; return pte; } |
| 389 | static inline pte_t pte_mkwrite(pte_t pte) { (pte).pte &= ~_PAGE_WP; return pte; } | 389 | static inline pte_t pte_mkwrite(pte_t pte) { (pte).pte &= ~_PAGE_WP; return pte; } |
| 390 | 390 | ||
| 391 | static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) | ||
| 392 | { | ||
| 393 | int i = test_and_clear_bit(_PAGE_BIT_DIRTY, ptep); | ||
| 394 | asm volatile("dcf %M0" :: "U"(*ptep)); | ||
| 395 | return i; | ||
| 396 | } | ||
| 397 | |||
| 398 | static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) | 391 | static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) |
| 399 | { | 392 | { |
| 400 | int i = test_and_clear_bit(_PAGE_BIT_ACCESSED, ptep); | 393 | int i = test_and_clear_bit(_PAGE_BIT_ACCESSED, ptep); |
| @@ -504,7 +497,6 @@ static inline int pte_file(pte_t pte) | |||
| 504 | remap_pfn_range(vma, vaddr, pfn, size, prot) | 497 | remap_pfn_range(vma, vaddr, pfn, size, prot) |
| 505 | 498 | ||
| 506 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 499 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
| 507 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 508 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 500 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 509 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 501 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
| 510 | #define __HAVE_ARCH_PTE_SAME | 502 | #define __HAVE_ARCH_PTE_SAME |
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index aa3f1202a1..f605e8d0ee 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
| @@ -49,31 +49,6 @@ | |||
| 49 | }) | 49 | }) |
| 50 | #endif | 50 | #endif |
| 51 | 51 | ||
| 52 | #ifndef __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 53 | #define ptep_test_and_clear_dirty(__vma, __address, __ptep) \ | ||
| 54 | ({ \ | ||
| 55 | pte_t __pte = *__ptep; \ | ||
| 56 | int r = 1; \ | ||
| 57 | if (!pte_dirty(__pte)) \ | ||
| 58 | r = 0; \ | ||
| 59 | else \ | ||
| 60 | set_pte_at((__vma)->vm_mm, (__address), (__ptep), \ | ||
| 61 | pte_mkclean(__pte)); \ | ||
| 62 | r; \ | ||
| 63 | }) | ||
| 64 | #endif | ||
| 65 | |||
| 66 | #ifndef __HAVE_ARCH_PTEP_CLEAR_DIRTY_FLUSH | ||
| 67 | #define ptep_clear_flush_dirty(__vma, __address, __ptep) \ | ||
| 68 | ({ \ | ||
| 69 | int __dirty; \ | ||
| 70 | __dirty = ptep_test_and_clear_dirty(__vma, __address, __ptep); \ | ||
| 71 | if (__dirty) \ | ||
| 72 | flush_tlb_page(__vma, __address); \ | ||
| 73 | __dirty; \ | ||
| 74 | }) | ||
| 75 | #endif | ||
| 76 | |||
| 77 | #ifndef __HAVE_ARCH_PTEP_GET_AND_CLEAR | 52 | #ifndef __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 78 | #define ptep_get_and_clear(__mm, __address, __ptep) \ | 53 | #define ptep_get_and_clear(__mm, __address, __ptep) \ |
| 79 | ({ \ | 54 | ({ \ |
diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h index afb1597ec1..c7fefa6b12 100644 --- a/include/asm-i386/pgtable.h +++ b/include/asm-i386/pgtable.h | |||
| @@ -289,17 +289,6 @@ static inline pte_t native_local_ptep_get_and_clear(pte_t *ptep) | |||
| 289 | __changed; \ | 289 | __changed; \ |
| 290 | }) | 290 | }) |
| 291 | 291 | ||
| 292 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 293 | #define ptep_test_and_clear_dirty(vma, addr, ptep) ({ \ | ||
| 294 | int __ret = 0; \ | ||
| 295 | if (pte_dirty(*(ptep))) \ | ||
| 296 | __ret = test_and_clear_bit(_PAGE_BIT_DIRTY, \ | ||
| 297 | &(ptep)->pte_low); \ | ||
| 298 | if (__ret) \ | ||
| 299 | pte_update((vma)->vm_mm, addr, ptep); \ | ||
| 300 | __ret; \ | ||
| 301 | }) | ||
| 302 | |||
| 303 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 292 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
| 304 | #define ptep_test_and_clear_young(vma, addr, ptep) ({ \ | 293 | #define ptep_test_and_clear_young(vma, addr, ptep) ({ \ |
| 305 | int __ret = 0; \ | 294 | int __ret = 0; \ |
| @@ -311,16 +300,6 @@ static inline pte_t native_local_ptep_get_and_clear(pte_t *ptep) | |||
| 311 | __ret; \ | 300 | __ret; \ |
| 312 | }) | 301 | }) |
| 313 | 302 | ||
| 314 | #define __HAVE_ARCH_PTEP_CLEAR_DIRTY_FLUSH | ||
| 315 | #define ptep_clear_flush_dirty(vma, address, ptep) \ | ||
| 316 | ({ \ | ||
| 317 | int __dirty; \ | ||
| 318 | __dirty = ptep_test_and_clear_dirty((vma), (address), (ptep)); \ | ||
| 319 | if (__dirty) \ | ||
| 320 | flush_tlb_page(vma, address); \ | ||
| 321 | __dirty; \ | ||
| 322 | }) | ||
| 323 | |||
| 324 | #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH | 303 | #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH |
| 325 | #define ptep_clear_flush_young(vma, address, ptep) \ | 304 | #define ptep_clear_flush_young(vma, address, ptep) \ |
| 326 | ({ \ | 305 | ({ \ |
diff --git a/include/asm-ia64/pgtable.h b/include/asm-ia64/pgtable.h index 47642e06b9..de6d01e24d 100644 --- a/include/asm-ia64/pgtable.h +++ b/include/asm-ia64/pgtable.h | |||
| @@ -395,22 +395,6 @@ ptep_test_and_clear_young (struct vm_area_struct *vma, unsigned long addr, pte_t | |||
| 395 | #endif | 395 | #endif |
| 396 | } | 396 | } |
| 397 | 397 | ||
| 398 | static inline int | ||
| 399 | ptep_test_and_clear_dirty (struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) | ||
| 400 | { | ||
| 401 | #ifdef CONFIG_SMP | ||
| 402 | if (!pte_dirty(*ptep)) | ||
| 403 | return 0; | ||
| 404 | return test_and_clear_bit(_PAGE_D_BIT, ptep); | ||
| 405 | #else | ||
| 406 | pte_t pte = *ptep; | ||
| 407 | if (!pte_dirty(pte)) | ||
| 408 | return 0; | ||
| 409 | set_pte_at(vma->vm_mm, addr, ptep, pte_mkclean(pte)); | ||
| 410 | return 1; | ||
| 411 | #endif | ||
| 412 | } | ||
| 413 | |||
| 414 | static inline pte_t | 398 | static inline pte_t |
| 415 | ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) | 399 | ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) |
| 416 | { | 400 | { |
| @@ -590,7 +574,6 @@ extern void lazy_mmu_prot_update (pte_t pte); | |||
| 590 | #endif | 574 | #endif |
| 591 | 575 | ||
| 592 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 576 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
| 593 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 594 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 577 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 595 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 578 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
| 596 | #define __HAVE_ARCH_PTE_SAME | 579 | #define __HAVE_ARCH_PTE_SAME |
diff --git a/include/asm-m32r/pgtable.h b/include/asm-m32r/pgtable.h index 35af58c6b8..92d7266783 100644 --- a/include/asm-m32r/pgtable.h +++ b/include/asm-m32r/pgtable.h | |||
| @@ -250,11 +250,6 @@ static inline pte_t pte_mkwrite(pte_t pte) | |||
| 250 | return pte; | 250 | return pte; |
| 251 | } | 251 | } |
| 252 | 252 | ||
| 253 | static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) | ||
| 254 | { | ||
| 255 | return test_and_clear_bit(_PAGE_BIT_DIRTY, ptep); | ||
| 256 | } | ||
| 257 | |||
| 258 | static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) | 253 | static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) |
| 259 | { | 254 | { |
| 260 | return test_and_clear_bit(_PAGE_BIT_ACCESSED, ptep); | 255 | return test_and_clear_bit(_PAGE_BIT_ACCESSED, ptep); |
| @@ -348,7 +343,6 @@ static inline void pmd_set(pmd_t * pmdp, pte_t * ptep) | |||
| 348 | remap_pfn_range(vma, vaddr, pfn, size, prot) | 343 | remap_pfn_range(vma, vaddr, pfn, size, prot) |
| 349 | 344 | ||
| 350 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 345 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
| 351 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 352 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 346 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 353 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 347 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
| 354 | #define __HAVE_ARCH_PTE_SAME | 348 | #define __HAVE_ARCH_PTE_SAME |
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h index 7e222c8ba7..e88cacd637 100644 --- a/include/asm-parisc/pgtable.h +++ b/include/asm-parisc/pgtable.h | |||
| @@ -447,21 +447,6 @@ static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned | |||
| 447 | #endif | 447 | #endif |
| 448 | } | 448 | } |
| 449 | 449 | ||
| 450 | static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) | ||
| 451 | { | ||
| 452 | #ifdef CONFIG_SMP | ||
| 453 | if (!pte_dirty(*ptep)) | ||
| 454 | return 0; | ||
| 455 | return test_and_clear_bit(xlate_pabit(_PAGE_DIRTY_BIT), &pte_val(*ptep)); | ||
| 456 | #else | ||
| 457 | pte_t pte = *ptep; | ||
| 458 | if (!pte_dirty(pte)) | ||
| 459 | return 0; | ||
| 460 | set_pte_at(vma->vm_mm, addr, ptep, pte_mkclean(pte)); | ||
| 461 | return 1; | ||
| 462 | #endif | ||
| 463 | } | ||
| 464 | |||
| 465 | extern spinlock_t pa_dbit_lock; | 450 | extern spinlock_t pa_dbit_lock; |
| 466 | 451 | ||
| 467 | struct mm_struct; | 452 | struct mm_struct; |
| @@ -529,7 +514,6 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, | |||
| 529 | #define HAVE_ARCH_UNMAPPED_AREA | 514 | #define HAVE_ARCH_UNMAPPED_AREA |
| 530 | 515 | ||
| 531 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 516 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
| 532 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 533 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 517 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 534 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 518 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
| 535 | #define __HAVE_ARCH_PTE_SAME | 519 | #define __HAVE_ARCH_PTE_SAME |
diff --git a/include/asm-powerpc/pgtable-ppc32.h b/include/asm-powerpc/pgtable-ppc32.h index 6c236d4d62..86a54a4a8a 100644 --- a/include/asm-powerpc/pgtable-ppc32.h +++ b/include/asm-powerpc/pgtable-ppc32.h | |||
| @@ -621,13 +621,6 @@ static inline int __ptep_test_and_clear_young(unsigned int context, unsigned lon | |||
| 621 | #define ptep_test_and_clear_young(__vma, __addr, __ptep) \ | 621 | #define ptep_test_and_clear_young(__vma, __addr, __ptep) \ |
| 622 | __ptep_test_and_clear_young((__vma)->vm_mm->context.id, __addr, __ptep) | 622 | __ptep_test_and_clear_young((__vma)->vm_mm->context.id, __addr, __ptep) |
| 623 | 623 | ||
| 624 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 625 | static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, | ||
| 626 | unsigned long addr, pte_t *ptep) | ||
| 627 | { | ||
| 628 | return (pte_update(ptep, (_PAGE_DIRTY | _PAGE_HWWRITE), 0) & _PAGE_DIRTY) != 0; | ||
| 629 | } | ||
| 630 | |||
| 631 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 624 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 632 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, | 625 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, |
| 633 | pte_t *ptep) | 626 | pte_t *ptep) |
diff --git a/include/asm-powerpc/pgtable-ppc64.h b/include/asm-powerpc/pgtable-ppc64.h index 7ca8b5c100..300f9a199b 100644 --- a/include/asm-powerpc/pgtable-ppc64.h +++ b/include/asm-powerpc/pgtable-ppc64.h | |||
| @@ -292,29 +292,6 @@ static inline int __ptep_test_and_clear_young(struct mm_struct *mm, | |||
| 292 | __r; \ | 292 | __r; \ |
| 293 | }) | 293 | }) |
| 294 | 294 | ||
| 295 | /* | ||
| 296 | * On RW/DIRTY bit transitions we can avoid flushing the hpte. For the | ||
| 297 | * moment we always flush but we need to fix hpte_update and test if the | ||
| 298 | * optimisation is worth it. | ||
| 299 | */ | ||
| 300 | static inline int __ptep_test_and_clear_dirty(struct mm_struct *mm, | ||
| 301 | unsigned long addr, pte_t *ptep) | ||
| 302 | { | ||
| 303 | unsigned long old; | ||
| 304 | |||
| 305 | if ((pte_val(*ptep) & _PAGE_DIRTY) == 0) | ||
| 306 | return 0; | ||
| 307 | old = pte_update(mm, addr, ptep, _PAGE_DIRTY, 0); | ||
| 308 | return (old & _PAGE_DIRTY) != 0; | ||
| 309 | } | ||
| 310 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 311 | #define ptep_test_and_clear_dirty(__vma, __addr, __ptep) \ | ||
| 312 | ({ \ | ||
| 313 | int __r; \ | ||
| 314 | __r = __ptep_test_and_clear_dirty((__vma)->vm_mm, __addr, __ptep); \ | ||
| 315 | __r; \ | ||
| 316 | }) | ||
| 317 | |||
| 318 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 295 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
| 319 | static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, | 296 | static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, |
| 320 | pte_t *ptep) | 297 | pte_t *ptep) |
| @@ -342,14 +319,6 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, | |||
| 342 | __young; \ | 319 | __young; \ |
| 343 | }) | 320 | }) |
| 344 | 321 | ||
| 345 | #define __HAVE_ARCH_PTEP_CLEAR_DIRTY_FLUSH | ||
| 346 | #define ptep_clear_flush_dirty(__vma, __address, __ptep) \ | ||
| 347 | ({ \ | ||
| 348 | int __dirty = __ptep_test_and_clear_dirty((__vma)->vm_mm, __address, \ | ||
| 349 | __ptep); \ | ||
| 350 | __dirty; \ | ||
| 351 | }) | ||
| 352 | |||
| 353 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 322 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 354 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm, | 323 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm, |
| 355 | unsigned long addr, pte_t *ptep) | 324 | unsigned long addr, pte_t *ptep) |
diff --git a/include/asm-ppc/pgtable.h b/include/asm-ppc/pgtable.h index 18aa776313..c159315d2c 100644 --- a/include/asm-ppc/pgtable.h +++ b/include/asm-ppc/pgtable.h | |||
| @@ -654,13 +654,6 @@ static inline int __ptep_test_and_clear_young(unsigned int context, unsigned lon | |||
| 654 | #define ptep_test_and_clear_young(__vma, __addr, __ptep) \ | 654 | #define ptep_test_and_clear_young(__vma, __addr, __ptep) \ |
| 655 | __ptep_test_and_clear_young((__vma)->vm_mm->context.id, __addr, __ptep) | 655 | __ptep_test_and_clear_young((__vma)->vm_mm->context.id, __addr, __ptep) |
| 656 | 656 | ||
| 657 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 658 | static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, | ||
| 659 | unsigned long addr, pte_t *ptep) | ||
| 660 | { | ||
| 661 | return (pte_update(ptep, (_PAGE_DIRTY | _PAGE_HWWRITE), 0) & _PAGE_DIRTY) != 0; | ||
| 662 | } | ||
| 663 | |||
| 664 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 657 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 665 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, | 658 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, |
| 666 | pte_t *ptep) | 659 | pte_t *ptep) |
diff --git a/include/asm-s390/pgtable.h b/include/asm-s390/pgtable.h index 1039bf6b65..3208dc6c41 100644 --- a/include/asm-s390/pgtable.h +++ b/include/asm-s390/pgtable.h | |||
| @@ -669,19 +669,6 @@ ptep_clear_flush_young(struct vm_area_struct *vma, | |||
| 669 | return ptep_test_and_clear_young(vma, address, ptep); | 669 | return ptep_test_and_clear_young(vma, address, ptep); |
| 670 | } | 670 | } |
| 671 | 671 | ||
| 672 | static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) | ||
| 673 | { | ||
| 674 | return 0; | ||
| 675 | } | ||
| 676 | |||
| 677 | static inline int | ||
| 678 | ptep_clear_flush_dirty(struct vm_area_struct *vma, | ||
| 679 | unsigned long address, pte_t *ptep) | ||
| 680 | { | ||
| 681 | /* No need to flush TLB; bits are in storage key */ | ||
| 682 | return ptep_test_and_clear_dirty(vma, address, ptep); | ||
| 683 | } | ||
| 684 | |||
| 685 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) | 672 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) |
| 686 | { | 673 | { |
| 687 | pte_t pte = *ptep; | 674 | pte_t pte = *ptep; |
| @@ -939,8 +926,6 @@ extern void memmap_init(unsigned long, int, unsigned long, unsigned long); | |||
| 939 | #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS | 926 | #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS |
| 940 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 927 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
| 941 | #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH | 928 | #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH |
| 942 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 943 | #define __HAVE_ARCH_PTEP_CLEAR_DIRTY_FLUSH | ||
| 944 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 929 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 945 | #define __HAVE_ARCH_PTEP_CLEAR_FLUSH | 930 | #define __HAVE_ARCH_PTEP_CLEAR_FLUSH |
| 946 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 931 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
diff --git a/include/asm-x86_64/pgtable.h b/include/asm-x86_64/pgtable.h index 4f169ac6b1..3ba5309929 100644 --- a/include/asm-x86_64/pgtable.h +++ b/include/asm-x86_64/pgtable.h | |||
| @@ -284,13 +284,6 @@ static inline pte_t pte_clrhuge(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & | |||
| 284 | 284 | ||
| 285 | struct vm_area_struct; | 285 | struct vm_area_struct; |
| 286 | 286 | ||
| 287 | static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) | ||
| 288 | { | ||
| 289 | if (!pte_dirty(*ptep)) | ||
| 290 | return 0; | ||
| 291 | return test_and_clear_bit(_PAGE_BIT_DIRTY, &ptep->pte); | ||
| 292 | } | ||
| 293 | |||
| 294 | static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) | 287 | static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) |
| 295 | { | 288 | { |
| 296 | if (!pte_young(*ptep)) | 289 | if (!pte_young(*ptep)) |
| @@ -427,7 +420,6 @@ extern int kern_addr_valid(unsigned long addr); | |||
| 427 | (((o) & (1UL << (__VIRTUAL_MASK_SHIFT-1))) ? ((o) | (~__VIRTUAL_MASK)) : (o)) | 420 | (((o) & (1UL << (__VIRTUAL_MASK_SHIFT-1))) ? ((o) | (~__VIRTUAL_MASK)) : (o)) |
| 428 | 421 | ||
| 429 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 422 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
| 430 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 431 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 423 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 432 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL | 424 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL |
| 433 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 425 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
diff --git a/include/asm-xtensa/pgtable.h b/include/asm-xtensa/pgtable.h index e9fc512cc2..06850f3b26 100644 --- a/include/asm-xtensa/pgtable.h +++ b/include/asm-xtensa/pgtable.h | |||
| @@ -267,17 +267,6 @@ ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, | |||
| 267 | return 1; | 267 | return 1; |
| 268 | } | 268 | } |
| 269 | 269 | ||
| 270 | static inline int | ||
| 271 | ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr, | ||
| 272 | pte_t *ptep) | ||
| 273 | { | ||
| 274 | pte_t pte = *ptep; | ||
| 275 | if (!pte_dirty(pte)) | ||
| 276 | return 0; | ||
| 277 | update_pte(ptep, pte_mkclean(pte)); | ||
| 278 | return 1; | ||
| 279 | } | ||
| 280 | |||
| 281 | static inline pte_t | 270 | static inline pte_t |
| 282 | ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) | 271 | ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) |
| 283 | { | 272 | { |
| @@ -418,7 +407,6 @@ typedef pte_t *pte_addr_t; | |||
| 418 | #endif /* !defined (__ASSEMBLY__) */ | 407 | #endif /* !defined (__ASSEMBLY__) */ |
| 419 | 408 | ||
| 420 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 409 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
| 421 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY | ||
| 422 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 410 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
| 423 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 411 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
| 424 | #define __HAVE_ARCH_PTEP_MKDIRTY | 412 | #define __HAVE_ARCH_PTEP_MKDIRTY |
