1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License.  See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 1994 - 2001, 2003 by Ralf Baechle
7 * Copyright (C) 1999, 2000, 2001 Silicon Graphics, Inc.
8 */
9
10#ifndef _ASM_NIOS2_PGALLOC_H
11#define _ASM_NIOS2_PGALLOC_H
12
13#include <linux/mm.h>
14
15#include <asm-generic/pgalloc.h>
16
17static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
18	pte_t *pte)
19{
20	set_pmd(pmd, __pmd((unsigned long)pte));
21}
22
23static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
24	pgtable_t pte)
25{
26	set_pmd(pmd, __pmd((unsigned long)page_address(pte)));
27}
28
29extern pgd_t *pgd_alloc(struct mm_struct *mm);
30
31#define __pte_free_tlb(tlb, pte, addr)					\
32	do {								\
33		pagetable_pte_dtor(page_ptdesc(pte));			\
34		tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte)));	\
35	} while (0)
36
37#endif /* _ASM_NIOS2_PGALLOC_H */
38