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