Greg Kroah-Hartman | b244131 | 2017-11-01 15:07:57 +0100 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 2 | #ifndef __ASM_GENERIC_MMU_CONTEXT_H |
| 3 | #define __ASM_GENERIC_MMU_CONTEXT_H |
| 4 | |
| 5 | /* |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 6 | * Generic hooks to implement no-op functionality. |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 7 | */ |
| 8 | |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 9 | struct task_struct; |
| 10 | struct mm_struct; |
| 11 | |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 12 | /* |
| 13 | * enter_lazy_tlb - Called when "tsk" is about to enter lazy TLB mode. |
| 14 | * |
| 15 | * @mm: the currently active mm context which is becoming lazy |
| 16 | * @tsk: task which is entering lazy tlb |
| 17 | * |
| 18 | * tsk->mm will be NULL |
| 19 | */ |
| 20 | #ifndef enter_lazy_tlb |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 21 | static inline void enter_lazy_tlb(struct mm_struct *mm, |
| 22 | struct task_struct *tsk) |
| 23 | { |
| 24 | } |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 25 | #endif |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 26 | |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 27 | /** |
| 28 | * init_new_context - Initialize context of a new mm_struct. |
| 29 | * @tsk: task struct for the mm |
| 30 | * @mm: the new mm struct |
| 31 | * @return: 0 on success, -errno on failure |
| 32 | */ |
| 33 | #ifndef init_new_context |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 34 | static inline int init_new_context(struct task_struct *tsk, |
| 35 | struct mm_struct *mm) |
| 36 | { |
| 37 | return 0; |
| 38 | } |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 39 | #endif |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 40 | |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 41 | /** |
| 42 | * destroy_context - Undo init_new_context when the mm is going away |
| 43 | * @mm: old mm struct |
| 44 | */ |
| 45 | #ifndef destroy_context |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 46 | static inline void destroy_context(struct mm_struct *mm) |
| 47 | { |
| 48 | } |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 49 | #endif |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 50 | |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 51 | /** |
| 52 | * activate_mm - called after exec switches the current task to a new mm, to switch to it |
| 53 | * @prev_mm: previous mm of this task |
| 54 | * @next_mm: new mm |
| 55 | */ |
| 56 | #ifndef activate_mm |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 57 | static inline void activate_mm(struct mm_struct *prev_mm, |
| 58 | struct mm_struct *next_mm) |
| 59 | { |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 60 | switch_mm(prev_mm, next_mm, current); |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 61 | } |
Nicholas Piggin | 94f8992 | 2020-09-02 00:15:17 +1000 | [diff] [blame] | 62 | #endif |
| 63 | |
| 64 | /** |
| 65 | * dectivate_mm - called when an mm is released after exit or exec switches away from it |
| 66 | * @tsk: the task |
| 67 | * @mm: the old mm |
| 68 | */ |
| 69 | #ifndef deactivate_mm |
| 70 | static inline void deactivate_mm(struct task_struct *tsk, |
| 71 | struct mm_struct *mm) |
| 72 | { |
| 73 | } |
| 74 | #endif |
Arnd Bergmann | 5c01b46 | 2009-05-13 22:56:36 +0000 | [diff] [blame] | 75 | |
| 76 | #endif /* __ASM_GENERIC_MMU_CONTEXT_H */ |