Update of /cvsroot/linux-vax/kernel-2.5/include/asm-vax/mm
In directory sc8-pr-cvs1:/tmp/cvs-serv18412
Modified Files:
page.h pagelet_pte.h
Log Message:
pte_pfn() and pfn_pte() APIs added to convert PTEs to PFNs and back.
pfn_to_page() and page_to_pfn() added to convert PFNs to struct
page * and back. __mk_pte() and mk_pte_phys() no longer needed.
Index: page.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.5/include/asm-vax/mm/page.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- page.h 2 Dec 2002 00:10:23 -0000 1.4
+++ page.h 28 Dec 2002 02:12:01 -0000 1.5
@@ -85,7 +85,12 @@
#define MAP_NR(addr) (((GET_HWSPTE_VIRT(addr))->hwpte & PAGELET_PFN_MASK) >> 3)
#define virt_to_page(kaddr) (mem_map + MAP_NR(kaddr))
-#define VALID_PAGE(page) ((page - mem_map) < max_mapnr)
+#define pfn_valid(pfn) ((pfn) < max_mapnr)
+
+#define pfn_to_page(pfn) (mem_map + (pfn))
+#define page_to_pfn(page) ((unsigned long)((page) - mem_map))
+
+#define virt_addr_valid(kaddr) pfn_valid(MAP_NR(kaddr))
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
Index: pagelet_pte.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.5/include/asm-vax/mm/pagelet_pte.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- pagelet_pte.h 2 Dec 2002 00:12:30 -0000 1.4
+++ pagelet_pte.h 28 Dec 2002 02:12:01 -0000 1.5
@@ -117,29 +117,23 @@
*
* See asm-i386/pgtable-3level.h for background.
*/
-/* D.A. May 2001 - FIXME: this needs cleaning up, hacked in a mk_pte and
- __mk_pte... will clean up later.. our mk_pte is being use incorrectly
- in some VAX code so I needed __mk_pte.
- */
-static inline pte_t __mk_pte(unsigned long int page, pgprot_t pgprot)
-{
- pte_t pte;
- pte_val(pte) = (__pa(page) >> PAGELET_SHIFT) | pgprot_val(pgprot);
- return pte;
-}
+#define pte_page(x) pfn_to_page(pte_pfn(x))
-#define mk_pte(page, pgprot) __mk_pte(((page)-mem_map)<<PAGE_SHIFT,(pgprot))
-/* This takes a physical page address that is used by the remapping functions */
-static inline pte_t mk_pte_phys(unsigned long int physpage, pgprot_t pgprot)
+#define pte_pfn(x) ((unsigned long)(((pte_val(x) & PAGE_PFN_MASK) \
+ >> (PAGE_SHIFT - PAGELET_SHIFT))))
+
+/* Create a PTE from a PFN and a page protection. Note that the PFN
+ passed in is a PAGE-sized PFN, not a PAGELET-sized PFN */
+static inline pte_t pfn_pte(unsigned long pfn, pgprot_t pgprot)
{
pte_t pte;
- pte_val(pte) = ((unsigned long)(physpage) >> PAGELET_SHIFT) | pgprot_val(pgprot);
+ pte_val(pte) = (pfn << (PAGE_SHIFT - PAGELET_SHIFT)) | pgprot_val(pgprot);
return pte;
}
-#define pte_page(x) (mem_map+(unsigned long)(((pte_val(x) & PAGE_PFN_MASK) \
- >> (PAGE_SHIFT - PAGELET_SHIFT))))
+#define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), pgprot)
+
/*
* This requires that pte_set is called after pte_modify
|