remove libdss from Makefile
[GitHub/moto-9609/android_kernel_motorola_exynos9610.git] / arch / um / include / asm / mmu_context.h
CommitLineData
1da177e4 1/*
ba180fd4 2 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
1da177e4
LT
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_MMU_CONTEXT_H
7#define __UM_MMU_CONTEXT_H
8
4dc706c2 9#include <linux/sched.h>
589ee628
IM
10#include <linux/mm_types.h>
11
4dc706c2 12#include <asm/mmu.h>
1da177e4 13
ac2aca28 14extern void uml_setup_stubs(struct mm_struct *mm);
62e88b1c
DH
15/*
16 * Needed since we do not use the asm-generic/mm_hooks.h:
17 */
ee8e8b2d 18static inline int arch_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm)
62e88b1c
DH
19{
20 uml_setup_stubs(mm);
ee8e8b2d 21 return 0;
62e88b1c 22}
3963333f 23extern void arch_exit_mmap(struct mm_struct *mm);
62e88b1c
DH
24static inline void arch_unmap(struct mm_struct *mm,
25 struct vm_area_struct *vma,
26 unsigned long start, unsigned long end)
27{
28}
29static inline void arch_bprm_mm_init(struct mm_struct *mm,
30 struct vm_area_struct *vma)
31{
32}
9d95b175
DH
33
34static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
35 bool write, bool execute, bool foreign)
9d95b175
DH
36{
37 /* by default, allow everything */
38 return true;
39}
40
62e88b1c
DH
41/*
42 * end asm-generic/mm_hooks.h functions
43 */
3963333f 44
1da177e4
LT
45#define deactivate_mm(tsk,mm) do { } while (0)
46
c40504e8
BL
47extern void force_flush_all(void);
48
1da177e4
LT
49static inline void activate_mm(struct mm_struct *old, struct mm_struct *new)
50{
1e40cd38 51 /*
aab2545f
ON
52 * This is called by fs/exec.c and sys_unshare()
53 * when the new ->mm is used for the first time.
1e40cd38 54 */
aab2545f 55 __switch_mm(&new->context.id);
ac2aca28
AV
56 down_write(&new->mmap_sem);
57 uml_setup_stubs(new);
58 up_write(&new->mmap_sem);
1da177e4
LT
59}
60
1da177e4
LT
61static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
62 struct task_struct *tsk)
63{
64 unsigned cpu = smp_processor_id();
65
66 if(prev != next){
fa40699b
RR
67 cpumask_clear_cpu(cpu, mm_cpumask(prev));
68 cpumask_set_cpu(cpu, mm_cpumask(next));
1da177e4 69 if(next != &init_mm)
6c738ffa 70 __switch_mm(&next->context.id);
1da177e4
LT
71 }
72}
73
74static inline void enter_lazy_tlb(struct mm_struct *mm,
75 struct task_struct *tsk)
76{
77}
78
77bf4400 79extern int init_new_context(struct task_struct *task, struct mm_struct *mm);
1da177e4 80
77bf4400 81extern void destroy_context(struct mm_struct *mm);
1da177e4
LT
82
83#endif