aboutsummaryrefslogtreecommitdiffstats
path: root/linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c')
-rw-r--r--linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c b/linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c
index 3714880f72..c3d6ee3959 100644
--- a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c
+++ b/linux-2.6-xen-sparse/arch/xen/x86_64/mm/ioremap.c
@@ -464,3 +464,34 @@ int direct_remap_area_pages(struct mm_struct *mm,
}
EXPORT_SYMBOL(direct_remap_area_pages);
+
+int create_lookup_pte_addr(struct mm_struct *mm,
+ unsigned long address,
+ unsigned long *ptep)
+{
+ int f(pte_t *pte, struct page *pte_page, unsigned long addr, void *data)
+ {
+ unsigned long *ptep = (unsigned long *)data;
+ if (ptep) *ptep = (pfn_to_mfn(page_to_pfn(pte_page)) << PAGE_SHIFT)
+ | ((unsigned long)pte & ~PAGE_MASK);
+ return 0;
+ }
+
+ return generic_page_range(mm, address, PAGE_SIZE, f, ptep);
+}
+
+EXPORT_SYMBOL(create_lookup_pte_addr);
+
+int touch_pte_range(struct mm_struct *mm,
+ unsigned long address,
+ unsigned long size)
+{
+ int f(pte_t *pte, struct page *pte_page, unsigned long addr, void *data)
+ {
+ return 0;
+ }
+
+ return generic_page_range(mm, address, size, f, NULL);
+}
+
+EXPORT_SYMBOL(touch_pte_range);