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