aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/i386/kernel/paravirt.c2
-rw-r--r--include/asm-i386/paravirt.h13
-rw-r--r--include/asm-i386/pgtable.h4
3 files changed, 2 insertions, 17 deletions
diff --git a/arch/i386/kernel/paravirt.c b/arch/i386/kernel/paravirt.c
index 596f382c641c..c4850ddd6a9d 100644
--- a/arch/i386/kernel/paravirt.c
+++ b/arch/i386/kernel/paravirt.c
@@ -315,8 +315,6 @@ struct paravirt_ops paravirt_ops = {
315 .pte_update = paravirt_nop, 315 .pte_update = paravirt_nop,
316 .pte_update_defer = paravirt_nop, 316 .pte_update_defer = paravirt_nop,
317 317
318 .ptep_get_and_clear = native_ptep_get_and_clear,
319
320#ifdef CONFIG_HIGHPTE 318#ifdef CONFIG_HIGHPTE
321 .kmap_atomic_pte = kmap_atomic, 319 .kmap_atomic_pte = kmap_atomic,
322#endif 320#endif
diff --git a/include/asm-i386/paravirt.h b/include/asm-i386/paravirt.h
index 2ba18963e114..e2e7f98723c5 100644
--- a/include/asm-i386/paravirt.h
+++ b/include/asm-i386/paravirt.h
@@ -188,8 +188,6 @@ struct paravirt_ops
188 void (*pte_update_defer)(struct mm_struct *mm, 188 void (*pte_update_defer)(struct mm_struct *mm,
189 unsigned long addr, pte_t *ptep); 189 unsigned long addr, pte_t *ptep);
190 190
191 pte_t (*ptep_get_and_clear)(pte_t *ptep);
192
193#ifdef CONFIG_HIGHPTE 191#ifdef CONFIG_HIGHPTE
194 void *(*kmap_atomic_pte)(struct page *page, enum km_type type); 192 void *(*kmap_atomic_pte)(struct page *page, enum km_type type);
195#endif 193#endif
@@ -859,12 +857,8 @@ static inline void pmd_clear(pmd_t *pmdp)
859 PVOP_VCALL1(pmd_clear, pmdp); 857 PVOP_VCALL1(pmd_clear, pmdp);
860} 858}
861 859
862static inline pte_t raw_ptep_get_and_clear(pte_t *p)
863{
864 unsigned long long val = PVOP_CALL1(unsigned long long, ptep_get_and_clear, p);
865 return (pte_t) { val, val >> 32 };
866}
867#else /* !CONFIG_X86_PAE */ 860#else /* !CONFIG_X86_PAE */
861
868static inline pte_t __pte(unsigned long val) 862static inline pte_t __pte(unsigned long val)
869{ 863{
870 return (pte_t) { PVOP_CALL1(unsigned long, make_pte, val) }; 864 return (pte_t) { PVOP_CALL1(unsigned long, make_pte, val) };
@@ -900,11 +894,6 @@ static inline void set_pmd(pmd_t *pmdp, pmd_t pmdval)
900{ 894{
901 PVOP_VCALL2(set_pmd, pmdp, pmdval.pud.pgd.pgd); 895 PVOP_VCALL2(set_pmd, pmdp, pmdval.pud.pgd.pgd);
902} 896}
903
904static inline pte_t raw_ptep_get_and_clear(pte_t *p)
905{
906 return (pte_t) { PVOP_CALL1(unsigned long, ptep_get_and_clear, p) };
907}
908#endif /* CONFIG_X86_PAE */ 897#endif /* CONFIG_X86_PAE */
909 898
910#define __HAVE_ARCH_ENTER_LAZY_CPU_MODE 899#define __HAVE_ARCH_ENTER_LAZY_CPU_MODE
diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h
index befc697821e5..e7ddd2341309 100644
--- a/include/asm-i386/pgtable.h
+++ b/include/asm-i386/pgtable.h
@@ -267,8 +267,6 @@ extern void vmalloc_sync_all(void);
267 */ 267 */
268#define pte_update(mm, addr, ptep) do { } while (0) 268#define pte_update(mm, addr, ptep) do { } while (0)
269#define pte_update_defer(mm, addr, ptep) do { } while (0) 269#define pte_update_defer(mm, addr, ptep) do { } while (0)
270
271#define raw_ptep_get_and_clear(xp) native_ptep_get_and_clear(xp)
272#endif 270#endif
273 271
274/* 272/*
@@ -335,7 +333,7 @@ do { \
335#define __HAVE_ARCH_PTEP_GET_AND_CLEAR 333#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
336static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) 334static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
337{ 335{
338 pte_t pte = raw_ptep_get_and_clear(ptep); 336 pte_t pte = native_ptep_get_and_clear(ptep);
339 pte_update(mm, addr, ptep); 337 pte_update(mm, addr, ptep);
340 return pte; 338 return pte;
341} 339}