|
@@ -181,6 +181,78 @@ static void inline copy_user_page(void *to, void *from, unsigned long vaddr,
|
|
|
alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
|
|
|
#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
|
|
|
|
|
|
+#ifdef CONFIG_X86_64
|
|
|
+typedef struct { pgdval_t pgd; } pgd_t;
|
|
|
+typedef struct { pgprotval_t pgprot; } pgprot_t;
|
|
|
+
|
|
|
+static inline pgd_t native_make_pgd(pgdval_t val)
|
|
|
+{
|
|
|
+ return (pgd_t) { val };
|
|
|
+}
|
|
|
+
|
|
|
+static inline pgdval_t native_pgd_val(pgd_t pgd)
|
|
|
+{
|
|
|
+ return pgd.pgd;
|
|
|
+}
|
|
|
+
|
|
|
+#if PAGETABLE_LEVELS >= 3
|
|
|
+#if PAGETABLE_LEVELS == 4
|
|
|
+typedef struct { pudval_t pud; } pud_t;
|
|
|
+
|
|
|
+static inline pud_t native_make_pud(pmdval_t val)
|
|
|
+{
|
|
|
+ return (pud_t) { val };
|
|
|
+}
|
|
|
+
|
|
|
+static inline pudval_t native_pud_val(pud_t pud)
|
|
|
+{
|
|
|
+ return pud.pud;
|
|
|
+}
|
|
|
+#else /* PAGETABLE_LEVELS == 3 */
|
|
|
+#include <asm-generic/pgtable-nopud.h>
|
|
|
+#endif /* PAGETABLE_LEVELS == 4 */
|
|
|
+
|
|
|
+typedef struct { pmdval_t pmd; } pmd_t;
|
|
|
+
|
|
|
+static inline pmd_t native_make_pmd(pmdval_t val)
|
|
|
+{
|
|
|
+ return (pmd_t) { val };
|
|
|
+}
|
|
|
+
|
|
|
+static inline pmdval_t native_pmd_val(pmd_t pmd)
|
|
|
+{
|
|
|
+ return pmd.pmd;
|
|
|
+}
|
|
|
+#else /* PAGETABLE_LEVELS == 2 */
|
|
|
+#include <asm-generic/pgtable-nopmd.h>
|
|
|
+#endif /* PAGETABLE_LEVELS >= 3 */
|
|
|
+
|
|
|
+#define pgprot_val(x) ((x).pgprot)
|
|
|
+#define __pgprot(x) ((pgprot_t) { (x) } )
|
|
|
+
|
|
|
+#ifdef CONFIG_PARAVIRT
|
|
|
+#include <asm/paravirt.h>
|
|
|
+#else /* !CONFIG_PARAVIRT */
|
|
|
+
|
|
|
+#define pgd_val(x) native_pgd_val(x)
|
|
|
+#define __pgd(x) native_make_pgd(x)
|
|
|
+
|
|
|
+#ifndef __PAGETABLE_PUD_FOLDED
|
|
|
+#define pud_val(x) native_pud_val(x)
|
|
|
+#define __pud(x) native_make_pud(x)
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifndef __PAGETABLE_PMD_FOLDED
|
|
|
+#define pmd_val(x) native_pmd_val(x)
|
|
|
+#define __pmd(x) native_make_pmd(x)
|
|
|
+#endif
|
|
|
+
|
|
|
+#define pte_val(x) native_pte_val(x)
|
|
|
+#define __pte(x) native_make_pte(x)
|
|
|
+
|
|
|
+#endif /* CONFIG_PARAVIRT */
|
|
|
+
|
|
|
+#endif /* CONFIG_X86_64 */
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
|
|
|