aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/kernel/skas/tlb.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/um/kernel/skas/tlb.c')
-rw-r--r--arch/um/kernel/skas/tlb.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/arch/um/kernel/skas/tlb.c b/arch/um/kernel/skas/tlb.c
index 6230999c672c..4b5fd2049547 100644
--- a/arch/um/kernel/skas/tlb.c
+++ b/arch/um/kernel/skas/tlb.c
@@ -18,7 +18,8 @@
18#include "os.h" 18#include "os.h"
19#include "tlb.h" 19#include "tlb.h"
20 20
21static void do_ops(union mm_context *mmu, struct host_vm_op *ops, int last) 21static void *do_ops(union mm_context *mmu, struct host_vm_op *ops, int last,
22 int finished, void *flush)
22{ 23{
23 struct host_vm_op *op; 24 struct host_vm_op *op;
24 int i; 25 int i;
@@ -27,24 +28,28 @@ static void do_ops(union mm_context *mmu, struct host_vm_op *ops, int last)
27 op = &ops[i]; 28 op = &ops[i];
28 switch(op->type){ 29 switch(op->type){
29 case MMAP: 30 case MMAP:
30 map(&mmu->skas.id, op->u.mmap.addr, op->u.mmap.len, 31 flush = map(&mmu->skas.id, op->u.mmap.addr,
31 op->u.mmap.r, op->u.mmap.w, op->u.mmap.x, 32 op->u.mmap.len, op->u.mmap.r, op->u.mmap.w,
32 op->u.mmap.fd, op->u.mmap.offset); 33 op->u.mmap.x, op->u.mmap.fd,
34 op->u.mmap.offset, finished, flush);
33 break; 35 break;
34 case MUNMAP: 36 case MUNMAP:
35 unmap(&mmu->skas.id, (void *) op->u.munmap.addr, 37 flush = unmap(&mmu->skas.id, (void *) op->u.munmap.addr,
36 op->u.munmap.len); 38 op->u.munmap.len, finished, flush);
37 break; 39 break;
38 case MPROTECT: 40 case MPROTECT:
39 protect(&mmu->skas.id, op->u.mprotect.addr, 41 flush = protect(&mmu->skas.id, op->u.mprotect.addr,
40 op->u.mprotect.len, op->u.mprotect.r, 42 op->u.mprotect.len, op->u.mprotect.r,
41 op->u.mprotect.w, op->u.mprotect.x); 43 op->u.mprotect.w, op->u.mprotect.x,
44 finished, flush);
42 break; 45 break;
43 default: 46 default:
44 printk("Unknown op type %d in do_ops\n", op->type); 47 printk("Unknown op type %d in do_ops\n", op->type);
45 break; 48 break;
46 } 49 }
47 } 50 }
51
52 return flush;
48} 53}
49 54
50extern int proc_mm; 55extern int proc_mm;