]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mm/pgd.c
[ARM] xsc3: fix xsc3_l2_inv_range
[linux-2.6-omap-h63xx.git] / arch / arm / mm / pgd.c
index 20c1b0df75f2c386c5966076e7784644f6e4845f..e0f19ab91163e589562d7b070f29d673fc9ef33f 100644 (file)
@@ -57,7 +57,7 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
 
                init_pmd = pmd_offset(init_pgd, 0);
                init_pte = pte_offset_map_nested(init_pmd, 0);
-               set_pte(new_pte, *init_pte);
+               set_pte_ext(new_pte, *init_pte, 0);
                pte_unmap_nested(init_pte);
                pte_unmap(new_pte);
        }
@@ -65,17 +65,17 @@ pgd_t *get_pgd_slow(struct mm_struct *mm)
        return new_pgd;
 
 no_pte:
-       pmd_free(new_pmd);
+       pmd_free(mm, new_pmd);
 no_pmd:
        free_pages((unsigned long)new_pgd, 2);
 no_pgd:
        return NULL;
 }
 
-void free_pgd_slow(pgd_t *pgd)
+void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd)
 {
        pmd_t *pmd;
-       struct page *pte;
+       pgtable_t pte;
 
        if (!pgd)
                return;
@@ -90,12 +90,10 @@ void free_pgd_slow(pgd_t *pgd)
                goto free;
        }
 
-       pte = pmd_page(*pmd);
+       pte = pmd_pgtable(*pmd);
        pmd_clear(pmd);
-       dec_zone_page_state(virt_to_page((unsigned long *)pgd), NR_PAGETABLE);
-       pte_lock_deinit(pte);
-       pte_free(pte);
-       pmd_free(pmd);
+       pte_free(mm, pte);
+       pmd_free(mm, pmd);
 free:
        free_pages((unsigned long) pgd, 2);
 }