vserver 1.9.5.x5
[linux-2.6.git] / include / asm-alpha / pgtable.h
index 3f1ed39..a22e394 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef _ALPHA_PGTABLE_H
 #define _ALPHA_PGTABLE_H
 
+#include <asm-generic/4level-fixup.h>
+
 /*
  * This file contains the functions and defines necessary to modify and use
  * the Alpha page table tree.
@@ -192,7 +194,7 @@ extern unsigned long __zero_page(void);
  * and a page entry and page directory to the page they refer to.
  */
 #ifndef CONFIG_DISCONTIGMEM
-#define page_to_pa(page)       ((page - mem_map) << PAGE_SHIFT)
+#define page_to_pa(page)       (((page) - mem_map) << PAGE_SHIFT)
 
 #define pte_pfn(pte)   (pte_val(pte) >> 32)
 #define pte_page(pte)  pfn_to_page(pte_pfn(pte))
@@ -270,10 +272,10 @@ extern inline pte_t pte_mkyoung(pte_t pte)        { pte_val(pte) |= __ACCESS_BITS; retu
 #define PAGE_DIR_OFFSET(tsk,address) pgd_offset((tsk),(address))
 
 /* to find an entry in a kernel page-table-directory */
-#define pgd_offset_k(address) pgd_offset(&init_mm, address)
+#define pgd_offset_k(address) pgd_offset(&init_mm, (address))
 
 /* to find an entry in a page-table-directory. */
-#define pgd_index(address)     ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
+#define pgd_index(address)     (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
 #define pgd_offset(mm, address)        ((mm)->pgd+pgd_index(address))
 
 /* Find an entry in the second-level page table.. */
@@ -327,8 +329,12 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
 #define kern_addr_valid(addr)  (1)
 #endif
 
-#define io_remap_page_range(vma, start, busaddr, size, prot) \
-    remap_page_range(vma, start, virt_to_phys((void *)__ioremap(busaddr, size)), size, prot)
+#define io_remap_page_range(vma, start, busaddr, size, prot)   \
+({                                                             \
+       void *va = (void __force *)ioremap(busaddr, size);      \
+       unsigned long pfn = virt_to_phys(va) >> PAGE_SHIFT;     \
+       remap_pfn_range(vma, start, pfn, size, prot);           \
+})
 
 #define pte_ERROR(e) \
        printk("%s:%d: bad pte %016lx.\n", __FILE__, __LINE__, pte_val(e))