162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef __ASM_GENERIC_MMU_CONTEXT_H 362306a36Sopenharmony_ci#define __ASM_GENERIC_MMU_CONTEXT_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci/* 662306a36Sopenharmony_ci * Generic hooks to implement no-op functionality. 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_cistruct task_struct; 1062306a36Sopenharmony_cistruct mm_struct; 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci/* 1362306a36Sopenharmony_ci * enter_lazy_tlb - Called when "tsk" is about to enter lazy TLB mode. 1462306a36Sopenharmony_ci * 1562306a36Sopenharmony_ci * @mm: the currently active mm context which is becoming lazy 1662306a36Sopenharmony_ci * @tsk: task which is entering lazy tlb 1762306a36Sopenharmony_ci * 1862306a36Sopenharmony_ci * tsk->mm will be NULL 1962306a36Sopenharmony_ci */ 2062306a36Sopenharmony_ci#ifndef enter_lazy_tlb 2162306a36Sopenharmony_cistatic inline void enter_lazy_tlb(struct mm_struct *mm, 2262306a36Sopenharmony_ci struct task_struct *tsk) 2362306a36Sopenharmony_ci{ 2462306a36Sopenharmony_ci} 2562306a36Sopenharmony_ci#endif 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/** 2862306a36Sopenharmony_ci * init_new_context - Initialize context of a new mm_struct. 2962306a36Sopenharmony_ci * @tsk: task struct for the mm 3062306a36Sopenharmony_ci * @mm: the new mm struct 3162306a36Sopenharmony_ci * @return: 0 on success, -errno on failure 3262306a36Sopenharmony_ci */ 3362306a36Sopenharmony_ci#ifndef init_new_context 3462306a36Sopenharmony_cistatic inline int init_new_context(struct task_struct *tsk, 3562306a36Sopenharmony_ci struct mm_struct *mm) 3662306a36Sopenharmony_ci{ 3762306a36Sopenharmony_ci return 0; 3862306a36Sopenharmony_ci} 3962306a36Sopenharmony_ci#endif 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci/** 4262306a36Sopenharmony_ci * destroy_context - Undo init_new_context when the mm is going away 4362306a36Sopenharmony_ci * @mm: old mm struct 4462306a36Sopenharmony_ci */ 4562306a36Sopenharmony_ci#ifndef destroy_context 4662306a36Sopenharmony_cistatic inline void destroy_context(struct mm_struct *mm) 4762306a36Sopenharmony_ci{ 4862306a36Sopenharmony_ci} 4962306a36Sopenharmony_ci#endif 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci/** 5262306a36Sopenharmony_ci * activate_mm - called after exec switches the current task to a new mm, to switch to it 5362306a36Sopenharmony_ci * @prev_mm: previous mm of this task 5462306a36Sopenharmony_ci * @next_mm: new mm 5562306a36Sopenharmony_ci */ 5662306a36Sopenharmony_ci#ifndef activate_mm 5762306a36Sopenharmony_cistatic inline void activate_mm(struct mm_struct *prev_mm, 5862306a36Sopenharmony_ci struct mm_struct *next_mm) 5962306a36Sopenharmony_ci{ 6062306a36Sopenharmony_ci switch_mm(prev_mm, next_mm, current); 6162306a36Sopenharmony_ci} 6262306a36Sopenharmony_ci#endif 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci/** 6562306a36Sopenharmony_ci * dectivate_mm - called when an mm is released after exit or exec switches away from it 6662306a36Sopenharmony_ci * @tsk: the task 6762306a36Sopenharmony_ci * @mm: the old mm 6862306a36Sopenharmony_ci */ 6962306a36Sopenharmony_ci#ifndef deactivate_mm 7062306a36Sopenharmony_cistatic inline void deactivate_mm(struct task_struct *tsk, 7162306a36Sopenharmony_ci struct mm_struct *mm) 7262306a36Sopenharmony_ci{ 7362306a36Sopenharmony_ci} 7462306a36Sopenharmony_ci#endif 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci#endif /* __ASM_GENERIC_MMU_CONTEXT_H */ 77