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/cache.h>
- #include <asm/cachectl.h>
- SYSCALL_DEFINE3(cacheflush,
- void __user *, addr,
- unsigned long, bytes,
- int, cache)
- {
- switch (cache) {
- case ICACHE:
- icache_inv_range((unsigned long)addr,
- (unsigned long)addr + bytes);
- break;
- case DCACHE:
- dcache_wb_range((unsigned long)addr,
- (unsigned long)addr + bytes);
- break;
- case BCACHE:
- cache_wbinv_range((unsigned long)addr,
- (unsigned long)addr + bytes);
- break;
- default:
- return -EINVAL;
- }
- return 0;
- }
|