From c6c7496ca090dd56599de5bb1398f69762569d5e Mon Sep 17 00:00:00 2001 From: Jon Smirl Date: Thu, 6 Jan 2005 17:09:22 +0000 Subject: Adjust drm-memory for 4 level page tables in 2.6.10 ifdef'd to use 3 levels in kernels older than 2.6.10 --- linux-core/drm_memory.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'linux-core/drm_memory.h') diff --git a/linux-core/drm_memory.h b/linux-core/drm_memory.h index e3ac883d..d6856e14 100644 --- a/linux-core/drm_memory.h +++ b/linux-core/drm_memory.h @@ -136,9 +136,14 @@ static inline void *agp_remap(unsigned long offset, unsigned long size, static inline unsigned long drm_follow_page(void *vaddr) { - pgd_t *pgd = pgd_offset_k((unsigned long)vaddr); + pgd_t *pgd = pgd_offset_k((unsigned long) vaddr); +#if LINUX_VERSION_CODE < 0x02060a /* KERNEL_VERSION(2,6,10) */ pmd_t *pmd = pmd_offset(pgd, (unsigned long)vaddr); - pte_t *ptep = pte_offset_kernel(pmd, (unsigned long)vaddr); +#else + pud_t *pud = pud_offset(pgd, (unsigned long) vaddr); + pmd_t *pmd = pmd_offset(pud, (unsigned long) vaddr); +#endif + pte_t *ptep = pte_offset_kernel(pmd, (unsigned long) vaddr); return pte_pfn(*ptep) << PAGE_SHIFT; } -- cgit v1.2.3