.pte_update = paravirt_nop,
.pte_update_defer = paravirt_nop,
- .ptep_get_and_clear = native_ptep_get_and_clear,
-
#ifdef CONFIG_HIGHPTE
.kmap_atomic_pte = kmap_atomic,
#endif
void (*pte_update_defer)(struct mm_struct *mm,
unsigned long addr, pte_t *ptep);
- pte_t (*ptep_get_and_clear)(pte_t *ptep);
-
#ifdef CONFIG_HIGHPTE
void *(*kmap_atomic_pte)(struct page *page, enum km_type type);
#endif
PVOP_VCALL1(pmd_clear, pmdp);
}
-static inline pte_t raw_ptep_get_and_clear(pte_t *p)
-{
- unsigned long long val = PVOP_CALL1(unsigned long long, ptep_get_and_clear, p);
- return (pte_t) { val, val >> 32 };
-}
#else /* !CONFIG_X86_PAE */
+
static inline pte_t __pte(unsigned long val)
{
return (pte_t) { PVOP_CALL1(unsigned long, make_pte, val) };
{
PVOP_VCALL2(set_pmd, pmdp, pmdval.pud.pgd.pgd);
}
-
-static inline pte_t raw_ptep_get_and_clear(pte_t *p)
-{
- return (pte_t) { PVOP_CALL1(unsigned long, ptep_get_and_clear, p) };
-}
#endif /* CONFIG_X86_PAE */
#define __HAVE_ARCH_ENTER_LAZY_CPU_MODE
*/
#define pte_update(mm, addr, ptep) do { } while (0)
#define pte_update_defer(mm, addr, ptep) do { } while (0)
-
-#define raw_ptep_get_and_clear(xp) native_ptep_get_and_clear(xp)
#endif
/*
#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
{
- pte_t pte = raw_ptep_get_and_clear(ptep);
+ pte_t pte = native_ptep_get_and_clear(ptep);
pte_update(mm, addr, ptep);
return pte;
}