blob: c1516cc0285fac487631ee8ddde4afee0ffc202f [file] [log] [blame]
Ralf Baechle69f3a7d2009-11-24 01:24:58 +00001/*
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
Ralf Baechle4483b152010-08-05 13:25:59 +010012#include <linux/notifier.h>
13
Jayachandran C2c952e02013-06-10 06:30:00 +000014#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)
20#define cop2_restore(r) octeon_cop2_restore(r)
21
22#define cop2_present 1
23#define cop2_lazy_restore 1
24
Jayachandran C5649d372013-06-10 06:30:04 +000025#elif defined(CONFIG_CPU_XLP)
26
27extern void nlm_cop2_save(struct nlm_cop2_state *);
28extern void nlm_cop2_restore(struct nlm_cop2_state *);
29#define cop2_save(r) nlm_cop2_save(r)
30#define cop2_restore(r) nlm_cop2_restore(r)
31
32#define cop2_present 1
33#define cop2_lazy_restore 0
34
Jayachandran C2c952e02013-06-10 06:30:00 +000035#else
36
37#define cop2_present 0
38#define cop2_lazy_restore 0
39#define cop2_save(r)
40#define cop2_restore(r)
41#endif
42
Ralf Baechle69f3a7d2009-11-24 01:24:58 +000043enum cu2_ops {
44 CU2_EXCEPTION,
45 CU2_LWC2_OP,
46 CU2_LDC2_OP,
47 CU2_SWC2_OP,
48 CU2_SDC2_OP,
49};
50
51extern int register_cu2_notifier(struct notifier_block *nb);
52extern int cu2_notifier_call_chain(unsigned long val, void *v);
53
Ralf Baechle4483b152010-08-05 13:25:59 +010054#define cu2_notifier(fn, pri) \
55({ \
David Daney4c7106c2010-09-23 11:23:29 -070056 static struct notifier_block fn##_nb = { \
Ralf Baechle4483b152010-08-05 13:25:59 +010057 .notifier_call = fn, \
58 .priority = pri \
59 }; \
60 \
61 register_cu2_notifier(&fn##_nb); \
62})
63
Ralf Baechle69f3a7d2009-11-24 01:24:58 +000064#endif /* __ASM_COP2_H */