|
@@ -83,55 +83,6 @@ void show_mem(unsigned int filter)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Associate a virtual page frame with a given physical page frame
|
|
|
- * and protection flags for that frame.
|
|
|
- */
|
|
|
-static void set_pte_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags)
|
|
|
-{
|
|
|
- pgd_t *pgd;
|
|
|
- pud_t *pud;
|
|
|
- pmd_t *pmd;
|
|
|
- pte_t *pte;
|
|
|
-
|
|
|
- pgd = swapper_pg_dir + pgd_index(vaddr);
|
|
|
- if (pgd_none(*pgd)) {
|
|
|
- BUG();
|
|
|
- return;
|
|
|
- }
|
|
|
- pud = pud_offset(pgd, vaddr);
|
|
|
- if (pud_none(*pud)) {
|
|
|
- BUG();
|
|
|
- return;
|
|
|
- }
|
|
|
- pmd = pmd_offset(pud, vaddr);
|
|
|
- if (pmd_none(*pmd)) {
|
|
|
- BUG();
|
|
|
- return;
|
|
|
- }
|
|
|
- pte = pte_offset_kernel(pmd, vaddr);
|
|
|
- /* <pfn,flags> stored as-is, to permit clearing entries */
|
|
|
- set_pte(pte, pfn_pte(pfn, flags));
|
|
|
-
|
|
|
- /*
|
|
|
- * It's enough to flush this one mapping.
|
|
|
- * This appears conservative since it is only called
|
|
|
- * from __set_fixmap.
|
|
|
- */
|
|
|
- local_flush_tlb_page(NULL, vaddr, PAGE_SIZE);
|
|
|
-}
|
|
|
-
|
|
|
-void __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
|
|
|
-{
|
|
|
- unsigned long address = __fix_to_virt(idx);
|
|
|
-
|
|
|
- if (idx >= __end_of_fixed_addresses) {
|
|
|
- BUG();
|
|
|
- return;
|
|
|
- }
|
|
|
- set_pte_pfn(address, phys >> PAGE_SHIFT, flags);
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* shatter_huge_page() - ensure a given address is mapped by a small page.
|
|
|
*
|