Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /* 
0003  * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
0004  * Copyright 2003 PathScale, Inc.
0005  * Derived from include/asm-i386/pgalloc.h and include/asm-i386/pgtable.h
0006  */
0007 
0008 #ifndef __UM_PGALLOC_H
0009 #define __UM_PGALLOC_H
0010 
0011 #include <linux/mm.h>
0012 
0013 #include <asm-generic/pgalloc.h>
0014 
0015 #define pmd_populate_kernel(mm, pmd, pte) \
0016     set_pmd(pmd, __pmd(_PAGE_TABLE + (unsigned long) __pa(pte)))
0017 
0018 #define pmd_populate(mm, pmd, pte)              \
0019     set_pmd(pmd, __pmd(_PAGE_TABLE +            \
0020         ((unsigned long long)page_to_pfn(pte) <<    \
0021             (unsigned long long) PAGE_SHIFT)))
0022 
0023 /*
0024  * Allocate and free page tables.
0025  */
0026 extern pgd_t *pgd_alloc(struct mm_struct *);
0027 
0028 #define __pte_free_tlb(tlb,pte, address)        \
0029 do {                            \
0030     pgtable_pte_page_dtor(pte);         \
0031     tlb_remove_page((tlb),(pte));           \
0032 } while (0)
0033 
0034 #ifdef CONFIG_3_LEVEL_PGTABLES
0035 
0036 #define __pmd_free_tlb(tlb, pmd, address)       \
0037 do {                            \
0038     pgtable_pmd_page_dtor(virt_to_page(pmd));   \
0039     tlb_remove_page((tlb),virt_to_page(pmd));   \
0040 } while (0)                     \
0041 
0042 #endif
0043 
0044 #endif
0045