14726dd60SMichal Simek /* SPDX-License-Identifier: GPL-2.0 */
26a3cece5SMichal Simek /*
31f84e1eaSMichal Simek  * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
41f84e1eaSMichal Simek  * Copyright (C) 2008-2009 PetaLogix
56a3cece5SMichal Simek  * Copyright (C) 2006 Atmark Techno, Inc.
66a3cece5SMichal Simek  */
76a3cece5SMichal Simek 
86a3cece5SMichal Simek #ifndef _ASM_MICROBLAZE_PGALLOC_H
96a3cece5SMichal Simek #define _ASM_MICROBLAZE_PGALLOC_H
106a3cece5SMichal Simek 
111f84e1eaSMichal Simek #include <linux/kernel.h>	/* For min/max macros */
121f84e1eaSMichal Simek #include <linux/highmem.h>
1365fddcfcSMike Rapoport #include <linux/pgtable.h>
141f84e1eaSMichal Simek #include <asm/setup.h>
151f84e1eaSMichal Simek #include <asm/io.h>
161f84e1eaSMichal Simek #include <asm/page.h>
171f84e1eaSMichal Simek #include <asm/cache.h>
181f84e1eaSMichal Simek 
191b9a9d85SMike Rapoport #define __HAVE_ARCH_PTE_ALLOC_ONE_KERNEL
201b9a9d85SMike Rapoport #include <asm-generic/pgalloc.h>
211b9a9d85SMike Rapoport 
221f84e1eaSMichal Simek extern void __bad_pte(pmd_t *pmd);
231f84e1eaSMichal Simek 
get_pgd(void)2413224794SNicholas Piggin static inline pgd_t *get_pgd(void)
251f84e1eaSMichal Simek {
2613224794SNicholas Piggin 	return (pgd_t *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, 0);
271f84e1eaSMichal Simek }
281f84e1eaSMichal Simek 
2913224794SNicholas Piggin #define pgd_alloc(mm)		get_pgd()
301f84e1eaSMichal Simek 
314cf58924SJoel Fernandes (Google) extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm);
321f84e1eaSMichal Simek 
339e1b32caSBenjamin Herrenschmidt #define __pte_free_tlb(tlb, pte, addr)	pte_free((tlb)->mm, (pte))
341f84e1eaSMichal Simek 
355f0cb3e0SMichal Simek #define pmd_populate(mm, pmd, pte) \
365f0cb3e0SMichal Simek 			(pmd_val(*(pmd)) = (unsigned long)page_address(pte))
371f84e1eaSMichal Simek 
381f84e1eaSMichal Simek #define pmd_populate_kernel(mm, pmd, pte) \
391f84e1eaSMichal Simek 		(pmd_val(*(pmd)) = (unsigned long) (pte))
401f84e1eaSMichal Simek 
416a3cece5SMichal Simek #endif /* _ASM_MICROBLAZE_PGALLOC_H */
42