@@ -16,6 +16,168 @@ use tock_registers::{
16
16
17
17
register_bitfields ! { u64 ,
18
18
pub SCTLR_EL1 [
19
+ /// Traps EL0 execution of cache maintenance instructions to EL1, from AArch64 state only.
20
+ ///
21
+ /// 0 Any attempt to execute a DC CVAU, DC CIVAC, DC CVAC, DC CVAP, or IC IVAU
22
+ /// instruction at EL0 using AArch64 is trapped to EL1.
23
+ /// 1 This control does not cause any instructions to be trapped.
24
+ ///
25
+ /// When ARMv8.1-VHE is implemented, and the value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit
26
+ /// has no effect on execution at EL0.
27
+ ///
28
+ /// If the Point of Coherency is before any level of data cache, it is IMPLEMENTATION DEFINED whether
29
+ /// the execution of any data or unified cache clean, or clean and invalidate instruction that operates by
30
+ /// VA to the point of coherency can be trapped when the value of this control is 1.
31
+ ///
32
+ /// If the Point of Unification is before any level of data cache, it is IMPLEMENTATION DEFINED whether
33
+ /// the execution of any data or unified cache clean by VA to the point of unification instruction can be
34
+ /// trapped when the value of this control is 1.
35
+ ///
36
+ /// If the Point of Unification is before any level of instruction cache, it is IMPLEMENTATION DEFINED
37
+ /// whether the execution of any instruction cache invalidate by VA to the point of unification
38
+ /// instruction can be trapped when the value of this control is 1.
39
+ UCI OFFSET ( 26 ) NUMBITS ( 1 ) [
40
+ Trap = 0 ,
41
+ DontTrap = 1 ,
42
+ ] ,
43
+
44
+ /// Endianness of data accesses at EL1, and stage 1 translation table walks in the EL1&0 translation regime.
45
+ ///
46
+ /// 0 Explicit data accesses at EL1, and stage 1 translation table walks in the EL1&0
47
+ /// translation regime are little-endian.
48
+ /// 1 Explicit data accesses at EL1, and stage 1 translation table walks in the EL1&0
49
+ /// translation regime are big-endian.
50
+ ///
51
+ /// If an implementation does not provide Big-endian support at Exception Levels higher than EL0, this
52
+ /// bit is RES 0.
53
+ ///
54
+ /// If an implementation does not provide Little-endian support at Exception Levels higher than EL0,
55
+ /// this bit is RES 1.
56
+ ///
57
+ /// The EE bit is permitted to be cached in a TLB.
58
+ ///
59
+ /// When ARMv8.1-VHE is implemented, and the value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit
60
+ /// has no effect on the PE.
61
+ EE OFFSET ( 25 ) NUMBITS ( 1 ) [
62
+ LittleEndian = 0 ,
63
+ BigEndian = 1 ,
64
+ ] ,
65
+
66
+ /// Endianness of data accesses at EL0.
67
+ ///
68
+ /// 0 Explicit data accesses at EL0 are little-endian.
69
+ ///
70
+ /// 1 Explicit data accesses at EL0 are big-endian.
71
+ ///
72
+ /// If an implementation only supports Little-endian accesses at EL0 then this bit is RES 0. This option
73
+ /// is not permitted when SCTLR_EL1.EE is RES 1.
74
+ ///
75
+ /// If an implementation only supports Big-endian accesses at EL0 then this bit is RES 1. This option is
76
+ /// not permitted when SCTLR_EL1.EE is RES 0.
77
+ ///
78
+ /// This bit has no effect on the endianness of LDTR , LDTRH , LDTRSH , LDTRSW , STTR , and STTRH instructions
79
+ /// executed at EL1.
80
+ ///
81
+ /// When ARMv8.1-VHE is implemented, and the value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit
82
+ /// has no effect on execution at EL0.
83
+ E0E OFFSET ( 24 ) NUMBITS ( 1 ) [
84
+ LittleEndian = 0 ,
85
+ BigEndian = 1 ,
86
+ ] ,
87
+
88
+ /// Write permission implies XN (Execute-never). For the EL1&0 translation regime, this bit can force
89
+ /// all memory regions that are writable to be treated as XN.
90
+ ///
91
+ /// 0 This control has no effect on memory access permissions.
92
+ ///
93
+ /// 1 Any region that is writable in the EL1&0 translation regime is forced to XN for accesses
94
+ /// from software executing at EL1 or EL0.
95
+ ///
96
+ /// The WXN bit is permitted to be cached in a TLB.
97
+ ///
98
+ /// When ARMv8.1-VHE is implemented, and the value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit
99
+ /// has no effect on the PE.
100
+ WXN OFFSET ( 19 ) NUMBITS ( 1 ) [
101
+ Disable = 0 ,
102
+ Enable = 1 ,
103
+ ] ,
104
+
105
+ /// Traps EL0 execution of WFE instructions to EL1, from both Execution states.
106
+ ///
107
+ /// 0 Any attempt to execute a WFE instruction at EL0 is trapped to EL1, if the instruction
108
+ /// would otherwise have caused the PE to enter a low-power state.
109
+ ///
110
+ /// 1 This control does not cause any instructions to be trapped.
111
+ ///
112
+ /// In AArch32 state, the attempted execution of a conditional WFE instruction is only trapped if the
113
+ /// instruction passes its condition code check.
114
+ ///
115
+ /// **Note:**
116
+ ///
117
+ /// Since a WFE or WFI can complete at any time, even without a Wakeup event, the traps on WFE of
118
+ /// WFI are not guaranteed to be taken, even if the WFE or WFI is executed when there is no Wakeup
119
+ /// event. The only guarantee is that if the instruction does not complete in finite time in the
120
+ /// absence of a Wakeup event, the trap will be taken.
121
+ ///
122
+ /// When ARMv8.1-VHE is implemented, and the value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit
123
+ /// has no effect on execution at EL0.
124
+ NTWE OFFSET ( 18 ) NUMBITS ( 1 ) [
125
+ Trap = 0 ,
126
+ DontTrap = 1 ,
127
+ ] ,
128
+
129
+ /// Traps EL0 executions of WFI instructions to EL1, from both execution states:
130
+ ///
131
+ /// 0 Any attempt to execute a WFI instruction at EL0 is trapped EL1, if the instruction would
132
+ /// otherwise have caused the PE to enter a low-power state.
133
+ ///
134
+ /// 1 This control does not cause any instructions to be trapped.
135
+ ///
136
+ /// In AArch32 state, the attempted execution of a conditional WFI instruction is only trapped if the
137
+ /// instruction passes its condition code check.
138
+ ///
139
+ /// **Note:**
140
+ ///
141
+ /// Since a WFE or WFI can complete at any time, even without a Wakeup event, the traps on WFE of
142
+ /// WFI are not guaranteed to be taken, even if the WFE or WFI is executed when there is no Wakeup
143
+ /// event. The only guarantee is that if the instruction does not complete in finite time in the
144
+ /// absence of a Wakeup event, the trap will be taken.
145
+ ///
146
+ /// When ARMv8.1-VHE is implemented, and the value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit
147
+ /// has no effect on execution at EL0.
148
+ NTWI OFFSET ( 16 ) NUMBITS ( 1 ) [
149
+ Trap = 0 ,
150
+ DontTrap = 1 ,
151
+ ] ,
152
+
153
+ /// Traps EL0 accesses to the CTR_EL0 to EL1, from AArch64 state only.
154
+ ///
155
+ /// 0 Accesses to the CTR_EL0 from EL0 using AArch64 are trapped to EL1.
156
+ ///
157
+ /// 1 This control does not cause any instructions to be trapped.
158
+ ///
159
+ /// When ARMv8.1-VHE is implemented, and the value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit
160
+ /// has no effect on execution at EL0.
161
+ UCT OFFSET ( 15 ) NUMBITS ( 1 ) [
162
+ Trap = 0 ,
163
+ DontTrap = 1 ,
164
+ ] ,
165
+
166
+ /// Traps EL0 execution of DC ZVA instructions to EL1, from AArch64 state only.
167
+ ///
168
+ /// 0 Any attempt to execute a DC ZVA instruction at EL0 using AArch64 is trapped to EL1.
169
+ /// Reading DCZID_EL0.DZP from EL0 returns 1, indicating that DC ZVA instructions
170
+ /// are not supported.
171
+ ///
172
+ /// 1 This control does not cause any instructions to be trapped.
173
+ ///
174
+ /// When ARMv8.1-VHE is implemented, and the value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit
175
+ /// has no effect on execution at EL0.
176
+ DZE OFFSET ( 14 ) NUMBITS ( 1 ) [
177
+ Trap = 0 ,
178
+ DontTrap = 1 ,
179
+ ] ,
180
+
19
181
/// Instruction access Cacheability control, for accesses at EL0 and
20
182
/// EL1:
21
183
///
@@ -45,6 +207,21 @@ register_bitfields! {u64,
45
207
Cacheable = 1
46
208
] ,
47
209
210
+ /// User Mask Access. Traps EL0 execution of MSR and MRS instructions that access the
211
+ /// PSTATE.{D, A, I, F} masks to EL1, from AArch64 state only.
212
+ ///
213
+ /// 0 Any attempt at EL0 using AArch64 to execute an MRS , MSR(register) , or MSR(immediate)
214
+ /// instruction that accesses the [`DAIF`](module@super::super::DAIF) is trapped to EL1.
215
+ ///
216
+ /// 1 This control does not cause any instructions to be trapped.
217
+ ///
218
+ /// When ARMv8.1-VHE is implemented, and the value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit
219
+ /// has no effect on execution at EL0.
220
+ UMA OFFSET ( 9 ) NUMBITS ( 1 ) [
221
+ Trap = 0 ,
222
+ DontTrap = 1 ,
223
+ ] ,
224
+
48
225
/// Non-aligned access. This bit controls generation of Alignment faults at EL1 and EL0 under certain conditions.
49
226
///
50
227
/// LDAPR, LDAPRH, LDAPUR, LDAPURH, LDAPURSH, LDAPURSW, LDAR, LDARH, LDLAR, LDLARH,
0 commit comments