aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/page.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-x86/page.h')
-rw-r--r--include/asm-x86/page.h24
1 files changed, 19 insertions, 5 deletions
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h
index dc936dddf161..6c846228948d 100644
--- a/include/asm-x86/page.h
+++ b/include/asm-x86/page.h
@@ -18,8 +18,11 @@
18 (ie, 32-bit PAE). */ 18 (ie, 32-bit PAE). */
19#define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK) 19#define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK)
20 20
21/* PTE_MASK extracts the PFN from a (pte|pmd|pud|pgd)val_t */ 21/* PTE_PFN_MASK extracts the PFN from a (pte|pmd|pud|pgd)val_t */
22#define PTE_MASK ((pteval_t)PHYSICAL_PAGE_MASK) 22#define PTE_PFN_MASK ((pteval_t)PHYSICAL_PAGE_MASK)
23
24/* PTE_FLAGS_MASK extracts the flags from a (pte|pmd|pud|pgd)val_t */
25#define PTE_FLAGS_MASK (~PTE_PFN_MASK)
23 26
24#define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) 27#define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT)
25#define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) 28#define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1))
@@ -51,9 +54,17 @@
51 54
52#ifndef __ASSEMBLY__ 55#ifndef __ASSEMBLY__
53 56
57typedef struct { pgdval_t pgd; } pgd_t;
58typedef struct { pgprotval_t pgprot; } pgprot_t;
59
54extern int page_is_ram(unsigned long pagenr); 60extern int page_is_ram(unsigned long pagenr);
55extern int devmem_is_allowed(unsigned long pagenr); 61extern int devmem_is_allowed(unsigned long pagenr);
62extern void map_devmem(unsigned long pfn, unsigned long size,
63 pgprot_t vma_prot);
64extern void unmap_devmem(unsigned long pfn, unsigned long size,
65 pgprot_t vma_prot);
56 66
67extern unsigned long max_low_pfn_mapped;
57extern unsigned long max_pfn_mapped; 68extern unsigned long max_pfn_mapped;
58 69
59struct page; 70struct page;
@@ -74,9 +85,6 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
74 alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) 85 alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
75#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE 86#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
76 87
77typedef struct { pgdval_t pgd; } pgd_t;
78typedef struct { pgprotval_t pgprot; } pgprot_t;
79
80static inline pgd_t native_make_pgd(pgdval_t val) 88static inline pgd_t native_make_pgd(pgdval_t val)
81{ 89{
82 return (pgd_t) { val }; 90 return (pgd_t) { val };
@@ -139,6 +147,11 @@ static inline pteval_t native_pte_val(pte_t pte)
139 return pte.pte; 147 return pte.pte;
140} 148}
141 149
150static inline pteval_t native_pte_flags(pte_t pte)
151{
152 return native_pte_val(pte) & PTE_FLAGS_MASK;
153}
154
142#define pgprot_val(x) ((x).pgprot) 155#define pgprot_val(x) ((x).pgprot)
143#define __pgprot(x) ((pgprot_t) { (x) } ) 156#define __pgprot(x) ((pgprot_t) { (x) } )
144 157
@@ -160,6 +173,7 @@ static inline pteval_t native_pte_val(pte_t pte)
160#endif 173#endif
161 174
162#define pte_val(x) native_pte_val(x) 175#define pte_val(x) native_pte_val(x)
176#define pte_flags(x) native_pte_flags(x)
163#define __pte(x) native_make_pte(x) 177#define __pte(x) native_make_pte(x)
164 178
165#endif /* CONFIG_PARAVIRT */ 179#endif /* CONFIG_PARAVIRT */