Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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/cacheflush.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 case BCACHE:
17 flush_icache_mm_range(current->mm,
18 (unsigned long)addr,
19 (unsigned long)addr + bytes);
20 fallthrough;
21 case DCACHE:
22 dcache_wb_range((unsigned long)addr,
23 (unsigned long)addr + bytes);
24 break;
25 default:
26 return -EINVAL;
27 }
28
29 return 0;
30}