Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/mips/include/asm/asmmacro.h
17386 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) 2003 Ralf Baechle
7
*/
8
#ifndef _ASM_ASMMACRO_H
9
#define _ASM_ASMMACRO_H
10
11
#include <asm/hazards.h>
12
13
#ifdef CONFIG_32BIT
14
#include <asm/asmmacro-32.h>
15
#endif
16
#ifdef CONFIG_64BIT
17
#include <asm/asmmacro-64.h>
18
#endif
19
#ifdef CONFIG_MIPS_MT_SMTC
20
#include <asm/mipsmtregs.h>
21
#endif
22
23
#ifdef CONFIG_MIPS_MT_SMTC
24
.macro local_irq_enable reg=t0
25
mfc0 \reg, CP0_TCSTATUS
26
ori \reg, \reg, TCSTATUS_IXMT
27
xori \reg, \reg, TCSTATUS_IXMT
28
mtc0 \reg, CP0_TCSTATUS
29
_ehb
30
.endm
31
32
.macro local_irq_disable reg=t0
33
mfc0 \reg, CP0_TCSTATUS
34
ori \reg, \reg, TCSTATUS_IXMT
35
mtc0 \reg, CP0_TCSTATUS
36
_ehb
37
.endm
38
#elif defined(CONFIG_CPU_MIPSR2)
39
.macro local_irq_enable reg=t0
40
ei
41
irq_enable_hazard
42
.endm
43
44
.macro local_irq_disable reg=t0
45
di
46
irq_disable_hazard
47
.endm
48
#else
49
.macro local_irq_enable reg=t0
50
mfc0 \reg, CP0_STATUS
51
ori \reg, \reg, 1
52
mtc0 \reg, CP0_STATUS
53
irq_enable_hazard
54
.endm
55
56
.macro local_irq_disable reg=t0
57
mfc0 \reg, CP0_STATUS
58
ori \reg, \reg, 1
59
xori \reg, \reg, 1
60
mtc0 \reg, CP0_STATUS
61
irq_disable_hazard
62
.endm
63
#endif /* CONFIG_MIPS_MT_SMTC */
64
65
/*
66
* Temporary until all gas have MT ASE support
67
*/
68
.macro DMT reg=0
69
.word 0x41600bc1 | (\reg << 16)
70
.endm
71
72
.macro EMT reg=0
73
.word 0x41600be1 | (\reg << 16)
74
.endm
75
76
.macro DVPE reg=0
77
.word 0x41600001 | (\reg << 16)
78
.endm
79
80
.macro EVPE reg=0
81
.word 0x41600021 | (\reg << 16)
82
.endm
83
84
.macro MFTR rt=0, rd=0, u=0, sel=0
85
.word 0x41000000 | (\rt << 16) | (\rd << 11) | (\u << 5) | (\sel)
86
.endm
87
88
.macro MTTR rt=0, rd=0, u=0, sel=0
89
.word 0x41800000 | (\rt << 16) | (\rd << 11) | (\u << 5) | (\sel)
90
.endm
91
92
#endif /* _ASM_ASMMACRO_H */
93
94