|
@@ -2,6 +2,8 @@
|
|
#ifndef _ASM_X86_PGTABLE_3LEVEL_H
|
|
#ifndef _ASM_X86_PGTABLE_3LEVEL_H
|
|
#define _ASM_X86_PGTABLE_3LEVEL_H
|
|
#define _ASM_X86_PGTABLE_3LEVEL_H
|
|
|
|
|
|
|
|
+#include <asm/atomic64_32.h>
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Intel Physical Address Extension (PAE) Mode - three-level page
|
|
* Intel Physical Address Extension (PAE) Mode - three-level page
|
|
* tables on PPro+ CPUs.
|
|
* tables on PPro+ CPUs.
|
|
@@ -150,10 +152,7 @@ static inline pte_t native_ptep_get_and_clear(pte_t *ptep)
|
|
{
|
|
{
|
|
pte_t res;
|
|
pte_t res;
|
|
|
|
|
|
- /* xchg acts as a barrier before the setting of the high bits */
|
|
|
|
- res.pte_low = xchg(&ptep->pte_low, 0);
|
|
|
|
- res.pte_high = ptep->pte_high;
|
|
|
|
- ptep->pte_high = 0;
|
|
|
|
|
|
+ res.pte = (pteval_t)arch_atomic64_xchg((atomic64_t *)ptep, 0);
|
|
|
|
|
|
return res;
|
|
return res;
|
|
}
|
|
}
|