162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public
362306a36Sopenharmony_ci * License.  See the file "COPYING" in the main directory of this archive
462306a36Sopenharmony_ci * for more details.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Copyright (C) 1994 - 2001, 2003 by Ralf Baechle
762306a36Sopenharmony_ci * Copyright (C) 1999, 2000, 2001 Silicon Graphics, Inc.
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef _ASM_NIOS2_PGALLOC_H
1162306a36Sopenharmony_ci#define _ASM_NIOS2_PGALLOC_H
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include <linux/mm.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#include <asm-generic/pgalloc.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_cistatic inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
1862306a36Sopenharmony_ci	pte_t *pte)
1962306a36Sopenharmony_ci{
2062306a36Sopenharmony_ci	set_pmd(pmd, __pmd((unsigned long)pte));
2162306a36Sopenharmony_ci}
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_cistatic inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
2462306a36Sopenharmony_ci	pgtable_t pte)
2562306a36Sopenharmony_ci{
2662306a36Sopenharmony_ci	set_pmd(pmd, __pmd((unsigned long)page_address(pte)));
2762306a36Sopenharmony_ci}
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciextern pgd_t *pgd_alloc(struct mm_struct *mm);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#define __pte_free_tlb(tlb, pte, addr)					\
3262306a36Sopenharmony_ci	do {								\
3362306a36Sopenharmony_ci		pagetable_pte_dtor(page_ptdesc(pte));			\
3462306a36Sopenharmony_ci		tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte)));	\
3562306a36Sopenharmony_ci	} while (0)
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci#endif /* _ASM_NIOS2_PGALLOC_H */
38