cortex_a/registers/dacr32_el2.rs
1// SPDX-License-Identifier: Apache-2.0 OR MIT
2//
3// Copyright (c) 2018-2022 by the author(s)
4//
5// Author(s):
6// - Valentin B. <valentin.be@protonmail.com>
7
8//! Domain Access Control Register - EL2
9//!
10//! Allows access to the AArch32 DACR register from AArch64 state only. Its value
11//! has no effect on execution in AArch64 state.
12
13use tock_registers::{
14 interfaces::{Readable, Writeable},
15 register_bitfields,
16};
17
18register_bitfields! {u64,
19 pub DACR32_EL2 [
20 /// Domain 15 access permission.
21 ///
22 /// Values other than the pre-defined ones are reserved.
23 ///
24 /// NOTE: On Warm reset, this field resets to an undefined value.
25 D15 OFFSET(30) NUMBITS(2) [
26 /// No access. Any access to the domain generates a Domain fault.
27 NoAccess = 0b00,
28 /// Client access. Accesses are not checked against the permission bits
29 /// in the translation tables.
30 Client = 0b01,
31 /// Manager access. Accesses are not checked against the permission bits
32 /// in the translation tables.
33 Manager = 0b11
34 ],
35
36 /// Domain 14 access permission.
37 ///
38 /// Values other than the pre-defined ones are reserved.
39 ///
40 /// NOTE: On Warm reset, this field resets to an undefined value.
41 D14 OFFSET(28) NUMBITS(2) [
42 /// No access. Any access to the domain generates a Domain fault.
43 NoAccess = 0b00,
44 /// Client access. Accesses are not checked against the permission bits
45 /// in the translation tables.
46 Client = 0b01,
47 /// Manager access. Accesses are not checked against the permission bits
48 /// in the translation tables.
49 Manager = 0b11
50 ],
51
52 /// Domain 13 access permission.
53 ///
54 /// Values other than the pre-defined ones are reserved.
55 ///
56 /// NOTE: On Warm reset, this field resets to an undefined value.
57 D13 OFFSET(26) NUMBITS(2) [
58 /// No access. Any access to the domain generates a Domain fault.
59 NoAccess = 0b00,
60 /// Client access. Accesses are not checked against the permission bits
61 /// in the translation tables.
62 Client = 0b01,
63 /// Manager access. Accesses are not checked against the permission bits
64 /// in the translation tables.
65 Manager = 0b11
66 ],
67
68 /// Domain 12 access permission.
69 ///
70 /// Values other than the pre-defined ones are reserved.
71 ///
72 /// NOTE: On Warm reset, this field resets to an undefined value.
73 D12 OFFSET(24) NUMBITS(2) [
74 /// No access. Any access to the domain generates a Domain fault.
75 NoAccess = 0b00,
76 /// Client access. Accesses are not checked against the permission bits
77 /// in the translation tables.
78 Client = 0b01,
79 /// Manager access. Accesses are not checked against the permission bits
80 /// in the translation tables.
81 Manager = 0b11
82 ],
83
84 /// Domain 11 access permission.
85 ///
86 /// Values other than the pre-defined ones are reserved.
87 ///
88 /// NOTE: On Warm reset, this field resets to an undefined value.
89 D11 OFFSET(22) NUMBITS(2) [
90 /// No access. Any access to the domain generates a Domain fault.
91 NoAccess = 0b00,
92 /// Client access. Accesses are not checked against the permission bits
93 /// in the translation tables.
94 Client = 0b01,
95 /// Manager access. Accesses are not checked against the permission bits
96 /// in the translation tables.
97 Manager = 0b11
98 ],
99
100 /// Domain 10 access permission.
101 ///
102 /// Values other than the pre-defined ones are reserved.
103 ///
104 /// NOTE: On Warm reset, this field resets to an undefined value.
105 D10 OFFSET(20) NUMBITS(2) [
106 /// No access. Any access to the domain generates a Domain fault.
107 NoAccess = 0b00,
108 /// Client access. Accesses are not checked against the permission bits
109 /// in the translation tables.
110 Client = 0b01,
111 /// Manager access. Accesses are not checked against the permission bits
112 /// in the translation tables.
113 Manager = 0b11
114 ],
115
116 /// Domain 9 access permission.
117 ///
118 /// Values other than the pre-defined ones are reserved.
119 ///
120 /// NOTE: On Warm reset, this field resets to an undefined value.
121 D9 OFFSET(18) NUMBITS(2) [
122 /// No access. Any access to the domain generates a Domain fault.
123 NoAccess = 0b00,
124 /// Client access. Accesses are not checked against the permission bits
125 /// in the translation tables.
126 Client = 0b01,
127 /// Manager access. Accesses are not checked against the permission bits
128 /// in the translation tables.
129 Manager = 0b11
130 ],
131
132 /// Domain 8 access permission.
133 ///
134 /// Values other than the pre-defined ones are reserved.
135 ///
136 /// NOTE: On Warm reset, this field resets to an undefined value.
137 D8 OFFSET(16) NUMBITS(2) [
138 /// No access. Any access to the domain generates a Domain fault.
139 NoAccess = 0b00,
140 /// Client access. Accesses are not checked against the permission bits
141 /// in the translation tables.
142 Client = 0b01,
143 /// Manager access. Accesses are not checked against the permission bits
144 /// in the translation tables.
145 Manager = 0b11
146 ],
147
148 /// Domain 7 access permission.
149 ///
150 /// Values other than the pre-defined ones are reserved.
151 ///
152 /// NOTE: On Warm reset, this field resets to an undefined value.
153 D7 OFFSET(14) NUMBITS(2) [
154 /// No access. Any access to the domain generates a Domain fault.
155 NoAccess = 0b00,
156 /// Client access. Accesses are not checked against the permission bits
157 /// in the translation tables.
158 Client = 0b01,
159 /// Manager access. Accesses are not checked against the permission bits
160 /// in the translation tables.
161 Manager = 0b11
162 ],
163
164 /// Domain 6 access permission.
165 ///
166 /// Values other than the pre-defined ones are reserved.
167 ///
168 /// NOTE: On Warm reset, this field resets to an undefined value.
169 D6 OFFSET(12) NUMBITS(2) [
170 /// No access. Any access to the domain generates a Domain fault.
171 NoAccess = 0b00,
172 /// Client access. Accesses are not checked against the permission bits
173 /// in the translation tables.
174 Client = 0b01,
175 /// Manager access. Accesses are not checked against the permission bits
176 /// in the translation tables.
177 Manager = 0b11
178 ],
179
180 /// Domain 5 access permission.
181 ///
182 /// Values other than the pre-defined ones are reserved.
183 ///
184 /// NOTE: On Warm reset, this field resets to an undefined value.
185 D5 OFFSET(10) NUMBITS(2) [
186 /// No access. Any access to the domain generates a Domain fault.
187 NoAccess = 0b00,
188 /// Client access. Accesses are not checked against the permission bits
189 /// in the translation tables.
190 Client = 0b01,
191 /// Manager access. Accesses are not checked against the permission bits
192 /// in the translation tables.
193 Manager = 0b11
194 ],
195
196 /// Domain 4 access permission.
197 ///
198 /// Values other than the pre-defined ones are reserved.
199 ///
200 /// NOTE: On Warm reset, this field resets to an undefined value.
201 D4 OFFSET(8) NUMBITS(2) [
202 /// No access. Any access to the domain generates a Domain fault.
203 NoAccess = 0b00,
204 /// Client access. Accesses are not checked against the permission bits
205 /// in the translation tables.
206 Client = 0b01,
207 /// Manager access. Accesses are not checked against the permission bits
208 /// in the translation tables.
209 Manager = 0b11
210 ],
211
212 /// Domain 3 access permission.
213 ///
214 /// Values other than the pre-defined ones are reserved.
215 ///
216 /// NOTE: On Warm reset, this field resets to an undefined value.
217 D3 OFFSET(6) NUMBITS(2) [
218 /// No access. Any access to the domain generates a Domain fault.
219 NoAccess = 0b00,
220 /// Client access. Accesses are not checked against the permission bits
221 /// in the translation tables.
222 Client = 0b01,
223 /// Manager access. Accesses are not checked against the permission bits
224 /// in the translation tables.
225 Manager = 0b11
226 ],
227
228 /// Domain 2 access permission.
229 ///
230 /// Values other than the pre-defined ones are reserved.
231 ///
232 /// NOTE: On Warm reset, this field resets to an undefined value.
233 D2 OFFSET(4) NUMBITS(2) [
234 /// No access. Any access to the domain generates a Domain fault.
235 NoAccess = 0b00,
236 /// Client access. Accesses are not checked against the permission bits
237 /// in the translation tables.
238 Client = 0b01,
239 /// Manager access. Accesses are not checked against the permission bits
240 /// in the translation tables.
241 Manager = 0b11
242 ],
243
244 /// Domain 1 access permission.
245 ///
246 /// Values other than the pre-defined ones are reserved.
247 ///
248 /// NOTE: On Warm reset, this field resets to an undefined value.
249 D1 OFFSET(2) NUMBITS(2) [
250 /// No access. Any access to the domain generates a Domain fault.
251 NoAccess = 0b00,
252 /// Client access. Accesses are not checked against the permission bits
253 /// in the translation tables.
254 Client = 0b01,
255 /// Manager access. Accesses are not checked against the permission bits
256 /// in the translation tables.
257 Manager = 0b11
258 ],
259
260 /// Domain 0 access permission.
261 ///
262 /// Values other than the pre-defined ones are reserved.
263 ///
264 /// NOTE: On Warm reset, this field resets to an undefined value.
265 D0 OFFSET(0) NUMBITS(2) [
266 /// No access. Any access to the domain generates a Domain fault.
267 NoAccess = 0b00,
268 /// Client access. Accesses are not checked against the permission bits
269 /// in the translation tables.
270 Client = 0b01,
271 /// Manager access. Accesses are not checked against the permission bits
272 /// in the translation tables.
273 Manager = 0b11
274 ]
275 ]
276}
277
278pub struct Reg;
279
280impl Readable for Reg {
281 type T = u64;
282 type R = DACR32_EL2::Register;
283
284 sys_coproc_read_raw!(u64, "DACR32_EL2", "x");
285}
286
287impl Writeable for Reg {
288 type T = u64;
289 type R = DACR32_EL2::Register;
290
291 sys_coproc_write_raw!(u64, "DACR32_EL2", "x");
292}
293
294pub const DACR32_EL2: Reg = Reg;