diff options
Diffstat (limited to 'arch/um/kernel/skas/tlb.c')
-rw-r--r-- | arch/um/kernel/skas/tlb.c | 23 |
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 | ||
21 | static void do_ops(union mm_context *mmu, struct host_vm_op *ops, int last) | 21 | static 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 | ||
50 | extern int proc_mm; | 55 | extern int proc_mm; |