| /*  | 
 |  * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) | 
 |  * Licensed under the GPL | 
 |  */ | 
 |  | 
 | #ifndef __TLB_H__ | 
 | #define __TLB_H__ | 
 |  | 
 | #include "um_mmu.h" | 
 |  | 
 | struct host_vm_op { | 
 | 	enum { NONE, MMAP, MUNMAP, MPROTECT } type; | 
 | 	union { | 
 | 		struct { | 
 | 			unsigned long addr; | 
 | 			unsigned long len; | 
 | 			unsigned int r:1; | 
 | 			unsigned int w:1; | 
 | 			unsigned int x:1; | 
 | 			int fd; | 
 | 			__u64 offset; | 
 | 		} mmap; | 
 | 		struct { | 
 | 			unsigned long addr; | 
 | 			unsigned long len; | 
 | 		} munmap; | 
 | 		struct { | 
 | 			unsigned long addr; | 
 | 			unsigned long len; | 
 | 			unsigned int r:1; | 
 | 			unsigned int w:1; | 
 | 			unsigned int x:1; | 
 | 		} mprotect; | 
 | 	} u; | 
 | }; | 
 |  | 
 | extern void force_flush_all(void); | 
 | extern void fix_range_common(struct mm_struct *mm, unsigned long start_addr, | 
 |                              unsigned long end_addr, int force, | 
 | 			     int (*do_ops)(union mm_context *, | 
 | 					   struct host_vm_op *, int, int, | 
 | 					   void **)); | 
 | extern int flush_tlb_kernel_range_common(unsigned long start, | 
 | 					 unsigned long end); | 
 |  | 
 | #endif |