vserver 2.0 rc7
[linux-2.6.git] / arch / um / include / tlb.h
1 /* 
2  * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
3  * Licensed under the GPL
4  */
5
6 #ifndef __TLB_H__
7 #define __TLB_H__
8
9 #include "um_mmu.h"
10
11 struct host_vm_op {
12         enum { MMAP, MUNMAP, MPROTECT } type;
13         union {
14                 struct {
15                         unsigned long addr;
16                         unsigned long len;
17                         unsigned int r:1;
18                         unsigned int w:1;
19                         unsigned int x:1;
20                         int fd;
21                         __u64 offset;
22                 } mmap;
23                 struct {
24                         unsigned long addr;
25                         unsigned long len;
26                 } munmap;
27                 struct {
28                         unsigned long addr;
29                         unsigned long len;
30                         unsigned int r:1;
31                         unsigned int w:1;
32                         unsigned int x:1;
33                 } mprotect;
34         } u;
35 };
36
37 extern void mprotect_kernel_vm(int w);
38 extern void force_flush_all(void);
39 extern void fix_range_common(struct mm_struct *mm, unsigned long start_addr,
40                              unsigned long end_addr, int force, int data,
41                              void (*do_ops)(int, struct host_vm_op *, int));
42 extern int flush_tlb_kernel_range_common(unsigned long start,
43                                          unsigned long end);
44
45 extern int add_mmap(unsigned long virt, unsigned long phys, unsigned long len,
46                     int r, int w, int x, struct host_vm_op *ops, int index,
47                     int last_filled, int data,
48                     void (*do_ops)(int, struct host_vm_op *, int));
49 extern int add_munmap(unsigned long addr, unsigned long len,
50                       struct host_vm_op *ops, int index, int last_filled,
51                       int data, void (*do_ops)(int, struct host_vm_op *, int));
52 extern int add_mprotect(unsigned long addr, unsigned long len, int r, int w,
53                         int x, struct host_vm_op *ops, int index,
54                         int last_filled, int data,
55                         void (*do_ops)(int, struct host_vm_op *, int));
56 #endif
57
58 /*
59  * Overrides for Emacs so that we follow Linus's tabbing style.
60  * Emacs will notice this stuff at the end of the file and automatically
61  * adjust the settings for this buffer only.  This must remain at the end
62  * of the file.
63  * ---------------------------------------------------------------------------
64  * Local variables:
65  * c-file-style: "linux"
66  * End:
67  */