diff options
author | Jon Smirl <jonsmirl@yahoo.com> | 2005-01-06 17:09:22 +0000 |
---|---|---|
committer | Jon Smirl <jonsmirl@yahoo.com> | 2005-01-06 17:09:22 +0000 |
commit | c6c7496ca090dd56599de5bb1398f69762569d5e (patch) | |
tree | 1acfdde64abdb8f2468087b45374e4731d2ac7e1 /linux-core/drm_memory.h | |
parent | 50a6ffa8789ca12029da1db86ad8c90ce62cd241 (diff) |
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
Diffstat (limited to 'linux-core/drm_memory.h')
-rw-r--r-- | linux-core/drm_memory.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/linux-core/drm_memory.h b/linux-core/drm_memory.h index e3ac883d5..d6856e14d 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; } |