|
@@ -106,17 +106,25 @@ extern int ia64_pfn_valid (unsigned long pfn);
|
|
|
# define ia64_pfn_valid(pfn) 1
|
|
|
#endif
|
|
|
|
|
|
+#ifdef CONFIG_VIRTUAL_MEM_MAP
|
|
|
+extern struct page *vmem_map;
|
|
|
+#ifdef CONFIG_DISCONTIGMEM
|
|
|
+# define page_to_pfn(page) ((unsigned long) (page - vmem_map))
|
|
|
+# define pfn_to_page(pfn) (vmem_map + (pfn))
|
|
|
+#endif
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_FLATMEM) || defined(CONFIG_SPARSEMEM)
|
|
|
+/* FLATMEM always configures mem_map (mem_map = vmem_map if necessary) */
|
|
|
+#include <asm-generic/memory_model.h>
|
|
|
+#endif
|
|
|
+
|
|
|
#ifdef CONFIG_FLATMEM
|
|
|
# define pfn_valid(pfn) (((pfn) < max_mapnr) && ia64_pfn_valid(pfn))
|
|
|
-# define page_to_pfn(page) ((unsigned long) (page - mem_map))
|
|
|
-# define pfn_to_page(pfn) (mem_map + (pfn))
|
|
|
#elif defined(CONFIG_DISCONTIGMEM)
|
|
|
-extern struct page *vmem_map;
|
|
|
extern unsigned long min_low_pfn;
|
|
|
extern unsigned long max_low_pfn;
|
|
|
# define pfn_valid(pfn) (((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
|
|
|
-# define page_to_pfn(page) ((unsigned long) (page - vmem_map))
|
|
|
-# define pfn_to_page(pfn) (vmem_map + (pfn))
|
|
|
#endif
|
|
|
|
|
|
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
|