1234567891011121314151617181920212223242526272829303132 |
- // 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;
- }
|