]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/mm/ioremap.c
x86/early_ioremap: don't assume we're using swapper_pg_dir
[linux-2.6-omap-h63xx.git] / arch / x86 / mm / ioremap.c
index a4897a85268a5274d76145783a240426e6d456b7..9f42d7e9c15829431ed31c90fd993750adf9791f 100644 (file)
@@ -265,7 +265,9 @@ static __initdata pte_t bm_pte[PAGE_SIZE/sizeof(pte_t)]
 
 static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
 {
-       pgd_t *pgd = &swapper_pg_dir[pgd_index(addr)];
+       /* Don't assume we're using swapper_pg_dir at this point */
+       pgd_t *base = __va(read_cr3());
+       pgd_t *pgd = &base[pgd_index(addr)];
        pud_t *pud = pud_offset(pgd, addr);
        pmd_t *pmd = pmd_offset(pud, addr);