1#![allow(non_camel_case_types)]
10
11use super::SysRegSpec;
12use crate::{Ro, RwSafe, RwUnsafe, WoSafe};
13
14macro_rules! for_each_spec {
20 ($macro:path) => {
21 $macro!(ACCDATA_EL1, 0b11, 0b000, 0b1101, 0b0000, 0b101, RwSafe);
22 $macro!(ACTLR_EL1, 0b11, 0b000, 0b0001, 0b0000, 0b001, RwSafe);
23 $macro!(ACTLR_EL12, 0b11, 0b101, 0b0001, 0b0000, 0b001, RwSafe);
24 $macro!(ACTLR_EL2, 0b11, 0b100, 0b0001, 0b0000, 0b001, RwSafe);
25 $macro!(ACTLR_EL3, 0b11, 0b110, 0b0001, 0b0000, 0b001, RwSafe);
26 $macro!(AFSR0_EL1, 0b11, 0b000, 0b0101, 0b0001, 0b000, RwSafe);
27 $macro!(AFSR0_EL12, 0b11, 0b101, 0b0101, 0b0001, 0b000, RwSafe);
28 $macro!(AFSR0_EL2, 0b11, 0b100, 0b0101, 0b0001, 0b000, RwSafe);
29 $macro!(AFSR0_EL3, 0b11, 0b110, 0b0101, 0b0001, 0b000, RwSafe);
30 $macro!(AFSR1_EL1, 0b11, 0b000, 0b0101, 0b0001, 0b001, RwSafe);
31 $macro!(AFSR1_EL12, 0b11, 0b101, 0b0101, 0b0001, 0b001, RwSafe);
32 $macro!(AFSR1_EL2, 0b11, 0b100, 0b0101, 0b0001, 0b001, RwSafe);
33 $macro!(AFSR1_EL3, 0b11, 0b110, 0b0101, 0b0001, 0b001, RwSafe);
34 $macro!(AIDR_EL1, 0b11, 0b001, 0b0000, 0b0000, 0b111, Ro);
35 $macro!(ALLINT, 0b11, 0b000, 0b0100, 0b0011, 0b000, RwSafe);
36
37 $macro!(AMAIR_EL1, 0b11, 0b000, 0b1010, 0b0011, 0b000, RwUnsafe);
41 $macro!(AMAIR_EL12, 0b11, 0b101, 0b1010, 0b0011, 0b000, RwUnsafe);
42 $macro!(AMAIR_EL2, 0b11, 0b100, 0b1010, 0b0011, 0b000, RwUnsafe);
43 $macro!(AMAIR_EL3, 0b11, 0b110, 0b1010, 0b0011, 0b000, RwUnsafe);
44 $macro!(AMAIR2_EL1, 0b11, 0b000, 0b1010, 0b0011, 0b001, RwUnsafe);
45 $macro!(AMAIR2_EL12, 0b11, 0b101, 0b1010, 0b0011, 0b001, RwUnsafe);
46 $macro!(AMAIR2_EL2, 0b11, 0b100, 0b1010, 0b0011, 0b001, RwUnsafe);
47 $macro!(AMAIR2_EL3, 0b11, 0b110, 0b1010, 0b0011, 0b001, RwUnsafe);
48
49 $macro!(AMCFGR_EL0, 0b11, 0b011, 0b1101, 0b0010, 0b001, Ro);
50 $macro!(AMCGCR_EL0, 0b11, 0b011, 0b1101, 0b0010, 0b010, Ro);
51 $macro!(AMCG1IDR_EL0, 0b11, 0b011, 0b1101, 0b0010, 0b110, Ro);
52 $macro!(AMCNTENCLR0_EL0, 0b11, 0b011, 0b1101, 0b0010, 0b100, RwSafe);
53 $macro!(AMCNTENCLR1_EL0, 0b11, 0b011, 0b1101, 0b0011, 0b000, RwSafe);
54 $macro!(AMCNTENSET0_EL0, 0b11, 0b011, 0b1101, 0b0010, 0b101, RwSafe);
55 $macro!(AMCNTENSET1_EL0, 0b11, 0b011, 0b1101, 0b0011, 0b001, RwSafe);
56 $macro!(AMCR_EL0, 0b11, 0b011, 0b1101, 0b0010, 0b000, RwSafe);
57 $macro!(AMUSERENR_EL0, 0b11, 0b011, 0b1101, 0b0010, 0b011, RwSafe);
58 $macro!(APDAKeyHi_EL1, 0b11, 0b000, 0b0010, 0b0010, 0b001, RwSafe);
59 $macro!(APDAKeyLo_EL1, 0b11, 0b000, 0b0010, 0b0010, 0b000, RwSafe);
60 $macro!(APDBKeyHi_EL1, 0b11, 0b000, 0b0010, 0b0010, 0b011, RwSafe);
61 $macro!(APDBKeyLo_EL1, 0b11, 0b000, 0b0010, 0b0010, 0b010, RwSafe);
62 $macro!(APGAKeyHi_EL1, 0b11, 0b000, 0b0010, 0b0011, 0b001, RwSafe);
63 $macro!(APGAKeyLo_EL1, 0b11, 0b000, 0b0010, 0b0011, 0b000, RwSafe);
64 $macro!(APIAKeyHi_EL1, 0b11, 0b000, 0b0010, 0b0001, 0b001, RwSafe);
65 $macro!(APIAKeyLo_EL1, 0b11, 0b000, 0b0010, 0b0001, 0b000, RwSafe);
66 $macro!(APIBKeyHi_EL1, 0b11, 0b000, 0b0010, 0b0001, 0b011, RwSafe);
67 $macro!(APIBKeyLo_EL1, 0b11, 0b000, 0b0010, 0b0001, 0b010, RwSafe);
68 $macro!(BRBCR_EL1, 0b10, 0b001, 0b1001, 0b0000, 0b000, RwSafe);
69 $macro!(BRBCR_EL12, 0b10, 0b101, 0b1001, 0b0000, 0b000, RwSafe);
70 $macro!(BRBCR_EL2, 0b10, 0b100, 0b1001, 0b0000, 0b000, RwSafe);
71 $macro!(BRBFCR_EL1, 0b10, 0b001, 0b1001, 0b0000, 0b001, RwSafe);
72 $macro!(BRBIDR0_EL1, 0b10, 0b001, 0b1001, 0b0010, 0b000, Ro);
73 $macro!(BRBINFINJ_EL1, 0b10, 0b001, 0b1001, 0b0001, 0b000, RwSafe);
74 $macro!(BRBSRCINJ_EL1, 0b10, 0b001, 0b1001, 0b0001, 0b001, RwSafe);
75 $macro!(BRBTGTINJ_EL1, 0b10, 0b001, 0b1001, 0b0001, 0b010, RwSafe);
76 $macro!(BRBTS_EL1, 0b10, 0b001, 0b1001, 0b0000, 0b010, RwSafe);
77 $macro!(CCSIDR_EL1, 0b11, 0b001, 0b0000, 0b0000, 0b000, Ro);
78 $macro!(CCSIDR2_EL1, 0b11, 0b001, 0b0000, 0b0000, 0b010, Ro);
79 $macro!(CLIDR_EL1, 0b11, 0b001, 0b0000, 0b0000, 0b001, Ro);
80 $macro!(CNTFRQ_EL0, 0b11, 0b011, 0b1110, 0b0000, 0b000, RwSafe);
81 $macro!(CNTHCTL_EL2, 0b11, 0b100, 0b1110, 0b0001, 0b000, RwSafe);
82 $macro!(CNTHP_CTL_EL2, 0b11, 0b100, 0b1110, 0b0010, 0b001, RwSafe);
83 $macro!(CNTHP_CVAL_EL2, 0b11, 0b100, 0b1110, 0b0010, 0b010, RwSafe);
84 $macro!(CNTHP_TVAL_EL2, 0b11, 0b100, 0b1110, 0b0010, 0b000, RwSafe);
85 $macro!(CNTHPS_CTL_EL2, 0b11, 0b100, 0b1110, 0b0101, 0b001, RwSafe);
86 $macro!(CNTHPS_CVAL_EL2, 0b11, 0b100, 0b1110, 0b0101, 0b010, RwSafe);
87 $macro!(CNTHPS_TVAL_EL2, 0b11, 0b100, 0b1110, 0b0101, 0b000, RwSafe);
88 $macro!(CNTHV_CTL_EL2, 0b11, 0b100, 0b1110, 0b0011, 0b001, RwSafe);
89 $macro!(CNTHV_CVAL_EL2, 0b11, 0b100, 0b1110, 0b0011, 0b010, RwSafe);
90 $macro!(CNTHV_TVAL_EL2, 0b11, 0b100, 0b1110, 0b0011, 0b000, RwSafe);
91 $macro!(CNTHVS_CTL_EL2, 0b11, 0b100, 0b1110, 0b0100, 0b001, RwSafe);
92 $macro!(CNTHVS_CVAL_EL2, 0b11, 0b100, 0b1110, 0b0100, 0b010, RwSafe);
93 $macro!(CNTHVS_TVAL_EL2, 0b11, 0b100, 0b1110, 0b0100, 0b000, RwSafe);
94 $macro!(CNTKCTL_EL1, 0b11, 0b000, 0b1110, 0b0001, 0b000, RwSafe);
95 $macro!(CNTKCTL_EL12, 0b11, 0b101, 0b1110, 0b0001, 0b000, RwSafe);
96 $macro!(CNTP_CTL_EL0, 0b11, 0b011, 0b1110, 0b0010, 0b001, RwSafe);
97 $macro!(CNTP_CTL_EL02, 0b11, 0b101, 0b1110, 0b0010, 0b001, RwSafe);
98 $macro!(CNTP_CVAL_EL0, 0b11, 0b011, 0b1110, 0b0010, 0b010, RwSafe);
99 $macro!(CNTP_CVAL_EL02, 0b11, 0b101, 0b1110, 0b0010, 0b010, RwSafe);
100 $macro!(CNTP_TVAL_EL0, 0b11, 0b011, 0b1110, 0b0010, 0b000, RwSafe);
101 $macro!(CNTP_TVAL_EL02, 0b11, 0b101, 0b1110, 0b0010, 0b000, RwSafe);
102 $macro!(CNTPCT_EL0, 0b11, 0b011, 0b1110, 0b0000, 0b001, Ro);
103 $macro!(CNTPCTSS_EL0, 0b11, 0b011, 0b1110, 0b0000, 0b101, Ro);
104 $macro!(CNTPOFF_EL2, 0b11, 0b100, 0b1110, 0b0000, 0b110, RwSafe);
105 $macro!(CNTPS_CTL_EL1, 0b11, 0b111, 0b1110, 0b0010, 0b001, RwSafe);
106 $macro!(CNTPS_CVAL_EL1, 0b11, 0b111, 0b1110, 0b0010, 0b010, RwSafe);
107 $macro!(CNTPS_TVAL_EL1, 0b11, 0b111, 0b1110, 0b0010, 0b000, RwSafe);
108 $macro!(CNTV_CTL_EL0, 0b11, 0b011, 0b1110, 0b0011, 0b001, RwSafe);
109 $macro!(CNTV_CTL_EL02, 0b11, 0b101, 0b1110, 0b0011, 0b001, RwSafe);
110 $macro!(CNTV_CVAL_EL0, 0b11, 0b011, 0b1110, 0b0011, 0b010, RwSafe);
111 $macro!(CNTV_CVAL_EL02, 0b11, 0b101, 0b1110, 0b0011, 0b010, RwSafe);
112 $macro!(CNTV_TVAL_EL0, 0b11, 0b011, 0b1110, 0b0011, 0b000, RwSafe);
113 $macro!(CNTV_TVAL_EL02, 0b11, 0b101, 0b1110, 0b0011, 0b000, RwSafe);
114 $macro!(CNTVCT_EL0, 0b11, 0b011, 0b1110, 0b0000, 0b010, Ro);
115 $macro!(CNTVCTSS_EL0, 0b11, 0b011, 0b1110, 0b0000, 0b110, Ro);
116 $macro!(CNTVOFF_EL2, 0b11, 0b100, 0b1110, 0b0000, 0b011, RwSafe);
117 $macro!(CONTEXTIDR_EL1, 0b11, 0b000, 0b1101, 0b0000, 0b001, RwSafe);
118 $macro!(CONTEXTIDR_EL12, 0b11, 0b101, 0b1101, 0b0000, 0b001, RwSafe);
119 $macro!(CONTEXTIDR_EL2, 0b11, 0b100, 0b1101, 0b0000, 0b001, RwSafe);
120 $macro!(CPACR_EL1, 0b11, 0b000, 0b0001, 0b0000, 0b010, RwSafe);
121 $macro!(CPACR_EL12, 0b11, 0b101, 0b0001, 0b0000, 0b010, RwSafe);
122 $macro!(CPTR_EL2, 0b11, 0b100, 0b0001, 0b0001, 0b010, RwSafe);
123 $macro!(CPTR_EL3, 0b11, 0b110, 0b0001, 0b0001, 0b010, RwSafe);
124 $macro!(CSSELR_EL1, 0b11, 0b010, 0b0000, 0b0000, 0b000, RwSafe);
125 $macro!(CTR_EL0, 0b11, 0b011, 0b0000, 0b0000, 0b001, Ro);
126 $macro!(CurrentEL, 0b11, 0b000, 0b0100, 0b0010, 0b010, Ro);
127 $macro!(DACR32_EL2, 0b11, 0b100, 0b0011, 0b0000, 0b000, RwSafe);
128 $macro!(DAIF, 0b11, 0b011, 0b0100, 0b0010, 0b001, RwSafe);
129 $macro!(DBGAUTHSTATUS_EL1, 0b10, 0b000, 0b0111, 0b1110, 0b110, Ro);
130 $macro!(DBGBCR0_EL1, 0b10, 0b000, 0b0000, 0b0000, 0b101, RwSafe);
131 $macro!(DBGBCR1_EL1, 0b10, 0b000, 0b0000, 0b0001, 0b101, RwSafe);
132 $macro!(DBGBCR2_EL1, 0b10, 0b000, 0b0000, 0b0010, 0b101, RwSafe);
133 $macro!(DBGBCR3_EL1, 0b10, 0b000, 0b0000, 0b0011, 0b101, RwSafe);
134 $macro!(DBGBCR4_EL1, 0b10, 0b000, 0b0000, 0b0100, 0b101, RwSafe);
135 $macro!(DBGBCR5_EL1, 0b10, 0b000, 0b0000, 0b0101, 0b101, RwSafe);
136 $macro!(DBGBCR6_EL1, 0b10, 0b000, 0b0000, 0b0110, 0b101, RwSafe);
137 $macro!(DBGBCR7_EL1, 0b10, 0b000, 0b0000, 0b0111, 0b101, RwSafe);
138 $macro!(DBGBCR8_EL1, 0b10, 0b000, 0b0000, 0b1000, 0b101, RwSafe);
139 $macro!(DBGBCR9_EL1, 0b10, 0b000, 0b0000, 0b1001, 0b101, RwSafe);
140 $macro!(DBGBCR10_EL1, 0b10, 0b000, 0b0000, 0b1010, 0b101, RwSafe);
141 $macro!(DBGBCR11_EL1, 0b10, 0b000, 0b0000, 0b1011, 0b101, RwSafe);
142 $macro!(DBGBCR12_EL1, 0b10, 0b000, 0b0000, 0b1100, 0b101, RwSafe);
143 $macro!(DBGBCR13_EL1, 0b10, 0b000, 0b0000, 0b1101, 0b101, RwSafe);
144 $macro!(DBGBCR14_EL1, 0b10, 0b000, 0b0000, 0b1110, 0b101, RwSafe);
145 $macro!(DBGBCR15_EL1, 0b10, 0b000, 0b0000, 0b1111, 0b101, RwSafe);
146 $macro!(DBGBVR0_EL1, 0b10, 0b000, 0b0000, 0b0000, 0b100, RwSafe);
147 $macro!(DBGBVR1_EL1, 0b10, 0b000, 0b0000, 0b0001, 0b100, RwSafe);
148 $macro!(DBGBVR2_EL1, 0b10, 0b000, 0b0000, 0b0010, 0b100, RwSafe);
149 $macro!(DBGBVR3_EL1, 0b10, 0b000, 0b0000, 0b0011, 0b100, RwSafe);
150 $macro!(DBGBVR4_EL1, 0b10, 0b000, 0b0000, 0b0100, 0b100, RwSafe);
151 $macro!(DBGBVR5_EL1, 0b10, 0b000, 0b0000, 0b0101, 0b100, RwSafe);
152 $macro!(DBGBVR6_EL1, 0b10, 0b000, 0b0000, 0b0110, 0b100, RwSafe);
153 $macro!(DBGBVR7_EL1, 0b10, 0b000, 0b0000, 0b0111, 0b100, RwSafe);
154 $macro!(DBGBVR8_EL1, 0b10, 0b000, 0b0000, 0b1000, 0b100, RwSafe);
155 $macro!(DBGBVR9_EL1, 0b10, 0b000, 0b0000, 0b1001, 0b100, RwSafe);
156 $macro!(DBGBVR10_EL1, 0b10, 0b000, 0b0000, 0b1010, 0b100, RwSafe);
157 $macro!(DBGBVR11_EL1, 0b10, 0b000, 0b0000, 0b1011, 0b100, RwSafe);
158 $macro!(DBGBVR12_EL1, 0b10, 0b000, 0b0000, 0b1100, 0b100, RwSafe);
159 $macro!(DBGBVR13_EL1, 0b10, 0b000, 0b0000, 0b1101, 0b100, RwSafe);
160 $macro!(DBGBVR14_EL1, 0b10, 0b000, 0b0000, 0b1110, 0b100, RwSafe);
161 $macro!(DBGBVR15_EL1, 0b10, 0b000, 0b0000, 0b1111, 0b100, RwSafe);
162 $macro!(DBGCLAIMCLR_EL1, 0b10, 0b000, 0b0111, 0b1001, 0b110, RwSafe);
163 $macro!(DBGCLAIMSET_EL1, 0b10, 0b000, 0b0111, 0b1000, 0b110, RwSafe);
164 $macro!(DBGDTR_EL0, 0b10, 0b011, 0b0000, 0b0100, 0b000, RwSafe);
165 $macro!(DBGDTRRX_EL0, 0b10, 0b011, 0b0000, 0b0101, 0b000, Ro);
166 $macro!(DBGDTRTX_EL0, 0b10, 0b011, 0b0000, 0b0101, 0b000, WoSafe);
167 $macro!(DBGPRCR_EL1, 0b10, 0b000, 0b0001, 0b0100, 0b100, RwSafe);
168 $macro!(DBGVCR32_EL2, 0b10, 0b100, 0b0000, 0b0111, 0b000, RwSafe);
169 $macro!(DBGWCR0_EL1, 0b10, 0b000, 0b0000, 0b0000, 0b111, RwSafe);
170 $macro!(DBGWCR1_EL1, 0b10, 0b000, 0b0000, 0b0001, 0b111, RwSafe);
171 $macro!(DBGWCR2_EL1, 0b10, 0b000, 0b0000, 0b0010, 0b111, RwSafe);
172 $macro!(DBGWCR3_EL1, 0b10, 0b000, 0b0000, 0b0011, 0b111, RwSafe);
173 $macro!(DBGWCR4_EL1, 0b10, 0b000, 0b0000, 0b0100, 0b111, RwSafe);
174 $macro!(DBGWCR5_EL1, 0b10, 0b000, 0b0000, 0b0101, 0b111, RwSafe);
175 $macro!(DBGWCR6_EL1, 0b10, 0b000, 0b0000, 0b0110, 0b111, RwSafe);
176 $macro!(DBGWCR7_EL1, 0b10, 0b000, 0b0000, 0b0111, 0b111, RwSafe);
177 $macro!(DBGWCR8_EL1, 0b10, 0b000, 0b0000, 0b1000, 0b111, RwSafe);
178 $macro!(DBGWCR9_EL1, 0b10, 0b000, 0b0000, 0b1001, 0b111, RwSafe);
179 $macro!(DBGWCR10_EL1, 0b10, 0b000, 0b0000, 0b1010, 0b111, RwSafe);
180 $macro!(DBGWCR11_EL1, 0b10, 0b000, 0b0000, 0b1011, 0b111, RwSafe);
181 $macro!(DBGWCR12_EL1, 0b10, 0b000, 0b0000, 0b1100, 0b111, RwSafe);
182 $macro!(DBGWCR13_EL1, 0b10, 0b000, 0b0000, 0b1101, 0b111, RwSafe);
183 $macro!(DBGWCR14_EL1, 0b10, 0b000, 0b0000, 0b1110, 0b111, RwSafe);
184 $macro!(DBGWCR15_EL1, 0b10, 0b000, 0b0000, 0b1111, 0b111, RwSafe);
185 $macro!(DBGWVR0_EL1, 0b10, 0b000, 0b0000, 0b0000, 0b110, RwSafe);
186 $macro!(DBGWVR1_EL1, 0b10, 0b000, 0b0000, 0b0001, 0b110, RwSafe);
187 $macro!(DBGWVR2_EL1, 0b10, 0b000, 0b0000, 0b0010, 0b110, RwSafe);
188 $macro!(DBGWVR3_EL1, 0b10, 0b000, 0b0000, 0b0011, 0b110, RwSafe);
189 $macro!(DBGWVR4_EL1, 0b10, 0b000, 0b0000, 0b0100, 0b110, RwSafe);
190 $macro!(DBGWVR5_EL1, 0b10, 0b000, 0b0000, 0b0101, 0b110, RwSafe);
191 $macro!(DBGWVR6_EL1, 0b10, 0b000, 0b0000, 0b0110, 0b110, RwSafe);
192 $macro!(DBGWVR7_EL1, 0b10, 0b000, 0b0000, 0b0111, 0b110, RwSafe);
193 $macro!(DBGWVR8_EL1, 0b10, 0b000, 0b0000, 0b1000, 0b110, RwSafe);
194 $macro!(DBGWVR9_EL1, 0b10, 0b000, 0b0000, 0b1001, 0b110, RwSafe);
195 $macro!(DBGWVR10_EL1, 0b10, 0b000, 0b0000, 0b1010, 0b110, RwSafe);
196 $macro!(DBGWVR11_EL1, 0b10, 0b000, 0b0000, 0b1011, 0b110, RwSafe);
197 $macro!(DBGWVR12_EL1, 0b10, 0b000, 0b0000, 0b1100, 0b110, RwSafe);
198 $macro!(DBGWVR13_EL1, 0b10, 0b000, 0b0000, 0b1101, 0b110, RwSafe);
199 $macro!(DBGWVR14_EL1, 0b10, 0b000, 0b0000, 0b1110, 0b110, RwSafe);
200 $macro!(DBGWVR15_EL1, 0b10, 0b000, 0b0000, 0b1111, 0b110, RwSafe);
201 $macro!(DCZID_EL0, 0b11, 0b011, 0b0000, 0b0000, 0b111, Ro);
202 $macro!(DISR_EL1, 0b11, 0b000, 0b1100, 0b0001, 0b001, RwSafe);
203 $macro!(DIT, 0b11, 0b011, 0b0100, 0b0010, 0b101, RwSafe);
204
205 $macro!(DLR_EL0, 0b11, 0b011, 0b0100, 0b0101, 0b001, RwUnsafe);
209 $macro!(DSPSR_EL0, 0b11, 0b011, 0b0100, 0b0101, 0b000, RwUnsafe);
210 $macro!(ELR_EL1, 0b11, 0b000, 0b0100, 0b0000, 0b001, RwUnsafe);
211 $macro!(ELR_EL12, 0b11, 0b101, 0b0100, 0b0000, 0b001, RwUnsafe);
212 $macro!(ELR_EL2, 0b11, 0b100, 0b0100, 0b0000, 0b001, RwUnsafe);
213 $macro!(ELR_EL3, 0b11, 0b110, 0b0100, 0b0000, 0b001, RwUnsafe);
214
215 $macro!(ERRIDR_EL1, 0b11, 0b000, 0b0101, 0b0011, 0b000, Ro);
216 $macro!(ERRSELR_EL1, 0b11, 0b000, 0b0101, 0b0011, 0b001, RwSafe);
217 $macro!(ERXADDR_EL1, 0b11, 0b000, 0b0101, 0b0100, 0b011, RwSafe);
218 $macro!(ERXCTLR_EL1, 0b11, 0b000, 0b0101, 0b0100, 0b001, RwSafe);
219 $macro!(ERXFR_EL1, 0b11, 0b000, 0b0101, 0b0100, 0b000, Ro);
220 $macro!(ERXGSR_EL1, 0b11, 0b000, 0b0101, 0b0011, 0b010, Ro);
221 $macro!(ERXMISC0_EL1, 0b11, 0b000, 0b0101, 0b0101, 0b000, RwSafe);
222 $macro!(ERXMISC1_EL1, 0b11, 0b000, 0b0101, 0b0101, 0b001, RwSafe);
223 $macro!(ERXMISC2_EL1, 0b11, 0b000, 0b0101, 0b0101, 0b010, RwSafe);
224 $macro!(ERXMISC3_EL1, 0b11, 0b000, 0b0101, 0b0101, 0b011, RwSafe);
225 $macro!(ERXPFGCDN_EL1, 0b11, 0b000, 0b0101, 0b0100, 0b110, RwSafe);
226 $macro!(ERXPFGCTL_EL1, 0b11, 0b000, 0b0101, 0b0100, 0b101, RwSafe);
227 $macro!(ERXPFGF_EL1, 0b11, 0b000, 0b0101, 0b0100, 0b100, Ro);
228 $macro!(ERXSTATUS_EL1, 0b11, 0b000, 0b0101, 0b0100, 0b010, RwSafe);
229 $macro!(ESR_EL1, 0b11, 0b000, 0b0101, 0b0010, 0b000, RwSafe);
230 $macro!(ESR_EL12, 0b11, 0b101, 0b0101, 0b0010, 0b000, RwSafe);
231 $macro!(ESR_EL2, 0b11, 0b100, 0b0101, 0b0010, 0b000, RwSafe);
232 $macro!(ESR_EL3, 0b11, 0b110, 0b0101, 0b0010, 0b000, RwSafe);
233 $macro!(FAR_EL1, 0b11, 0b000, 0b0110, 0b0000, 0b000, RwSafe);
234 $macro!(FAR_EL12, 0b11, 0b101, 0b0110, 0b0000, 0b000, RwSafe);
235 $macro!(FAR_EL2, 0b11, 0b100, 0b0110, 0b0000, 0b000, RwSafe);
236 $macro!(FAR_EL3, 0b11, 0b110, 0b0110, 0b0000, 0b000, RwSafe);
237 $macro!(FGWTE3_EL3, 0b11, 0b110, 0b0001, 0b0001, 0b101, RwSafe);
238 $macro!(FPCR, 0b11, 0b011, 0b0100, 0b0100, 0b000, RwSafe);
239 $macro!(FPEXC32_EL2, 0b11, 0b100, 0b0101, 0b0011, 0b000, RwSafe);
240 $macro!(FPMR, 0b11, 0b011, 0b0100, 0b0100, 0b010, RwSafe);
241 $macro!(FPSR, 0b11, 0b011, 0b0100, 0b0100, 0b001, RwSafe);
242 $macro!(GCR_EL1, 0b11, 0b000, 0b0001, 0b0000, 0b110, RwSafe);
243 $macro!(GCSCR_EL1, 0b11, 0b000, 0b0010, 0b0101, 0b000, RwSafe);
244 $macro!(GCSCR_EL12, 0b11, 0b101, 0b0010, 0b0101, 0b000, RwSafe);
245 $macro!(GCSCR_EL2, 0b11, 0b100, 0b0010, 0b0101, 0b000, RwSafe);
246 $macro!(GCSCR_EL3, 0b11, 0b110, 0b0010, 0b0101, 0b000, RwSafe);
247 $macro!(GCSCRE0_EL1, 0b11, 0b000, 0b0010, 0b0101, 0b010, RwSafe);
248
249 $macro!(GCSPR_EL0, 0b11, 0b011, 0b0010, 0b0101, 0b001, RwUnsafe);
253 $macro!(GCSPR_EL1, 0b11, 0b000, 0b0010, 0b0101, 0b001, RwUnsafe);
254 $macro!(GCSPR_EL12, 0b11, 0b101, 0b0010, 0b0101, 0b001, RwUnsafe);
255 $macro!(GCSPR_EL2, 0b11, 0b100, 0b0010, 0b0101, 0b001, RwUnsafe);
256 $macro!(GCSPR_EL3, 0b11, 0b110, 0b0010, 0b0101, 0b001, RwUnsafe);
257
258 $macro!(GMID_EL1, 0b11, 0b001, 0b0000, 0b0000, 0b100, Ro);
259 $macro!(GPCCR_EL3, 0b11, 0b110, 0b0010, 0b0001, 0b110, RwSafe);
260 $macro!(GPTBR_EL3, 0b11, 0b110, 0b0010, 0b0001, 0b100, RwSafe);
261 $macro!(HACDBSBR_EL2, 0b11, 0b100, 0b0010, 0b0011, 0b100, RwSafe);
262 $macro!(HACDBSCONS_EL2, 0b11, 0b100, 0b0010, 0b0011, 0b101, RwSafe);
263 $macro!(HACR_EL2, 0b11, 0b100, 0b0001, 0b0001, 0b111, RwSafe);
264 $macro!(HAFGRTR_EL2, 0b11, 0b100, 0b0011, 0b0001, 0b110, RwSafe);
265
266 $macro!(HCR_EL2, 0b11, 0b100, 0b0001, 0b0001, 0b000, RwSafe);
271 $macro!(HCRX_EL2, 0b11, 0b100, 0b0001, 0b0010, 0b010, RwSafe);
272
273 $macro!(HDBSSBR_EL2, 0b11, 0b100, 0b0010, 0b0011, 0b010, RwSafe);
274 $macro!(HDBSSPRoD_EL2, 0b11, 0b100, 0b0010, 0b0011, 0b011, RwSafe);
275 $macro!(HDFGRTR_EL2, 0b11, 0b100, 0b0011, 0b0001, 0b100, RwSafe);
276 $macro!(HDFGRTR2_EL2, 0b11, 0b100, 0b0011, 0b0001, 0b000, RwSafe);
277 $macro!(HDFGWTR_EL2, 0b11, 0b100, 0b0011, 0b0001, 0b101, RwSafe);
278 $macro!(HDFGWTR2_EL2, 0b11, 0b100, 0b0011, 0b0001, 0b001, RwSafe);
279 $macro!(HFGITR_EL2, 0b11, 0b100, 0b0001, 0b0001, 0b110, RwSafe);
280 $macro!(HFGITR2_EL2, 0b11, 0b100, 0b0011, 0b0001, 0b111, RwSafe);
281 $macro!(HFGRTR_EL2, 0b11, 0b100, 0b0001, 0b0001, 0b100, RwSafe);
282 $macro!(HFGRTR2_EL2, 0b11, 0b100, 0b0011, 0b0001, 0b010, RwSafe);
283 $macro!(HFGWTR_EL2, 0b11, 0b100, 0b0001, 0b0001, 0b101, RwSafe);
284 $macro!(HFGWTR2_EL2, 0b11, 0b100, 0b0011, 0b0001, 0b011, RwSafe);
285 $macro!(HPFAR_EL2, 0b11, 0b100, 0b0110, 0b0000, 0b100, RwSafe);
286 $macro!(HSTR_EL2, 0b11, 0b100, 0b0001, 0b0001, 0b011, RwSafe);
287 $macro!(ICC_ASGI1R_EL1, 0b11, 0b000, 0b1100, 0b1011, 0b110, WoSafe);
288 $macro!(ICC_BPR0_EL1, 0b11, 0b000, 0b1100, 0b1000, 0b011, RwSafe);
289 $macro!(ICC_BPR1_EL1, 0b11, 0b000, 0b1100, 0b1100, 0b011, RwSafe);
290 $macro!(ICC_CTLR_EL1, 0b11, 0b000, 0b1100, 0b1100, 0b100, RwSafe);
291 $macro!(ICC_CTLR_EL3, 0b11, 0b110, 0b1100, 0b1100, 0b100, RwSafe);
292 $macro!(ICC_DIR_EL1, 0b11, 0b000, 0b1100, 0b1011, 0b001, WoSafe);
293 $macro!(ICC_EOIR0_EL1, 0b11, 0b000, 0b1100, 0b1000, 0b001, WoSafe);
294 $macro!(ICC_EOIR1_EL1, 0b11, 0b000, 0b1100, 0b1100, 0b001, WoSafe);
295 $macro!(ICC_HPPIR0_EL1, 0b11, 0b000, 0b1100, 0b1000, 0b010, Ro);
296 $macro!(ICC_HPPIR1_EL1, 0b11, 0b000, 0b1100, 0b1100, 0b010, Ro);
297 $macro!(ICC_IAR0_EL1, 0b11, 0b000, 0b1100, 0b1000, 0b000, Ro);
298 $macro!(ICC_IAR1_EL1, 0b11, 0b000, 0b1100, 0b1100, 0b000, Ro);
299 $macro!(ICC_IGRPEN0_EL1, 0b11, 0b000, 0b1100, 0b1100, 0b110, RwSafe);
300 $macro!(ICC_IGRPEN1_EL1, 0b11, 0b000, 0b1100, 0b1100, 0b111, RwSafe);
301 $macro!(ICC_IGRPEN1_EL3, 0b11, 0b110, 0b1100, 0b1100, 0b111, RwSafe);
302 $macro!(ICC_NMIAR1_EL1, 0b11, 0b000, 0b1100, 0b1001, 0b101, Ro);
303 $macro!(ICC_PMR_EL1, 0b11, 0b000, 0b0100, 0b0110, 0b000, RwSafe);
304 $macro!(ICC_RPR_EL1, 0b11, 0b000, 0b1100, 0b1011, 0b011, Ro);
305 $macro!(ICC_SGI0R_EL1, 0b11, 0b000, 0b1100, 0b1011, 0b111, WoSafe);
306 $macro!(ICC_SGI1R_EL1, 0b11, 0b000, 0b1100, 0b1011, 0b101, WoSafe);
307 $macro!(ICC_SRE_EL1, 0b11, 0b000, 0b1100, 0b1100, 0b101, RwSafe);
308 $macro!(ICC_SRE_EL2, 0b11, 0b100, 0b1100, 0b1001, 0b101, RwSafe);
309 $macro!(ICC_SRE_EL3, 0b11, 0b110, 0b1100, 0b1100, 0b101, RwSafe);
310 $macro!(ICH_EISR_EL2, 0b11, 0b100, 0b1100, 0b1011, 0b011, Ro);
311 $macro!(ICH_ELRSR_EL2, 0b11, 0b100, 0b1100, 0b1011, 0b101, Ro);
312 $macro!(ICH_HCR_EL2, 0b11, 0b100, 0b1100, 0b1011, 0b000, RwSafe);
313 $macro!(ICH_MISR_EL2, 0b11, 0b100, 0b1100, 0b1011, 0b010, Ro);
314 $macro!(ICH_VMCR_EL2, 0b11, 0b100, 0b1100, 0b1011, 0b111, RwSafe);
315 $macro!(ICH_VTR_EL2, 0b11, 0b100, 0b1100, 0b1011, 0b001, Ro);
316 $macro!(ID_AA64AFR0_EL1, 0b11, 0b000, 0b0000, 0b0101, 0b100, Ro);
317 $macro!(ID_AA64AFR1_EL1, 0b11, 0b000, 0b0000, 0b0101, 0b101, Ro);
318 $macro!(ID_AA64DFR0_EL1, 0b11, 0b000, 0b0000, 0b0101, 0b000, Ro);
319 $macro!(ID_AA64DFR1_EL1, 0b11, 0b000, 0b0000, 0b0101, 0b001, Ro);
320 $macro!(ID_AA64DFR2_EL1, 0b11, 0b000, 0b0000, 0b0101, 0b010, Ro);
321 $macro!(ID_AA64FPFR0_EL1, 0b11, 0b000, 0b0000, 0b0100, 0b111, Ro);
322 $macro!(ID_AA64ISAR0_EL1, 0b11, 0b000, 0b0000, 0b0110, 0b000, Ro);
323 $macro!(ID_AA64ISAR1_EL1, 0b11, 0b000, 0b0000, 0b0110, 0b001, Ro);
324 $macro!(ID_AA64ISAR2_EL1, 0b11, 0b000, 0b0000, 0b0110, 0b010, Ro);
325 $macro!(ID_AA64ISAR3_EL1, 0b11, 0b000, 0b0000, 0b0110, 0b011, Ro);
326 $macro!(ID_AA64MMFR0_EL1, 0b11, 0b000, 0b0000, 0b0111, 0b000, Ro);
327 $macro!(ID_AA64MMFR1_EL1, 0b11, 0b000, 0b0000, 0b0111, 0b001, Ro);
328 $macro!(ID_AA64MMFR2_EL1, 0b11, 0b000, 0b0000, 0b0111, 0b010, Ro);
329 $macro!(ID_AA64MMFR3_EL1, 0b11, 0b000, 0b0000, 0b0111, 0b011, Ro);
330 $macro!(ID_AA64MMFR4_EL1, 0b11, 0b000, 0b0000, 0b0111, 0b100, Ro);
331 $macro!(ID_AA64PFR0_EL1, 0b11, 0b000, 0b0000, 0b0100, 0b000, Ro);
332 $macro!(ID_AA64PFR1_EL1, 0b11, 0b000, 0b0000, 0b0100, 0b001, Ro);
333 $macro!(ID_AA64PFR2_EL1, 0b11, 0b000, 0b0000, 0b0100, 0b010, Ro);
334 $macro!(ID_AA64SMFR0_EL1, 0b11, 0b000, 0b0000, 0b0100, 0b101, Ro);
335 $macro!(ID_AA64ZFR0_EL1, 0b11, 0b000, 0b0000, 0b0100, 0b100, Ro);
336 $macro!(ID_AFR0_EL1, 0b11, 0b000, 0b0000, 0b0001, 0b011, Ro);
337 $macro!(ID_DFR0_EL1, 0b11, 0b000, 0b0000, 0b0001, 0b010, Ro);
338 $macro!(ID_DFR1_EL1, 0b11, 0b000, 0b0000, 0b0011, 0b101, Ro);
339 $macro!(ID_ISAR0_EL1, 0b11, 0b000, 0b0000, 0b0010, 0b000, Ro);
340 $macro!(ID_ISAR1_EL1, 0b11, 0b000, 0b0000, 0b0010, 0b001, Ro);
341 $macro!(ID_ISAR2_EL1, 0b11, 0b000, 0b0000, 0b0010, 0b010, Ro);
342 $macro!(ID_ISAR3_EL1, 0b11, 0b000, 0b0000, 0b0010, 0b011, Ro);
343 $macro!(ID_ISAR4_EL1, 0b11, 0b000, 0b0000, 0b0010, 0b100, Ro);
344 $macro!(ID_ISAR5_EL1, 0b11, 0b000, 0b0000, 0b0010, 0b101, Ro);
345 $macro!(ID_ISAR6_EL1, 0b11, 0b000, 0b0000, 0b0010, 0b111, Ro);
346 $macro!(ID_MMFR0_EL1, 0b11, 0b000, 0b0000, 0b0001, 0b100, Ro);
347 $macro!(ID_MMFR1_EL1, 0b11, 0b000, 0b0000, 0b0001, 0b101, Ro);
348 $macro!(ID_MMFR2_EL1, 0b11, 0b000, 0b0000, 0b0001, 0b110, Ro);
349 $macro!(ID_MMFR3_EL1, 0b11, 0b000, 0b0000, 0b0001, 0b111, Ro);
350 $macro!(ID_MMFR4_EL1, 0b11, 0b000, 0b0000, 0b0010, 0b110, Ro);
351 $macro!(ID_MMFR5_EL1, 0b11, 0b000, 0b0000, 0b0011, 0b110, Ro);
352 $macro!(ID_PFR0_EL1, 0b11, 0b000, 0b0000, 0b0001, 0b000, Ro);
353 $macro!(ID_PFR1_EL1, 0b11, 0b000, 0b0000, 0b0001, 0b001, Ro);
354 $macro!(ID_PFR2_EL1, 0b11, 0b000, 0b0000, 0b0011, 0b100, Ro);
355 $macro!(IFSR32_EL2, 0b11, 0b100, 0b0101, 0b0000, 0b001, RwSafe);
356 $macro!(ISR_EL1, 0b11, 0b000, 0b1100, 0b0001, 0b000, Ro);
357 $macro!(LORC_EL1, 0b11, 0b000, 0b1010, 0b0100, 0b011, RwSafe);
358 $macro!(LOREA_EL1, 0b11, 0b000, 0b1010, 0b0100, 0b001, RwSafe);
359 $macro!(LORID_EL1, 0b11, 0b000, 0b1010, 0b0100, 0b111, Ro);
360 $macro!(LORN_EL1, 0b11, 0b000, 0b1010, 0b0100, 0b010, RwSafe);
361 $macro!(LORSA_EL1, 0b11, 0b000, 0b1010, 0b0100, 0b000, RwSafe);
362
363 $macro!(MAIR_EL1, 0b11, 0b000, 0b1010, 0b0010, 0b000, RwUnsafe);
367 $macro!(MAIR_EL12, 0b11, 0b101, 0b1010, 0b0010, 0b000, RwUnsafe);
368 $macro!(MAIR_EL2, 0b11, 0b100, 0b1010, 0b0010, 0b000, RwUnsafe);
369 $macro!(MAIR_EL3, 0b11, 0b110, 0b1010, 0b0010, 0b000, RwUnsafe);
370 $macro!(MAIR2_EL1, 0b11, 0b000, 0b1010, 0b0010, 0b001, RwUnsafe);
371 $macro!(MAIR2_EL12, 0b11, 0b101, 0b1010, 0b0010, 0b001, RwUnsafe);
372 $macro!(MAIR2_EL2, 0b11, 0b100, 0b1010, 0b0001, 0b001, RwUnsafe);
373 $macro!(MAIR2_EL3, 0b11, 0b110, 0b1010, 0b0001, 0b001, RwUnsafe);
374
375 $macro!(MDCCINT_EL1, 0b10, 0b000, 0b0000, 0b0010, 0b000, RwSafe);
376 $macro!(MDCCSR_EL0, 0b10, 0b011, 0b0000, 0b0001, 0b000, Ro);
377 $macro!(MDCR_EL2, 0b11, 0b100, 0b0001, 0b0001, 0b001, RwSafe);
378 $macro!(MDCR_EL3, 0b11, 0b110, 0b0001, 0b0011, 0b001, RwSafe);
379 $macro!(MDRAR_EL1, 0b10, 0b000, 0b0001, 0b0000, 0b000, Ro);
380 $macro!(MDSCR_EL1, 0b10, 0b000, 0b0000, 0b0010, 0b010, RwSafe);
381 $macro!(MDSELR_EL1, 0b10, 0b000, 0b0000, 0b0100, 0b010, RwSafe);
382 $macro!(MDSTEPOP_EL1, 0b10, 0b000, 0b0000, 0b0101, 0b010, RwSafe);
383 $macro!(MECID_A0_EL2, 0b11, 0b100, 0b1010, 0b1000, 0b001, RwSafe);
384 $macro!(MECID_A1_EL2, 0b11, 0b100, 0b1010, 0b1000, 0b011, RwSafe);
385 $macro!(MECID_P0_EL2, 0b11, 0b100, 0b1010, 0b1000, 0b000, RwSafe);
386 $macro!(MECID_P1_EL2, 0b11, 0b100, 0b1010, 0b1000, 0b010, RwSafe);
387 $macro!(MECID_RL_A_EL3, 0b11, 0b110, 0b1010, 0b1010, 0b001, RwSafe);
388 $macro!(MECIDR_EL2, 0b11, 0b100, 0b1010, 0b1000, 0b111, Ro);
389 $macro!(MFAR_EL3, 0b11, 0b110, 0b0110, 0b0000, 0b101, RwSafe);
390 $macro!(MIDR_EL1, 0b11, 0b000, 0b0000, 0b0000, 0b000, Ro);
391 $macro!(MPAMHCR_EL2, 0b11, 0b100, 0b1010, 0b0100, 0b000, RwSafe);
392 $macro!(MPAMIDR_EL1, 0b11, 0b000, 0b1010, 0b0100, 0b100, Ro);
393 $macro!(MPAMSM_EL1, 0b11, 0b000, 0b1010, 0b0101, 0b011, RwSafe);
394 $macro!(MPAMVPMV_EL2, 0b11, 0b100, 0b1010, 0b0100, 0b001, RwSafe);
395 $macro!(MPAMVPM0_EL2, 0b11, 0b100, 0b1010, 0b0110, 0b000, RwSafe);
396 $macro!(MPAMVPM1_EL2, 0b11, 0b100, 0b1010, 0b0110, 0b001, RwSafe);
397 $macro!(MPAMVPM2_EL2, 0b11, 0b100, 0b1010, 0b0110, 0b010, RwSafe);
398 $macro!(MPAMVPM3_EL2, 0b11, 0b100, 0b1010, 0b0110, 0b011, RwSafe);
399 $macro!(MPAMVPM4_EL2, 0b11, 0b100, 0b1010, 0b0110, 0b100, RwSafe);
400 $macro!(MPAMVPM5_EL2, 0b11, 0b100, 0b1010, 0b0110, 0b101, RwSafe);
401 $macro!(MPAMVPM6_EL2, 0b11, 0b100, 0b1010, 0b0110, 0b110, RwSafe);
402 $macro!(MPAMVPM7_EL2, 0b11, 0b100, 0b1010, 0b0110, 0b111, RwSafe);
403 $macro!(MPAM0_EL1, 0b11, 0b000, 0b1010, 0b0101, 0b001, RwSafe);
404 $macro!(MPAM1_EL1, 0b11, 0b000, 0b1010, 0b0101, 0b000, RwSafe);
405 $macro!(MPAM1_EL12, 0b11, 0b101, 0b1010, 0b0101, 0b000, RwSafe);
406 $macro!(MPAM2_EL2, 0b11, 0b100, 0b1010, 0b0101, 0b000, RwSafe);
407 $macro!(MPAM3_EL3, 0b11, 0b110, 0b1010, 0b0101, 0b000, RwSafe);
408 $macro!(MPIDR_EL1, 0b11, 0b000, 0b0000, 0b0000, 0b101, Ro);
409 $macro!(MVFR0_EL1, 0b11, 0b000, 0b0000, 0b0011, 0b000, Ro);
410 $macro!(MVFR1_EL1, 0b11, 0b000, 0b0000, 0b0011, 0b001, Ro);
411 $macro!(MVFR2_EL1, 0b11, 0b000, 0b0000, 0b0011, 0b010, Ro);
412 $macro!(NZCV, 0b11, 0b011, 0b0100, 0b0010, 0b000, RwSafe);
413 $macro!(OSDLR_EL1, 0b10, 0b000, 0b0001, 0b0011, 0b100, RwSafe);
414 $macro!(OSDTRRX_EL1, 0b10, 0b000, 0b0000, 0b0000, 0b010, RwSafe);
415 $macro!(OSDTRTX_EL1, 0b10, 0b000, 0b0000, 0b0011, 0b010, RwSafe);
416 $macro!(OSECCR_EL1, 0b10, 0b000, 0b0000, 0b0110, 0b010, RwSafe);
417 $macro!(OSLAR_EL1, 0b10, 0b000, 0b0001, 0b0000, 0b100, WoSafe);
418 $macro!(OSLSR_EL1, 0b10, 0b000, 0b0001, 0b0001, 0b100, Ro);
419 $macro!(PAN, 0b11, 0b000, 0b0100, 0b0010, 0b011, RwSafe);
420 $macro!(PAR_EL1, 0b11, 0b000, 0b0111, 0b0100, 0b000, RwSafe);
421 $macro!(PFAR_EL1, 0b11, 0b000, 0b0110, 0b0000, 0b101, RwSafe);
422 $macro!(PFAR_EL12, 0b11, 0b101, 0b0110, 0b0000, 0b101, RwSafe);
423 $macro!(PFAR_EL2, 0b11, 0b100, 0b0110, 0b0000, 0b101, RwSafe);
424 $macro!(PIR_EL1, 0b11, 0b000, 0b1010, 0b0010, 0b011, RwSafe);
425 $macro!(PIR_EL12, 0b11, 0b101, 0b1010, 0b0010, 0b011, RwSafe);
426 $macro!(PIR_EL2, 0b11, 0b100, 0b1010, 0b0010, 0b011, RwSafe);
427 $macro!(PIR_EL3, 0b11, 0b110, 0b1010, 0b0010, 0b011, RwSafe);
428 $macro!(PIRE0_EL1, 0b11, 0b000, 0b1010, 0b0010, 0b010, RwSafe);
429 $macro!(PIRE0_EL12, 0b11, 0b101, 0b1010, 0b0010, 0b010, RwSafe);
430 $macro!(PIRE0_EL2, 0b11, 0b100, 0b1010, 0b0010, 0b010, RwSafe);
431 $macro!(PM, 0b11, 0b000, 0b0100, 0b0011, 0b001, RwSafe);
432 $macro!(PMBIDR_EL1, 0b11, 0b000, 0b1001, 0b1010, 0b111, Ro);
433 $macro!(PMBLIMITR_EL1, 0b11, 0b000, 0b1001, 0b1010, 0b000, RwSafe);
434 $macro!(PMBPTR_EL1, 0b11, 0b000, 0b1001, 0b1010, 0b001, RwSafe);
435 $macro!(PMBSR_EL1, 0b11, 0b000, 0b1001, 0b1010, 0b011, RwSafe);
436 $macro!(PMCCFILTR_EL0, 0b11, 0b011, 0b1110, 0b1111, 0b111, RwSafe);
437 $macro!(PMCCNTR_EL0, 0b11, 0b011, 0b1001, 0b1101, 0b000, RwSafe);
438 $macro!(PMCCNTSVR_EL1, 0b10, 0b000, 0b1110, 0b1011, 0b111, Ro);
439 $macro!(PMCEID0_EL0, 0b11, 0b011, 0b1001, 0b1100, 0b110, Ro);
440 $macro!(PMCEID1_EL0, 0b11, 0b011, 0b1001, 0b1100, 0b111, Ro);
441 $macro!(PMCNTENCLR_EL0, 0b11, 0b011, 0b1001, 0b1100, 0b010, RwSafe);
442 $macro!(PMCNTENSET_EL0, 0b11, 0b011, 0b1001, 0b1100, 0b001, RwSafe);
443 $macro!(PMCR_EL0, 0b11, 0b011, 0b1001, 0b1100, 0b000, RwSafe);
444 $macro!(PMECR_EL1, 0b11, 0b000, 0b1001, 0b1110, 0b101, RwSafe);
445 $macro!(PMIAR_EL1, 0b11, 0b000, 0b1001, 0b1110, 0b111, RwSafe);
446 $macro!(PMICFILTR_EL0, 0b11, 0b011, 0b1001, 0b0110, 0b000, RwSafe);
447 $macro!(PMICNTR_EL0, 0b11, 0b011, 0b1001, 0b0100, 0b000, RwSafe);
448 $macro!(PMICNTSVR_EL1, 0b10, 0b000, 0b1110, 0b1100, 0b000, Ro);
449 $macro!(PMINTENCLR_EL1, 0b11, 0b000, 0b1001, 0b1110, 0b010, RwSafe);
450 $macro!(PMINTENSET_EL1, 0b11, 0b000, 0b1001, 0b1110, 0b001, RwSafe);
451 $macro!(PMMIR_EL1, 0b11, 0b000, 0b1001, 0b1110, 0b110, Ro);
452 $macro!(PMOVSCLR_EL0, 0b11, 0b011, 0b1001, 0b1100, 0b011, RwSafe);
453 $macro!(PMOVSSET_EL0, 0b11, 0b011, 0b1001, 0b1110, 0b011, RwSafe);
454 $macro!(PMSCR_EL1, 0b11, 0b000, 0b1001, 0b1001, 0b000, RwSafe);
455 $macro!(PMSCR_EL12, 0b11, 0b101, 0b1001, 0b1001, 0b000, RwSafe);
456 $macro!(PMSCR_EL2, 0b11, 0b100, 0b1001, 0b1001, 0b000, RwSafe);
457 $macro!(PMSDSFR_EL1, 0b11, 0b000, 0b1001, 0b1010, 0b100, RwSafe);
458 $macro!(PMSELR_EL0, 0b11, 0b011, 0b1001, 0b1100, 0b101, RwSafe);
459 $macro!(PMSEVFR_EL1, 0b11, 0b000, 0b1001, 0b1001, 0b101, RwSafe);
460 $macro!(PMSFCR_EL1, 0b11, 0b000, 0b1001, 0b1001, 0b100, RwSafe);
461 $macro!(PMSICR_EL1, 0b11, 0b000, 0b1001, 0b1001, 0b010, RwSafe);
462 $macro!(PMSIDR_EL1, 0b11, 0b000, 0b1001, 0b1001, 0b111, Ro);
463 $macro!(PMSIRR_EL1, 0b11, 0b000, 0b1001, 0b1001, 0b011, RwSafe);
464 $macro!(PMSLATFR_EL1, 0b11, 0b000, 0b1001, 0b1001, 0b110, RwSafe);
465 $macro!(PMSNEVFR_EL1, 0b11, 0b000, 0b1001, 0b1001, 0b001, RwSafe);
466 $macro!(PMSSCR_EL1, 0b11, 0b000, 0b1001, 0b1101, 0b011, RwSafe);
467 $macro!(PMSWINC_EL0, 0b11, 0b011, 0b1001, 0b1100, 0b100, WoSafe);
468 $macro!(PMUACR_EL1, 0b11, 0b000, 0b1001, 0b1110, 0b100, RwSafe);
469 $macro!(PMUSERENR_EL0, 0b11, 0b011, 0b1001, 0b1110, 0b000, RwSafe);
470 $macro!(PMXEVCNTR_EL0, 0b11, 0b011, 0b1001, 0b1101, 0b010, RwSafe);
471 $macro!(PMXEVTYPER_EL0, 0b11, 0b011, 0b1001, 0b1101, 0b001, RwSafe);
472 $macro!(PMZR_EL0, 0b11, 0b011, 0b1001, 0b1101, 0b100, WoSafe);
473 $macro!(POR_EL0, 0b11, 0b011, 0b1010, 0b0010, 0b100, RwSafe);
474 $macro!(POR_EL1, 0b11, 0b000, 0b1010, 0b0010, 0b100, RwSafe);
475 $macro!(POR_EL12, 0b11, 0b101, 0b1010, 0b0010, 0b100, RwSafe);
476 $macro!(POR_EL2, 0b11, 0b100, 0b1010, 0b0010, 0b100, RwSafe);
477 $macro!(POR_EL3, 0b11, 0b110, 0b1010, 0b0010, 0b100, RwSafe);
478 $macro!(RCWMASK_EL1, 0b11, 0b000, 0b1101, 0b0000, 0b110, RwSafe);
479 $macro!(RCWSMASK_EL1, 0b11, 0b000, 0b1101, 0b0000, 0b011, RwSafe);
480 $macro!(REVIDR_EL1, 0b11, 0b000, 0b0000, 0b0000, 0b110, Ro);
481 $macro!(RGSR_EL1, 0b11, 0b000, 0b0001, 0b0000, 0b101, RwSafe);
482 $macro!(RMR_EL1, 0b11, 0b000, 0b1100, 0b0000, 0b010, RwSafe);
483 $macro!(RMR_EL2, 0b11, 0b100, 0b1100, 0b0000, 0b010, RwSafe);
484 $macro!(RMR_EL3, 0b11, 0b110, 0b1100, 0b0000, 0b010, RwSafe);
485 $macro!(RNDR, 0b11, 0b011, 0b0010, 0b0100, 0b000, Ro);
486 $macro!(RNDRRS, 0b11, 0b011, 0b0010, 0b0100, 0b001, Ro);
487 $macro!(RVBAR_EL1, 0b11, 0b000, 0b1100, 0b0000, 0b001, Ro);
488 $macro!(RVBAR_EL2, 0b11, 0b100, 0b1100, 0b0000, 0b001, Ro);
489 $macro!(RVBAR_EL3, 0b11, 0b110, 0b1100, 0b0000, 0b001, Ro);
490 $macro!(SCR_EL3, 0b11, 0b110, 0b0001, 0b0001, 0b000, RwSafe);
491
492 $macro!(SCTLR_EL1, 0b11, 0b000, 0b0001, 0b0000, 0b000, RwUnsafe);
496 $macro!(SCTLR_EL12, 0b11, 0b101, 0b0001, 0b0000, 0b000, RwUnsafe);
497 $macro!(SCTLR_EL2, 0b11, 0b100, 0b0001, 0b0000, 0b000, RwUnsafe);
498 $macro!(SCTLR_EL3, 0b11, 0b110, 0b0001, 0b0000, 0b000, RwUnsafe);
499 $macro!(SCTLR2_EL1, 0b11, 0b000, 0b0001, 0b0000, 0b011, RwUnsafe);
500 $macro!(SCTLR2_EL12, 0b11, 0b101, 0b0001, 0b0000, 0b011, RwUnsafe);
501 $macro!(SCTLR2_EL2, 0b11, 0b100, 0b0001, 0b0000, 0b011, RwUnsafe);
502 $macro!(SCTLR2_EL3, 0b11, 0b110, 0b0001, 0b0000, 0b011, RwUnsafe);
503
504 $macro!(SCXTNUM_EL0, 0b11, 0b011, 0b1101, 0b0000, 0b111, RwSafe);
505 $macro!(SCXTNUM_EL1, 0b11, 0b000, 0b1101, 0b0000, 0b111, RwSafe);
506 $macro!(SCXTNUM_EL12, 0b11, 0b101, 0b1101, 0b0000, 0b111, RwSafe);
507 $macro!(SCXTNUM_EL2, 0b11, 0b100, 0b1101, 0b0000, 0b111, RwSafe);
508 $macro!(SCXTNUM_EL3, 0b11, 0b110, 0b1101, 0b0000, 0b111, RwSafe);
509 $macro!(SDER32_EL2, 0b11, 0b100, 0b0001, 0b0011, 0b001, RwSafe);
510 $macro!(SDER32_EL3, 0b11, 0b110, 0b0001, 0b0001, 0b001, RwSafe);
511 $macro!(SMCR_EL1, 0b11, 0b000, 0b0001, 0b0010, 0b110, RwSafe);
512 $macro!(SMCR_EL12, 0b11, 0b101, 0b0001, 0b0010, 0b110, RwSafe);
513 $macro!(SMCR_EL2, 0b11, 0b100, 0b0001, 0b0010, 0b110, RwSafe);
514 $macro!(SMCR_EL3, 0b11, 0b110, 0b0001, 0b0010, 0b110, RwSafe);
515 $macro!(SMIDR_EL1, 0b11, 0b001, 0b0000, 0b0000, 0b110, Ro);
516 $macro!(SMPRI_EL1, 0b11, 0b000, 0b0001, 0b0010, 0b100, RwSafe);
517 $macro!(SMPRIMAP_EL2, 0b11, 0b100, 0b0001, 0b0010, 0b101, RwSafe);
518
519 $macro!(SP_EL0, 0b11, 0b000, 0b0100, 0b0001, 0b000, RwUnsafe);
523 $macro!(SP_EL1, 0b11, 0b100, 0b0100, 0b0001, 0b000, RwUnsafe);
524 $macro!(SP_EL2, 0b11, 0b110, 0b0100, 0b0001, 0b000, RwUnsafe);
525
526 $macro!(SPMACCESSR_EL1, 0b10, 0b000, 0b1001, 0b1101, 0b011, RwSafe);
527 $macro!(SPMACCESSR_EL12, 0b10, 0b101, 0b1001, 0b1101, 0b011, RwSafe);
528 $macro!(SPMACCESSR_EL2, 0b10, 0b100, 0b1001, 0b1101, 0b011, RwSafe);
529 $macro!(SPMACCESSR_EL3, 0b10, 0b110, 0b1001, 0b1101, 0b011, RwSafe);
530 $macro!(SPMCFGR_EL1, 0b10, 0b000, 0b1001, 0b1101, 0b111, Ro);
531 $macro!(SPMCNTENCLR_EL0, 0b10, 0b011, 0b1001, 0b1100, 0b010, RwSafe);
532 $macro!(SPMCNTENSET_EL0, 0b10, 0b011, 0b1001, 0b1100, 0b001, RwSafe);
533 $macro!(SPMCR_EL0, 0b10, 0b011, 0b1001, 0b1100, 0b000, RwSafe);
534 $macro!(SPMDEVAFF_EL1, 0b10, 0b000, 0b1001, 0b1101, 0b110, Ro);
535 $macro!(SPMDEVARCH_EL1, 0b10, 0b000, 0b1001, 0b1101, 0b101, Ro);
536 $macro!(SPMIIDR_EL1, 0b10, 0b000, 0b1001, 0b1101, 0b100, Ro);
537 $macro!(SPMINTENCLR_EL1, 0b10, 0b000, 0b1001, 0b1110, 0b010, RwSafe);
538 $macro!(SPMINTENSET_EL1, 0b10, 0b000, 0b1001, 0b1110, 0b001, RwSafe);
539 $macro!(SPMOVSCLR_EL0, 0b10, 0b011, 0b1001, 0b1100, 0b011, RwSafe);
540 $macro!(SPMOVSSET_EL0, 0b10, 0b011, 0b1001, 0b1110, 0b011, RwSafe);
541 $macro!(SPMRoOTCR_EL3, 0b10, 0b110, 0b1001, 0b1110, 0b111, RwSafe);
542 $macro!(SPMSCR_EL1, 0b10, 0b111, 0b1001, 0b1110, 0b111, RwSafe);
543 $macro!(SPMSELR_EL0, 0b10, 0b011, 0b1001, 0b1100, 0b101, RwSafe);
544 $macro!(SPMZR_EL0, 0b10, 0b011, 0b1001, 0b1100, 0b100, WoSafe);
545
546 $macro!(SPSR_EL1, 0b11, 0b000, 0b0100, 0b0000, 0b000, RwUnsafe);
550 $macro!(SPSR_EL12, 0b11, 0b101, 0b0100, 0b0000, 0b000, RwUnsafe);
551 $macro!(SPSR_EL2, 0b11, 0b100, 0b0100, 0b0000, 0b000, RwUnsafe);
552 $macro!(SPSR_EL3, 0b11, 0b110, 0b0100, 0b0000, 0b000, RwUnsafe);
553 $macro!(SPSR_abt, 0b11, 0b100, 0b0100, 0b0011, 0b001, RwUnsafe);
554 $macro!(SPSR_fiq, 0b11, 0b100, 0b0100, 0b0011, 0b011, RwUnsafe);
555 $macro!(SPSR_irq, 0b11, 0b100, 0b0100, 0b0011, 0b000, RwUnsafe);
556 $macro!(SPSR_und, 0b11, 0b100, 0b0100, 0b0011, 0b010, RwUnsafe);
557
558 $macro!(SPSel, 0b11, 0b000, 0b0100, 0b0010, 0b000, RwUnsafe);
560
561 $macro!(SSBS, 0b11, 0b011, 0b0100, 0b0010, 0b110, RwSafe);
562 $macro!(SVCR, 0b11, 0b011, 0b0100, 0b0010, 0b010, RwSafe);
563 $macro!(S2PIR_EL2, 0b11, 0b100, 0b1010, 0b0010, 0b101, RwSafe);
564 $macro!(S2POR_EL1, 0b11, 0b000, 0b1010, 0b0010, 0b101, RwSafe);
565 $macro!(TCO, 0b11, 0b011, 0b0100, 0b0010, 0b111, RwSafe);
566
567 $macro!(TCR_EL1, 0b11, 0b000, 0b0010, 0b0000, 0b010, RwUnsafe);
571 $macro!(TCR_EL12, 0b11, 0b101, 0b0010, 0b0000, 0b010, RwUnsafe);
572 $macro!(TCR_EL2, 0b11, 0b100, 0b0010, 0b0000, 0b010, RwUnsafe);
573 $macro!(TCR_EL3, 0b11, 0b110, 0b0010, 0b0000, 0b010, RwUnsafe);
574 $macro!(TCR2_EL1, 0b11, 0b000, 0b0010, 0b0000, 0b011, RwUnsafe);
575 $macro!(TCR2_EL12, 0b11, 0b101, 0b0010, 0b0000, 0b011, RwUnsafe);
576 $macro!(TCR2_EL2, 0b11, 0b100, 0b0010, 0b0000, 0b011, RwUnsafe);
577
578 $macro!(TFSR_EL1, 0b11, 0b000, 0b0101, 0b0110, 0b000, RwSafe);
579 $macro!(TFSR_EL12, 0b11, 0b101, 0b0101, 0b0110, 0b000, RwSafe);
580 $macro!(TFSR_EL2, 0b11, 0b100, 0b0101, 0b0110, 0b000, RwSafe);
581 $macro!(TFSR_EL3, 0b11, 0b110, 0b0101, 0b0110, 0b000, RwSafe);
582 $macro!(TFSRE0_EL1, 0b11, 0b000, 0b0101, 0b0110, 0b001, RwSafe);
583 $macro!(TPIDR_EL0, 0b11, 0b011, 0b1101, 0b0000, 0b010, RwSafe);
584 $macro!(TPIDR_EL1, 0b11, 0b000, 0b1101, 0b0000, 0b100, RwSafe);
585 $macro!(TPIDR_EL2, 0b11, 0b100, 0b1101, 0b0000, 0b010, RwSafe);
586 $macro!(TPIDR_EL3, 0b11, 0b110, 0b1101, 0b0000, 0b010, RwSafe);
587 $macro!(TPIDRRo_EL0, 0b11, 0b011, 0b1101, 0b0000, 0b011, RwSafe);
588 $macro!(TPIDR2_EL0, 0b11, 0b011, 0b1101, 0b0000, 0b101, RwSafe);
589 $macro!(TRBBASER_EL1, 0b11, 0b000, 0b1001, 0b1011, 0b010, RwSafe);
590 $macro!(TRBIDR_EL1, 0b11, 0b000, 0b1001, 0b1011, 0b111, Ro);
591 $macro!(TRBLIMITR_EL1, 0b11, 0b000, 0b1001, 0b1011, 0b000, RwSafe);
592 $macro!(TRBMAR_EL1, 0b11, 0b000, 0b1001, 0b1011, 0b100, RwSafe);
593 $macro!(TRBMPAM_EL1, 0b11, 0b000, 0b1001, 0b1011, 0b101, RwSafe);
594 $macro!(TRBPTR_EL1, 0b11, 0b000, 0b1001, 0b1011, 0b001, RwSafe);
595 $macro!(TRBSR_EL1, 0b11, 0b000, 0b1001, 0b1011, 0b011, RwSafe);
596 $macro!(TRBTRG_EL1, 0b11, 0b000, 0b1001, 0b1011, 0b110, RwSafe);
597 $macro!(TRCAUTHSTATUS, 0b10, 0b001, 0b0111, 0b1110, 0b110, Ro);
598 $macro!(TRCAUXCTLR, 0b10, 0b001, 0b0000, 0b0110, 0b000, RwSafe);
599 $macro!(TRCBBCTLR, 0b10, 0b001, 0b0000, 0b1111, 0b000, RwSafe);
600 $macro!(TRCCCCTLR, 0b10, 0b001, 0b0000, 0b1110, 0b000, RwSafe);
601 $macro!(TRCCIDCCTLR0, 0b10, 0b001, 0b0011, 0b0000, 0b010, RwSafe);
602 $macro!(TRCCIDCCTLR1, 0b10, 0b001, 0b0011, 0b0001, 0b010, RwSafe);
603 $macro!(TRCCLAIMCLR, 0b10, 0b001, 0b0111, 0b1001, 0b110, RwSafe);
604 $macro!(TRCCLAIMSET, 0b10, 0b001, 0b0111, 0b1000, 0b110, RwSafe);
605 $macro!(TRCCONFIGR, 0b10, 0b001, 0b0000, 0b0100, 0b000, RwSafe);
606 $macro!(TRCDEVARCH, 0b10, 0b001, 0b0111, 0b1111, 0b110, Ro);
607 $macro!(TRCDEVID, 0b10, 0b001, 0b0111, 0b0010, 0b111, Ro);
608 $macro!(TRCEVENTCTL0R, 0b10, 0b001, 0b0000, 0b1000, 0b000, RwSafe);
609 $macro!(TRCEVENTCTL1R, 0b10, 0b001, 0b0000, 0b1001, 0b000, RwSafe);
610 $macro!(TRCIDR0, 0b10, 0b001, 0b0000, 0b1000, 0b111, Ro);
611 $macro!(TRCIDR1, 0b10, 0b001, 0b0000, 0b1001, 0b111, Ro);
612 $macro!(TRCIDR10, 0b10, 0b001, 0b0000, 0b0010, 0b110, Ro);
613 $macro!(TRCIDR11, 0b10, 0b001, 0b0000, 0b0011, 0b110, Ro);
614 $macro!(TRCIDR12, 0b10, 0b001, 0b0000, 0b0100, 0b110, Ro);
615 $macro!(TRCIDR13, 0b10, 0b001, 0b0000, 0b0101, 0b110, Ro);
616 $macro!(TRCIDR2, 0b10, 0b001, 0b0000, 0b1010, 0b111, Ro);
617 $macro!(TRCIDR3, 0b10, 0b001, 0b0000, 0b1011, 0b111, Ro);
618 $macro!(TRCIDR4, 0b10, 0b001, 0b0000, 0b1100, 0b111, Ro);
619 $macro!(TRCIDR5, 0b10, 0b001, 0b0000, 0b1101, 0b111, Ro);
620 $macro!(TRCIDR6, 0b10, 0b001, 0b0000, 0b1110, 0b111, Ro);
621 $macro!(TRCIDR7, 0b10, 0b001, 0b0000, 0b1111, 0b111, Ro);
622 $macro!(TRCIDR8, 0b10, 0b001, 0b0000, 0b0000, 0b110, Ro);
623 $macro!(TRCIDR9, 0b10, 0b001, 0b0000, 0b0001, 0b110, Ro);
624 $macro!(TRCIMSPEC0, 0b10, 0b001, 0b0000, 0b0000, 0b111, RwSafe);
625 $macro!(TRCITECR_EL1, 0b11, 0b000, 0b0001, 0b0010, 0b011, RwSafe);
626 $macro!(TRCITECR_EL12, 0b11, 0b101, 0b0001, 0b0010, 0b011, RwSafe);
627 $macro!(TRCITECR_EL2, 0b11, 0b100, 0b0001, 0b0010, 0b011, RwSafe);
628 $macro!(TRCITEEDCR, 0b10, 0b001, 0b0000, 0b0010, 0b001, RwSafe);
629 $macro!(TRCOSLSR, 0b10, 0b001, 0b0001, 0b0001, 0b100, Ro);
630 $macro!(TRCPRGCTLR, 0b10, 0b001, 0b0000, 0b0001, 0b000, RwSafe);
631 $macro!(TRCQCTLR, 0b10, 0b001, 0b0000, 0b0001, 0b001, RwSafe);
632 $macro!(TRCRSR, 0b10, 0b001, 0b0000, 0b1010, 0b000, RwSafe);
633 $macro!(TRCSEQRSTEVR, 0b10, 0b001, 0b0000, 0b0110, 0b100, RwSafe);
634 $macro!(TRCSEQSTR, 0b10, 0b001, 0b0000, 0b0111, 0b100, RwSafe);
635 $macro!(TRCSTALLCTLR, 0b10, 0b001, 0b0000, 0b1011, 0b000, RwSafe);
636 $macro!(TRCSTATR, 0b10, 0b001, 0b0000, 0b0011, 0b000, Ro);
637 $macro!(TRCSYNCPR, 0b10, 0b001, 0b0000, 0b1101, 0b000, RwSafe);
638 $macro!(TRCTRACEIDR, 0b10, 0b001, 0b0000, 0b0000, 0b001, RwSafe);
639 $macro!(TRCTSCTLR, 0b10, 0b001, 0b0000, 0b1100, 0b000, RwSafe);
640 $macro!(TRCVICTLR, 0b10, 0b001, 0b0000, 0b0000, 0b010, RwSafe);
641 $macro!(TRCVIIECTLR, 0b10, 0b001, 0b0000, 0b0001, 0b010, RwSafe);
642 $macro!(TRCVIPCSSCTLR, 0b10, 0b001, 0b0000, 0b0011, 0b010, RwSafe);
643 $macro!(TRCVISSCTLR, 0b10, 0b001, 0b0000, 0b0010, 0b010, RwSafe);
644 $macro!(TRCVMIDCCTLR0, 0b10, 0b001, 0b0011, 0b0010, 0b010, RwSafe);
645 $macro!(TRCVMIDCCTLR1, 0b10, 0b001, 0b0011, 0b0011, 0b010, RwSafe);
646 $macro!(TRFCR_EL1, 0b11, 0b000, 0b0001, 0b0010, 0b001, RwSafe);
647 $macro!(TRFCR_EL12, 0b11, 0b101, 0b0001, 0b0010, 0b001, RwSafe);
648 $macro!(TRFCR_EL2, 0b11, 0b100, 0b0001, 0b0010, 0b001, RwSafe);
649
650 $macro!(TTBR0_EL1, 0b11, 0b000, 0b0010, 0b0000, 0b000, RwUnsafe);
654 $macro!(TTBR0_EL12, 0b11, 0b101, 0b0010, 0b0000, 0b000, RwUnsafe);
655 $macro!(TTBR0_EL2, 0b11, 0b100, 0b0010, 0b0000, 0b000, RwUnsafe);
656 $macro!(TTBR0_EL3, 0b11, 0b110, 0b0010, 0b0000, 0b000, RwUnsafe);
657 $macro!(TTBR1_EL1, 0b11, 0b000, 0b0010, 0b0000, 0b001, RwUnsafe);
658 $macro!(TTBR1_EL12, 0b11, 0b101, 0b0010, 0b0000, 0b001, RwUnsafe);
659 $macro!(TTBR1_EL2, 0b11, 0b100, 0b0010, 0b0000, 0b001, RwUnsafe);
660
661 $macro!(UAO, 0b11, 0b000, 0b0100, 0b0010, 0b100, RwSafe);
662 $macro!(VBAR_EL1, 0b11, 0b000, 0b1100, 0b0000, 0b000, RwSafe);
663 $macro!(VBAR_EL12, 0b11, 0b101, 0b1100, 0b0000, 0b000, RwSafe);
664 $macro!(VBAR_EL2, 0b11, 0b100, 0b1100, 0b0000, 0b000, RwSafe);
665 $macro!(VBAR_EL3, 0b11, 0b110, 0b1100, 0b0000, 0b000, RwSafe);
666 $macro!(VDISR_EL2, 0b11, 0b100, 0b1100, 0b0001, 0b001, RwSafe);
667 $macro!(VDISR_EL3, 0b11, 0b110, 0b1100, 0b0001, 0b001, RwSafe);
668 $macro!(VMECID_A_EL2, 0b11, 0b100, 0b1010, 0b1001, 0b001, RwSafe);
669 $macro!(VMECID_P_EL2, 0b11, 0b100, 0b1010, 0b1001, 0b000, RwSafe);
670 $macro!(VMPIDR_EL2, 0b11, 0b100, 0b0000, 0b0000, 0b101, RwSafe);
671
672 $macro!(VNCR_EL2, 0b11, 0b100, 0b0010, 0b0010, 0b000, RwSafe);
675
676 $macro!(VPIDR_EL2, 0b11, 0b100, 0b0000, 0b0000, 0b000, RwSafe);
677 $macro!(VSESR_EL2, 0b11, 0b100, 0b0101, 0b0010, 0b011, RwSafe);
678 $macro!(VSESR_EL3, 0b11, 0b110, 0b0101, 0b0010, 0b011, RwSafe);
679
680 $macro!(VSTCR_EL2, 0b11, 0b100, 0b0010, 0b0110, 0b010, RwSafe);
683
684 $macro!(VSTTBR_EL2, 0b11, 0b100, 0b0010, 0b0110, 0b000, RwSafe);
685 $macro!(VTCR_EL2, 0b11, 0b100, 0b0010, 0b0001, 0b010, RwSafe);
686 $macro!(VTTBR_EL2, 0b11, 0b100, 0b0010, 0b0001, 0b000, RwSafe);
687 $macro!(ZCR_EL1, 0b11, 0b000, 0b0001, 0b0010, 0b000, RwSafe);
688 $macro!(ZCR_EL12, 0b11, 0b101, 0b0001, 0b0010, 0b000, RwSafe);
689 $macro!(ZCR_EL2, 0b11, 0b100, 0b0001, 0b0010, 0b000, RwSafe);
690 $macro!(ZCR_EL3, 0b11, 0b110, 0b0001, 0b0010, 0b000, RwSafe);
691 };
692}
693
694macro_rules! define_spec {
695 ($mnemonic:ident, $op0:literal, $op1:literal, $crn:literal, $crm:literal, $op2:literal, $access:ty) => {
696 pub type $mnemonic = SysRegSpec<$op0, $op1, $crn, $crm, $op2, $access>;
697 };
698}
699
700for_each_spec!(define_spec);