Commit | Line | Data |
---|---|---|
f2f4bf5a | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
1da177e4 | 2 | /* |
ba180fd4 | 3 | * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) |
1da177e4 LT |
4 | */ |
5 | ||
6 | #ifndef __UM_MMU_CONTEXT_H | |
7 | #define __UM_MMU_CONTEXT_H | |
8 | ||
4dc706c2 | 9 | #include <linux/sched.h> |
589ee628 | 10 | #include <linux/mm_types.h> |
aaa2cc56 | 11 | #include <linux/mmap_lock.h> |
589ee628 | 12 | |
bfc58e2b | 13 | #include <asm/mm_hooks.h> |
4dc706c2 | 14 | #include <asm/mmu.h> |
1da177e4 | 15 | |
9431da33 | 16 | #define activate_mm activate_mm |
1da177e4 LT |
17 | static inline void activate_mm(struct mm_struct *old, struct mm_struct *new) |
18 | { | |
1e40cd38 | 19 | /* |
aab2545f ON |
20 | * This is called by fs/exec.c and sys_unshare() |
21 | * when the new ->mm is used for the first time. | |
1e40cd38 | 22 | */ |
aab2545f | 23 | __switch_mm(&new->context.id); |
1da177e4 LT |
24 | } |
25 | ||
1da177e4 LT |
26 | static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, |
27 | struct task_struct *tsk) | |
28 | { | |
29 | unsigned cpu = smp_processor_id(); | |
30 | ||
31 | if(prev != next){ | |
fa40699b RR |
32 | cpumask_clear_cpu(cpu, mm_cpumask(prev)); |
33 | cpumask_set_cpu(cpu, mm_cpumask(next)); | |
1da177e4 | 34 | if(next != &init_mm) |
6c738ffa | 35 | __switch_mm(&next->context.id); |
1da177e4 LT |
36 | } |
37 | } | |
38 | ||
9431da33 | 39 | #define init_new_context init_new_context |
77bf4400 | 40 | extern int init_new_context(struct task_struct *task, struct mm_struct *mm); |
1da177e4 | 41 | |
9431da33 | 42 | #define destroy_context destroy_context |
77bf4400 | 43 | extern void destroy_context(struct mm_struct *mm); |
1da177e4 | 44 | |
9431da33 NP |
45 | #include <asm-generic/mmu_context.h> |
46 | ||
1da177e4 | 47 | #endif |