]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/blackfin/kernel/sys_bfin.c
Merge tag 'v2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / arch / blackfin / kernel / sys_bfin.c
index bdc1e2f0da32383420a46ef6c1e3fe93a805c0ea..89448ed7065dda739ba80a1029e3ca16520c2533 100644 (file)
@@ -21,6 +21,8 @@
 
 #include <asm/cacheflush.h>
 #include <asm/dma.h>
+#include <asm/cachectl.h>
+#include <asm/ptrace.h>
 
 asmlinkage void *sys_sram_alloc(size_t size, unsigned long flags)
 {
@@ -70,3 +72,16 @@ asmlinkage int sys_bfin_spinlock(int *p)
 
        return ret;
 }
+
+SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, len, int, op)
+{
+       if (is_user_addr_valid(current, addr, len) != 0)
+               return -EINVAL;
+
+       if (op & DCACHE)
+               blackfin_dcache_flush_range(addr, addr + len);
+       if (op & ICACHE)
+               blackfin_icache_flush_range(addr, addr + len);
+
+       return 0;
+}