/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_SCORE_PGALLOC_H #define _ASM_SCORE_PGALLOC_H #include <linux/mm.h> #include <linux/highmem.h> static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte) { set_pmd(pmd, __pmd((unsigned long)pte)); } static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, pgtable_t pte) { set_pmd(pmd, __pmd((unsigned long)page_address(pte))); } #define pmd_pgtable(pmd) pmd_page(pmd) static inline pgd_t *pgd_alloc(struct mm_struct *mm) { pgd_t *ret, *init; ret = (pgd_t *) __get_free_pages(GFP_KERNEL, PGD_ORDER); if (ret) { init = pgd_offset(&init_mm, 0UL); pgd_init((unsigned long)ret); memcpy(ret + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD, (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); } return ret; } static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) { free_pages((unsigned long)pgd, PGD_ORDER); } static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) { pte_t *pte; pte = (pte_t *) __get_free_pages(GFP_KERNEL|__GFP_ZERO, PTE_ORDER); return pte; } static inline struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) { struct page *pte; pte = alloc_pages(GFP_KERNEL, PTE_ORDER); if (!pte) return NULL; clear_highpage(pte); if (!pgtable_page_ctor(pte)) { __free_page(pte); return NULL; } return pte; } static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) { free_pages((unsigned long)pte, PTE_ORDER); } static inline void pte_free(struct mm_struct *mm, pgtable_t pte) { pgtable_page_dtor(pte); __free_pages(pte, PTE_ORDER); } #define __pte_free_tlb(tlb, pte, buf) \ do { \ pgtable_page_dtor(pte); \ tlb_remove_page((tlb), pte); \ } while (0) #define check_pgt_cache() do {} while (0) #endif /* _ASM_SCORE_PGALLOC_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Kbuild | File | 340 B | 0644 |
|
asm-offsets.h | File | 35 B | 0644 |
|
asmmacro.h | File | 2.48 KB | 0644 |
|
atomic.h | File | 187 B | 0644 |
|
bitops.h | File | 266 B | 0644 |
|
bug.h | File | 578 B | 0644 |
|
bugs.h | File | 154 B | 0644 |
|
cache.h | File | 199 B | 0644 |
|
cacheflush.h | File | 1.63 KB | 0644 |
|
checksum.h | File | 5.61 KB | 0644 |
|
cmpxchg.h | File | 1.02 KB | 0644 |
|
delay.h | File | 567 B | 0644 |
|
device.h | File | 162 B | 0644 |
|
div64.h | File | 158 B | 0644 |
|
dma.h | File | 171 B | 0644 |
|
elf.h | File | 2.84 KB | 0644 |
|
emergency-restart.h | File | 206 B | 0644 |
|
exec.h | File | 181 B | 0644 |
|
fixmap.h | File | 2.38 KB | 0644 |
|
ftrace.h | File | 90 B | 0644 |
|
futex.h | File | 158 B | 0644 |
|
hardirq.h | File | 166 B | 0644 |
|
hw_irq.h | File | 90 B | 0644 |
|
io.h | File | 212 B | 0644 |
|
irq.h | File | 794 B | 0644 |
|
irq_regs.h | File | 258 B | 0644 |
|
irqflags.h | File | 1.9 KB | 0644 |
|
kdebug.h | File | 162 B | 0644 |
|
kmap_types.h | File | 178 B | 0644 |
|
linkage.h | File | 189 B | 0644 |
|
local.h | File | 158 B | 0644 |
|
local64.h | File | 33 B | 0644 |
|
mmu.h | File | 157 B | 0644 |
|
mmu_context.h | File | 2.68 KB | 0644 |
|
module.h | File | 949 B | 0644 |
|
page.h | File | 2.84 KB | 0644 |
|
pci.h | File | 81 B | 0644 |
|
percpu.h | File | 162 B | 0644 |
|
pgalloc.h | File | 1.81 KB | 0644 |
|
pgtable-bits.h | File | 990 B | 0644 |
|
pgtable.h | File | 7.29 KB | 0644 |
|
processor.h | File | 2.39 KB | 0644 |
|
ptrace.h | File | 749 B | 0644 |
|
scoreregs.h | File | 1.4 KB | 0644 |
|
segment.h | File | 513 B | 0644 |
|
setup.h | File | 1.01 KB | 0644 |
|
shmparam.h | File | 170 B | 0644 |
|
string.h | File | 327 B | 0644 |
|
switch_to.h | File | 323 B | 0644 |
|
syscalls.h | File | 229 B | 0644 |
|
thread_info.h | File | 2.55 KB | 0644 |
|
timex.h | File | 216 B | 0644 |
|
tlb.h | File | 538 B | 0644 |
|
tlbflush.h | File | 3.02 KB | 0644 |
|
topology.h | File | 170 B | 0644 |
|
uaccess.h | File | 10.78 KB | 0644 |
|
ucontext.h | File | 34 B | 0644 |
|
unaligned.h | File | 174 B | 0644 |
|
user.h | File | 437 B | 0644 |
|