diff options
Diffstat (limited to 'include/asm-ia64/page.h')
-rw-r--r-- | include/asm-ia64/page.h | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/include/asm-ia64/page.h b/include/asm-ia64/page.h index 5e6362a786b7..2087825eefa4 100644 --- a/include/asm-ia64/page.h +++ b/include/asm-ia64/page.h | |||
@@ -57,6 +57,8 @@ | |||
57 | 57 | ||
58 | # define HAVE_ARCH_HUGETLB_UNMAPPED_AREA | 58 | # define HAVE_ARCH_HUGETLB_UNMAPPED_AREA |
59 | # define ARCH_HAS_HUGEPAGE_ONLY_RANGE | 59 | # define ARCH_HAS_HUGEPAGE_ONLY_RANGE |
60 | # define ARCH_HAS_PREPARE_HUGEPAGE_RANGE | ||
61 | # define ARCH_HAS_HUGETLB_FREE_PGD_RANGE | ||
60 | #endif /* CONFIG_HUGETLB_PAGE */ | 62 | #endif /* CONFIG_HUGETLB_PAGE */ |
61 | 63 | ||
62 | #ifdef __ASSEMBLY__ | 64 | #ifdef __ASSEMBLY__ |
@@ -104,17 +106,25 @@ extern int ia64_pfn_valid (unsigned long pfn); | |||
104 | # define ia64_pfn_valid(pfn) 1 | 106 | # define ia64_pfn_valid(pfn) 1 |
105 | #endif | 107 | #endif |
106 | 108 | ||
109 | #ifdef CONFIG_VIRTUAL_MEM_MAP | ||
110 | extern struct page *vmem_map; | ||
111 | #ifdef CONFIG_DISCONTIGMEM | ||
112 | # define page_to_pfn(page) ((unsigned long) (page - vmem_map)) | ||
113 | # define pfn_to_page(pfn) (vmem_map + (pfn)) | ||
114 | #endif | ||
115 | #endif | ||
116 | |||
117 | #if defined(CONFIG_FLATMEM) || defined(CONFIG_SPARSEMEM) | ||
118 | /* FLATMEM always configures mem_map (mem_map = vmem_map if necessary) */ | ||
119 | #include <asm-generic/memory_model.h> | ||
120 | #endif | ||
121 | |||
107 | #ifdef CONFIG_FLATMEM | 122 | #ifdef CONFIG_FLATMEM |
108 | # define pfn_valid(pfn) (((pfn) < max_mapnr) && ia64_pfn_valid(pfn)) | 123 | # define pfn_valid(pfn) (((pfn) < max_mapnr) && ia64_pfn_valid(pfn)) |
109 | # define page_to_pfn(page) ((unsigned long) (page - mem_map)) | ||
110 | # define pfn_to_page(pfn) (mem_map + (pfn)) | ||
111 | #elif defined(CONFIG_DISCONTIGMEM) | 124 | #elif defined(CONFIG_DISCONTIGMEM) |
112 | extern struct page *vmem_map; | ||
113 | extern unsigned long min_low_pfn; | 125 | extern unsigned long min_low_pfn; |
114 | extern unsigned long max_low_pfn; | 126 | extern unsigned long max_low_pfn; |
115 | # define pfn_valid(pfn) (((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn)) | 127 | # define pfn_valid(pfn) (((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn)) |
116 | # define page_to_pfn(page) ((unsigned long) (page - vmem_map)) | ||
117 | # define pfn_to_page(pfn) (vmem_map + (pfn)) | ||
118 | #endif | 128 | #endif |
119 | 129 | ||
120 | #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) | 130 | #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) |
@@ -147,7 +157,7 @@ typedef union ia64_va { | |||
147 | | (REGION_OFFSET(x) >> (HPAGE_SHIFT-PAGE_SHIFT))) | 157 | | (REGION_OFFSET(x) >> (HPAGE_SHIFT-PAGE_SHIFT))) |
148 | # define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) | 158 | # define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) |
149 | # define is_hugepage_only_range(mm, addr, len) \ | 159 | # define is_hugepage_only_range(mm, addr, len) \ |
150 | (REGION_NUMBER(addr) == RGN_HPAGE && \ | 160 | (REGION_NUMBER(addr) == RGN_HPAGE || \ |
151 | REGION_NUMBER((addr)+(len)-1) == RGN_HPAGE) | 161 | REGION_NUMBER((addr)+(len)-1) == RGN_HPAGE) |
152 | extern unsigned int hpage_shift; | 162 | extern unsigned int hpage_shift; |
153 | #endif | 163 | #endif |