Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/mips/include/asm/cop2.h
26481 views
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 <[email protected]>
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
16
extern void octeon_cop2_save(struct octeon_cop2_state *);
17
extern 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
40
enum cu2_ops {
41
CU2_EXCEPTION,
42
CU2_LWC2_OP,
43
CU2_LDC2_OP,
44
CU2_SWC2_OP,
45
CU2_SDC2_OP,
46
};
47
48
extern int register_cu2_notifier(struct notifier_block *nb);
49
extern 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 */
62
63