Index: linux-2.6.16-rc1/include/asm-ia64/pgtable.h =================================================================== --- linux-2.6.16-rc1.orig/include/asm-ia64/pgtable.h 2006-01-16 23:44:47.000000000 -0800 +++ linux-2.6.16-rc1/include/asm-ia64/pgtable.h 2006-04-06 10:39:34.000000000 -0700 @@ -267,8 +267,9 @@ ia64_phys_addr_valid (unsigned long addr (__pte((pte_val(_pte) & ~_PAGE_CHG_MASK) | (pgprot_val(newprot) & _PAGE_CHG_MASK))) #define pte_none(pte) (!pte_val(pte)) -#define pte_present(pte) (pte_val(pte) & (_PAGE_P | _PAGE_PROTNONE)) +#define pte_present(pte) (pte_val(pte) & _PAGE_PROTNONE) #define pte_clear(mm,addr,pte) (pte_val(*(pte)) = 0UL) +#define pte_off(pte) ((pte_val(pte) & (_PAGE_P | _PAGE_PROTNONE) == _PAGE_PROTNONE) /* pte_page() returns the "struct page *" corresponding to the PTE: */ #define pte_page(pte) virt_to_page(((pte_val(pte) & _PFN_MASK) + PAGE_OFFSET)) @@ -443,6 +444,16 @@ ptep_set_wrprotect(struct mm_struct *mm, #endif } +static inline ptep_off(pte_t *ptep) +{ + clear_bit(ptep, _PAGE_P); +} + +static inline ptep_on(pte_t *ptep) +{ + set_bit(ptep, _PAGE_P); +} + static inline int pte_same (pte_t a, pte_t b) { Index: linux-2.6.16-rc1/arch/ia64/Kconfig =================================================================== --- linux-2.6.16-rc1.orig/arch/ia64/Kconfig 2006-01-16 23:44:47.000000000 -0800 +++ linux-2.6.16-rc1/arch/ia64/Kconfig 2006-04-06 10:40:15.000000000 -0700 @@ -338,6 +338,9 @@ config HAVE_ARCH_EARLY_PFN_TO_NID def_bool y depends on NEED_MULTIPLE_NODES +config HAVE_PTE_OFF + def_bool y + config IA32_SUPPORT bool "Support for Linux/x86 binaries" help