void free_pgd_slow(pgd_t *pgd) { unsigned long tbl = (unsigned long)pgd; tbl -= MEMC_TABLE_SIZE; free_page_2k(tbl); }
pte_t *get_pte_kernel_slow(pmd_t *pmd, unsigned long offset) { pte_t *pte; pte = (pte_t *)get_page_2k(GFP_KERNEL); if (pmd_none(*pmd)) { if (pte) { memzero(pte, 2 * PTRS_PER_PTE * BYTES_PER_PTR); clean_cache_area(pte, PTRS_PER_PTE * BYTES_PER_PTR); pte += PTRS_PER_PTE; set_pmd(pmd, mk_kernel_pmd(pte)); return pte + offset; } set_pmd(pmd, mk_kernel_pmd(BAD_PAGETABLE)); return NULL; } free_page_2k((unsigned long)pte); if (pmd_bad(*pmd)) { __bad_pmd_kernel(pmd); return NULL; } return (pte_t *) pmd_page(*pmd) + offset; }
void free_pte_slow(pte_t *pte) { unsigned long tbl = (unsigned long)pte; free_page_2k(tbl); }