cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

syscache.c (623B)


      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 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}