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

cop2.h (1505B)


      1/*
      2 * This file is subject to the terms and conditions of the GNU General Public
      3 * License.  See the file "COPYING" in the main directory of this archive
      4 * for more details.
      5 *
      6 * Copyright (C) 2009 Wind River Systems,
      7 *   written by Ralf Baechle <ralf@linux-mips.org>
      8 */
      9#ifndef __ASM_COP2_H
     10#define __ASM_COP2_H
     11
     12#include <linux/notifier.h>
     13
     14#if defined(CONFIG_CPU_CAVIUM_OCTEON)
     15
     16extern void octeon_cop2_save(struct octeon_cop2_state *);
     17extern void octeon_cop2_restore(struct octeon_cop2_state *);
     18
     19#define cop2_save(r)		octeon_cop2_save(&(r)->thread.cp2)
     20#define cop2_restore(r)		octeon_cop2_restore(&(r)->thread.cp2)
     21
     22#define cop2_present		1
     23#define cop2_lazy_restore	1
     24
     25#elif defined(CONFIG_CPU_LOONGSON64)
     26
     27#define cop2_present		1
     28#define cop2_lazy_restore	1
     29#define cop2_save(r)		do { (void)(r); } while (0)
     30#define cop2_restore(r)		do { (void)(r); } while (0)
     31
     32#else
     33
     34#define cop2_present		0
     35#define cop2_lazy_restore	0
     36#define cop2_save(r)		do { (void)(r); } while (0)
     37#define cop2_restore(r)		do { (void)(r); } while (0)
     38#endif
     39
     40enum cu2_ops {
     41	CU2_EXCEPTION,
     42	CU2_LWC2_OP,
     43	CU2_LDC2_OP,
     44	CU2_SWC2_OP,
     45	CU2_SDC2_OP,
     46};
     47
     48extern int register_cu2_notifier(struct notifier_block *nb);
     49extern int cu2_notifier_call_chain(unsigned long val, void *v);
     50
     51#define cu2_notifier(fn, pri)						\
     52({									\
     53	static struct notifier_block fn##_nb = {			\
     54		.notifier_call = fn,					\
     55		.priority = pri						\
     56	};								\
     57									\
     58	register_cu2_notifier(&fn##_nb);				\
     59})
     60
     61#endif /* __ASM_COP2_H */