Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
[linux-2.6-block.git] / arch / csky / mm / syscache.c
CommitLineData
00a9730e
GR
1// SPDX-License-Identifier: GPL-2.0
2// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
3
4#include <linux/syscalls.h>
5#include <asm/page.h>
6#include <asm/cache.h>
7#include <asm/cachectl.h>
8
9SYSCALL_DEFINE3(cacheflush,
10 void __user *, addr,
11 unsigned long, bytes,
12 int, cache)
13{
14 switch (cache) {
15 case ICACHE:
16 icache_inv_range((unsigned long)addr,
17 (unsigned long)addr + bytes);
18 break;
19 case DCACHE:
20 dcache_wb_range((unsigned long)addr,
21 (unsigned long)addr + bytes);
22 break;
23 case BCACHE:
24 cache_wbinv_range((unsigned long)addr,
25 (unsigned long)addr + bytes);
26 break;
27 default:
28 return -EINVAL;
29 }
30
31 return 0;
32}