xref: /openbmc/linux/include/asm-generic/mmu_context.h (revision cdd38c5f1ce4398ec58fec95904b75824daab7b5)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
25c01b46bSArnd Bergmann #ifndef __ASM_GENERIC_MMU_CONTEXT_H
35c01b46bSArnd Bergmann #define __ASM_GENERIC_MMU_CONTEXT_H
45c01b46bSArnd Bergmann 
55c01b46bSArnd Bergmann /*
6*94f89922SNicholas Piggin  * Generic hooks to implement no-op functionality.
75c01b46bSArnd Bergmann  */
85c01b46bSArnd Bergmann 
95c01b46bSArnd Bergmann struct task_struct;
105c01b46bSArnd Bergmann struct mm_struct;
115c01b46bSArnd Bergmann 
12*94f89922SNicholas Piggin /*
13*94f89922SNicholas Piggin  * enter_lazy_tlb - Called when "tsk" is about to enter lazy TLB mode.
14*94f89922SNicholas Piggin  *
15*94f89922SNicholas Piggin  * @mm:  the currently active mm context which is becoming lazy
16*94f89922SNicholas Piggin  * @tsk: task which is entering lazy tlb
17*94f89922SNicholas Piggin  *
18*94f89922SNicholas Piggin  * tsk->mm will be NULL
19*94f89922SNicholas Piggin  */
20*94f89922SNicholas Piggin #ifndef enter_lazy_tlb
enter_lazy_tlb(struct mm_struct * mm,struct task_struct * tsk)215c01b46bSArnd Bergmann static inline void enter_lazy_tlb(struct mm_struct *mm,
225c01b46bSArnd Bergmann 			struct task_struct *tsk)
235c01b46bSArnd Bergmann {
245c01b46bSArnd Bergmann }
25*94f89922SNicholas Piggin #endif
265c01b46bSArnd Bergmann 
27*94f89922SNicholas Piggin /**
28*94f89922SNicholas Piggin  * init_new_context - Initialize context of a new mm_struct.
29*94f89922SNicholas Piggin  * @tsk: task struct for the mm
30*94f89922SNicholas Piggin  * @mm:  the new mm struct
31*94f89922SNicholas Piggin  * @return: 0 on success, -errno on failure
32*94f89922SNicholas Piggin  */
33*94f89922SNicholas Piggin #ifndef init_new_context
init_new_context(struct task_struct * tsk,struct mm_struct * mm)345c01b46bSArnd Bergmann static inline int init_new_context(struct task_struct *tsk,
355c01b46bSArnd Bergmann 			struct mm_struct *mm)
365c01b46bSArnd Bergmann {
375c01b46bSArnd Bergmann 	return 0;
385c01b46bSArnd Bergmann }
39*94f89922SNicholas Piggin #endif
405c01b46bSArnd Bergmann 
41*94f89922SNicholas Piggin /**
42*94f89922SNicholas Piggin  * destroy_context - Undo init_new_context when the mm is going away
43*94f89922SNicholas Piggin  * @mm: old mm struct
44*94f89922SNicholas Piggin  */
45*94f89922SNicholas Piggin #ifndef destroy_context
destroy_context(struct mm_struct * mm)465c01b46bSArnd Bergmann static inline void destroy_context(struct mm_struct *mm)
475c01b46bSArnd Bergmann {
485c01b46bSArnd Bergmann }
49*94f89922SNicholas Piggin #endif
505c01b46bSArnd Bergmann 
51*94f89922SNicholas Piggin /**
52*94f89922SNicholas Piggin  * activate_mm - called after exec switches the current task to a new mm, to switch to it
53*94f89922SNicholas Piggin  * @prev_mm: previous mm of this task
54*94f89922SNicholas Piggin  * @next_mm: new mm
55*94f89922SNicholas Piggin  */
56*94f89922SNicholas Piggin #ifndef activate_mm
activate_mm(struct mm_struct * prev_mm,struct mm_struct * next_mm)575c01b46bSArnd Bergmann static inline void activate_mm(struct mm_struct *prev_mm,
585c01b46bSArnd Bergmann 			       struct mm_struct *next_mm)
595c01b46bSArnd Bergmann {
60*94f89922SNicholas Piggin 	switch_mm(prev_mm, next_mm, current);
615c01b46bSArnd Bergmann }
62*94f89922SNicholas Piggin #endif
63*94f89922SNicholas Piggin 
64*94f89922SNicholas Piggin /**
65*94f89922SNicholas Piggin  * dectivate_mm - called when an mm is released after exit or exec switches away from it
66*94f89922SNicholas Piggin  * @tsk: the task
67*94f89922SNicholas Piggin  * @mm:  the old mm
68*94f89922SNicholas Piggin  */
69*94f89922SNicholas Piggin #ifndef deactivate_mm
deactivate_mm(struct task_struct * tsk,struct mm_struct * mm)70*94f89922SNicholas Piggin static inline void deactivate_mm(struct task_struct *tsk,
71*94f89922SNicholas Piggin 			struct mm_struct *mm)
72*94f89922SNicholas Piggin {
73*94f89922SNicholas Piggin }
74*94f89922SNicholas Piggin #endif
755c01b46bSArnd Bergmann 
765c01b46bSArnd Bergmann #endif /* __ASM_GENERIC_MMU_CONTEXT_H */
77