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.h27
1 files changed, 20 insertions, 7 deletions
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h
index dc936dddf161..49982110e4d9 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))
@@ -29,8 +32,7 @@
29#define HPAGE_MASK (~(HPAGE_SIZE - 1)) 32#define HPAGE_MASK (~(HPAGE_SIZE - 1))
30#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) 33#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
31 34
32/* to align the pointer to the (next) page boundary */ 35#define HUGE_MAX_HSTATE 2
33#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
34 36
35#ifndef __ASSEMBLY__ 37#ifndef __ASSEMBLY__
36#include <linux/types.h> 38#include <linux/types.h>
@@ -51,9 +53,17 @@
51 53
52#ifndef __ASSEMBLY__ 54#ifndef __ASSEMBLY__
53 55
56typedef struct { pgdval_t pgd; } pgd_t;
57typedef struct { pgprotval_t pgprot; } pgprot_t;
58
54extern int page_is_ram(unsigned long pagenr); 59extern int page_is_ram(unsigned long pagenr);
55extern int devmem_is_allowed(unsigned long pagenr); 60extern int devmem_is_allowed(unsigned long pagenr);
61extern void map_devmem(unsigned long pfn, unsigned long size,
62 pgprot_t vma_prot);
63extern void unmap_devmem(unsigned long pfn, unsigned long size,
64 pgprot_t vma_prot);
56 65
66extern unsigned long max_low_pfn_mapped;
57extern unsigned long max_pfn_mapped; 67extern unsigned long max_pfn_mapped;
58 68
59struct page; 69struct page;
@@ -74,9 +84,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) 84 alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
75#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE 85#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
76 86
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) 87static inline pgd_t native_make_pgd(pgdval_t val)
81{ 88{
82 return (pgd_t) { val }; 89 return (pgd_t) { val };
@@ -139,6 +146,11 @@ static inline pteval_t native_pte_val(pte_t pte)
139 return pte.pte; 146 return pte.pte;
140} 147}
141 148
149static inline pteval_t native_pte_flags(pte_t pte)
150{
151 return native_pte_val(pte) & PTE_FLAGS_MASK;
152}
153
142#define pgprot_val(x) ((x).pgprot) 154#define pgprot_val(x) ((x).pgprot)
143#define __pgprot(x) ((pgprot_t) { (x) } ) 155#define __pgprot(x) ((pgprot_t) { (x) } )
144 156
@@ -160,6 +172,7 @@ static inline pteval_t native_pte_val(pte_t pte)
160#endif 172#endif
161 173
162#define pte_val(x) native_pte_val(x) 174#define pte_val(x) native_pte_val(x)
175#define pte_flags(x) native_pte_flags(x)
163#define __pte(x) native_make_pte(x) 176#define __pte(x) native_make_pte(x)
164 177
165#endif /* CONFIG_PARAVIRT */ 178#endif /* CONFIG_PARAVIRT */