|  | /* | 
|  | * 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 |