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