|
@@ -262,10 +262,19 @@ extern struct page *empty_zero_page;
|
|
#define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0)
|
|
#define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0)
|
|
#define pte_page(pte) (pfn_to_page(pte_pfn(pte)))
|
|
#define pte_page(pte) (pfn_to_page(pte_pfn(pte)))
|
|
#define pte_offset_kernel(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr))
|
|
#define pte_offset_kernel(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr))
|
|
-#define pte_offset_map(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr))
|
|
|
|
-#define pte_offset_map_nested(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr))
|
|
|
|
-#define pte_unmap(pte) do { } while (0)
|
|
|
|
-#define pte_unmap_nested(pte) do { } while (0)
|
|
|
|
|
|
+
|
|
|
|
+#define pte_offset_map(dir,addr) (__pte_map(dir, KM_PTE0) + __pte_index(addr))
|
|
|
|
+#define pte_offset_map_nested(dir,addr) (__pte_map(dir, KM_PTE1) + __pte_index(addr))
|
|
|
|
+#define pte_unmap(pte) __pte_unmap(pte, KM_PTE0)
|
|
|
|
+#define pte_unmap_nested(pte) __pte_unmap(pte, KM_PTE1)
|
|
|
|
+
|
|
|
|
+#ifndef CONFIG_HIGHPTE
|
|
|
|
+#define __pte_map(dir,km) pmd_page_vaddr(*(dir))
|
|
|
|
+#define __pte_unmap(pte,km) do { } while (0)
|
|
|
|
+#else
|
|
|
|
+#define __pte_map(dir,km) ((pte_t *)kmap_atomic(pmd_page(*(dir)), km) + PTRS_PER_PTE)
|
|
|
|
+#define __pte_unmap(pte,km) kunmap_atomic((pte - PTRS_PER_PTE), km)
|
|
|
|
+#endif
|
|
|
|
|
|
#define set_pte_ext(ptep,pte,ext) cpu_set_pte_ext(ptep,pte,ext)
|
|
#define set_pte_ext(ptep,pte,ext) cpu_set_pte_ext(ptep,pte,ext)
|
|
|
|
|