0001
0002 #ifndef _XEN_PAGE_H
0003 #define _XEN_PAGE_H
0004
0005 #include <asm/page.h>
0006
0007
0008 #define XEN_PAGE_SHIFT 12
0009 #define XEN_PAGE_SIZE (_AC(1, UL) << XEN_PAGE_SHIFT)
0010 #define XEN_PAGE_MASK (~(XEN_PAGE_SIZE-1))
0011 #define xen_offset_in_page(p) ((unsigned long)(p) & ~XEN_PAGE_MASK)
0012
0013
0014
0015
0016
0017
0018 #define xen_pfn_to_page(xen_pfn) \
0019 (pfn_to_page((unsigned long)(xen_pfn) >> (PAGE_SHIFT - XEN_PAGE_SHIFT)))
0020 #define page_to_xen_pfn(page) \
0021 ((page_to_pfn(page)) << (PAGE_SHIFT - XEN_PAGE_SHIFT))
0022
0023 #define XEN_PFN_PER_PAGE (PAGE_SIZE / XEN_PAGE_SIZE)
0024
0025 #define XEN_PFN_DOWN(x) ((x) >> XEN_PAGE_SHIFT)
0026 #define XEN_PFN_UP(x) (((x) + XEN_PAGE_SIZE-1) >> XEN_PAGE_SHIFT)
0027
0028 #include <asm/xen/page.h>
0029
0030
0031 static inline unsigned long xen_page_to_gfn(struct page *page)
0032 {
0033 return pfn_to_gfn(page_to_xen_pfn(page));
0034 }
0035
0036 struct xen_memory_region {
0037 unsigned long start_pfn;
0038 unsigned long n_pfns;
0039 };
0040
0041 #define XEN_EXTRA_MEM_MAX_REGIONS 128
0042
0043 extern __initdata
0044 struct xen_memory_region xen_extra_mem[XEN_EXTRA_MEM_MAX_REGIONS];
0045
0046 extern unsigned long xen_released_pages;
0047
0048 #endif