/* * 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 { 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 mprotect_kernel_vm(int w); 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 data, void (*do_ops)(int, struct host_vm_op *, int)); extern int flush_tlb_kernel_range_common(unsigned long start, unsigned long end); extern int add_mmap(unsigned long virt, unsigned long phys, unsigned long len, int r, int w, int x, struct host_vm_op *ops, int index, int last_filled, int data, void (*do_ops)(int, struct host_vm_op *, int)); extern int add_munmap(unsigned long addr, unsigned long len, struct host_vm_op *ops, int index, int last_filled, int data, void (*do_ops)(int, struct host_vm_op *, int)); extern int add_mprotect(unsigned long addr, unsigned long len, int r, int w, int x, struct host_vm_op *ops, int index, int last_filled, int data, void (*do_ops)(int, struct host_vm_op *, int)); #endif /* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically * adjust the settings for this buffer only. This must remain at the end * of the file. * --------------------------------------------------------------------------- * Local variables: * c-file-style: "linux" * End: */