18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public
38c2ecf20Sopenharmony_ci * License.  See the file "COPYING" in the main directory of this archive
48c2ecf20Sopenharmony_ci * for more details.
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Copyright (C) 1994 - 2001, 2003 by Ralf Baechle
78c2ecf20Sopenharmony_ci * Copyright (C) 1999, 2000, 2001 Silicon Graphics, Inc.
88c2ecf20Sopenharmony_ci */
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#ifndef _ASM_NIOS2_PGALLOC_H
118c2ecf20Sopenharmony_ci#define _ASM_NIOS2_PGALLOC_H
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#include <linux/mm.h>
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci#include <asm-generic/pgalloc.h>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cistatic inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
188c2ecf20Sopenharmony_ci	pte_t *pte)
198c2ecf20Sopenharmony_ci{
208c2ecf20Sopenharmony_ci	set_pmd(pmd, __pmd((unsigned long)pte));
218c2ecf20Sopenharmony_ci}
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_cistatic inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
248c2ecf20Sopenharmony_ci	pgtable_t pte)
258c2ecf20Sopenharmony_ci{
268c2ecf20Sopenharmony_ci	set_pmd(pmd, __pmd((unsigned long)page_address(pte)));
278c2ecf20Sopenharmony_ci}
288c2ecf20Sopenharmony_ci#define pmd_pgtable(pmd) pmd_page(pmd)
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci/*
318c2ecf20Sopenharmony_ci * Initialize a new pmd table with invalid pointers.
328c2ecf20Sopenharmony_ci */
338c2ecf20Sopenharmony_ciextern void pmd_init(unsigned long page, unsigned long pagetable);
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciextern pgd_t *pgd_alloc(struct mm_struct *mm);
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci#define __pte_free_tlb(tlb, pte, addr)				\
388c2ecf20Sopenharmony_ci	do {							\
398c2ecf20Sopenharmony_ci		pgtable_pte_page_dtor(pte);			\
408c2ecf20Sopenharmony_ci		tlb_remove_page((tlb), (pte));			\
418c2ecf20Sopenharmony_ci	} while (0)
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci#endif /* _ASM_NIOS2_PGALLOC_H */
44