xref: /linux/arch/riscv/include/asm/mmu.h (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (C) 2012 Regents of the University of California
4  */
5 
6 
7 #ifndef _ASM_RISCV_MMU_H
8 #define _ASM_RISCV_MMU_H
9 
10 #ifndef __ASSEMBLY__
11 
12 typedef struct {
13 #ifndef CONFIG_MMU
14 	unsigned long	end_brk;
15 #else
16 	atomic_long_t id;
17 #endif
18 	void *vdso;
19 #ifdef CONFIG_SMP
20 	/* A local icache flush is needed before user execution can resume. */
21 	cpumask_t icache_stale_mask;
22 	/* Force local icache flush on all migrations. */
23 	bool force_icache_flush;
24 #endif
25 #ifdef CONFIG_BINFMT_ELF_FDPIC
26 	unsigned long exec_fdpic_loadmap;
27 	unsigned long interp_fdpic_loadmap;
28 #endif
29 } mm_context_t;
30 
31 #define cntx2asid(cntx)		((cntx) & SATP_ASID_MASK)
32 #define cntx2version(cntx)	((cntx) & ~SATP_ASID_MASK)
33 
34 void __meminit create_pgd_mapping(pgd_t *pgdp, uintptr_t va, phys_addr_t pa, phys_addr_t sz,
35 				  pgprot_t prot);
36 #endif /* __ASSEMBLY__ */
37 
38 #endif /* _ASM_RISCV_MMU_H */
39