From: Hugh Dickins ia64 and sparc64 hurriedly had to introduce their own variants of pgd_addr_end, to leapfrog over the holes in their virtual address spaces which the final clear_page_range suddenly presented when converted from pgd_index to pgd_addr_end. But now that free_pgtables respects the vma list, those holes are never presented, and the arch variants can go. Signed-off-by: Hugh Dickins Signed-off-by: Andrew Morton --- 25-akpm/include/asm-generic/pgtable.h | 8 +++----- 25-akpm/include/asm-ia64/pgtable.h | 26 -------------------------- 25-akpm/include/asm-sparc64/pgtable.h | 15 --------------- 3 files changed, 3 insertions(+), 46 deletions(-) diff -puN include/asm-generic/pgtable.h~freepgt-remove-arch-pgd_addr_end include/asm-generic/pgtable.h --- 25/include/asm-generic/pgtable.h~freepgt-remove-arch-pgd_addr_end 2005-04-07 18:32:40.000000000 -0700 +++ 25-akpm/include/asm-generic/pgtable.h 2005-04-07 18:32:40.000000000 -0700 @@ -140,17 +140,15 @@ static inline void ptep_set_wrprotect(st #endif /* - * When walking page tables, get the address of the next boundary, or - * the end address of the range if that comes earlier. Although end might - * wrap to 0 only in clear_page_range, __boundary may wrap to 0 throughout. + * When walking page tables, get the address of the next boundary, + * or the end address of the range if that comes earlier. Although no + * vma end wraps to 0, rounded up __boundary may wrap to 0 throughout. */ -#ifndef pgd_addr_end #define pgd_addr_end(addr, end) \ ({ unsigned long __boundary = ((addr) + PGDIR_SIZE) & PGDIR_MASK; \ (__boundary - 1 < (end) - 1)? __boundary: (end); \ }) -#endif #ifndef pud_addr_end #define pud_addr_end(addr, end) \ diff -puN include/asm-ia64/pgtable.h~freepgt-remove-arch-pgd_addr_end include/asm-ia64/pgtable.h --- 25/include/asm-ia64/pgtable.h~freepgt-remove-arch-pgd_addr_end 2005-04-07 18:32:40.000000000 -0700 +++ 25-akpm/include/asm-ia64/pgtable.h 2005-04-07 18:32:40.000000000 -0700 @@ -561,32 +561,6 @@ do { \ #define __HAVE_ARCH_PGD_OFFSET_GATE #define __HAVE_ARCH_LAZY_MMU_PROT_UPDATE -/* - * Override for pgd_addr_end() to deal with the virtual address space holes - * in each region. In regions 0..4 virtual address bits are used like this: - * +--------+------+--------+-----+-----+--------+ - * | pgdhi3 | rsvd | pgdlow | pmd | pte | offset | - * +--------+------+--------+-----+-----+--------+ - * 'pgdlow' overflows to pgdhi3 (a.k.a. region bits) leaving rsvd==0 - */ -#define IA64_PGD_OVERFLOW (PGDIR_SIZE << (PAGE_SHIFT-6)) - -#define pgd_addr_end(addr, end) \ -({ unsigned long __boundary = ((addr) + PGDIR_SIZE) & PGDIR_MASK; \ - if (REGION_NUMBER(__boundary) < 5 && \ - __boundary & IA64_PGD_OVERFLOW) \ - __boundary += (RGN_SIZE - 1) & ~(IA64_PGD_OVERFLOW - 1);\ - (__boundary - 1 < (end) - 1)? __boundary: (end); \ -}) - -#define pmd_addr_end(addr, end) \ -({ unsigned long __boundary = ((addr) + PMD_SIZE) & PMD_MASK; \ - if (REGION_NUMBER(__boundary) < 5 && \ - __boundary & IA64_PGD_OVERFLOW) \ - __boundary += (RGN_SIZE - 1) & ~(IA64_PGD_OVERFLOW - 1);\ - (__boundary - 1 < (end) - 1)? __boundary: (end); \ -}) - #include #include diff -puN include/asm-sparc64/pgtable.h~freepgt-remove-arch-pgd_addr_end include/asm-sparc64/pgtable.h --- 25/include/asm-sparc64/pgtable.h~freepgt-remove-arch-pgd_addr_end 2005-04-07 18:32:40.000000000 -0700 +++ 25-akpm/include/asm-sparc64/pgtable.h 2005-04-07 18:32:40.000000000 -0700 @@ -424,21 +424,6 @@ extern int io_remap_pfn_range(struct vm_ #define GET_IOSPACE(pfn) (pfn >> (BITS_PER_LONG - 4)) #define GET_PFN(pfn) (pfn & 0x0fffffffffffffffUL) -/* Override for {pgd,pmd}_addr_end() to deal with the virtual address - * space hole. We simply sign extend bit 43. - */ -#define pgd_addr_end(addr, end) \ -({ unsigned long __boundary = ((addr) + PGDIR_SIZE) & PGDIR_MASK; \ - __boundary = ((long) (__boundary << 20)) >> 20; \ - (__boundary - 1 < (end) - 1)? __boundary: (end); \ -}) - -#define pmd_addr_end(addr, end) \ -({ unsigned long __boundary = ((addr) + PMD_SIZE) & PMD_MASK; \ - __boundary = ((long) (__boundary << 20)) >> 20; \ - (__boundary - 1 < (end) - 1)? __boundary: (end); \ -}) - #include /* We provide our own get_unmapped_area to cope with VA holes for userland */ _