}
 EXPORT_SYMBOL(page_is_ram);
 
-pgprot_t phys_mem_access_prot(struct file *file, unsigned long addr,
+pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
                              unsigned long size, pgprot_t vma_prot)
 {
        if (ppc_md.phys_mem_access_prot)
-               return ppc_md.phys_mem_access_prot(file, addr, size, vma_prot);
+               return ppc_md.phys_mem_access_prot(file, pfn, size, vma_prot);
 
-       if (!page_is_ram(addr >> PAGE_SHIFT))
+       if (!page_is_ram(pfn))
                vma_prot = __pgprot(pgprot_val(vma_prot)
                                    | _PAGE_GUARDED | _PAGE_NO_CACHE);
        return vma_prot;
 
  * above routine
  */
 pgprot_t pci_phys_mem_access_prot(struct file *file,
-                                 unsigned long offset,
+                                 unsigned long pfn,
                                  unsigned long size,
                                  pgprot_t protection)
 {
        struct pci_dev *pdev = NULL;
        struct resource *found = NULL;
        unsigned long prot = pgprot_val(protection);
+       unsigned long offset = pfn << PAGE_SHIFT;
        int i;
 
-       if (page_is_ram(offset >> PAGE_SHIFT))
+       if (page_is_ram(pfn))
                return prot;
 
        prot |= _PAGE_NO_CACHE | _PAGE_GUARDED;
 
  */
 int page_is_ram(unsigned long pfn)
 {
-       unsigned long paddr = (pfn << PAGE_SHIFT);
-
-       return paddr < __pa(high_memory);
+       return pfn < max_pfn;
 }
 
-pgprot_t phys_mem_access_prot(struct file *file, unsigned long addr,
+pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
                              unsigned long size, pgprot_t vma_prot)
 {
        if (ppc_md.phys_mem_access_prot)
-               return ppc_md.phys_mem_access_prot(file, addr, size, vma_prot);
+               return ppc_md.phys_mem_access_prot(file, pfn, size, vma_prot);
 
-       if (!page_is_ram(addr >> PAGE_SHIFT))
+       if (!page_is_ram(pfn))
                vma_prot = __pgprot(pgprot_val(vma_prot)
                                    | _PAGE_GUARDED | _PAGE_NO_CACHE);
        return vma_prot;
 
  * above routine
  */
 pgprot_t pci_phys_mem_access_prot(struct file *file,
-                                 unsigned long offset,
+                                 unsigned long pfn,
                                  unsigned long size,
                                  pgprot_t protection)
 {
        struct pci_dev *pdev = NULL;
        struct resource *found = NULL;
        unsigned long prot = pgprot_val(protection);
+       unsigned long offset = pfn << PAGE_SHIFT;
        int i;
 
-       if (page_is_ram(offset >> PAGE_SHIFT))
+       if (page_is_ram(pfn))
                return __pgprot(prot);
 
        prot |= _PAGE_NO_CACHE | _PAGE_GUARDED;
 
 static int mmap_mem(struct file * file, struct vm_area_struct * vma)
 {
 #if defined(__HAVE_PHYS_MEM_ACCESS_PROT)
-       unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
-
-       vma->vm_page_prot = phys_mem_access_prot(file, offset,
+       vma->vm_page_prot = phys_mem_access_prot(file, vma->vm_pgoff,
                                                 vma->vm_end - vma->vm_start,
                                                 vma->vm_page_prot);
 #elif defined(pgprot_noncached)
 
        }
 #endif
 #elif defined(__powerpc__)
-       vma->vm_page_prot = phys_mem_access_prot(file, off,
+       vma->vm_page_prot = phys_mem_access_prot(file, off >> PAGE_SHIFT,
                                                 vma->vm_end - vma->vm_start,
                                                 vma->vm_page_prot);
 #elif defined(__alpha__)
 
        
        /* Get access protection for /dev/mem */
        pgprot_t        (*phys_mem_access_prot)(struct file *file,
-                                               unsigned long offset,
+                                               unsigned long pfn,
                                                unsigned long size,
                                                pgprot_t vma_prot);
 
 
 
        /* Get access protection for /dev/mem */
        pgprot_t        (*phys_mem_access_prot)(struct file *file,
-                                               unsigned long offset,
+                                               unsigned long pfn,
                                                unsigned long size,
                                                pgprot_t vma_prot);
 
 
 
 struct file;
 extern pgprot_t        pci_phys_mem_access_prot(struct file *file,
-                                        unsigned long offset,
+                                        unsigned long pfn,
                                         unsigned long size,
                                         pgprot_t prot);
 
 
 #define pgprot_noncached(prot) (__pgprot(pgprot_val(prot) | _PAGE_NO_CACHE | _PAGE_GUARDED))
 
 struct file;
-extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long addr,
+extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
                                     unsigned long size, pgprot_t vma_prot);
 #define __HAVE_PHYS_MEM_ACCESS_PROT
 
 
 
 struct file;
 extern pgprot_t        pci_phys_mem_access_prot(struct file *file,
-                                        unsigned long offset,
+                                        unsigned long pfn,
                                         unsigned long size,
                                         pgprot_t prot);
 
 
 #define pgprot_noncached(prot) (__pgprot(pgprot_val(prot) | _PAGE_NO_CACHE | _PAGE_GUARDED))
 
 struct file;
-extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long addr,
+extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
                                     unsigned long size, pgprot_t vma_prot);
 #define __HAVE_PHYS_MEM_ACCESS_PROT