From: Dave Hansen I don't know what this is trying to do. It might be some kind of artifact from when get_pgd_slow() was removed. The expanded expression with __pa() ends up looking something like this: (unsigned long)(u64)(u32)pmd-PAGE_OFFSET and that is just nutty because pmd is a pointer now, anyway. Attached patch removes the casts. Signed-off-by: Dave Hansen Signed-off-by: Andrew Morton --- 25-akpm/arch/i386/mm/pgtable.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN arch/i386/mm/pgtable.c~remove-weird-pmd-cast arch/i386/mm/pgtable.c --- 25/arch/i386/mm/pgtable.c~remove-weird-pmd-cast Thu Oct 7 14:08:41 2004 +++ 25-akpm/arch/i386/mm/pgtable.c Thu Oct 7 14:08:41 2004 @@ -235,7 +235,7 @@ pgd_t *pgd_alloc(struct mm_struct *mm) pmd_t *pmd = kmem_cache_alloc(pmd_cache, GFP_KERNEL); if (!pmd) goto out_oom; - set_pgd(&pgd[i], __pgd(1 + __pa((u64)((u32)pmd)))); + set_pgd(&pgd[i], __pgd(1 + __pa(pmd))); } return pgd; _