hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// SPDX-License-Identifier: GPL-2.0
// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
 
#include <linux/syscalls.h>
#include <asm/page.h>
#include <asm/cacheflush.h>
#include <asm/cachectl.h>
 
SYSCALL_DEFINE3(cacheflush,
       void __user *, addr,
       unsigned long, bytes,
       int, cache)
{
   switch (cache) {
   case BCACHE:
   case DCACHE:
       dcache_wb_range((unsigned long)addr,
               (unsigned long)addr + bytes);
       if (cache != BCACHE)
           break;
       fallthrough;
   case ICACHE:
       flush_icache_mm_range(current->mm,
               (unsigned long)addr,
               (unsigned long)addr + bytes);
       break;
   default:
       return -EINVAL;
   }
 
   return 0;
}