| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: armreg.h,v 1.36 2020/02/29 21:29:23 ryo Exp $ */ | | 1 | /* $NetBSD: armreg.h,v 1.37 2020/03/06 20:13:24 ryo Exp $ */ |
2 | | | 2 | |
3 | /*- | | 3 | /*- |
4 | * Copyright (c) 2014 The NetBSD Foundation, Inc. | | 4 | * Copyright (c) 2014 The NetBSD Foundation, Inc. |
5 | * All rights reserved. | | 5 | * All rights reserved. |
6 | * | | 6 | * |
7 | * This code is derived from software contributed to The NetBSD Foundation | | 7 | * This code is derived from software contributed to The NetBSD Foundation |
8 | * by Matt Thomas of 3am Software Foundry. | | 8 | * by Matt Thomas of 3am Software Foundry. |
9 | * | | 9 | * |
10 | * Redistribution and use in source and binary forms, with or without | | 10 | * Redistribution and use in source and binary forms, with or without |
11 | * modification, are permitted provided that the following conditions | | 11 | * modification, are permitted provided that the following conditions |
12 | * are met: | | 12 | * are met: |
13 | * 1. Redistributions of source code must retain the above copyright | | 13 | * 1. Redistributions of source code must retain the above copyright |
14 | * notice, this list of conditions and the following disclaimer. | | 14 | * notice, this list of conditions and the following disclaimer. |
| @@ -86,26 +86,27 @@ reg_##regname##_write(uint64_t __val) | | | @@ -86,26 +86,27 @@ reg_##regname##_write(uint64_t __val) |
86 | | | 86 | |
87 | #define AARCH64REG_ATWRITE_INLINE(regname) \ | | 87 | #define AARCH64REG_ATWRITE_INLINE(regname) \ |
88 | AARCH64REG_ATWRITE_INLINE2(regname, regname) | | 88 | AARCH64REG_ATWRITE_INLINE2(regname, regname) |
89 | | | 89 | |
90 | /* | | 90 | /* |
91 | * System registers available at EL0 (user) | | 91 | * System registers available at EL0 (user) |
92 | */ | | 92 | */ |
93 | AARCH64REG_READ_INLINE(ctr_el0) // Cache Type Register | | 93 | AARCH64REG_READ_INLINE(ctr_el0) // Cache Type Register |
94 | | | 94 | |
95 | #define CTR_EL0_CWG_LINE __BITS(27,24) // Cacheback Writeback Granule | | 95 | #define CTR_EL0_CWG_LINE __BITS(27,24) // Cacheback Writeback Granule |
96 | #define CTR_EL0_ERG_LINE __BITS(23,20) // Exclusives Reservation Granule | | 96 | #define CTR_EL0_ERG_LINE __BITS(23,20) // Exclusives Reservation Granule |
97 | #define CTR_EL0_DMIN_LINE __BITS(19,16) // Dcache MIN LINE size (log2 - 2) | | 97 | #define CTR_EL0_DMIN_LINE __BITS(19,16) // Dcache MIN LINE size (log2 - 2) |
98 | #define CTR_EL0_L1IP_MASK __BITS(15,14) | | 98 | #define CTR_EL0_L1IP_MASK __BITS(15,14) |
| | | 99 | #define CTR_EL0_L1IP_VPIPT 0 // VMID-aware Physical Index, Physical Tag |
99 | #define CTR_EL0_L1IP_AIVIVT 1 // ASID-tagged Virtual Index, Virtual Tag | | 100 | #define CTR_EL0_L1IP_AIVIVT 1 // ASID-tagged Virtual Index, Virtual Tag |
100 | #define CTR_EL0_L1IP_VIPT 2 // Virtual Index, Physical Tag | | 101 | #define CTR_EL0_L1IP_VIPT 2 // Virtual Index, Physical Tag |
101 | #define CTR_EL0_L1IP_PIPT 3 // Physical Index, Physical Tag | | 102 | #define CTR_EL0_L1IP_PIPT 3 // Physical Index, Physical Tag |
102 | #define CTR_EL0_IMIN_LINE __BITS(3,0) // Icache MIN LINE size (log2 - 2) | | 103 | #define CTR_EL0_IMIN_LINE __BITS(3,0) // Icache MIN LINE size (log2 - 2) |
103 | | | 104 | |
104 | AARCH64REG_READ_INLINE(dczid_el0) // Data Cache Zero ID Register | | 105 | AARCH64REG_READ_INLINE(dczid_el0) // Data Cache Zero ID Register |
105 | | | 106 | |
106 | #define DCZID_DZP __BIT(4) // Data Zero Prohibited | | 107 | #define DCZID_DZP __BIT(4) // Data Zero Prohibited |
107 | #define DCZID_BS __BITS(3,0) // Block Size (log2 - 2) | | 108 | #define DCZID_BS __BITS(3,0) // Block Size (log2 - 2) |
108 | | | 109 | |
109 | AARCH64REG_READ_INLINE(fpcr) // Floating Point Control Register | | 110 | AARCH64REG_READ_INLINE(fpcr) // Floating Point Control Register |
110 | AARCH64REG_WRITE_INLINE(fpcr) | | 111 | AARCH64REG_WRITE_INLINE(fpcr) |
111 | | | 112 | |
| @@ -162,80 +163,121 @@ AARCH64REG_READ_INLINE(tpidrro_el0) // T | | | @@ -162,80 +163,121 @@ AARCH64REG_READ_INLINE(tpidrro_el0) // T |
162 | */ | | 163 | */ |
163 | | | 164 | |
164 | /* | | 165 | /* |
165 | * These are readonly registers | | 166 | * These are readonly registers |
166 | */ | | 167 | */ |
167 | AARCH64REG_READ_INLINE(aidr_el1) | | 168 | AARCH64REG_READ_INLINE(aidr_el1) |
168 | | | 169 | |
169 | AARCH64REG_READ_INLINE2(cbar_el1, s3_1_c15_c3_0) // Cortex-A57 | | 170 | AARCH64REG_READ_INLINE2(cbar_el1, s3_1_c15_c3_0) // Cortex-A57 |
170 | | | 171 | |
171 | #define CBAR_PA __BITS(47,18) | | 172 | #define CBAR_PA __BITS(47,18) |
172 | | | 173 | |
173 | AARCH64REG_READ_INLINE(ccsidr_el1) | | 174 | AARCH64REG_READ_INLINE(ccsidr_el1) |
174 | | | 175 | |
175 | #define CCSIDR_WT __BIT(31) // Write-through supported | | 176 | #define CCSIDR_WT __BIT(31) // OBSOLETE: Write-through supported |
176 | #define CCSIDR_WB __BIT(30) // Write-back supported | | 177 | #define CCSIDR_WB __BIT(30) // OBSOLETE: Write-back supported |
177 | #define CCSIDR_RA __BIT(29) // Read-allocation supported | | 178 | #define CCSIDR_RA __BIT(29) // OBSOLETE: Read-allocation supported |
178 | #define CCSIDR_WA __BIT(28) // Write-allocation supported | | 179 | #define CCSIDR_WA __BIT(28) // OBSOLETE: Write-allocation supported |
179 | #define CCSIDR_NUMSET __BITS(27,13) // (Number of sets in cache) - 1 | | 180 | #define CCSIDR_NUMSET __BITS(27,13) // (Number of sets in cache) - 1 |
180 | #define CCSIDR_ASSOC __BITS(12,3) // (Associativity of cache) - 1 | | 181 | #define CCSIDR_ASSOC __BITS(12,3) // (Associativity of cache) - 1 |
181 | #define CCSIDR_LINESIZE __BITS(2,0) // Number of bytes in cache line | | 182 | #define CCSIDR_LINESIZE __BITS(2,0) // Number of bytes in cache line |
182 | | | 183 | |
183 | AARCH64REG_READ_INLINE(clidr_el1) | | 184 | AARCH64REG_READ_INLINE(clidr_el1) |
184 | | | 185 | |
| | | 186 | #define CLIDR_ICB __BITS(32,30) // Inner cache boundary |
185 | #define CLIDR_LOUU __BITS(29,27) // Level of Unification Uniprocessor | | 187 | #define CLIDR_LOUU __BITS(29,27) // Level of Unification Uniprocessor |
186 | #define CLIDR_LOC __BITS(26,24) // Level of Coherency | | 188 | #define CLIDR_LOC __BITS(26,24) // Level of Coherency |
187 | #define CLIDR_LOUIS __BITS(23,21) // Level of Unification InnerShareable*/ | | 189 | #define CLIDR_LOUIS __BITS(23,21) // Level of Unification InnerShareable*/ |
188 | #define CLIDR_CTYPE7 __BITS(20,18) // Cache Type field for level7 | | 190 | #define CLIDR_CTYPE7 __BITS(20,18) // Cache Type field for level7 |
189 | #define CLIDR_CTYPE6 __BITS(17,15) // Cache Type field for level6 | | 191 | #define CLIDR_CTYPE6 __BITS(17,15) // Cache Type field for level6 |
190 | #define CLIDR_CTYPE5 __BITS(14,12) // Cache Type field for level5 | | 192 | #define CLIDR_CTYPE5 __BITS(14,12) // Cache Type field for level5 |
191 | #define CLIDR_CTYPE4 __BITS(11,9) // Cache Type field for level4 | | 193 | #define CLIDR_CTYPE4 __BITS(11,9) // Cache Type field for level4 |
192 | #define CLIDR_CTYPE3 __BITS(8,6) // Cache Type field for level3 | | 194 | #define CLIDR_CTYPE3 __BITS(8,6) // Cache Type field for level3 |
193 | #define CLIDR_CTYPE2 __BITS(5,3) // Cache Type field for level2 | | 195 | #define CLIDR_CTYPE2 __BITS(5,3) // Cache Type field for level2 |
194 | #define CLIDR_CTYPE1 __BITS(2,0) // Cache Type field for level1 | | 196 | #define CLIDR_CTYPE1 __BITS(2,0) // Cache Type field for level1 |
195 | #define CLIDR_TYPE_NOCACHE 0 // No cache | | 197 | #define CLIDR_TYPE_NOCACHE 0 // No cache |
196 | #define CLIDR_TYPE_ICACHE 1 // Instruction cache only | | 198 | #define CLIDR_TYPE_ICACHE 1 // Instruction cache only |
197 | #define CLIDR_TYPE_DCACHE 2 // Data cache only | | 199 | #define CLIDR_TYPE_DCACHE 2 // Data cache only |
198 | #define CLIDR_TYPE_IDCACHE 3 // Separate inst and data caches | | 200 | #define CLIDR_TYPE_IDCACHE 3 // Separate inst and data caches |
199 | #define CLIDR_TYPE_UNIFIEDCACHE 4 // Unified cache | | 201 | #define CLIDR_TYPE_UNIFIEDCACHE 4 // Unified cache |
200 | | | 202 | |
201 | AARCH64REG_READ_INLINE(currentel) | | 203 | AARCH64REG_READ_INLINE(currentel) |
202 | AARCH64REG_READ_INLINE(id_aa64afr0_el1) | | 204 | AARCH64REG_READ_INLINE(id_aa64afr0_el1) |
203 | AARCH64REG_READ_INLINE(id_aa64afr1_el1) | | 205 | AARCH64REG_READ_INLINE(id_aa64afr1_el1) |
204 | AARCH64REG_READ_INLINE(id_aa64dfr0_el1) | | 206 | AARCH64REG_READ_INLINE(id_aa64dfr0_el1) |
205 | | | 207 | |
| | | 208 | #define ID_AA64DFR0_EL1_TRACEFILT __BITS(43,40) |
| | | 209 | #define ID_AA64DFR0_EL1_TRACEFILT_NONE 0 |
| | | 210 | #define ID_AA64DFR0_EL1_TRACEFILT_IMPL 1 |
| | | 211 | #define ID_AA64DFR0_EL1_DBLLOCK __BITS(39,36 |
| | | 212 | #define ID_AA64DFR0_EL1_DBLLOCK_IMPL 0 |
| | | 213 | #define ID_AA64DFR0_EL1_DBLLOCK_NONE 15 |
| | | 214 | #define ID_AA64DFR0_EL1_PMSVER __BITS(35,32) |
206 | #define ID_AA64DFR0_EL1_CTX_CMPS __BITS(31,28) | | 215 | #define ID_AA64DFR0_EL1_CTX_CMPS __BITS(31,28) |
207 | #define ID_AA64DFR0_EL1_WRPS __BITS(20,23) | | 216 | #define ID_AA64DFR0_EL1_WRPS __BITS(20,23) |
208 | #define ID_AA64DFR0_EL1_BRPS __BITS(12,15) | | 217 | #define ID_AA64DFR0_EL1_BRPS __BITS(12,15) |
209 | #define ID_AA64DFR0_EL1_PMUVER __BITS(8,11) | | 218 | #define ID_AA64DFR0_EL1_PMUVER __BITS(8,11) |
210 | #define ID_AA64DFR0_EL1_PMUVER_NONE 0 | | 219 | #define ID_AA64DFR0_EL1_PMUVER_NONE 0 |
211 | #define ID_AA64DFR0_EL1_PMUVER_V3 1 | | 220 | #define ID_AA64DFR0_EL1_PMUVER_V3 1 |
212 | #define ID_AA64DFR0_EL1_PMUVER_NOV3 2 | | 221 | #define ID_AA64DFR0_EL1_PMUVER_NOV3 2 |
213 | #define ID_AA64DFR0_EL1_TRACEVER __BITS(4,7) | | 222 | #define ID_AA64DFR0_EL1_TRACEVER __BITS(4,7) |
214 | #define ID_AA64DFR0_EL1_TRACEVER_NONE 0 | | 223 | #define ID_AA64DFR0_EL1_TRACEVER_NONE 0 |
215 | #define ID_AA64DFR0_EL1_TRACEVER_IMPL 1 | | 224 | #define ID_AA64DFR0_EL1_TRACEVER_IMPL 1 |
216 | #define ID_AA64DFR0_EL1_DEBUGVER __BITS(0,3) | | 225 | #define ID_AA64DFR0_EL1_DEBUGVER __BITS(0,3) |
217 | #define ID_AA64DFR0_EL1_DEBUGVER_V8A 6 | | 226 | #define ID_AA64DFR0_EL1_DEBUGVER_V8A 6 |
218 | | | 227 | |
219 | AARCH64REG_READ_INLINE(id_aa64dfr1_el1) | | 228 | AARCH64REG_READ_INLINE(id_aa64dfr1_el1) |
220 | | | 229 | |
221 | AARCH64REG_READ_INLINE(id_aa64isar0_el1) | | 230 | AARCH64REG_READ_INLINE(id_aa64isar0_el1) |
222 | | | 231 | |
| | | 232 | #define ID_AA64ISAR0_EL1_RNDR __BITS(63,30) |
| | | 233 | #define ID_AA64ISAR0_EL1_RNDR_NONE 0 |
| | | 234 | #define ID_AA64ISAR0_EL1_RNDR_RNDRRS 1 |
| | | 235 | #define ID_AA64ISAR0_EL1_TLB __BITS(59,56) |
| | | 236 | #define ID_AA64ISAR0_EL1_TLB_NONE 0 |
| | | 237 | #define ID_AA64ISAR0_EL1_TLB_OS 1 |
| | | 238 | #define ID_AA64ISAR0_EL1_TLB_OS_TLB 2 |
| | | 239 | #define ID_AA64ISAR0_EL1_TS __BITS(55,52) |
| | | 240 | #define ID_AA64ISAR0_EL1_TS_NONE 0 |
| | | 241 | #define ID_AA64ISAR0_EL1_TS_CFINV 1 |
| | | 242 | #define ID_AA64ISAR0_EL1_TS_AXFLAG 2 |
| | | 243 | #define ID_AA64ISAR0_EL1_FHM __BITS(51,48) |
| | | 244 | #define ID_AA64ISAR0_EL1_FHM_NONE 0 |
| | | 245 | #define ID_AA64ISAR0_EL1_FHM_FMLAL 1 |
| | | 246 | #define ID_AA64ISAR0_EL1_DP __BITS(47,44) |
| | | 247 | #define ID_AA64ISAR0_EL1_DP_NONE 0 |
| | | 248 | #define ID_AA64ISAR0_EL1_DP_UDOT 1 |
| | | 249 | #define ID_AA64ISAR0_EL1_SM4 __BITS(43,40) |
| | | 250 | #define ID_AA64ISAR0_EL1_SM4_NONE 0 |
| | | 251 | #define ID_AA64ISAR0_EL1_SM4_SM4 1 |
| | | 252 | #define ID_AA64ISAR0_EL1_SM3 __BITS(39,36) |
| | | 253 | #define ID_AA64ISAR0_EL1_SM3_NONE 0 |
| | | 254 | #define ID_AA64ISAR0_EL1_SM3_SM3 1 |
| | | 255 | #define ID_AA64ISAR0_EL1_SHA3 __BITS(35,32) |
| | | 256 | #define ID_AA64ISAR0_EL1_SHA3_NONE 0 |
| | | 257 | #define ID_AA64ISAR0_EL1_SHA3_EOR3 1 |
| | | 258 | #define ID_AA64ISAR0_EL1_RDM __BITS(31,28) |
| | | 259 | #define ID_AA64ISAR0_EL1_RDM_NONE 0 |
| | | 260 | #define ID_AA64ISAR0_EL1_RDM_SQRDML 1 |
| | | 261 | #define ID_AA64ISAR0_EL1_ATOMIC __BITS(23,20) |
| | | 262 | #define ID_AA64ISAR0_EL1_ATOMIC_NONE 0 |
| | | 263 | #define ID_AA64ISAR0_EL1_ATOMIC_SWP 1 |
223 | #define ID_AA64ISAR0_EL1_CRC32 __BITS(19,16) | | 264 | #define ID_AA64ISAR0_EL1_CRC32 __BITS(19,16) |
224 | #define ID_AA64ISAR0_EL1_CRC32_NONE 0 | | 265 | #define ID_AA64ISAR0_EL1_CRC32_NONE 0 |
225 | #define ID_AA64ISAR0_EL1_CRC32_CRC32X 1 | | 266 | #define ID_AA64ISAR0_EL1_CRC32_CRC32X 1 |
226 | #define ID_AA64ISAR0_EL1_SHA2 __BITS(15,12) | | 267 | #define ID_AA64ISAR0_EL1_SHA2 __BITS(15,12) |
227 | #define ID_AA64ISAR0_EL1_SHA2_NONE 0 | | 268 | #define ID_AA64ISAR0_EL1_SHA2_NONE 0 |
228 | #define ID_AA64ISAR0_EL1_SHA2_SHA256HSU 1 | | 269 | #define ID_AA64ISAR0_EL1_SHA2_SHA256HSU 1 |
| | | 270 | #define ID_AA64ISAR0_EL1_SHA2_SHA512HSU 2 |
229 | #define ID_AA64ISAR0_EL1_SHA1 __BITS(11,8) | | 271 | #define ID_AA64ISAR0_EL1_SHA1 __BITS(11,8) |
230 | #define ID_AA64ISAR0_EL1_SHA1_NONE 0 | | 272 | #define ID_AA64ISAR0_EL1_SHA1_NONE 0 |
231 | #define ID_AA64ISAR0_EL1_SHA1_SHA1CPMHSU 1 | | 273 | #define ID_AA64ISAR0_EL1_SHA1_SHA1CPMHSU 1 |
232 | #define ID_AA64ISAR0_EL1_AES __BITS(7,4) | | 274 | #define ID_AA64ISAR0_EL1_AES __BITS(7,4) |
233 | #define ID_AA64ISAR0_EL1_AES_NONE 0 | | 275 | #define ID_AA64ISAR0_EL1_AES_NONE 0 |
234 | #define ID_AA64ISAR0_EL1_AES_AES 1 | | 276 | #define ID_AA64ISAR0_EL1_AES_AES 1 |
235 | #define ID_AA64ISAR0_EL1_AES_PMUL 2 | | 277 | #define ID_AA64ISAR0_EL1_AES_PMUL 2 |
236 | | | 278 | |
237 | AARCH64REG_READ_INLINE(id_aa64isar1_el1) | | 279 | AARCH64REG_READ_INLINE(id_aa64isar1_el1) |
238 | | | 280 | |
239 | #define ID_AA64ISAR1_EL1_SPECRES __BITS(43,40) | | 281 | #define ID_AA64ISAR1_EL1_SPECRES __BITS(43,40) |
240 | #define ID_AA64ISAR1_EL1_SPECRES_NONE 0 | | 282 | #define ID_AA64ISAR1_EL1_SPECRES_NONE 0 |
241 | #define ID_AA64ISAR1_EL1_SPECRES_SUPPORTED 1 | | 283 | #define ID_AA64ISAR1_EL1_SPECRES_SUPPORTED 1 |
| @@ -266,26 +308,27 @@ AARCH64REG_READ_INLINE(id_aa64isar1_el1) | | | @@ -266,26 +308,27 @@ AARCH64REG_READ_INLINE(id_aa64isar1_el1) |
266 | #define ID_AA64ISAR1_EL1_API_SUPPORTED 1 | | 308 | #define ID_AA64ISAR1_EL1_API_SUPPORTED 1 |
267 | #define ID_AA64ISAR1_EL1_API_ENHANCED 2 | | 309 | #define ID_AA64ISAR1_EL1_API_ENHANCED 2 |
268 | #define ID_AA64ISAR1_EL1_APA __BITS(7,4) | | 310 | #define ID_AA64ISAR1_EL1_APA __BITS(7,4) |
269 | #define ID_AA64ISAR1_EL1_APA_NONE 0 | | 311 | #define ID_AA64ISAR1_EL1_APA_NONE 0 |
270 | #define ID_AA64ISAR1_EL1_APA_QARMA 1 | | 312 | #define ID_AA64ISAR1_EL1_APA_QARMA 1 |
271 | #define ID_AA64ISAR1_EL1_APA_QARMA_ENH 2 | | 313 | #define ID_AA64ISAR1_EL1_APA_QARMA_ENH 2 |
272 | #define ID_AA64ISAR1_EL1_DPB __BITS(3,0) | | 314 | #define ID_AA64ISAR1_EL1_DPB __BITS(3,0) |
273 | #define ID_AA64ISAR1_EL1_DPB_NONE 0 | | 315 | #define ID_AA64ISAR1_EL1_DPB_NONE 0 |
274 | #define ID_AA64ISAR1_EL1_DPB_CVAP 1 | | 316 | #define ID_AA64ISAR1_EL1_DPB_CVAP 1 |
275 | #define ID_AA64ISAR1_EL1_DPB_CVAP_CVADP 2 | | 317 | #define ID_AA64ISAR1_EL1_DPB_CVAP_CVADP 2 |
276 | | | 318 | |
277 | AARCH64REG_READ_INLINE(id_aa64mmfr0_el1) | | 319 | AARCH64REG_READ_INLINE(id_aa64mmfr0_el1) |
278 | | | 320 | |
| | | 321 | #define ID_AA64MMFR0_EL1_EXS __BITS(43,40) |
279 | #define ID_AA64MMFR0_EL1_TGRAN4 __BITS(31,28) | | 322 | #define ID_AA64MMFR0_EL1_TGRAN4 __BITS(31,28) |
280 | #define ID_AA64MMFR0_EL1_TGRAN4_4KB 0 | | 323 | #define ID_AA64MMFR0_EL1_TGRAN4_4KB 0 |
281 | #define ID_AA64MMFR0_EL1_TGRAN4_NONE 15 | | 324 | #define ID_AA64MMFR0_EL1_TGRAN4_NONE 15 |
282 | #define ID_AA64MMFR0_EL1_TGRAN64 __BITS(24,27) | | 325 | #define ID_AA64MMFR0_EL1_TGRAN64 __BITS(24,27) |
283 | #define ID_AA64MMFR0_EL1_TGRAN64_64KB 0 | | 326 | #define ID_AA64MMFR0_EL1_TGRAN64_64KB 0 |
284 | #define ID_AA64MMFR0_EL1_TGRAN64_NONE 15 | | 327 | #define ID_AA64MMFR0_EL1_TGRAN64_NONE 15 |
285 | #define ID_AA64MMFR0_EL1_TGRAN16 __BITS(20,23) | | 328 | #define ID_AA64MMFR0_EL1_TGRAN16 __BITS(20,23) |
286 | #define ID_AA64MMFR0_EL1_TGRAN16_NONE 0 | | 329 | #define ID_AA64MMFR0_EL1_TGRAN16_NONE 0 |
287 | #define ID_AA64MMFR0_EL1_TGRAN16_16KB 1 | | 330 | #define ID_AA64MMFR0_EL1_TGRAN16_16KB 1 |
288 | #define ID_AA64MMFR0_EL1_BIGENDEL0 __BITS(16,19) | | 331 | #define ID_AA64MMFR0_EL1_BIGENDEL0 __BITS(16,19) |
289 | #define ID_AA64MMFR0_EL1_BIGENDEL0_NONE 0 | | 332 | #define ID_AA64MMFR0_EL1_BIGENDEL0_NONE 0 |
290 | #define ID_AA64MMFR0_EL1_BIGENDEL0_MIX 1 | | 333 | #define ID_AA64MMFR0_EL1_BIGENDEL0_MIX 1 |
291 | #define ID_AA64MMFR0_EL1_SNSMEM __BITS(12,15) | | 334 | #define ID_AA64MMFR0_EL1_SNSMEM __BITS(12,15) |
| @@ -294,26 +337,27 @@ AARCH64REG_READ_INLINE(id_aa64mmfr0_el1) | | | @@ -294,26 +337,27 @@ AARCH64REG_READ_INLINE(id_aa64mmfr0_el1) |
294 | #define ID_AA64MMFR0_EL1_BIGEND __BITS(8,11) | | 337 | #define ID_AA64MMFR0_EL1_BIGEND __BITS(8,11) |
295 | #define ID_AA64MMFR0_EL1_BIGEND_NONE 0 | | 338 | #define ID_AA64MMFR0_EL1_BIGEND_NONE 0 |
296 | #define ID_AA64MMFR0_EL1_BIGEND_MIX 1 | | 339 | #define ID_AA64MMFR0_EL1_BIGEND_MIX 1 |
297 | #define ID_AA64MMFR0_EL1_ASIDBITS __BITS(4,7) | | 340 | #define ID_AA64MMFR0_EL1_ASIDBITS __BITS(4,7) |
298 | #define ID_AA64MMFR0_EL1_ASIDBITS_8BIT 0 | | 341 | #define ID_AA64MMFR0_EL1_ASIDBITS_8BIT 0 |
299 | #define ID_AA64MMFR0_EL1_ASIDBITS_16BIT 2 | | 342 | #define ID_AA64MMFR0_EL1_ASIDBITS_16BIT 2 |
300 | #define ID_AA64MMFR0_EL1_PARANGE __BITS(0,3) | | 343 | #define ID_AA64MMFR0_EL1_PARANGE __BITS(0,3) |
301 | #define ID_AA64MMFR0_EL1_PARANGE_4G 0 | | 344 | #define ID_AA64MMFR0_EL1_PARANGE_4G 0 |
302 | #define ID_AA64MMFR0_EL1_PARANGE_64G 1 | | 345 | #define ID_AA64MMFR0_EL1_PARANGE_64G 1 |
303 | #define ID_AA64MMFR0_EL1_PARANGE_1T 2 | | 346 | #define ID_AA64MMFR0_EL1_PARANGE_1T 2 |
304 | #define ID_AA64MMFR0_EL1_PARANGE_4T 3 | | 347 | #define ID_AA64MMFR0_EL1_PARANGE_4T 3 |
305 | #define ID_AA64MMFR0_EL1_PARANGE_16T 4 | | 348 | #define ID_AA64MMFR0_EL1_PARANGE_16T 4 |
306 | #define ID_AA64MMFR0_EL1_PARANGE_256T 5 | | 349 | #define ID_AA64MMFR0_EL1_PARANGE_256T 5 |
| | | 350 | #define ID_AA64MMFR0_EL1_PARANGE_4P 6 |
307 | | | 351 | |
308 | AARCH64REG_READ_INLINE(id_aa64mmfr1_el1) | | 352 | AARCH64REG_READ_INLINE(id_aa64mmfr1_el1) |
309 | | | 353 | |
310 | #define ID_AA64MMFR1_EL1_XNX __BITS(31,28) | | 354 | #define ID_AA64MMFR1_EL1_XNX __BITS(31,28) |
311 | #define ID_AA64MMFR1_EL1_XNX_NONE 0 | | 355 | #define ID_AA64MMFR1_EL1_XNX_NONE 0 |
312 | #define ID_AA64MMFR1_EL1_XNX_SUPPORTED 1 | | 356 | #define ID_AA64MMFR1_EL1_XNX_SUPPORTED 1 |
313 | #define ID_AA64MMFR1_EL1_SPECSEI __BITS(27,24) | | 357 | #define ID_AA64MMFR1_EL1_SPECSEI __BITS(27,24) |
314 | #define ID_AA64MMFR1_EL1_SPECSEI_NONE 0 | | 358 | #define ID_AA64MMFR1_EL1_SPECSEI_NONE 0 |
315 | #define ID_AA64MMFR1_EL1_SPECSEI_EXTINT 1 | | 359 | #define ID_AA64MMFR1_EL1_SPECSEI_EXTINT 1 |
316 | #define ID_AA64MMFR1_EL1_PAN __BITS(23,20) | | 360 | #define ID_AA64MMFR1_EL1_PAN __BITS(23,20) |
317 | #define ID_AA64MMFR1_EL1_PAN_NONE 0 | | 361 | #define ID_AA64MMFR1_EL1_PAN_NONE 0 |
318 | #define ID_AA64MMFR1_EL1_PAN_SUPPORTED 1 | | 362 | #define ID_AA64MMFR1_EL1_PAN_SUPPORTED 1 |
319 | #define ID_AA64MMFR1_EL1_PAN_S1E1 2 | | 363 | #define ID_AA64MMFR1_EL1_PAN_S1E1 2 |
| @@ -1178,35 +1222,44 @@ AARCH64REG_READ_INLINE(cntv_ctl_el0) | | | @@ -1178,35 +1222,44 @@ AARCH64REG_READ_INLINE(cntv_ctl_el0) |
1178 | AARCH64REG_WRITE_INLINE(cntv_ctl_el0) | | 1222 | AARCH64REG_WRITE_INLINE(cntv_ctl_el0) |
1179 | AARCH64REG_READ_INLINE(cntv_cval_el0) | | 1223 | AARCH64REG_READ_INLINE(cntv_cval_el0) |
1180 | AARCH64REG_WRITE_INLINE(cntv_cval_el0) | | 1224 | AARCH64REG_WRITE_INLINE(cntv_cval_el0) |
1181 | AARCH64REG_READ_INLINE(cntv_tval_el0) | | 1225 | AARCH64REG_READ_INLINE(cntv_tval_el0) |
1182 | AARCH64REG_WRITE_INLINE(cntv_tval_el0) | | 1226 | AARCH64REG_WRITE_INLINE(cntv_tval_el0) |
1183 | AARCH64REG_READ_INLINE(cntvct_el0) | | 1227 | AARCH64REG_READ_INLINE(cntvct_el0) |
1184 | AARCH64REG_WRITE_INLINE(cntvct_el0) | | 1228 | AARCH64REG_WRITE_INLINE(cntvct_el0) |
1185 | | | 1229 | |
1186 | #define CNTCTL_ISTATUS __BIT(2) // Interrupt Asserted | | 1230 | #define CNTCTL_ISTATUS __BIT(2) // Interrupt Asserted |
1187 | #define CNTCTL_IMASK __BIT(1) // Timer Interrupt is Masked | | 1231 | #define CNTCTL_IMASK __BIT(1) // Timer Interrupt is Masked |
1188 | #define CNTCTL_ENABLE __BIT(0) // Timer Enabled | | 1232 | #define CNTCTL_ENABLE __BIT(0) // Timer Enabled |
1189 | | | 1233 | |
1190 | // ID_AA64PFR0_EL1: AArch64 Processor Feature Register 0 | | 1234 | // ID_AA64PFR0_EL1: AArch64 Processor Feature Register 0 |
| | | 1235 | #define ID_AA64PFR0_EL1_SVE __BITS(35,32) // Scalable Vector |
| | | 1236 | #define ID_AA64PFR0_EL1_SVE_NONE 0 |
| | | 1237 | #define ID_AA64PFR0_EL1_SVE_IMPL 1 |
| | | 1238 | #define ID_AA64PFR0_EL1_RAS __BITS(31,28) // RAS Extension |
| | | 1239 | #define ID_AA64PFR0_EL1_RAS_NONE 0 |
| | | 1240 | #define ID_AA64PFR0_EL1_RAS_IMPL 1 |
| | | 1241 | #define ID_AA64PFR0_EL1_RAS_ERX 2 |
1191 | #define ID_AA64PFR0_EL1_GIC __BITS(24,27) // GIC CPU IF | | 1242 | #define ID_AA64PFR0_EL1_GIC __BITS(24,27) // GIC CPU IF |
1192 | #define ID_AA64PFR0_EL1_GIC_SHIFT 24 | | 1243 | #define ID_AA64PFR0_EL1_GIC_SHIFT 24 |
1193 | #define ID_AA64PFR0_EL1_GIC_CPUIF_EN 1 | | 1244 | #define ID_AA64PFR0_EL1_GIC_CPUIF_EN 1 |
1194 | #define ID_AA64PFR0_EL1_GIC_CPUIF_NONE 0 | | 1245 | #define ID_AA64PFR0_EL1_GIC_CPUIF_NONE 0 |
1195 | #define ID_AA64PFR0_EL1_ADVSIMD __BITS(23,20) // SIMD | | 1246 | #define ID_AA64PFR0_EL1_ADVSIMD __BITS(23,20) // SIMD |
1196 | #define ID_AA64PFR0_EL1_ADV_SIMD_IMPL 0x0 | | 1247 | #define ID_AA64PFR0_EL1_ADV_SIMD_IMPL 0x0 |
| | | 1248 | #define ID_AA64PFR0_EL1_ADV_SIMD_HP 0x1 |
1197 | #define ID_AA64PFR0_EL1_ADV_SIMD_NONE 0xf | | 1249 | #define ID_AA64PFR0_EL1_ADV_SIMD_NONE 0xf |
1198 | #define ID_AA64PFR0_EL1_FP __BITS(19,16) // FP | | 1250 | #define ID_AA64PFR0_EL1_FP __BITS(19,16) // FP |
1199 | #define ID_AA64PFR0_EL1_FP_IMPL 0x0 | | 1251 | #define ID_AA64PFR0_EL1_FP_IMPL 0x0 |
| | | 1252 | #define ID_AA64PFR0_EL1_FP_HP 0x1 |
1200 | #define ID_AA64PFR0_EL1_FP_NONE 0xf | | 1253 | #define ID_AA64PFR0_EL1_FP_NONE 0xf |
1201 | #define ID_AA64PFR0_EL1_EL3 __BITS(15,12) // EL3 handling | | 1254 | #define ID_AA64PFR0_EL1_EL3 __BITS(15,12) // EL3 handling |
1202 | #define ID_AA64PFR0_EL1_EL3_NONE 0 | | 1255 | #define ID_AA64PFR0_EL1_EL3_NONE 0 |
1203 | #define ID_AA64PFR0_EL1_EL3_64 1 | | 1256 | #define ID_AA64PFR0_EL1_EL3_64 1 |
1204 | #define ID_AA64PFR0_EL1_EL3_64_32 2 | | 1257 | #define ID_AA64PFR0_EL1_EL3_64_32 2 |
1205 | #define ID_AA64PFR0_EL1_EL2 __BITS(11,8) // EL2 handling | | 1258 | #define ID_AA64PFR0_EL1_EL2 __BITS(11,8) // EL2 handling |
1206 | #define ID_AA64PFR0_EL1_EL2_NONE 0 | | 1259 | #define ID_AA64PFR0_EL1_EL2_NONE 0 |
1207 | #define ID_AA64PFR0_EL1_EL2_64 1 | | 1260 | #define ID_AA64PFR0_EL1_EL2_64 1 |
1208 | #define ID_AA64PFR0_EL1_EL2_64_32 2 | | 1261 | #define ID_AA64PFR0_EL1_EL2_64_32 2 |
1209 | #define ID_AA64PFR0_EL1_EL1 __BITS(7,4) // EL1 handling | | 1262 | #define ID_AA64PFR0_EL1_EL1 __BITS(7,4) // EL1 handling |
1210 | #define ID_AA64PFR0_EL1_EL1_64 1 | | 1263 | #define ID_AA64PFR0_EL1_EL1_64 1 |
1211 | #define ID_AA64PFR0_EL1_EL1_64_32 2 | | 1264 | #define ID_AA64PFR0_EL1_EL1_64_32 2 |
1212 | #define ID_AA64PFR0_EL1_EL0 __BITS(3,0) // EL0 handling | | 1265 | #define ID_AA64PFR0_EL1_EL0 __BITS(3,0) // EL0 handling |