150acfb2bSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
207037db5SPalmer Dabbelt /*
307037db5SPalmer Dabbelt  * Copyright (C) 2012 Regents of the University of California
408f051edSAndrew Waterman  * Copyright (C) 2017 SiFive
507037db5SPalmer Dabbelt  */
607037db5SPalmer Dabbelt 
707037db5SPalmer Dabbelt #ifndef _ASM_RISCV_MMU_CONTEXT_H
807037db5SPalmer Dabbelt #define _ASM_RISCV_MMU_CONTEXT_H
907037db5SPalmer Dabbelt 
10741fc3ffSOlof Johansson #include <linux/mm_types.h>
1107037db5SPalmer Dabbelt #include <asm-generic/mm_hooks.h>
1207037db5SPalmer Dabbelt 
1307037db5SPalmer Dabbelt #include <linux/mm.h>
1407037db5SPalmer Dabbelt #include <linux/sched.h>
1507037db5SPalmer Dabbelt 
16f6635f87SGary Guo void switch_mm(struct mm_struct *prev, struct mm_struct *next,
17f6635f87SGary Guo 	struct task_struct *task);
1807037db5SPalmer Dabbelt 
192b56290dSNicholas Piggin #define activate_mm activate_mm
activate_mm(struct mm_struct * prev,struct mm_struct * next)2007037db5SPalmer Dabbelt static inline void activate_mm(struct mm_struct *prev,
2107037db5SPalmer Dabbelt 			       struct mm_struct *next)
2207037db5SPalmer Dabbelt {
2307037db5SPalmer Dabbelt 	switch_mm(prev, next, NULL);
2407037db5SPalmer Dabbelt }
2507037db5SPalmer Dabbelt 
2665d4b9c5SAnup Patel #define init_new_context init_new_context
init_new_context(struct task_struct * tsk,struct mm_struct * mm)2765d4b9c5SAnup Patel static inline int init_new_context(struct task_struct *tsk,
2865d4b9c5SAnup Patel 			struct mm_struct *mm)
2965d4b9c5SAnup Patel {
3065d4b9c5SAnup Patel #ifdef CONFIG_MMU
3165d4b9c5SAnup Patel 	atomic_long_set(&mm->context.id, 0);
3265d4b9c5SAnup Patel #endif
3365d4b9c5SAnup Patel 	return 0;
3465d4b9c5SAnup Patel }
3565d4b9c5SAnup Patel 
36*3f1e7829SGuo Ren DECLARE_STATIC_KEY_FALSE(use_asid_allocator);
37*3f1e7829SGuo Ren 
382b56290dSNicholas Piggin #include <asm-generic/mmu_context.h>
3907037db5SPalmer Dabbelt 
4007037db5SPalmer Dabbelt #endif /* _ASM_RISCV_MMU_CONTEXT_H */
41