]> git.neil.brown.name Git - history.git/commitdiff
ia64: Update pte macros for new pfn-based versions.
authorDavid Mosberger <davidm@tiger.hpl.hp.com>
Thu, 23 May 2002 10:59:06 +0000 (03:59 -0700)
committerDavid Mosberger <davidm@tiger.hpl.hp.com>
Thu, 23 May 2002 10:59:06 +0000 (03:59 -0700)
include/asm-ia64/page.h
include/asm-ia64/pgtable.h

index edce0f76617895bf127b09a8a9dc7c657a015bdc..ec14e185eca3a05d7901e2ccaa76dc0952198272 100644 (file)
@@ -68,20 +68,27 @@ do {                                                \
  */
 #define MAP_NR_DENSE(addr)     (((unsigned long) (addr) - PAGE_OFFSET) >> PAGE_SHIFT)
 
+#define page_to_pfn(page)      ((unsigned long)((page) - mem_map))
+#define pfn_valid(pfn)         ((pfn) < max_mapnr)
+#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
+#define virt_to_page(kaddr)    pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
+
 #ifdef CONFIG_IA64_GENERIC
 # include <asm/machvec.h>
 # define virt_to_page(kaddr)   (mem_map + platform_map_nr(kaddr))
-# define page_to_phys(page)    ((page - mem_map) << PAGE_SHIFT)
+# define page_to_pfn(page)     ((unsigned long) (page - mem_map))
+# define pfn_to_page(pfn)      (mem_map + (pfn))
 #elif defined (CONFIG_IA64_SGI_SN1)
 # ifndef CONFIG_DISCONTIGMEM
 #  define virt_to_page(kaddr)  (mem_map + MAP_NR_DENSE(kaddr))
-#  define page_to_phys(page)   XXX fix me
+#  define page_to_pfn(page)    XXX fix me
+#  define pfn_to_page(pfn)     XXX fix me
 # endif
 #else
 # define virt_to_page(kaddr)   (mem_map + MAP_NR_DENSE(kaddr))
-# define page_to_phys(page)    ((page - mem_map) << PAGE_SHIFT)
+# define page_to_pfn(page)     ((unsigned long) (page - mem_map))
+# define pfn_to_page(pfn)      (mem_map + (pfn))
 #endif
-#define VALID_PAGE(page)       ((page - mem_map) < max_mapnr)
 
 typedef union ia64_va {
        struct {
@@ -105,7 +112,7 @@ typedef union ia64_va {
 #define REGION_OFFSET(x)       ({ia64_va _v; _v.l = (long) (x); _v.f.off;})
 
 #define REGION_SIZE            REGION_NUMBER(1)
-#define REGION_KERNEL  7
+#define REGION_KERNEL          7
 
 #define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
 #define PAGE_BUG(page) do { BUG(); } while (0)
index f4f92435627e37ccad348fcf4c89d1c47a707e97..2c2fac5c85fd24b4799fecdc992c279efbe2f32c 100644 (file)
@@ -207,20 +207,14 @@ ia64_phys_addr_valid (unsigned long addr)
 #define VMALLOC_END            (0xa000000000000000 + (1UL << (4*PAGE_SHIFT - 9)))
 
 /*
- * Conversion functions: convert a page and protection to a page entry,
- * and a page entry and page directory to the page they refer to.
+ * Conversion functions: convert page frame number (pfn) and a protection value to a page
+ * table entry (pte).
  */
-#define mk_pte(page,pgprot)                                            \
-({                                                                     \
-       pte_t __pte;                                                    \
-                                                                       \
-       pte_val(__pte) = (page_to_phys(page)) | pgprot_val(pgprot);     \
-       __pte;                                                          \
-})
-
-/* This takes a physical page address that is used by the remapping functions */
-#define mk_pte_phys(physpage, pgprot) \
-({ pte_t __pte; pte_val(__pte) = physpage + pgprot_val(pgprot); __pte; })
+#define pfn_pte(pfn, pgprot) \
+({ pte_t __pte; pte_val(__pte) = ((pfn) << PAGE_SHIFT) | pgprot_val(pgprot); __pte; })
+
+/* Extract pfn from pte.  */
+#define pte_pfn(_pte)          ((pte_val(_pte) & _PFN_MASK) >> PAGE_SHIFT)
 
 #define pte_modify(_pte, newprot) \
        (__pte((pte_val(_pte) & _PAGE_CHG_MASK) | pgprot_val(newprot)))