|
@@ -36,22 +36,6 @@
|
|
|
* of type casting from pmd_t * to pte_t *.
|
|
|
*/
|
|
|
|
|
|
-pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
|
|
|
-{
|
|
|
- pgd_t *pgd;
|
|
|
- pud_t *pud;
|
|
|
- pmd_t *pmd = NULL;
|
|
|
-
|
|
|
- pgd = pgd_offset(mm, addr);
|
|
|
- if (pgd_present(*pgd)) {
|
|
|
- pud = pud_offset(pgd, addr);
|
|
|
- if (pud_present(*pud))
|
|
|
- pmd = pmd_offset(pud, addr);
|
|
|
- }
|
|
|
-
|
|
|
- return (pte_t *)pmd;
|
|
|
-}
|
|
|
-
|
|
|
struct page *follow_huge_addr(struct mm_struct *mm, unsigned long address,
|
|
|
int write)
|
|
|
{
|
|
@@ -68,33 +52,6 @@ int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-pte_t *huge_pte_alloc(struct mm_struct *mm,
|
|
|
- unsigned long addr, unsigned long sz)
|
|
|
-{
|
|
|
- pgd_t *pgd;
|
|
|
- pud_t *pud;
|
|
|
- pte_t *pte = NULL;
|
|
|
-
|
|
|
- pgd = pgd_offset(mm, addr);
|
|
|
- pud = pud_alloc(mm, pgd, addr);
|
|
|
- if (pud)
|
|
|
- pte = (pte_t *)pmd_alloc(mm, pud, addr);
|
|
|
-
|
|
|
- return pte;
|
|
|
-}
|
|
|
-
|
|
|
-struct page *
|
|
|
-follow_huge_pmd(struct mm_struct *mm, unsigned long address,
|
|
|
- pmd_t *pmd, int write)
|
|
|
-{
|
|
|
- struct page *page;
|
|
|
-
|
|
|
- page = pte_page(*(pte_t *)pmd);
|
|
|
- if (page)
|
|
|
- page += ((address & ~PMD_MASK) >> PAGE_SHIFT);
|
|
|
- return page;
|
|
|
-}
|
|
|
-
|
|
|
int pmd_huge(pmd_t pmd)
|
|
|
{
|
|
|
return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT);
|