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
12typedef 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
34void __init create_pgd_mapping(pgd_t *pgdp, uintptr_t va, phys_addr_t pa,
35			       phys_addr_t sz, pgprot_t prot);
36#endif /* __ASSEMBLY__ */
37
38#endif /* _ASM_RISCV_MMU_H */
39