Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/csky/mm/syscache.c
26424 views
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
9
SYSCALL_DEFINE3(cacheflush,
10
void __user *, addr,
11
unsigned long, bytes,
12
int, cache)
13
{
14
switch (cache) {
15
case BCACHE:
16
case DCACHE:
17
dcache_wb_range((unsigned long)addr,
18
(unsigned long)addr + bytes);
19
if (cache != BCACHE)
20
break;
21
fallthrough;
22
case ICACHE:
23
flush_icache_mm_range(current->mm,
24
(unsigned long)addr,
25
(unsigned long)addr + bytes);
26
break;
27
default:
28
return -EINVAL;
29
}
30
31
return 0;
32
}
33
34