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 Dabbeltstatic 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 Patelstatic 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