diff options
Diffstat (limited to 'arch/blackfin/kernel/sys_bfin.c')
-rw-r--r-- | arch/blackfin/kernel/sys_bfin.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/sys_bfin.c b/arch/blackfin/kernel/sys_bfin.c index bdc1e2f0da32..89448ed7065d 100644 --- a/arch/blackfin/kernel/sys_bfin.c +++ b/arch/blackfin/kernel/sys_bfin.c | |||
@@ -21,6 +21,8 @@ | |||
21 | 21 | ||
22 | #include <asm/cacheflush.h> | 22 | #include <asm/cacheflush.h> |
23 | #include <asm/dma.h> | 23 | #include <asm/dma.h> |
24 | #include <asm/cachectl.h> | ||
25 | #include <asm/ptrace.h> | ||
24 | 26 | ||
25 | asmlinkage void *sys_sram_alloc(size_t size, unsigned long flags) | 27 | asmlinkage void *sys_sram_alloc(size_t size, unsigned long flags) |
26 | { | 28 | { |
@@ -70,3 +72,16 @@ asmlinkage int sys_bfin_spinlock(int *p) | |||
70 | 72 | ||
71 | return ret; | 73 | return ret; |
72 | } | 74 | } |
75 | |||
76 | SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, len, int, op) | ||
77 | { | ||
78 | if (is_user_addr_valid(current, addr, len) != 0) | ||
79 | return -EINVAL; | ||
80 | |||
81 | if (op & DCACHE) | ||
82 | blackfin_dcache_flush_range(addr, addr + len); | ||
83 | if (op & ICACHE) | ||
84 | blackfin_icache_flush_range(addr, addr + len); | ||
85 | |||
86 | return 0; | ||
87 | } | ||