xref: /aosp_15_r20/external/coreboot/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-ap.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 #ifndef __BDK_CSRS_AP_H__
2 #define __BDK_CSRS_AP_H__
3 /* This file is auto-generated. Do not edit */
4 
5 /***********************license start***************
6  * Copyright (c) 2003-2017  Cavium Inc. ([email protected]). All rights
7  * reserved.
8  *
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions are
12  * met:
13  *
14  *   * Redistributions of source code must retain the above copyright
15  *     notice, this list of conditions and the following disclaimer.
16  *
17  *   * Redistributions in binary form must reproduce the above
18  *     copyright notice, this list of conditions and the following
19  *     disclaimer in the documentation and/or other materials provided
20  *     with the distribution.
21 
22  *   * Neither the name of Cavium Inc. nor the names of
23  *     its contributors may be used to endorse or promote products
24  *     derived from this software without specific prior written
25  *     permission.
26 
27  * This Software, including technical data, may be subject to U.S. export  control
28  * laws, including the U.S. Export Administration Act and its  associated
29  * regulations, and may be subject to export or import  regulations in other
30  * countries.
31 
32  * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
33  * AND WITH ALL FAULTS AND CAVIUM  NETWORKS MAKES NO PROMISES, REPRESENTATIONS OR
34  * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
35  * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
36  * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
37  * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
38  * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
39  * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
40  * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE  RISK ARISING OUT OF USE OR
41  * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
42  ***********************license end**************************************/
43 
44 
45 /**
46  * @file
47  *
48  * Configuration and status register (CSR) address and type definitions for
49  * Cavium AP.
50  *
51  * This file is auto generated. Do not edit.
52  *
53  */
54 
55 /**
56  * Enumeration ap_clidr_el1_ctype_e
57  *
58  * Cache Type Field Enumeration
59  * Enumerates the CTYPEn fields of AP_CLIDR_EL1. All other values are reserved.
60  */
61 #define BDK_AP_CLIDR_EL1_CTYPE_E_DATA (2)
62 #define BDK_AP_CLIDR_EL1_CTYPE_E_INSTRUCTION (1)
63 #define BDK_AP_CLIDR_EL1_CTYPE_E_NONE (0)
64 #define BDK_AP_CLIDR_EL1_CTYPE_E_SEPARATE (3)
65 #define BDK_AP_CLIDR_EL1_CTYPE_E_UNIFIED (4)
66 
67 /**
68  * Enumeration ap_psb_accum_sel_e
69  *
70  * AP Power Serial Bus Accumulator Selection Enumeration
71  * Enumerates the AP accumulator events used by PSBS_AP()_ACCUM()_SEL.
72  */
73 #define BDK_AP_PSB_ACCUM_SEL_E_TBD0 (0)
74 
75 /**
76  * Enumeration ap_psb_event_e
77  *
78  * AP Power Serial Bus Event Enumeration
79  * Enumerates the event numbers for AP slaves, which correspond to index {b} of PSBS_AP()_EVENT()_CFG.
80  */
81 #define BDK_AP_PSB_EVENT_E_TBD0 (0)
82 
83 /**
84  * Register (SYSREG) ap_actlr_el#
85  *
86  * AP Auxiliary Control Register
87  * These registers are implementation defined for implementation specific control functionality
88  * while executing at the associated execution level, or, in the case of ACTLR_EL1, while
89  * executing at EL0.
90  */
91 union bdk_ap_actlr_elx
92 {
93     uint64_t u;
94     struct bdk_ap_actlr_elx_s
95     {
96 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
97         uint64_t reserved_0_63         : 64;
98 #else /* Word 0 - Little Endian */
99         uint64_t reserved_0_63         : 64;
100 #endif /* Word 0 - End */
101     } s;
102     /* struct bdk_ap_actlr_elx_s cn; */
103 };
104 typedef union bdk_ap_actlr_elx bdk_ap_actlr_elx_t;
105 
106 static inline uint64_t BDK_AP_ACTLR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ACTLR_ELX(unsigned long a)107 static inline uint64_t BDK_AP_ACTLR_ELX(unsigned long a)
108 {
109     if ((a>=1)&&(a<=3))
110         return 0x30001000100ll + 0ll * ((a) & 0x3);
111     __bdk_csr_fatal("AP_ACTLR_ELX", 1, a, 0, 0, 0);
112 }
113 
114 #define typedef_BDK_AP_ACTLR_ELX(a) bdk_ap_actlr_elx_t
115 #define bustype_BDK_AP_ACTLR_ELX(a) BDK_CSR_TYPE_SYSREG
116 #define basename_BDK_AP_ACTLR_ELX(a) "AP_ACTLR_ELX"
117 #define busnum_BDK_AP_ACTLR_ELX(a) (a)
118 #define arguments_BDK_AP_ACTLR_ELX(a) (a),-1,-1,-1
119 
120 /**
121  * Register (SYSREG) ap_afsr#_el#
122  *
123  * AP Auxiliary Fault Status 0 and 1 Registers
124  * Provides additional implementation defined fault status
125  *     information for exceptions taken to EL*.
126  */
127 union bdk_ap_afsrx_elx
128 {
129     uint32_t u;
130     struct bdk_ap_afsrx_elx_s
131     {
132 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
133         uint32_t reserved_0_31         : 32;
134 #else /* Word 0 - Little Endian */
135         uint32_t reserved_0_31         : 32;
136 #endif /* Word 0 - End */
137     } s;
138     /* struct bdk_ap_afsrx_elx_s cn; */
139 };
140 typedef union bdk_ap_afsrx_elx bdk_ap_afsrx_elx_t;
141 
142 static inline uint64_t BDK_AP_AFSRX_ELX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
BDK_AP_AFSRX_ELX(unsigned long a,unsigned long b)143 static inline uint64_t BDK_AP_AFSRX_ELX(unsigned long a, unsigned long b)
144 {
145     if ((a<=1) && ((b>=1)&&(b<=3)))
146         return 0x30005010000ll + 0x100ll * ((a) & 0x1) + 0ll * ((b) & 0x3);
147     __bdk_csr_fatal("AP_AFSRX_ELX", 2, a, b, 0, 0);
148 }
149 
150 #define typedef_BDK_AP_AFSRX_ELX(a,b) bdk_ap_afsrx_elx_t
151 #define bustype_BDK_AP_AFSRX_ELX(a,b) BDK_CSR_TYPE_SYSREG
152 #define basename_BDK_AP_AFSRX_ELX(a,b) "AP_AFSRX_ELX"
153 #define busnum_BDK_AP_AFSRX_ELX(a,b) (a)
154 #define arguments_BDK_AP_AFSRX_ELX(a,b) (a),(b),-1,-1
155 
156 /**
157  * Register (SYSREG) ap_afsr#_el12
158  *
159  * AP Auxiliary Fault Status 0 and 1 Alias Registers
160  * Alias of AFSR(n)_EL1 when accessed from EL2 and AP_HCR_EL2[E2H] is set.
161  */
162 union bdk_ap_afsrx_el12
163 {
164     uint32_t u;
165     struct bdk_ap_afsrx_el12_s
166     {
167 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
168         uint32_t reserved_0_31         : 32;
169 #else /* Word 0 - Little Endian */
170         uint32_t reserved_0_31         : 32;
171 #endif /* Word 0 - End */
172     } s;
173     /* struct bdk_ap_afsrx_el12_s cn; */
174 };
175 typedef union bdk_ap_afsrx_el12 bdk_ap_afsrx_el12_t;
176 
177 static inline uint64_t BDK_AP_AFSRX_EL12(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_AFSRX_EL12(unsigned long a)178 static inline uint64_t BDK_AP_AFSRX_EL12(unsigned long a)
179 {
180     if (a<=1)
181         return 0x30505010000ll + 0x100ll * ((a) & 0x1);
182     __bdk_csr_fatal("AP_AFSRX_EL12", 1, a, 0, 0, 0);
183 }
184 
185 #define typedef_BDK_AP_AFSRX_EL12(a) bdk_ap_afsrx_el12_t
186 #define bustype_BDK_AP_AFSRX_EL12(a) BDK_CSR_TYPE_SYSREG
187 #define basename_BDK_AP_AFSRX_EL12(a) "AP_AFSRX_EL12"
188 #define busnum_BDK_AP_AFSRX_EL12(a) (a)
189 #define arguments_BDK_AP_AFSRX_EL12(a) (a),-1,-1,-1
190 
191 /**
192  * Register (SYSREG) ap_aidr_el1
193  *
194  * AP Auxiliary ID Register
195  * Provides implementation defined identification information.
196  */
197 union bdk_ap_aidr_el1
198 {
199     uint64_t u;
200     struct bdk_ap_aidr_el1_s
201     {
202 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
203         uint64_t reserved_0_63         : 64;
204 #else /* Word 0 - Little Endian */
205         uint64_t reserved_0_63         : 64;
206 #endif /* Word 0 - End */
207     } s;
208     /* struct bdk_ap_aidr_el1_s cn; */
209 };
210 typedef union bdk_ap_aidr_el1 bdk_ap_aidr_el1_t;
211 
212 #define BDK_AP_AIDR_EL1 BDK_AP_AIDR_EL1_FUNC()
213 static inline uint64_t BDK_AP_AIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_AIDR_EL1_FUNC(void)214 static inline uint64_t BDK_AP_AIDR_EL1_FUNC(void)
215 {
216     return 0x30100000700ll;
217 }
218 
219 #define typedef_BDK_AP_AIDR_EL1 bdk_ap_aidr_el1_t
220 #define bustype_BDK_AP_AIDR_EL1 BDK_CSR_TYPE_SYSREG
221 #define basename_BDK_AP_AIDR_EL1 "AP_AIDR_EL1"
222 #define busnum_BDK_AP_AIDR_EL1 0
223 #define arguments_BDK_AP_AIDR_EL1 -1,-1,-1,-1
224 
225 /**
226  * Register (SYSREG) ap_amair_el#
227  *
228  * AP Auxiliary Memory Attribute Indirection Register
229  * Provides implementation defined memory attributes for the
230  *     memory regions specified by MAIR_EL*.
231  */
232 union bdk_ap_amair_elx
233 {
234     uint64_t u;
235     struct bdk_ap_amair_elx_s
236     {
237 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
238         uint64_t reserved_0_63         : 64;
239 #else /* Word 0 - Little Endian */
240         uint64_t reserved_0_63         : 64;
241 #endif /* Word 0 - End */
242     } s;
243     /* struct bdk_ap_amair_elx_s cn; */
244 };
245 typedef union bdk_ap_amair_elx bdk_ap_amair_elx_t;
246 
247 static inline uint64_t BDK_AP_AMAIR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_AMAIR_ELX(unsigned long a)248 static inline uint64_t BDK_AP_AMAIR_ELX(unsigned long a)
249 {
250     if ((a>=1)&&(a<=3))
251         return 0x3000a030000ll + 0ll * ((a) & 0x3);
252     __bdk_csr_fatal("AP_AMAIR_ELX", 1, a, 0, 0, 0);
253 }
254 
255 #define typedef_BDK_AP_AMAIR_ELX(a) bdk_ap_amair_elx_t
256 #define bustype_BDK_AP_AMAIR_ELX(a) BDK_CSR_TYPE_SYSREG
257 #define basename_BDK_AP_AMAIR_ELX(a) "AP_AMAIR_ELX"
258 #define busnum_BDK_AP_AMAIR_ELX(a) (a)
259 #define arguments_BDK_AP_AMAIR_ELX(a) (a),-1,-1,-1
260 
261 /**
262  * Register (SYSREG) ap_amair_el12
263  *
264  * AP Auxiliary Memory Attribute Indirection Register
265  * Alias of AMAIR_EL1 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
266  */
267 union bdk_ap_amair_el12
268 {
269     uint64_t u;
270     struct bdk_ap_amair_el12_s
271     {
272 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
273         uint64_t reserved_0_63         : 64;
274 #else /* Word 0 - Little Endian */
275         uint64_t reserved_0_63         : 64;
276 #endif /* Word 0 - End */
277     } s;
278     /* struct bdk_ap_amair_el12_s cn; */
279 };
280 typedef union bdk_ap_amair_el12 bdk_ap_amair_el12_t;
281 
282 #define BDK_AP_AMAIR_EL12 BDK_AP_AMAIR_EL12_FUNC()
283 static inline uint64_t BDK_AP_AMAIR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_AMAIR_EL12_FUNC(void)284 static inline uint64_t BDK_AP_AMAIR_EL12_FUNC(void)
285 {
286     return 0x3050a030000ll;
287 }
288 
289 #define typedef_BDK_AP_AMAIR_EL12 bdk_ap_amair_el12_t
290 #define bustype_BDK_AP_AMAIR_EL12 BDK_CSR_TYPE_SYSREG
291 #define basename_BDK_AP_AMAIR_EL12 "AP_AMAIR_EL12"
292 #define busnum_BDK_AP_AMAIR_EL12 0
293 #define arguments_BDK_AP_AMAIR_EL12 -1,-1,-1,-1
294 
295 /**
296  * Register (SYSREG) ap_ccsidr_el1
297  *
298  * AP Current Cache Size ID Register
299  * This register provides information about the architecture of the currently selected
300  * cache. AP_CSSELR_EL1 selects which Cache Size ID Register is accessible.
301  */
302 union bdk_ap_ccsidr_el1
303 {
304     uint32_t u;
305     struct bdk_ap_ccsidr_el1_s
306     {
307 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
308         uint32_t wt                    : 1;  /**< [ 31: 31](RO) Indicates whether the selected cache level supports write-through.
309                                                                  0 = Write-through not supported.
310                                                                  1 = Write-through supported.
311 
312                                                                  For CNXXXX does not apply as hardware managed coherence. */
313         uint32_t wb                    : 1;  /**< [ 30: 30](RO) Indicates whether the selected cache level supports write-back.
314                                                                  0 = Write-back not supported.
315                                                                  1 = Write-back supported.
316 
317                                                                  For CNXXXX does not apply as hardware managed coherence. */
318         uint32_t ra                    : 1;  /**< [ 29: 29](RO) Indicates whether the selected cache level supports read-allocation.
319                                                                  0 = Read-allocation not supported.
320                                                                  1 = Read-allocation supported.
321 
322                                                                  For CNXXXX does not apply as hardware managed coherence. */
323         uint32_t wa                    : 1;  /**< [ 28: 28](RO) Indicates whether the selected cache level supports write-allocation.
324                                                                  0 = Write-allocation not supported.
325                                                                  1 = Write-allocation supported.
326 
327                                                                  For CNXXXX does not apply as hardware managed coherence. */
328         uint32_t numsets               : 15; /**< [ 27: 13](RO) Number of sets in cache minus 1, therefore a value of 0
329                                                                  indicates 1 set in the cache. The number of sets does not have
330                                                                  to be a power of 2.
331 
332                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 7.
333 
334                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 15.
335 
336                                                                  For CN88XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 8191. */
337         uint32_t associativity         : 10; /**< [ 12:  3](RO) Associativity of cache minus 1, therefore a value of 0 indicates
338                                                                  an associativity of 1. The associativity does not have to be a
339                                                                  power of 2.
340 
341                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 31.
342 
343                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 38.
344 
345                                                                  For CN88XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 15. */
346         uint32_t linesize              : 3;  /**< [  2:  0](RO) Cache-line size, in (Log2(Number of bytes in cache line)) - 4.
347 
348                                                                  For CNXXXX, 128 bytes. */
349 #else /* Word 0 - Little Endian */
350         uint32_t linesize              : 3;  /**< [  2:  0](RO) Cache-line size, in (Log2(Number of bytes in cache line)) - 4.
351 
352                                                                  For CNXXXX, 128 bytes. */
353         uint32_t associativity         : 10; /**< [ 12:  3](RO) Associativity of cache minus 1, therefore a value of 0 indicates
354                                                                  an associativity of 1. The associativity does not have to be a
355                                                                  power of 2.
356 
357                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 31.
358 
359                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 38.
360 
361                                                                  For CN88XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 15. */
362         uint32_t numsets               : 15; /**< [ 27: 13](RO) Number of sets in cache minus 1, therefore a value of 0
363                                                                  indicates 1 set in the cache. The number of sets does not have
364                                                                  to be a power of 2.
365 
366                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 7.
367 
368                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 15.
369 
370                                                                  For CN88XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 8191. */
371         uint32_t wa                    : 1;  /**< [ 28: 28](RO) Indicates whether the selected cache level supports write-allocation.
372                                                                  0 = Write-allocation not supported.
373                                                                  1 = Write-allocation supported.
374 
375                                                                  For CNXXXX does not apply as hardware managed coherence. */
376         uint32_t ra                    : 1;  /**< [ 29: 29](RO) Indicates whether the selected cache level supports read-allocation.
377                                                                  0 = Read-allocation not supported.
378                                                                  1 = Read-allocation supported.
379 
380                                                                  For CNXXXX does not apply as hardware managed coherence. */
381         uint32_t wb                    : 1;  /**< [ 30: 30](RO) Indicates whether the selected cache level supports write-back.
382                                                                  0 = Write-back not supported.
383                                                                  1 = Write-back supported.
384 
385                                                                  For CNXXXX does not apply as hardware managed coherence. */
386         uint32_t wt                    : 1;  /**< [ 31: 31](RO) Indicates whether the selected cache level supports write-through.
387                                                                  0 = Write-through not supported.
388                                                                  1 = Write-through supported.
389 
390                                                                  For CNXXXX does not apply as hardware managed coherence. */
391 #endif /* Word 0 - End */
392     } s;
393     struct bdk_ap_ccsidr_el1_cn9
394     {
395 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
396         uint32_t wt                    : 1;  /**< [ 31: 31](RO) Indicates whether the selected cache level supports write-through.
397                                                                  0 = Write-through not supported.
398                                                                  1 = Write-through supported.
399 
400                                                                  For CNXXXX does not apply as hardware managed coherence. */
401         uint32_t wb                    : 1;  /**< [ 30: 30](RO) Indicates whether the selected cache level supports write-back.
402                                                                  0 = Write-back not supported.
403                                                                  1 = Write-back supported.
404 
405                                                                  For CNXXXX does not apply as hardware managed coherence. */
406         uint32_t ra                    : 1;  /**< [ 29: 29](RO) Indicates whether the selected cache level supports read-allocation.
407                                                                  0 = Read-allocation not supported.
408                                                                  1 = Read-allocation supported.
409 
410                                                                  For CNXXXX does not apply as hardware managed coherence. */
411         uint32_t wa                    : 1;  /**< [ 28: 28](RO) Indicates whether the selected cache level supports write-allocation.
412                                                                  0 = Write-allocation not supported.
413                                                                  1 = Write-allocation supported.
414 
415                                                                  For CNXXXX does not apply as hardware managed coherence. */
416         uint32_t numsets               : 15; /**< [ 27: 13](RO) Number of sets in cache minus 1, therefore a value of 0
417                                                                  indicates 1 set in the cache. The number of sets does not have
418                                                                  to be a power of 2.
419 
420                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is TBD.
421 
422                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is TBD.
423 
424                                                                  For CN98XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is TBD.
425 
426                                                                  For CN98XX L3 (AP_CSSELR_EL1[LEVEL] = 0x2, AP_CSSELR_EL1[IND] = 0), is TBD. */
427         uint32_t associativity         : 10; /**< [ 12:  3](RO) Associativity of cache minus 1, therefore a value of 0 indicates
428                                                                  an associativity of 1. The associativity does not have to be a
429                                                                  power of 2.
430 
431                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is TBD.
432 
433                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is TBD.
434 
435                                                                  For CN98XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is TBD.
436 
437                                                                  For CN98XX L3 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is TBD. */
438         uint32_t linesize              : 3;  /**< [  2:  0](RO) Cache-line size, in (Log2(Number of bytes in cache line)) - 4.
439 
440                                                                  For CNXXXX, 128 bytes. */
441 #else /* Word 0 - Little Endian */
442         uint32_t linesize              : 3;  /**< [  2:  0](RO) Cache-line size, in (Log2(Number of bytes in cache line)) - 4.
443 
444                                                                  For CNXXXX, 128 bytes. */
445         uint32_t associativity         : 10; /**< [ 12:  3](RO) Associativity of cache minus 1, therefore a value of 0 indicates
446                                                                  an associativity of 1. The associativity does not have to be a
447                                                                  power of 2.
448 
449                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is TBD.
450 
451                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is TBD.
452 
453                                                                  For CN98XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is TBD.
454 
455                                                                  For CN98XX L3 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is TBD. */
456         uint32_t numsets               : 15; /**< [ 27: 13](RO) Number of sets in cache minus 1, therefore a value of 0
457                                                                  indicates 1 set in the cache. The number of sets does not have
458                                                                  to be a power of 2.
459 
460                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is TBD.
461 
462                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is TBD.
463 
464                                                                  For CN98XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is TBD.
465 
466                                                                  For CN98XX L3 (AP_CSSELR_EL1[LEVEL] = 0x2, AP_CSSELR_EL1[IND] = 0), is TBD. */
467         uint32_t wa                    : 1;  /**< [ 28: 28](RO) Indicates whether the selected cache level supports write-allocation.
468                                                                  0 = Write-allocation not supported.
469                                                                  1 = Write-allocation supported.
470 
471                                                                  For CNXXXX does not apply as hardware managed coherence. */
472         uint32_t ra                    : 1;  /**< [ 29: 29](RO) Indicates whether the selected cache level supports read-allocation.
473                                                                  0 = Read-allocation not supported.
474                                                                  1 = Read-allocation supported.
475 
476                                                                  For CNXXXX does not apply as hardware managed coherence. */
477         uint32_t wb                    : 1;  /**< [ 30: 30](RO) Indicates whether the selected cache level supports write-back.
478                                                                  0 = Write-back not supported.
479                                                                  1 = Write-back supported.
480 
481                                                                  For CNXXXX does not apply as hardware managed coherence. */
482         uint32_t wt                    : 1;  /**< [ 31: 31](RO) Indicates whether the selected cache level supports write-through.
483                                                                  0 = Write-through not supported.
484                                                                  1 = Write-through supported.
485 
486                                                                  For CNXXXX does not apply as hardware managed coherence. */
487 #endif /* Word 0 - End */
488     } cn9;
489     struct bdk_ap_ccsidr_el1_cn81xx
490     {
491 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
492         uint32_t wt                    : 1;  /**< [ 31: 31](RO) Indicates whether the selected cache level supports write-through.
493                                                                  0 = Write-through not supported.
494                                                                  1 = Write-through supported.
495 
496                                                                  For CNXXXX does not apply as hardware managed coherence. */
497         uint32_t wb                    : 1;  /**< [ 30: 30](RO) Indicates whether the selected cache level supports write-back.
498                                                                  0 = Write-back not supported.
499                                                                  1 = Write-back supported.
500 
501                                                                  For CNXXXX does not apply as hardware managed coherence. */
502         uint32_t ra                    : 1;  /**< [ 29: 29](RO) Indicates whether the selected cache level supports read-allocation.
503                                                                  0 = Read-allocation not supported.
504                                                                  1 = Read-allocation supported.
505 
506                                                                  For CNXXXX does not apply as hardware managed coherence. */
507         uint32_t wa                    : 1;  /**< [ 28: 28](RO) Indicates whether the selected cache level supports write-allocation.
508                                                                  0 = Write-allocation not supported.
509                                                                  1 = Write-allocation supported.
510 
511                                                                  For CNXXXX does not apply as hardware managed coherence. */
512         uint32_t numsets               : 15; /**< [ 27: 13](RO) Number of sets in cache minus 1, therefore a value of 0
513                                                                  indicates 1 set in the cache. The number of sets does not have
514                                                                  to be a power of 2.
515 
516                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 7.
517 
518                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 15.
519 
520                                                                  For CN81XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 1023.
521 
522                                                                  For CN80XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 1023. */
523         uint32_t associativity         : 10; /**< [ 12:  3](RO) Associativity of cache minus 1, therefore a value of 0 indicates
524                                                                  an associativity of 1. The associativity does not have to be a
525                                                                  power of 2.
526 
527                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 31.
528 
529                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 38.
530 
531                                                                  For CN81XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 15.
532 
533                                                                  For CN80XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 7. */
534         uint32_t linesize              : 3;  /**< [  2:  0](RO) Cache-line size, in (Log2(Number of bytes in cache line)) - 4.
535 
536                                                                  For CNXXXX, 128 bytes. */
537 #else /* Word 0 - Little Endian */
538         uint32_t linesize              : 3;  /**< [  2:  0](RO) Cache-line size, in (Log2(Number of bytes in cache line)) - 4.
539 
540                                                                  For CNXXXX, 128 bytes. */
541         uint32_t associativity         : 10; /**< [ 12:  3](RO) Associativity of cache minus 1, therefore a value of 0 indicates
542                                                                  an associativity of 1. The associativity does not have to be a
543                                                                  power of 2.
544 
545                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 31.
546 
547                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 38.
548 
549                                                                  For CN81XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 15.
550 
551                                                                  For CN80XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 7. */
552         uint32_t numsets               : 15; /**< [ 27: 13](RO) Number of sets in cache minus 1, therefore a value of 0
553                                                                  indicates 1 set in the cache. The number of sets does not have
554                                                                  to be a power of 2.
555 
556                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 7.
557 
558                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 15.
559 
560                                                                  For CN81XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 1023.
561 
562                                                                  For CN80XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 1023. */
563         uint32_t wa                    : 1;  /**< [ 28: 28](RO) Indicates whether the selected cache level supports write-allocation.
564                                                                  0 = Write-allocation not supported.
565                                                                  1 = Write-allocation supported.
566 
567                                                                  For CNXXXX does not apply as hardware managed coherence. */
568         uint32_t ra                    : 1;  /**< [ 29: 29](RO) Indicates whether the selected cache level supports read-allocation.
569                                                                  0 = Read-allocation not supported.
570                                                                  1 = Read-allocation supported.
571 
572                                                                  For CNXXXX does not apply as hardware managed coherence. */
573         uint32_t wb                    : 1;  /**< [ 30: 30](RO) Indicates whether the selected cache level supports write-back.
574                                                                  0 = Write-back not supported.
575                                                                  1 = Write-back supported.
576 
577                                                                  For CNXXXX does not apply as hardware managed coherence. */
578         uint32_t wt                    : 1;  /**< [ 31: 31](RO) Indicates whether the selected cache level supports write-through.
579                                                                  0 = Write-through not supported.
580                                                                  1 = Write-through supported.
581 
582                                                                  For CNXXXX does not apply as hardware managed coherence. */
583 #endif /* Word 0 - End */
584     } cn81xx;
585     /* struct bdk_ap_ccsidr_el1_s cn88xx; */
586     struct bdk_ap_ccsidr_el1_cn83xx
587     {
588 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
589         uint32_t wt                    : 1;  /**< [ 31: 31](RO) Indicates whether the selected cache level supports write-through.
590                                                                  0 = Write-through not supported.
591                                                                  1 = Write-through supported.
592 
593                                                                  For CNXXXX does not apply as hardware managed coherence. */
594         uint32_t wb                    : 1;  /**< [ 30: 30](RO) Indicates whether the selected cache level supports write-back.
595                                                                  0 = Write-back not supported.
596                                                                  1 = Write-back supported.
597 
598                                                                  For CNXXXX does not apply as hardware managed coherence. */
599         uint32_t ra                    : 1;  /**< [ 29: 29](RO) Indicates whether the selected cache level supports read-allocation.
600                                                                  0 = Read-allocation not supported.
601                                                                  1 = Read-allocation supported.
602 
603                                                                  For CNXXXX does not apply as hardware managed coherence. */
604         uint32_t wa                    : 1;  /**< [ 28: 28](RO) Indicates whether the selected cache level supports write-allocation.
605                                                                  0 = Write-allocation not supported.
606                                                                  1 = Write-allocation supported.
607 
608                                                                  For CNXXXX does not apply as hardware managed coherence. */
609         uint32_t numsets               : 15; /**< [ 27: 13](RO) Number of sets in cache minus 1, therefore a value of 0
610                                                                  indicates 1 set in the cache. The number of sets does not have
611                                                                  to be a power of 2.
612 
613                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 7.
614 
615                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 15.
616 
617                                                                  For CN83XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 4095. */
618         uint32_t associativity         : 10; /**< [ 12:  3](RO) Associativity of cache minus 1, therefore a value of 0 indicates
619                                                                  an associativity of 1. The associativity does not have to be a
620                                                                  power of 2.
621 
622                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 31.
623 
624                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 38.
625 
626                                                                  For CN83XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 15. */
627         uint32_t linesize              : 3;  /**< [  2:  0](RO) Cache-line size, in (Log2(Number of bytes in cache line)) - 4.
628 
629                                                                  For CNXXXX, 128 bytes. */
630 #else /* Word 0 - Little Endian */
631         uint32_t linesize              : 3;  /**< [  2:  0](RO) Cache-line size, in (Log2(Number of bytes in cache line)) - 4.
632 
633                                                                  For CNXXXX, 128 bytes. */
634         uint32_t associativity         : 10; /**< [ 12:  3](RO) Associativity of cache minus 1, therefore a value of 0 indicates
635                                                                  an associativity of 1. The associativity does not have to be a
636                                                                  power of 2.
637 
638                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 31.
639 
640                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 38.
641 
642                                                                  For CN83XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 15. */
643         uint32_t numsets               : 15; /**< [ 27: 13](RO) Number of sets in cache minus 1, therefore a value of 0
644                                                                  indicates 1 set in the cache. The number of sets does not have
645                                                                  to be a power of 2.
646 
647                                                                  For CNXXXX L1D (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 0), is 7.
648 
649                                                                  For CNXXXX L1I (AP_CSSELR_EL1[LEVEL] = 0x0, AP_CSSELR_EL1[IND] = 1), is 15.
650 
651                                                                  For CN83XX L2 (AP_CSSELR_EL1[LEVEL] = 0x1, AP_CSSELR_EL1[IND] = 0), is 4095. */
652         uint32_t wa                    : 1;  /**< [ 28: 28](RO) Indicates whether the selected cache level supports write-allocation.
653                                                                  0 = Write-allocation not supported.
654                                                                  1 = Write-allocation supported.
655 
656                                                                  For CNXXXX does not apply as hardware managed coherence. */
657         uint32_t ra                    : 1;  /**< [ 29: 29](RO) Indicates whether the selected cache level supports read-allocation.
658                                                                  0 = Read-allocation not supported.
659                                                                  1 = Read-allocation supported.
660 
661                                                                  For CNXXXX does not apply as hardware managed coherence. */
662         uint32_t wb                    : 1;  /**< [ 30: 30](RO) Indicates whether the selected cache level supports write-back.
663                                                                  0 = Write-back not supported.
664                                                                  1 = Write-back supported.
665 
666                                                                  For CNXXXX does not apply as hardware managed coherence. */
667         uint32_t wt                    : 1;  /**< [ 31: 31](RO) Indicates whether the selected cache level supports write-through.
668                                                                  0 = Write-through not supported.
669                                                                  1 = Write-through supported.
670 
671                                                                  For CNXXXX does not apply as hardware managed coherence. */
672 #endif /* Word 0 - End */
673     } cn83xx;
674 };
675 typedef union bdk_ap_ccsidr_el1 bdk_ap_ccsidr_el1_t;
676 
677 #define BDK_AP_CCSIDR_EL1 BDK_AP_CCSIDR_EL1_FUNC()
678 static inline uint64_t BDK_AP_CCSIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CCSIDR_EL1_FUNC(void)679 static inline uint64_t BDK_AP_CCSIDR_EL1_FUNC(void)
680 {
681     return 0x30100000000ll;
682 }
683 
684 #define typedef_BDK_AP_CCSIDR_EL1 bdk_ap_ccsidr_el1_t
685 #define bustype_BDK_AP_CCSIDR_EL1 BDK_CSR_TYPE_SYSREG
686 #define basename_BDK_AP_CCSIDR_EL1 "AP_CCSIDR_EL1"
687 #define busnum_BDK_AP_CCSIDR_EL1 0
688 #define arguments_BDK_AP_CCSIDR_EL1 -1,-1,-1,-1
689 
690 /**
691  * Register (SYSREG) ap_clidr_el1
692  *
693  * AP Cache Level ID Register
694  * This register identifies the type of cache, or caches, implemented at each level, up
695  * to a maximum of seven levels. Also identifies the Level of Coherence (LoC) and Level
696  * of Unification (LoU) for the cache hierarchy.
697  */
698 union bdk_ap_clidr_el1
699 {
700     uint32_t u;
701     struct bdk_ap_clidr_el1_s
702     {
703 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
704         uint32_t reserved_30_31        : 2;
705         uint32_t louu                  : 3;  /**< [ 29: 27](RO) Level of unification uniprocessor for the cache hierarchy. */
706         uint32_t loc                   : 3;  /**< [ 26: 24](RO) Level of coherence for the cache hierarchy.
707 
708                                                                  For CN88XX, 0x1 for pass 1, 0x0 for pass 2 and subsequent chips. */
709         uint32_t louis                 : 3;  /**< [ 23: 21](RO) Level of unification inner shareable for the cache hierarchy. */
710         uint32_t ctype7                : 3;  /**< [ 20: 18](RO) Cache type fields. Indicate the type of cache implemented at
711                                                                      each level, from Level 1 up to a maximum of seven levels of
712                                                                      cache hierarchy.
713                                                                  0x0 = No cache.
714                                                                  0x1 = Instruction cache only.
715                                                                  0x2 = Data cache only.
716                                                                  0x3 = Separate instruction and data caches.
717                                                                  0x4 = Unified cache.
718 
719                                                                  All other values are reserved.
720 
721                                                                  For CNXXXX, no L7 cache. */
722         uint32_t ctype6                : 3;  /**< [ 17: 15](RO) Cache type fields. Indicate the type of cache implemented at
723                                                                      each level, from Level 1 up to a maximum of seven levels of
724                                                                      cache hierarchy.
725                                                                  0x0 = No cache.
726                                                                  0x1 = Instruction cache only.
727                                                                  0x2 = Data cache only.
728                                                                  0x3 = Separate instruction and data caches.
729                                                                  0x4 = Unified cache.
730 
731                                                                  For CNXXXX, no L6 cache. */
732         uint32_t ctype5                : 3;  /**< [ 14: 12](RO) Cache type fields. Indicate the type of cache implemented at
733                                                                      each level, from Level 1 up to a maximum of seven levels of
734                                                                      cache hierarchy.
735                                                                  0x0 = No cache.
736                                                                  0x1 = Instruction cache only.
737                                                                  0x2 = Data cache only.
738                                                                  0x3 = Separate instruction and data caches.
739                                                                  0x4 = Unified cache.
740 
741                                                                  For CNXXXX, no L5 cache. */
742         uint32_t ctype4                : 3;  /**< [ 11:  9](RO) Cache type fields. Indicate the type of cache implemented at
743                                                                      each level, from Level 1 up to a maximum of seven levels of
744                                                                      cache hierarchy.
745                                                                  0x0 = No cache.
746                                                                  0x1 = Instruction cache only.
747                                                                  0x2 = Data cache only.
748                                                                  0x3 = Separate instruction and data caches.
749                                                                  0x4 = Unified cache.
750 
751                                                                  For CNXXXX, no L4 cache. */
752         uint32_t ctype3                : 3;  /**< [  8:  6](RO) Cache type fields. Indicate the type of cache implemented at
753                                                                      each level, from Level 1 up to a maximum of seven levels of
754                                                                      cache hierarchy.
755                                                                  0x0 = No cache.
756                                                                  0x1 = Instruction cache only.
757                                                                  0x2 = Data cache only.
758                                                                  0x3 = Separate instruction and data caches.
759                                                                  0x4 = Unified cache.
760 
761                                                                  For CNXXXX, no L3 cache. */
762         uint32_t ctype2                : 3;  /**< [  5:  3](RO) Cache type fields. Indicate the type of cache implemented at
763                                                                      each level, from Level 1 up to a maximum of seven levels of
764                                                                      cache hierarchy.
765                                                                  0x0 = No cache.
766                                                                  0x1 = Instruction cache only.
767                                                                  0x2 = Data cache only.
768                                                                  0x3 = Separate instruction and data caches.
769                                                                  0x4 = Unified cache.
770 
771                                                                  For CNXXXX, L2 cache is unified. */
772         uint32_t ctype1                : 3;  /**< [  2:  0](RO) Cache type fields. Indicate the type of cache implemented at
773                                                                      each level, from Level 1 up to a maximum of seven levels of
774                                                                      cache hierarchy.
775                                                                  0x0 = No cache.
776                                                                  0x1 = Instruction cache only.
777                                                                  0x2 = Data cache only.
778                                                                  0x3 = Separate instruction and data caches.
779                                                                  0x4 = Unified cache.
780 
781                                                                  For CNXXXX, L1 Dcache and Icache are independent. */
782 #else /* Word 0 - Little Endian */
783         uint32_t ctype1                : 3;  /**< [  2:  0](RO) Cache type fields. Indicate the type of cache implemented at
784                                                                      each level, from Level 1 up to a maximum of seven levels of
785                                                                      cache hierarchy.
786                                                                  0x0 = No cache.
787                                                                  0x1 = Instruction cache only.
788                                                                  0x2 = Data cache only.
789                                                                  0x3 = Separate instruction and data caches.
790                                                                  0x4 = Unified cache.
791 
792                                                                  For CNXXXX, L1 Dcache and Icache are independent. */
793         uint32_t ctype2                : 3;  /**< [  5:  3](RO) Cache type fields. Indicate the type of cache implemented at
794                                                                      each level, from Level 1 up to a maximum of seven levels of
795                                                                      cache hierarchy.
796                                                                  0x0 = No cache.
797                                                                  0x1 = Instruction cache only.
798                                                                  0x2 = Data cache only.
799                                                                  0x3 = Separate instruction and data caches.
800                                                                  0x4 = Unified cache.
801 
802                                                                  For CNXXXX, L2 cache is unified. */
803         uint32_t ctype3                : 3;  /**< [  8:  6](RO) Cache type fields. Indicate the type of cache implemented at
804                                                                      each level, from Level 1 up to a maximum of seven levels of
805                                                                      cache hierarchy.
806                                                                  0x0 = No cache.
807                                                                  0x1 = Instruction cache only.
808                                                                  0x2 = Data cache only.
809                                                                  0x3 = Separate instruction and data caches.
810                                                                  0x4 = Unified cache.
811 
812                                                                  For CNXXXX, no L3 cache. */
813         uint32_t ctype4                : 3;  /**< [ 11:  9](RO) Cache type fields. Indicate the type of cache implemented at
814                                                                      each level, from Level 1 up to a maximum of seven levels of
815                                                                      cache hierarchy.
816                                                                  0x0 = No cache.
817                                                                  0x1 = Instruction cache only.
818                                                                  0x2 = Data cache only.
819                                                                  0x3 = Separate instruction and data caches.
820                                                                  0x4 = Unified cache.
821 
822                                                                  For CNXXXX, no L4 cache. */
823         uint32_t ctype5                : 3;  /**< [ 14: 12](RO) Cache type fields. Indicate the type of cache implemented at
824                                                                      each level, from Level 1 up to a maximum of seven levels of
825                                                                      cache hierarchy.
826                                                                  0x0 = No cache.
827                                                                  0x1 = Instruction cache only.
828                                                                  0x2 = Data cache only.
829                                                                  0x3 = Separate instruction and data caches.
830                                                                  0x4 = Unified cache.
831 
832                                                                  For CNXXXX, no L5 cache. */
833         uint32_t ctype6                : 3;  /**< [ 17: 15](RO) Cache type fields. Indicate the type of cache implemented at
834                                                                      each level, from Level 1 up to a maximum of seven levels of
835                                                                      cache hierarchy.
836                                                                  0x0 = No cache.
837                                                                  0x1 = Instruction cache only.
838                                                                  0x2 = Data cache only.
839                                                                  0x3 = Separate instruction and data caches.
840                                                                  0x4 = Unified cache.
841 
842                                                                  For CNXXXX, no L6 cache. */
843         uint32_t ctype7                : 3;  /**< [ 20: 18](RO) Cache type fields. Indicate the type of cache implemented at
844                                                                      each level, from Level 1 up to a maximum of seven levels of
845                                                                      cache hierarchy.
846                                                                  0x0 = No cache.
847                                                                  0x1 = Instruction cache only.
848                                                                  0x2 = Data cache only.
849                                                                  0x3 = Separate instruction and data caches.
850                                                                  0x4 = Unified cache.
851 
852                                                                  All other values are reserved.
853 
854                                                                  For CNXXXX, no L7 cache. */
855         uint32_t louis                 : 3;  /**< [ 23: 21](RO) Level of unification inner shareable for the cache hierarchy. */
856         uint32_t loc                   : 3;  /**< [ 26: 24](RO) Level of coherence for the cache hierarchy.
857 
858                                                                  For CN88XX, 0x1 for pass 1, 0x0 for pass 2 and subsequent chips. */
859         uint32_t louu                  : 3;  /**< [ 29: 27](RO) Level of unification uniprocessor for the cache hierarchy. */
860         uint32_t reserved_30_31        : 2;
861 #endif /* Word 0 - End */
862     } s;
863     struct bdk_ap_clidr_el1_cn9
864     {
865 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
866         uint32_t reserved_30_31        : 2;
867         uint32_t louu                  : 3;  /**< [ 29: 27](RO) Level of unification uniprocessor for the cache hierarchy. */
868         uint32_t loc                   : 3;  /**< [ 26: 24](RO) Level of coherence for the cache hierarchy.
869 
870                                                                  For CNXXXX, 0x0. */
871         uint32_t louis                 : 3;  /**< [ 23: 21](RO) Level of unification inner shareable for the cache hierarchy. */
872         uint32_t ctype7                : 3;  /**< [ 20: 18](RO) Cache type fields. Indicate the type of cache implemented at
873                                                                      each level, from Level 1 up to a maximum of seven levels of
874                                                                      cache hierarchy.
875 
876                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
877 
878                                                                  For CNXXXX, no L7 cache. */
879         uint32_t ctype6                : 3;  /**< [ 17: 15](RO) Cache type fields. Indicate the type of cache implemented at
880                                                                      each level, from Level 1 up to a maximum of seven levels of
881                                                                      cache hierarchy.
882 
883                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
884 
885                                                                  For CNXXXX, no L6 cache. */
886         uint32_t ctype5                : 3;  /**< [ 14: 12](RO) Cache type fields. Indicate the type of cache implemented at
887                                                                      each level, from Level 1 up to a maximum of seven levels of
888                                                                      cache hierarchy.
889 
890                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
891 
892                                                                  For CNXXXX, no L5 cache. */
893         uint32_t ctype4                : 3;  /**< [ 11:  9](RO) Cache type fields. Indicate the type of cache implemented at
894                                                                      each level, from Level 1 up to a maximum of seven levels of
895                                                                      cache hierarchy.
896 
897                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
898 
899                                                                  For CNXXXX, no L4 cache. */
900         uint32_t ctype3                : 3;  /**< [  8:  6](RO) Cache type fields. Indicate the type of cache implemented at
901                                                                      each level, from Level 1 up to a maximum of seven levels of
902                                                                      cache hierarchy.
903 
904                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
905 
906                                                                  For CNXXXX, L3 cache is unified. */
907         uint32_t ctype2                : 3;  /**< [  5:  3](RO) Cache type fields. Indicate the type of cache implemented at
908                                                                      each level, from Level 1 up to a maximum of seven levels of
909                                                                      cache hierarchy.
910 
911                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
912 
913                                                                  For CNXXXX, L2 cache is an instruction cache only.
914 
915                                                                  Internal:
916                                                                  L2 can be NONE if fused-off. */
917         uint32_t ctype1                : 3;  /**< [  2:  0](RO) Cache type fields. Indicate the type of cache implemented at
918                                                                      each level, from Level 1 up to a maximum of seven levels of
919                                                                      cache hierarchy.
920 
921                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
922 
923                                                                  For CNXXXX, L1 Dcache and Icache are independent. */
924 #else /* Word 0 - Little Endian */
925         uint32_t ctype1                : 3;  /**< [  2:  0](RO) Cache type fields. Indicate the type of cache implemented at
926                                                                      each level, from Level 1 up to a maximum of seven levels of
927                                                                      cache hierarchy.
928 
929                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
930 
931                                                                  For CNXXXX, L1 Dcache and Icache are independent. */
932         uint32_t ctype2                : 3;  /**< [  5:  3](RO) Cache type fields. Indicate the type of cache implemented at
933                                                                      each level, from Level 1 up to a maximum of seven levels of
934                                                                      cache hierarchy.
935 
936                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
937 
938                                                                  For CNXXXX, L2 cache is an instruction cache only.
939 
940                                                                  Internal:
941                                                                  L2 can be NONE if fused-off. */
942         uint32_t ctype3                : 3;  /**< [  8:  6](RO) Cache type fields. Indicate the type of cache implemented at
943                                                                      each level, from Level 1 up to a maximum of seven levels of
944                                                                      cache hierarchy.
945 
946                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
947 
948                                                                  For CNXXXX, L3 cache is unified. */
949         uint32_t ctype4                : 3;  /**< [ 11:  9](RO) Cache type fields. Indicate the type of cache implemented at
950                                                                      each level, from Level 1 up to a maximum of seven levels of
951                                                                      cache hierarchy.
952 
953                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
954 
955                                                                  For CNXXXX, no L4 cache. */
956         uint32_t ctype5                : 3;  /**< [ 14: 12](RO) Cache type fields. Indicate the type of cache implemented at
957                                                                      each level, from Level 1 up to a maximum of seven levels of
958                                                                      cache hierarchy.
959 
960                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
961 
962                                                                  For CNXXXX, no L5 cache. */
963         uint32_t ctype6                : 3;  /**< [ 17: 15](RO) Cache type fields. Indicate the type of cache implemented at
964                                                                      each level, from Level 1 up to a maximum of seven levels of
965                                                                      cache hierarchy.
966 
967                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
968 
969                                                                  For CNXXXX, no L6 cache. */
970         uint32_t ctype7                : 3;  /**< [ 20: 18](RO) Cache type fields. Indicate the type of cache implemented at
971                                                                      each level, from Level 1 up to a maximum of seven levels of
972                                                                      cache hierarchy.
973 
974                                                                  Enumerated by AP_CLIDR_EL1_CTYPE_E.
975 
976                                                                  For CNXXXX, no L7 cache. */
977         uint32_t louis                 : 3;  /**< [ 23: 21](RO) Level of unification inner shareable for the cache hierarchy. */
978         uint32_t loc                   : 3;  /**< [ 26: 24](RO) Level of coherence for the cache hierarchy.
979 
980                                                                  For CNXXXX, 0x0. */
981         uint32_t louu                  : 3;  /**< [ 29: 27](RO) Level of unification uniprocessor for the cache hierarchy. */
982         uint32_t reserved_30_31        : 2;
983 #endif /* Word 0 - End */
984     } cn9;
985     struct bdk_ap_clidr_el1_cn81xx
986     {
987 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
988         uint32_t reserved_30_31        : 2;
989         uint32_t louu                  : 3;  /**< [ 29: 27](RO) Level of unification uniprocessor for the cache hierarchy. */
990         uint32_t loc                   : 3;  /**< [ 26: 24](RO) Level of coherence for the cache hierarchy.
991 
992                                                                  For CNXXXX, 0x0. */
993         uint32_t louis                 : 3;  /**< [ 23: 21](RO) Level of unification inner shareable for the cache hierarchy. */
994         uint32_t ctype7                : 3;  /**< [ 20: 18](RO) Cache type fields. Indicate the type of cache implemented at
995                                                                      each level, from Level 1 up to a maximum of seven levels of
996                                                                      cache hierarchy.
997                                                                  0x0 = No cache.
998                                                                  0x1 = Instruction cache only.
999                                                                  0x2 = Data cache only.
1000                                                                  0x3 = Separate instruction and data caches.
1001                                                                  0x4 = Unified cache.
1002 
1003                                                                  All other values are reserved.
1004 
1005                                                                  For CNXXXX, no L7 cache. */
1006         uint32_t ctype6                : 3;  /**< [ 17: 15](RO) Cache type fields. Indicate the type of cache implemented at
1007                                                                      each level, from Level 1 up to a maximum of seven levels of
1008                                                                      cache hierarchy.
1009                                                                  0x0 = No cache.
1010                                                                  0x1 = Instruction cache only.
1011                                                                  0x2 = Data cache only.
1012                                                                  0x3 = Separate instruction and data caches.
1013                                                                  0x4 = Unified cache.
1014 
1015                                                                  For CNXXXX, no L6 cache. */
1016         uint32_t ctype5                : 3;  /**< [ 14: 12](RO) Cache type fields. Indicate the type of cache implemented at
1017                                                                      each level, from Level 1 up to a maximum of seven levels of
1018                                                                      cache hierarchy.
1019                                                                  0x0 = No cache.
1020                                                                  0x1 = Instruction cache only.
1021                                                                  0x2 = Data cache only.
1022                                                                  0x3 = Separate instruction and data caches.
1023                                                                  0x4 = Unified cache.
1024 
1025                                                                  For CNXXXX, no L5 cache. */
1026         uint32_t ctype4                : 3;  /**< [ 11:  9](RO) Cache type fields. Indicate the type of cache implemented at
1027                                                                      each level, from Level 1 up to a maximum of seven levels of
1028                                                                      cache hierarchy.
1029                                                                  0x0 = No cache.
1030                                                                  0x1 = Instruction cache only.
1031                                                                  0x2 = Data cache only.
1032                                                                  0x3 = Separate instruction and data caches.
1033                                                                  0x4 = Unified cache.
1034 
1035                                                                  For CNXXXX, no L4 cache. */
1036         uint32_t ctype3                : 3;  /**< [  8:  6](RO) Cache type fields. Indicate the type of cache implemented at
1037                                                                      each level, from Level 1 up to a maximum of seven levels of
1038                                                                      cache hierarchy.
1039                                                                  0x0 = No cache.
1040                                                                  0x1 = Instruction cache only.
1041                                                                  0x2 = Data cache only.
1042                                                                  0x3 = Separate instruction and data caches.
1043                                                                  0x4 = Unified cache.
1044 
1045                                                                  For CNXXXX, no L3 cache. */
1046         uint32_t ctype2                : 3;  /**< [  5:  3](RO) Cache type fields. Indicate the type of cache implemented at
1047                                                                      each level, from Level 1 up to a maximum of seven levels of
1048                                                                      cache hierarchy.
1049                                                                  0x0 = No cache.
1050                                                                  0x1 = Instruction cache only.
1051                                                                  0x2 = Data cache only.
1052                                                                  0x3 = Separate instruction and data caches.
1053                                                                  0x4 = Unified cache.
1054 
1055                                                                  For CNXXXX, L2 cache is unified. */
1056         uint32_t ctype1                : 3;  /**< [  2:  0](RO) Cache type fields. Indicate the type of cache implemented at
1057                                                                      each level, from Level 1 up to a maximum of seven levels of
1058                                                                      cache hierarchy.
1059                                                                  0x0 = No cache.
1060                                                                  0x1 = Instruction cache only.
1061                                                                  0x2 = Data cache only.
1062                                                                  0x3 = Separate instruction and data caches.
1063                                                                  0x4 = Unified cache.
1064 
1065                                                                  For CNXXXX, L1 Dcache and Icache are independent. */
1066 #else /* Word 0 - Little Endian */
1067         uint32_t ctype1                : 3;  /**< [  2:  0](RO) Cache type fields. Indicate the type of cache implemented at
1068                                                                      each level, from Level 1 up to a maximum of seven levels of
1069                                                                      cache hierarchy.
1070                                                                  0x0 = No cache.
1071                                                                  0x1 = Instruction cache only.
1072                                                                  0x2 = Data cache only.
1073                                                                  0x3 = Separate instruction and data caches.
1074                                                                  0x4 = Unified cache.
1075 
1076                                                                  For CNXXXX, L1 Dcache and Icache are independent. */
1077         uint32_t ctype2                : 3;  /**< [  5:  3](RO) Cache type fields. Indicate the type of cache implemented at
1078                                                                      each level, from Level 1 up to a maximum of seven levels of
1079                                                                      cache hierarchy.
1080                                                                  0x0 = No cache.
1081                                                                  0x1 = Instruction cache only.
1082                                                                  0x2 = Data cache only.
1083                                                                  0x3 = Separate instruction and data caches.
1084                                                                  0x4 = Unified cache.
1085 
1086                                                                  For CNXXXX, L2 cache is unified. */
1087         uint32_t ctype3                : 3;  /**< [  8:  6](RO) Cache type fields. Indicate the type of cache implemented at
1088                                                                      each level, from Level 1 up to a maximum of seven levels of
1089                                                                      cache hierarchy.
1090                                                                  0x0 = No cache.
1091                                                                  0x1 = Instruction cache only.
1092                                                                  0x2 = Data cache only.
1093                                                                  0x3 = Separate instruction and data caches.
1094                                                                  0x4 = Unified cache.
1095 
1096                                                                  For CNXXXX, no L3 cache. */
1097         uint32_t ctype4                : 3;  /**< [ 11:  9](RO) Cache type fields. Indicate the type of cache implemented at
1098                                                                      each level, from Level 1 up to a maximum of seven levels of
1099                                                                      cache hierarchy.
1100                                                                  0x0 = No cache.
1101                                                                  0x1 = Instruction cache only.
1102                                                                  0x2 = Data cache only.
1103                                                                  0x3 = Separate instruction and data caches.
1104                                                                  0x4 = Unified cache.
1105 
1106                                                                  For CNXXXX, no L4 cache. */
1107         uint32_t ctype5                : 3;  /**< [ 14: 12](RO) Cache type fields. Indicate the type of cache implemented at
1108                                                                      each level, from Level 1 up to a maximum of seven levels of
1109                                                                      cache hierarchy.
1110                                                                  0x0 = No cache.
1111                                                                  0x1 = Instruction cache only.
1112                                                                  0x2 = Data cache only.
1113                                                                  0x3 = Separate instruction and data caches.
1114                                                                  0x4 = Unified cache.
1115 
1116                                                                  For CNXXXX, no L5 cache. */
1117         uint32_t ctype6                : 3;  /**< [ 17: 15](RO) Cache type fields. Indicate the type of cache implemented at
1118                                                                      each level, from Level 1 up to a maximum of seven levels of
1119                                                                      cache hierarchy.
1120                                                                  0x0 = No cache.
1121                                                                  0x1 = Instruction cache only.
1122                                                                  0x2 = Data cache only.
1123                                                                  0x3 = Separate instruction and data caches.
1124                                                                  0x4 = Unified cache.
1125 
1126                                                                  For CNXXXX, no L6 cache. */
1127         uint32_t ctype7                : 3;  /**< [ 20: 18](RO) Cache type fields. Indicate the type of cache implemented at
1128                                                                      each level, from Level 1 up to a maximum of seven levels of
1129                                                                      cache hierarchy.
1130                                                                  0x0 = No cache.
1131                                                                  0x1 = Instruction cache only.
1132                                                                  0x2 = Data cache only.
1133                                                                  0x3 = Separate instruction and data caches.
1134                                                                  0x4 = Unified cache.
1135 
1136                                                                  All other values are reserved.
1137 
1138                                                                  For CNXXXX, no L7 cache. */
1139         uint32_t louis                 : 3;  /**< [ 23: 21](RO) Level of unification inner shareable for the cache hierarchy. */
1140         uint32_t loc                   : 3;  /**< [ 26: 24](RO) Level of coherence for the cache hierarchy.
1141 
1142                                                                  For CNXXXX, 0x0. */
1143         uint32_t louu                  : 3;  /**< [ 29: 27](RO) Level of unification uniprocessor for the cache hierarchy. */
1144         uint32_t reserved_30_31        : 2;
1145 #endif /* Word 0 - End */
1146     } cn81xx;
1147     /* struct bdk_ap_clidr_el1_s cn88xx; */
1148     /* struct bdk_ap_clidr_el1_cn81xx cn83xx; */
1149 };
1150 typedef union bdk_ap_clidr_el1 bdk_ap_clidr_el1_t;
1151 
1152 #define BDK_AP_CLIDR_EL1 BDK_AP_CLIDR_EL1_FUNC()
1153 static inline uint64_t BDK_AP_CLIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CLIDR_EL1_FUNC(void)1154 static inline uint64_t BDK_AP_CLIDR_EL1_FUNC(void)
1155 {
1156     return 0x30100000100ll;
1157 }
1158 
1159 #define typedef_BDK_AP_CLIDR_EL1 bdk_ap_clidr_el1_t
1160 #define bustype_BDK_AP_CLIDR_EL1 BDK_CSR_TYPE_SYSREG
1161 #define basename_BDK_AP_CLIDR_EL1 "AP_CLIDR_EL1"
1162 #define busnum_BDK_AP_CLIDR_EL1 0
1163 #define arguments_BDK_AP_CLIDR_EL1 -1,-1,-1,-1
1164 
1165 /**
1166  * Register (SYSREG) ap_cntfrq_el0
1167  *
1168  * AP Counter-timer Frequency Register
1169  * Holds the clock frequency of the system counter.
1170  */
1171 union bdk_ap_cntfrq_el0
1172 {
1173     uint32_t u;
1174     struct bdk_ap_cntfrq_el0_s
1175     {
1176 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1177         uint32_t data                  : 32; /**< [ 31:  0](R/W) Clock frequency. Indicates the system counter clock frequency,
1178                                                                      in Hz. */
1179 #else /* Word 0 - Little Endian */
1180         uint32_t data                  : 32; /**< [ 31:  0](R/W) Clock frequency. Indicates the system counter clock frequency,
1181                                                                      in Hz. */
1182 #endif /* Word 0 - End */
1183     } s;
1184     /* struct bdk_ap_cntfrq_el0_s cn; */
1185 };
1186 typedef union bdk_ap_cntfrq_el0 bdk_ap_cntfrq_el0_t;
1187 
1188 #define BDK_AP_CNTFRQ_EL0 BDK_AP_CNTFRQ_EL0_FUNC()
1189 static inline uint64_t BDK_AP_CNTFRQ_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTFRQ_EL0_FUNC(void)1190 static inline uint64_t BDK_AP_CNTFRQ_EL0_FUNC(void)
1191 {
1192     return 0x3030e000000ll;
1193 }
1194 
1195 #define typedef_BDK_AP_CNTFRQ_EL0 bdk_ap_cntfrq_el0_t
1196 #define bustype_BDK_AP_CNTFRQ_EL0 BDK_CSR_TYPE_SYSREG
1197 #define basename_BDK_AP_CNTFRQ_EL0 "AP_CNTFRQ_EL0"
1198 #define busnum_BDK_AP_CNTFRQ_EL0 0
1199 #define arguments_BDK_AP_CNTFRQ_EL0 -1,-1,-1,-1
1200 
1201 /**
1202  * Register (SYSREG) ap_cnthctl_el2
1203  *
1204  * AP Counter-timer Hypervisor Control Non-E2H Register
1205  * Controls the generation of an event stream from the physical
1206  *     counter, and access from nonsecure EL1 to the physical
1207  *     counter and the nonsecure EL1 physical timer.
1208  *
1209  * This register is at the same select as AP_CNTHCTL_EL2_E2H and is used when E2H=0.
1210  */
1211 union bdk_ap_cnthctl_el2
1212 {
1213     uint32_t u;
1214     struct bdk_ap_cnthctl_el2_s
1215     {
1216 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1217         uint32_t reserved_8_31         : 24;
1218         uint32_t evnti                 : 4;  /**< [  7:  4](R/W) Selects which bit (0 to 15) of the corresponding counter
1219                                                                      register ( AP_CNTPCT_EL0 or AP_CNTVCT_EL0) is the trigger for the
1220                                                                      event stream generated from that counter, when that stream is
1221                                                                      enabled. */
1222         uint32_t evntdir               : 1;  /**< [  3:  3](R/W) Controls which transition of the counter register ( AP_CNTPCT_EL0
1223                                                                      or AP_CNTVCT_EL0) trigger bit, defined by EVNTI, generates an
1224                                                                      event when the event stream is enabled:
1225                                                                  0 = A 0 to 1 transition of the trigger bit triggers an event.
1226                                                                  1 = A 1 to 0 transition of the trigger bit triggers an event. */
1227         uint32_t evnten                : 1;  /**< [  2:  2](R/W) Enables the generation of an event stream from the
1228                                                                      corresponding counter:
1229                                                                  0 = Disables the event stream.
1230                                                                  1 = Enables the event stream. */
1231         uint32_t el1pcen               : 1;  /**< [  1:  1](R/W) Controls whether the physical timer registers are accessible
1232                                                                      from nonsecure EL1 and EL0 modes:
1233                                                                  If EL3 is implemented and EL2 is not implemented, this bit is
1234                                                                      treated as if it is 1 for all purposes other than reading the
1235                                                                      register.
1236                                                                  0 = The AP_CNTP_CVAL_EL0, AP_CNTP_TVAL_EL0, and AP_CNTP_CTL_EL0 registers
1237                                                                      are not accessible from nonsecure EL1 and EL0 modes.
1238                                                                  1 = The AP_CNTP_CVAL_EL0, AP_CNTP_TVAL_EL0, and AP_CNTP_CTL_EL0 registers
1239                                                                      are accessible from nonsecure EL1 and EL0 modes. */
1240         uint32_t el1pcten              : 1;  /**< [  0:  0](R/W) Controls whether the physical counter, AP_CNTPCT_EL0, is
1241                                                                      accessible from nonsecure EL1 and EL0 modes:
1242                                                                  If EL3 is implemented and EL2 is not implemented, this bit is
1243                                                                      treated as if it is 1 for all purposes other than reading the
1244                                                                      register.
1245                                                                  0 = The AP_CNTPCT_EL0 register is not accessible from nonsecure EL1
1246                                                                      and EL0 modes.
1247                                                                  1 = The AP_CNTPCT_EL0 register is accessible from nonsecure EL1 and
1248                                                                      EL0 modes. */
1249 #else /* Word 0 - Little Endian */
1250         uint32_t el1pcten              : 1;  /**< [  0:  0](R/W) Controls whether the physical counter, AP_CNTPCT_EL0, is
1251                                                                      accessible from nonsecure EL1 and EL0 modes:
1252                                                                  If EL3 is implemented and EL2 is not implemented, this bit is
1253                                                                      treated as if it is 1 for all purposes other than reading the
1254                                                                      register.
1255                                                                  0 = The AP_CNTPCT_EL0 register is not accessible from nonsecure EL1
1256                                                                      and EL0 modes.
1257                                                                  1 = The AP_CNTPCT_EL0 register is accessible from nonsecure EL1 and
1258                                                                      EL0 modes. */
1259         uint32_t el1pcen               : 1;  /**< [  1:  1](R/W) Controls whether the physical timer registers are accessible
1260                                                                      from nonsecure EL1 and EL0 modes:
1261                                                                  If EL3 is implemented and EL2 is not implemented, this bit is
1262                                                                      treated as if it is 1 for all purposes other than reading the
1263                                                                      register.
1264                                                                  0 = The AP_CNTP_CVAL_EL0, AP_CNTP_TVAL_EL0, and AP_CNTP_CTL_EL0 registers
1265                                                                      are not accessible from nonsecure EL1 and EL0 modes.
1266                                                                  1 = The AP_CNTP_CVAL_EL0, AP_CNTP_TVAL_EL0, and AP_CNTP_CTL_EL0 registers
1267                                                                      are accessible from nonsecure EL1 and EL0 modes. */
1268         uint32_t evnten                : 1;  /**< [  2:  2](R/W) Enables the generation of an event stream from the
1269                                                                      corresponding counter:
1270                                                                  0 = Disables the event stream.
1271                                                                  1 = Enables the event stream. */
1272         uint32_t evntdir               : 1;  /**< [  3:  3](R/W) Controls which transition of the counter register ( AP_CNTPCT_EL0
1273                                                                      or AP_CNTVCT_EL0) trigger bit, defined by EVNTI, generates an
1274                                                                      event when the event stream is enabled:
1275                                                                  0 = A 0 to 1 transition of the trigger bit triggers an event.
1276                                                                  1 = A 1 to 0 transition of the trigger bit triggers an event. */
1277         uint32_t evnti                 : 4;  /**< [  7:  4](R/W) Selects which bit (0 to 15) of the corresponding counter
1278                                                                      register ( AP_CNTPCT_EL0 or AP_CNTVCT_EL0) is the trigger for the
1279                                                                      event stream generated from that counter, when that stream is
1280                                                                      enabled. */
1281         uint32_t reserved_8_31         : 24;
1282 #endif /* Word 0 - End */
1283     } s;
1284     /* struct bdk_ap_cnthctl_el2_s cn; */
1285 };
1286 typedef union bdk_ap_cnthctl_el2 bdk_ap_cnthctl_el2_t;
1287 
1288 #define BDK_AP_CNTHCTL_EL2 BDK_AP_CNTHCTL_EL2_FUNC()
1289 static inline uint64_t BDK_AP_CNTHCTL_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTHCTL_EL2_FUNC(void)1290 static inline uint64_t BDK_AP_CNTHCTL_EL2_FUNC(void)
1291 {
1292     return 0x3040e010000ll;
1293 }
1294 
1295 #define typedef_BDK_AP_CNTHCTL_EL2 bdk_ap_cnthctl_el2_t
1296 #define bustype_BDK_AP_CNTHCTL_EL2 BDK_CSR_TYPE_SYSREG
1297 #define basename_BDK_AP_CNTHCTL_EL2 "AP_CNTHCTL_EL2"
1298 #define busnum_BDK_AP_CNTHCTL_EL2 0
1299 #define arguments_BDK_AP_CNTHCTL_EL2 -1,-1,-1,-1
1300 
1301 /**
1302  * Register (SYSREG) ap_cnthctl_el2_e2h
1303  *
1304  * AP Counter-timer Hypervisor Control E2H Register
1305  * This register is at the same select as AP_CNTHCTL_EL2 and is used when E2H=1.
1306  */
1307 union bdk_ap_cnthctl_el2_e2h
1308 {
1309     uint32_t u;
1310     struct bdk_ap_cnthctl_el2_e2h_s
1311     {
1312 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1313         uint32_t reserved_12_31        : 20;
1314         uint32_t el1pcen               : 1;  /**< [ 11: 11](R/W) Controls whether physical timer register accessing instuctions
1315                                                                  are accessible from nonsecure EL1 and EL0:
1316                                                                  0 = The following system register accessing instructions in AARCH64,
1317                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1318                                                                      when AP_HCR_EL2[TGE] == 0 and the instructions are executed at
1319                                                                      nonsecure EL1, or nonsecure EL0 unless trapped to EL1 as a
1320                                                                      result of controls in the AP_CNTKCTL_EL1
1321                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=0   AP_CNTP_TVAL_EL0
1322                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=1   AP_CNTP_CTL_EL0
1323                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=2   AP_CNTP_CVAL_EL0
1324                                                                      This bit does not cause any instructions to be trapped to EL2
1325                                                                      when AP_HCR_EL2[TGE]==1.
1326 
1327                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1328         uint32_t el1pten               : 1;  /**< [ 10: 10](R/W) Controls whether the physical counter is accessible from nonsecure
1329                                                                  EL1 and EL0.
1330                                                                  0 = The following system register accessing instructions in AARCH64,
1331                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1332                                                                      when AP_HCR_EL2[TGE] == 0 and the instructions are executed at nonsecure
1333                                                                      EL1, or nonsecure EL0 unless trapped to EL1 as a result of controls
1334                                                                      in AP_CNTKCTL_EL1.
1335                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=1   AP_CNTPCT_EL0
1336                                                                      This bit does not cause any instructions to be trapped to EL2
1337                                                                      when AP_HCR_EL2[TGE] == 1.
1338 
1339                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1340         uint32_t el0pten               : 1;  /**< [  9:  9](R/W) Controls whether the physical timer register accessing instructions are
1341                                                                  accessible from nonsecure EL0 when AP_HCR_EL2[TGE]==1.
1342                                                                  0 = The following system register accessing instructions in AARCH64,
1343                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1344                                                                      when AP_HCR_EL2[TGE] == 1 and the instructions are executed at nonsecure
1345                                                                      EL0.
1346                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=0   AP_CNTP_TVAL_EL0
1347                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=1   AP_CNTP_CTL_EL0
1348                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=2   AP_CNTP_CVAL_EL0
1349                                                                      This bit does not cause any instructions to be trapped to EL2
1350                                                                      when AP_HCR_EL2[TGE]==0.
1351 
1352                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1353         uint32_t el0vten               : 1;  /**< [  8:  8](R/W) Controls whether the virtual timer register accessing instructions are
1354                                                                  accessible from nonsecure EL0 when AP_HCR_EL2[TGE]==1.
1355                                                                  0 = The following system register accessing instructions in AARCH64,
1356                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1357                                                                      when AP_HCR_EL2[TGE] == 1 and the instructions are executed at nonsecure
1358                                                                      EL0.
1359                                                                        Op0=3, op1=3, CRn=14, CRm=3, Op2=0   AP_CNTV_TVAL_EL0
1360                                                                        Op0=3, op1=3, CRn=14, CRm=3, Op2=1   AP_CNTV_CTL_EL0
1361                                                                        Op0=3, op1=3, CRn=14, CRm=3, Op2=2   AP_CNTV_CVAL_EL0
1362                                                                      This bit does not cause any instructions to be trapped to EL2
1363                                                                      when AP_HCR_EL2[TGE]==0.
1364 
1365                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1366         uint32_t evnti                 : 4;  /**< [  7:  4](R/W) Selects which bit (0 to 15) of the corresponding counter
1367                                                                      register ( AP_CNTPCT_EL0 or AP_CNTVCT_EL0) is the trigger for the
1368                                                                      event stream generated from that counter, when that stream is
1369                                                                      enabled. */
1370         uint32_t evntdir               : 1;  /**< [  3:  3](R/W) Controls which transition of the counter register ( AP_CNTPCT_EL0
1371                                                                      or AP_CNTVCT_EL0) trigger bit, defined by EVNTI, generates an
1372                                                                      event when the event stream is enabled:
1373                                                                  0 = A 0 to 1 transition of the trigger bit triggers an event.
1374                                                                  1 = A 1 to 0 transition of the trigger bit triggers an event. */
1375         uint32_t evnten                : 1;  /**< [  2:  2](R/W) Enables the generation of an event stream from the
1376                                                                      corresponding counter:
1377                                                                  0 = Disables the event stream.
1378                                                                  1 = Enables the event stream. */
1379         uint32_t el0vcten              : 1;  /**< [  1:  1](R/W) Controls whether the virtual counter registers are accessible
1380                                                                      from nonsecure EL1 and EL0 when AP_HCR_EL2[TGE]==1:
1381                                                                  0 = The following system register accessing instructions in AARCH64,
1382                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1383                                                                      when AP_HCR_EL2[TGE] == 1 and the instructions are executed at nonsecure
1384                                                                      EL0.
1385                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=2   AP_CNTVCT_EL0
1386                                                                      In addition, if EL0PCTEN == 0, then the following System Register
1387                                                                      accessing instructions in AARCH64, and their equivalent instructions
1388                                                                      in AARCH32, are trapped to EL2 when executed at nonsecure EL0 when
1389                                                                      AP_HCR_EL2[TGE]==1.
1390                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=0   AP_CNTFRQ_EL0
1391                                                                      This bit does not cause any instructions to be trapped to EL2
1392                                                                      when AP_HCR_EL2[TGE]==0.
1393 
1394                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1395         uint32_t el0pcten              : 1;  /**< [  0:  0](R/W) Controls whether physical counter register accessing instructions
1396                                                                  are accessible from nonsecure EL0 when AP_HCR_EL2[TGE]==1:
1397                                                                  0 = The following system register accessing instructions in AARCH64,
1398                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1399                                                                      when AP_HCR_EL2[TGE] == 1 and the instructions are executed at nonsecure
1400                                                                      EL0.
1401                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=1   AP_CNTPCT_EL0
1402                                                                      In addition, if EL0PCTEN == 0, then the following System Register
1403                                                                      accessing instructions in AARCH64, and their equivalent instructions
1404                                                                      in AARCH32, are trapped to EL2 when executed at nonsecure EL0 when
1405                                                                      AP_HCR_EL2[TGE]==1.
1406                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=0   AP_CNTFRQ_EL0
1407                                                                      This bit does not cause any instructions to be trapped to EL2
1408                                                                      when AP_HCR_EL2[TGE]==0.
1409 
1410                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1411 #else /* Word 0 - Little Endian */
1412         uint32_t el0pcten              : 1;  /**< [  0:  0](R/W) Controls whether physical counter register accessing instructions
1413                                                                  are accessible from nonsecure EL0 when AP_HCR_EL2[TGE]==1:
1414                                                                  0 = The following system register accessing instructions in AARCH64,
1415                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1416                                                                      when AP_HCR_EL2[TGE] == 1 and the instructions are executed at nonsecure
1417                                                                      EL0.
1418                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=1   AP_CNTPCT_EL0
1419                                                                      In addition, if EL0PCTEN == 0, then the following System Register
1420                                                                      accessing instructions in AARCH64, and their equivalent instructions
1421                                                                      in AARCH32, are trapped to EL2 when executed at nonsecure EL0 when
1422                                                                      AP_HCR_EL2[TGE]==1.
1423                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=0   AP_CNTFRQ_EL0
1424                                                                      This bit does not cause any instructions to be trapped to EL2
1425                                                                      when AP_HCR_EL2[TGE]==0.
1426 
1427                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1428         uint32_t el0vcten              : 1;  /**< [  1:  1](R/W) Controls whether the virtual counter registers are accessible
1429                                                                      from nonsecure EL1 and EL0 when AP_HCR_EL2[TGE]==1:
1430                                                                  0 = The following system register accessing instructions in AARCH64,
1431                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1432                                                                      when AP_HCR_EL2[TGE] == 1 and the instructions are executed at nonsecure
1433                                                                      EL0.
1434                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=2   AP_CNTVCT_EL0
1435                                                                      In addition, if EL0PCTEN == 0, then the following System Register
1436                                                                      accessing instructions in AARCH64, and their equivalent instructions
1437                                                                      in AARCH32, are trapped to EL2 when executed at nonsecure EL0 when
1438                                                                      AP_HCR_EL2[TGE]==1.
1439                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=0   AP_CNTFRQ_EL0
1440                                                                      This bit does not cause any instructions to be trapped to EL2
1441                                                                      when AP_HCR_EL2[TGE]==0.
1442 
1443                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1444         uint32_t evnten                : 1;  /**< [  2:  2](R/W) Enables the generation of an event stream from the
1445                                                                      corresponding counter:
1446                                                                  0 = Disables the event stream.
1447                                                                  1 = Enables the event stream. */
1448         uint32_t evntdir               : 1;  /**< [  3:  3](R/W) Controls which transition of the counter register ( AP_CNTPCT_EL0
1449                                                                      or AP_CNTVCT_EL0) trigger bit, defined by EVNTI, generates an
1450                                                                      event when the event stream is enabled:
1451                                                                  0 = A 0 to 1 transition of the trigger bit triggers an event.
1452                                                                  1 = A 1 to 0 transition of the trigger bit triggers an event. */
1453         uint32_t evnti                 : 4;  /**< [  7:  4](R/W) Selects which bit (0 to 15) of the corresponding counter
1454                                                                      register ( AP_CNTPCT_EL0 or AP_CNTVCT_EL0) is the trigger for the
1455                                                                      event stream generated from that counter, when that stream is
1456                                                                      enabled. */
1457         uint32_t el0vten               : 1;  /**< [  8:  8](R/W) Controls whether the virtual timer register accessing instructions are
1458                                                                  accessible from nonsecure EL0 when AP_HCR_EL2[TGE]==1.
1459                                                                  0 = The following system register accessing instructions in AARCH64,
1460                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1461                                                                      when AP_HCR_EL2[TGE] == 1 and the instructions are executed at nonsecure
1462                                                                      EL0.
1463                                                                        Op0=3, op1=3, CRn=14, CRm=3, Op2=0   AP_CNTV_TVAL_EL0
1464                                                                        Op0=3, op1=3, CRn=14, CRm=3, Op2=1   AP_CNTV_CTL_EL0
1465                                                                        Op0=3, op1=3, CRn=14, CRm=3, Op2=2   AP_CNTV_CVAL_EL0
1466                                                                      This bit does not cause any instructions to be trapped to EL2
1467                                                                      when AP_HCR_EL2[TGE]==0.
1468 
1469                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1470         uint32_t el0pten               : 1;  /**< [  9:  9](R/W) Controls whether the physical timer register accessing instructions are
1471                                                                  accessible from nonsecure EL0 when AP_HCR_EL2[TGE]==1.
1472                                                                  0 = The following system register accessing instructions in AARCH64,
1473                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1474                                                                      when AP_HCR_EL2[TGE] == 1 and the instructions are executed at nonsecure
1475                                                                      EL0.
1476                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=0   AP_CNTP_TVAL_EL0
1477                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=1   AP_CNTP_CTL_EL0
1478                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=2   AP_CNTP_CVAL_EL0
1479                                                                      This bit does not cause any instructions to be trapped to EL2
1480                                                                      when AP_HCR_EL2[TGE]==0.
1481 
1482                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1483         uint32_t el1pten               : 1;  /**< [ 10: 10](R/W) Controls whether the physical counter is accessible from nonsecure
1484                                                                  EL1 and EL0.
1485                                                                  0 = The following system register accessing instructions in AARCH64,
1486                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1487                                                                      when AP_HCR_EL2[TGE] == 0 and the instructions are executed at nonsecure
1488                                                                      EL1, or nonsecure EL0 unless trapped to EL1 as a result of controls
1489                                                                      in AP_CNTKCTL_EL1.
1490                                                                        Op0=3, op1=3, CRn=14, CRm=0, Op2=1   AP_CNTPCT_EL0
1491                                                                      This bit does not cause any instructions to be trapped to EL2
1492                                                                      when AP_HCR_EL2[TGE] == 1.
1493 
1494                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1495         uint32_t el1pcen               : 1;  /**< [ 11: 11](R/W) Controls whether physical timer register accessing instuctions
1496                                                                  are accessible from nonsecure EL1 and EL0:
1497                                                                  0 = The following system register accessing instructions in AARCH64,
1498                                                                      and their equivalent instructions in AARCH32, are trapped to EL2
1499                                                                      when AP_HCR_EL2[TGE] == 0 and the instructions are executed at
1500                                                                      nonsecure EL1, or nonsecure EL0 unless trapped to EL1 as a
1501                                                                      result of controls in the AP_CNTKCTL_EL1
1502                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=0   AP_CNTP_TVAL_EL0
1503                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=1   AP_CNTP_CTL_EL0
1504                                                                        Op0=3, op1=3, CRn=14, CRm=2, Op2=2   AP_CNTP_CVAL_EL0
1505                                                                      This bit does not cause any instructions to be trapped to EL2
1506                                                                      when AP_HCR_EL2[TGE]==1.
1507 
1508                                                                  1 = This bit does not cause any instructions to be trapped to EL2. */
1509         uint32_t reserved_12_31        : 20;
1510 #endif /* Word 0 - End */
1511     } s;
1512     /* struct bdk_ap_cnthctl_el2_e2h_s cn; */
1513 };
1514 typedef union bdk_ap_cnthctl_el2_e2h bdk_ap_cnthctl_el2_e2h_t;
1515 
1516 #define BDK_AP_CNTHCTL_EL2_E2H BDK_AP_CNTHCTL_EL2_E2H_FUNC()
1517 static inline uint64_t BDK_AP_CNTHCTL_EL2_E2H_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTHCTL_EL2_E2H_FUNC(void)1518 static inline uint64_t BDK_AP_CNTHCTL_EL2_E2H_FUNC(void)
1519 {
1520     return 0x3040e010010ll;
1521 }
1522 
1523 #define typedef_BDK_AP_CNTHCTL_EL2_E2H bdk_ap_cnthctl_el2_e2h_t
1524 #define bustype_BDK_AP_CNTHCTL_EL2_E2H BDK_CSR_TYPE_SYSREG
1525 #define basename_BDK_AP_CNTHCTL_EL2_E2H "AP_CNTHCTL_EL2_E2H"
1526 #define busnum_BDK_AP_CNTHCTL_EL2_E2H 0
1527 #define arguments_BDK_AP_CNTHCTL_EL2_E2H -1,-1,-1,-1
1528 
1529 /**
1530  * Register (SYSREG) ap_cnthp_ctl_el2
1531  *
1532  * AP Counter-timer Hypervisor Physical Timer Control Register
1533  * Control register for the EL2 physical timer.
1534  */
1535 union bdk_ap_cnthp_ctl_el2
1536 {
1537     uint32_t u;
1538     struct bdk_ap_cnthp_ctl_el2_s
1539     {
1540 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1541         uint32_t reserved_3_31         : 29;
1542         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
1543                                                                  A register write that sets IMASK to 1 latches this bit to
1544                                                                      reflect the status of the interrupt immediately before that
1545                                                                      write.
1546                                                                  0 = Interrupt not asserted.
1547                                                                  1 = Interrupt asserted. */
1548         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
1549                                                                  0 = Timer interrupt is not masked.
1550                                                                  1 = Timer interrupt is masked. */
1551         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
1552                                                                  Disabling the timer masks the timer interrupt, but the timer
1553                                                                      value continues to count down.
1554                                                                  0 = Timer disabled.
1555                                                                  1 = Timer enabled. */
1556 #else /* Word 0 - Little Endian */
1557         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
1558                                                                  Disabling the timer masks the timer interrupt, but the timer
1559                                                                      value continues to count down.
1560                                                                  0 = Timer disabled.
1561                                                                  1 = Timer enabled. */
1562         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
1563                                                                  0 = Timer interrupt is not masked.
1564                                                                  1 = Timer interrupt is masked. */
1565         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
1566                                                                  A register write that sets IMASK to 1 latches this bit to
1567                                                                      reflect the status of the interrupt immediately before that
1568                                                                      write.
1569                                                                  0 = Interrupt not asserted.
1570                                                                  1 = Interrupt asserted. */
1571         uint32_t reserved_3_31         : 29;
1572 #endif /* Word 0 - End */
1573     } s;
1574     /* struct bdk_ap_cnthp_ctl_el2_s cn; */
1575 };
1576 typedef union bdk_ap_cnthp_ctl_el2 bdk_ap_cnthp_ctl_el2_t;
1577 
1578 #define BDK_AP_CNTHP_CTL_EL2 BDK_AP_CNTHP_CTL_EL2_FUNC()
1579 static inline uint64_t BDK_AP_CNTHP_CTL_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTHP_CTL_EL2_FUNC(void)1580 static inline uint64_t BDK_AP_CNTHP_CTL_EL2_FUNC(void)
1581 {
1582     return 0x3040e020100ll;
1583 }
1584 
1585 #define typedef_BDK_AP_CNTHP_CTL_EL2 bdk_ap_cnthp_ctl_el2_t
1586 #define bustype_BDK_AP_CNTHP_CTL_EL2 BDK_CSR_TYPE_SYSREG
1587 #define basename_BDK_AP_CNTHP_CTL_EL2 "AP_CNTHP_CTL_EL2"
1588 #define busnum_BDK_AP_CNTHP_CTL_EL2 0
1589 #define arguments_BDK_AP_CNTHP_CTL_EL2 -1,-1,-1,-1
1590 
1591 /**
1592  * Register (SYSREG) ap_cnthp_cval_el2
1593  *
1594  * AP Counter-timer Hypervisor Physical Timer Compare Value Register
1595  * Holds the compare value for the EL2 physical timer.
1596  */
1597 union bdk_ap_cnthp_cval_el2
1598 {
1599     uint64_t u;
1600     struct bdk_ap_cnthp_cval_el2_s
1601     {
1602 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1603         uint64_t data                  : 64; /**< [ 63:  0](R/W) EL2 physical timer compare value. */
1604 #else /* Word 0 - Little Endian */
1605         uint64_t data                  : 64; /**< [ 63:  0](R/W) EL2 physical timer compare value. */
1606 #endif /* Word 0 - End */
1607     } s;
1608     /* struct bdk_ap_cnthp_cval_el2_s cn; */
1609 };
1610 typedef union bdk_ap_cnthp_cval_el2 bdk_ap_cnthp_cval_el2_t;
1611 
1612 #define BDK_AP_CNTHP_CVAL_EL2 BDK_AP_CNTHP_CVAL_EL2_FUNC()
1613 static inline uint64_t BDK_AP_CNTHP_CVAL_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTHP_CVAL_EL2_FUNC(void)1614 static inline uint64_t BDK_AP_CNTHP_CVAL_EL2_FUNC(void)
1615 {
1616     return 0x3040e020200ll;
1617 }
1618 
1619 #define typedef_BDK_AP_CNTHP_CVAL_EL2 bdk_ap_cnthp_cval_el2_t
1620 #define bustype_BDK_AP_CNTHP_CVAL_EL2 BDK_CSR_TYPE_SYSREG
1621 #define basename_BDK_AP_CNTHP_CVAL_EL2 "AP_CNTHP_CVAL_EL2"
1622 #define busnum_BDK_AP_CNTHP_CVAL_EL2 0
1623 #define arguments_BDK_AP_CNTHP_CVAL_EL2 -1,-1,-1,-1
1624 
1625 /**
1626  * Register (SYSREG) ap_cnthp_tval_el2
1627  *
1628  * AP Counter-timer Hypervisor Physical Timer Value Register
1629  * Holds the timer value for the EL2 physical timer.
1630  */
1631 union bdk_ap_cnthp_tval_el2
1632 {
1633     uint32_t u;
1634     struct bdk_ap_cnthp_tval_el2_s
1635     {
1636 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1637         uint32_t data                  : 32; /**< [ 31:  0](R/W) EL2 physical timer value. */
1638 #else /* Word 0 - Little Endian */
1639         uint32_t data                  : 32; /**< [ 31:  0](R/W) EL2 physical timer value. */
1640 #endif /* Word 0 - End */
1641     } s;
1642     /* struct bdk_ap_cnthp_tval_el2_s cn; */
1643 };
1644 typedef union bdk_ap_cnthp_tval_el2 bdk_ap_cnthp_tval_el2_t;
1645 
1646 #define BDK_AP_CNTHP_TVAL_EL2 BDK_AP_CNTHP_TVAL_EL2_FUNC()
1647 static inline uint64_t BDK_AP_CNTHP_TVAL_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTHP_TVAL_EL2_FUNC(void)1648 static inline uint64_t BDK_AP_CNTHP_TVAL_EL2_FUNC(void)
1649 {
1650     return 0x3040e020000ll;
1651 }
1652 
1653 #define typedef_BDK_AP_CNTHP_TVAL_EL2 bdk_ap_cnthp_tval_el2_t
1654 #define bustype_BDK_AP_CNTHP_TVAL_EL2 BDK_CSR_TYPE_SYSREG
1655 #define basename_BDK_AP_CNTHP_TVAL_EL2 "AP_CNTHP_TVAL_EL2"
1656 #define busnum_BDK_AP_CNTHP_TVAL_EL2 0
1657 #define arguments_BDK_AP_CNTHP_TVAL_EL2 -1,-1,-1,-1
1658 
1659 /**
1660  * Register (SYSREG) ap_cnthv_ctl_el2
1661  *
1662  * AP v8.1 Counter-timer Hypervisor Virtual Timer Control Register
1663  * v8.1 Control register for the EL2 virtual timer.
1664  */
1665 union bdk_ap_cnthv_ctl_el2
1666 {
1667     uint32_t u;
1668     struct bdk_ap_cnthv_ctl_el2_s
1669     {
1670 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1671         uint32_t reserved_3_31         : 29;
1672         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
1673                                                                  A register write that sets IMASK to 1 latches this bit to
1674                                                                      reflect the status of the interrupt immediately before that
1675                                                                      write.
1676                                                                  0 = Interrupt not asserted.
1677                                                                  1 = Interrupt asserted. */
1678         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
1679                                                                  0 = Timer interrupt is not masked.
1680                                                                  1 = Timer interrupt is masked. */
1681         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
1682                                                                  Disabling the timer masks the timer interrupt, but the timer
1683                                                                      value continues to count down.
1684                                                                  0 = Timer disabled.
1685                                                                  1 = Timer enabled. */
1686 #else /* Word 0 - Little Endian */
1687         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
1688                                                                  Disabling the timer masks the timer interrupt, but the timer
1689                                                                      value continues to count down.
1690                                                                  0 = Timer disabled.
1691                                                                  1 = Timer enabled. */
1692         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
1693                                                                  0 = Timer interrupt is not masked.
1694                                                                  1 = Timer interrupt is masked. */
1695         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
1696                                                                  A register write that sets IMASK to 1 latches this bit to
1697                                                                      reflect the status of the interrupt immediately before that
1698                                                                      write.
1699                                                                  0 = Interrupt not asserted.
1700                                                                  1 = Interrupt asserted. */
1701         uint32_t reserved_3_31         : 29;
1702 #endif /* Word 0 - End */
1703     } s;
1704     /* struct bdk_ap_cnthv_ctl_el2_s cn; */
1705 };
1706 typedef union bdk_ap_cnthv_ctl_el2 bdk_ap_cnthv_ctl_el2_t;
1707 
1708 #define BDK_AP_CNTHV_CTL_EL2 BDK_AP_CNTHV_CTL_EL2_FUNC()
1709 static inline uint64_t BDK_AP_CNTHV_CTL_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTHV_CTL_EL2_FUNC(void)1710 static inline uint64_t BDK_AP_CNTHV_CTL_EL2_FUNC(void)
1711 {
1712     return 0x3040e030100ll;
1713 }
1714 
1715 #define typedef_BDK_AP_CNTHV_CTL_EL2 bdk_ap_cnthv_ctl_el2_t
1716 #define bustype_BDK_AP_CNTHV_CTL_EL2 BDK_CSR_TYPE_SYSREG
1717 #define basename_BDK_AP_CNTHV_CTL_EL2 "AP_CNTHV_CTL_EL2"
1718 #define busnum_BDK_AP_CNTHV_CTL_EL2 0
1719 #define arguments_BDK_AP_CNTHV_CTL_EL2 -1,-1,-1,-1
1720 
1721 /**
1722  * Register (SYSREG) ap_cnthv_cval_el2
1723  *
1724  * AP v8.1 Counter-timer Hypervisor Virtual Timer Compare Value Register
1725  * v8.1 Holds the compare value for the EL2 virtual timer.
1726  */
1727 union bdk_ap_cnthv_cval_el2
1728 {
1729     uint64_t u;
1730     struct bdk_ap_cnthv_cval_el2_s
1731     {
1732 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1733         uint64_t data                  : 64; /**< [ 63:  0](R/W) EL2 physical timer compare value. */
1734 #else /* Word 0 - Little Endian */
1735         uint64_t data                  : 64; /**< [ 63:  0](R/W) EL2 physical timer compare value. */
1736 #endif /* Word 0 - End */
1737     } s;
1738     /* struct bdk_ap_cnthv_cval_el2_s cn; */
1739 };
1740 typedef union bdk_ap_cnthv_cval_el2 bdk_ap_cnthv_cval_el2_t;
1741 
1742 #define BDK_AP_CNTHV_CVAL_EL2 BDK_AP_CNTHV_CVAL_EL2_FUNC()
1743 static inline uint64_t BDK_AP_CNTHV_CVAL_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTHV_CVAL_EL2_FUNC(void)1744 static inline uint64_t BDK_AP_CNTHV_CVAL_EL2_FUNC(void)
1745 {
1746     return 0x3040e030200ll;
1747 }
1748 
1749 #define typedef_BDK_AP_CNTHV_CVAL_EL2 bdk_ap_cnthv_cval_el2_t
1750 #define bustype_BDK_AP_CNTHV_CVAL_EL2 BDK_CSR_TYPE_SYSREG
1751 #define basename_BDK_AP_CNTHV_CVAL_EL2 "AP_CNTHV_CVAL_EL2"
1752 #define busnum_BDK_AP_CNTHV_CVAL_EL2 0
1753 #define arguments_BDK_AP_CNTHV_CVAL_EL2 -1,-1,-1,-1
1754 
1755 /**
1756  * Register (SYSREG) ap_cnthv_tval_el2
1757  *
1758  * AP v8.1 Counter-timer Hypervisor Virtual Timer Value Register
1759  * v8.1 Holds the timer value for the EL2 virtual timer.
1760  */
1761 union bdk_ap_cnthv_tval_el2
1762 {
1763     uint32_t u;
1764     struct bdk_ap_cnthv_tval_el2_s
1765     {
1766 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1767         uint32_t data                  : 32; /**< [ 31:  0](R/W) EL2 virtual timer value. */
1768 #else /* Word 0 - Little Endian */
1769         uint32_t data                  : 32; /**< [ 31:  0](R/W) EL2 virtual timer value. */
1770 #endif /* Word 0 - End */
1771     } s;
1772     /* struct bdk_ap_cnthv_tval_el2_s cn; */
1773 };
1774 typedef union bdk_ap_cnthv_tval_el2 bdk_ap_cnthv_tval_el2_t;
1775 
1776 #define BDK_AP_CNTHV_TVAL_EL2 BDK_AP_CNTHV_TVAL_EL2_FUNC()
1777 static inline uint64_t BDK_AP_CNTHV_TVAL_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTHV_TVAL_EL2_FUNC(void)1778 static inline uint64_t BDK_AP_CNTHV_TVAL_EL2_FUNC(void)
1779 {
1780     return 0x3040e030000ll;
1781 }
1782 
1783 #define typedef_BDK_AP_CNTHV_TVAL_EL2 bdk_ap_cnthv_tval_el2_t
1784 #define bustype_BDK_AP_CNTHV_TVAL_EL2 BDK_CSR_TYPE_SYSREG
1785 #define basename_BDK_AP_CNTHV_TVAL_EL2 "AP_CNTHV_TVAL_EL2"
1786 #define busnum_BDK_AP_CNTHV_TVAL_EL2 0
1787 #define arguments_BDK_AP_CNTHV_TVAL_EL2 -1,-1,-1,-1
1788 
1789 /**
1790  * Register (SYSREG) ap_cntkctl_el1
1791  *
1792  * AP Counter-timer Kernel Control Register
1793  * Controls the generation of an event stream from the virtual
1794  *     counter, and access from EL0 to the physical counter, virtual
1795  *     counter, EL1 physical timers, and the virtual timer.
1796  */
1797 union bdk_ap_cntkctl_el1
1798 {
1799     uint32_t u;
1800     struct bdk_ap_cntkctl_el1_s
1801     {
1802 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1803         uint32_t reserved_10_31        : 22;
1804         uint32_t el0pten               : 1;  /**< [  9:  9](R/W) Controls whether the physical timer registers are accessible
1805                                                                      from EL0 modes:
1806                                                                  0 = The AP_CNTP_CVAL_EL0, AP_CNTP_CTL_EL0, and AP_CNTP_TVAL_EL0 registers
1807                                                                      are not accessible from EL0.
1808                                                                  1 = The AP_CNTP_CVAL_EL0, AP_CNTP_CTL_EL0, and AP_CNTP_TVAL_EL0 registers
1809                                                                      are accessible from EL0. */
1810         uint32_t el0vten               : 1;  /**< [  8:  8](R/W) Controls whether the virtual timer registers are accessible
1811                                                                      from EL0 modes:
1812                                                                  0 = The AP_CNTV_CVAL_EL0, AP_CNTV_CTL_EL0, and AP_CNTV_TVAL_EL0 registers
1813                                                                      are not accessible from EL0.
1814                                                                  1 = The AP_CNTV_CVAL_EL0, AP_CNTV_CTL_EL0, and AP_CNTV_TVAL_EL0 registers
1815                                                                      are accessible from EL0. */
1816         uint32_t evnti                 : 4;  /**< [  7:  4](R/W) Selects which bit (0 to 15) of the corresponding counter
1817                                                                      register ( AP_CNTPCT_EL0 or AP_CNTVCT_EL0) is the trigger for the
1818                                                                      event stream generated from that counter, when that stream is
1819                                                                      enabled. */
1820         uint32_t evntdir               : 1;  /**< [  3:  3](R/W) Controls which transition of the counter register ( AP_CNTPCT_EL0
1821                                                                      or AP_CNTVCT_EL0) trigger bit, defined by EVNTI, generates an
1822                                                                      event when the event stream is enabled:
1823                                                                  0 = A 0 to 1 transition of the trigger bit triggers an event.
1824                                                                  1 = A 1 to 0 transition of the trigger bit triggers an event. */
1825         uint32_t evnten                : 1;  /**< [  2:  2](R/W) Enables the generation of an event stream from the
1826                                                                      corresponding counter:
1827                                                                  0 = Disables the event stream.
1828                                                                  1 = Enables the event stream. */
1829         uint32_t el0vcten              : 1;  /**< [  1:  1](R/W) Controls whether the virtual counter, AP_CNTVCT_EL0, and the
1830                                                                      frequency register AP_CNTFRQ_EL0, are accessible from EL0 modes:
1831                                                                  0 =  AP_CNTVCT_EL0 is not accessible from EL0. If EL0PCTEN is set to
1832                                                                      0, AP_CNTFRQ_EL0 is not accessible from EL0.
1833                                                                  1 =  AP_CNTVCT_EL0 and AP_CNTFRQ_EL0 are accessible from EL0. */
1834         uint32_t el0pcten              : 1;  /**< [  0:  0](R/W) Controls whether the physical counter, AP_CNTPCT_EL0, and the
1835                                                                      frequency register AP_CNTFRQ_EL0, are accessible from EL0 modes:
1836                                                                  0 =  AP_CNTPCT_EL0 is not accessible from EL0 modes. If EL0VCTEN is
1837                                                                      set to 0, AP_CNTFRQ_EL0 is not accessible from EL0.
1838                                                                  1 =  AP_CNTPCT_EL0 and AP_CNTFRQ_EL0 are accessible from EL0. */
1839 #else /* Word 0 - Little Endian */
1840         uint32_t el0pcten              : 1;  /**< [  0:  0](R/W) Controls whether the physical counter, AP_CNTPCT_EL0, and the
1841                                                                      frequency register AP_CNTFRQ_EL0, are accessible from EL0 modes:
1842                                                                  0 =  AP_CNTPCT_EL0 is not accessible from EL0 modes. If EL0VCTEN is
1843                                                                      set to 0, AP_CNTFRQ_EL0 is not accessible from EL0.
1844                                                                  1 =  AP_CNTPCT_EL0 and AP_CNTFRQ_EL0 are accessible from EL0. */
1845         uint32_t el0vcten              : 1;  /**< [  1:  1](R/W) Controls whether the virtual counter, AP_CNTVCT_EL0, and the
1846                                                                      frequency register AP_CNTFRQ_EL0, are accessible from EL0 modes:
1847                                                                  0 =  AP_CNTVCT_EL0 is not accessible from EL0. If EL0PCTEN is set to
1848                                                                      0, AP_CNTFRQ_EL0 is not accessible from EL0.
1849                                                                  1 =  AP_CNTVCT_EL0 and AP_CNTFRQ_EL0 are accessible from EL0. */
1850         uint32_t evnten                : 1;  /**< [  2:  2](R/W) Enables the generation of an event stream from the
1851                                                                      corresponding counter:
1852                                                                  0 = Disables the event stream.
1853                                                                  1 = Enables the event stream. */
1854         uint32_t evntdir               : 1;  /**< [  3:  3](R/W) Controls which transition of the counter register ( AP_CNTPCT_EL0
1855                                                                      or AP_CNTVCT_EL0) trigger bit, defined by EVNTI, generates an
1856                                                                      event when the event stream is enabled:
1857                                                                  0 = A 0 to 1 transition of the trigger bit triggers an event.
1858                                                                  1 = A 1 to 0 transition of the trigger bit triggers an event. */
1859         uint32_t evnti                 : 4;  /**< [  7:  4](R/W) Selects which bit (0 to 15) of the corresponding counter
1860                                                                      register ( AP_CNTPCT_EL0 or AP_CNTVCT_EL0) is the trigger for the
1861                                                                      event stream generated from that counter, when that stream is
1862                                                                      enabled. */
1863         uint32_t el0vten               : 1;  /**< [  8:  8](R/W) Controls whether the virtual timer registers are accessible
1864                                                                      from EL0 modes:
1865                                                                  0 = The AP_CNTV_CVAL_EL0, AP_CNTV_CTL_EL0, and AP_CNTV_TVAL_EL0 registers
1866                                                                      are not accessible from EL0.
1867                                                                  1 = The AP_CNTV_CVAL_EL0, AP_CNTV_CTL_EL0, and AP_CNTV_TVAL_EL0 registers
1868                                                                      are accessible from EL0. */
1869         uint32_t el0pten               : 1;  /**< [  9:  9](R/W) Controls whether the physical timer registers are accessible
1870                                                                      from EL0 modes:
1871                                                                  0 = The AP_CNTP_CVAL_EL0, AP_CNTP_CTL_EL0, and AP_CNTP_TVAL_EL0 registers
1872                                                                      are not accessible from EL0.
1873                                                                  1 = The AP_CNTP_CVAL_EL0, AP_CNTP_CTL_EL0, and AP_CNTP_TVAL_EL0 registers
1874                                                                      are accessible from EL0. */
1875         uint32_t reserved_10_31        : 22;
1876 #endif /* Word 0 - End */
1877     } s;
1878     /* struct bdk_ap_cntkctl_el1_s cn; */
1879 };
1880 typedef union bdk_ap_cntkctl_el1 bdk_ap_cntkctl_el1_t;
1881 
1882 #define BDK_AP_CNTKCTL_EL1 BDK_AP_CNTKCTL_EL1_FUNC()
1883 static inline uint64_t BDK_AP_CNTKCTL_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTKCTL_EL1_FUNC(void)1884 static inline uint64_t BDK_AP_CNTKCTL_EL1_FUNC(void)
1885 {
1886     return 0x3000e010000ll;
1887 }
1888 
1889 #define typedef_BDK_AP_CNTKCTL_EL1 bdk_ap_cntkctl_el1_t
1890 #define bustype_BDK_AP_CNTKCTL_EL1 BDK_CSR_TYPE_SYSREG
1891 #define basename_BDK_AP_CNTKCTL_EL1 "AP_CNTKCTL_EL1"
1892 #define busnum_BDK_AP_CNTKCTL_EL1 0
1893 #define arguments_BDK_AP_CNTKCTL_EL1 -1,-1,-1,-1
1894 
1895 /**
1896  * Register (SYSREG) ap_cntkctl_el12
1897  *
1898  * AP Counter-timer Kernel Control Register
1899  * Alias of AP_CNTKCTL_EL1 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
1900  */
1901 union bdk_ap_cntkctl_el12
1902 {
1903     uint32_t u;
1904     struct bdk_ap_cntkctl_el12_s
1905     {
1906 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1907         uint32_t reserved_0_31         : 32;
1908 #else /* Word 0 - Little Endian */
1909         uint32_t reserved_0_31         : 32;
1910 #endif /* Word 0 - End */
1911     } s;
1912     /* struct bdk_ap_cntkctl_el12_s cn; */
1913 };
1914 typedef union bdk_ap_cntkctl_el12 bdk_ap_cntkctl_el12_t;
1915 
1916 #define BDK_AP_CNTKCTL_EL12 BDK_AP_CNTKCTL_EL12_FUNC()
1917 static inline uint64_t BDK_AP_CNTKCTL_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTKCTL_EL12_FUNC(void)1918 static inline uint64_t BDK_AP_CNTKCTL_EL12_FUNC(void)
1919 {
1920     return 0x3050e010000ll;
1921 }
1922 
1923 #define typedef_BDK_AP_CNTKCTL_EL12 bdk_ap_cntkctl_el12_t
1924 #define bustype_BDK_AP_CNTKCTL_EL12 BDK_CSR_TYPE_SYSREG
1925 #define basename_BDK_AP_CNTKCTL_EL12 "AP_CNTKCTL_EL12"
1926 #define busnum_BDK_AP_CNTKCTL_EL12 0
1927 #define arguments_BDK_AP_CNTKCTL_EL12 -1,-1,-1,-1
1928 
1929 /**
1930  * Register (SYSREG) ap_cntp_ctl_el0
1931  *
1932  * AP Counter-timer Physical Timer Control Register
1933  * Control register for the EL1 physical timer.
1934  */
1935 union bdk_ap_cntp_ctl_el0
1936 {
1937     uint32_t u;
1938     struct bdk_ap_cntp_ctl_el0_s
1939     {
1940 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1941         uint32_t reserved_3_31         : 29;
1942         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
1943                                                                  A register write that sets IMASK to 1 latches this bit to
1944                                                                      reflect the status of the interrupt immediately before that
1945                                                                      write.
1946                                                                  0 = Interrupt not asserted.
1947                                                                  1 = Interrupt asserted. */
1948         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
1949                                                                  0 = Timer interrupt is not masked.
1950                                                                  1 = Timer interrupt is masked. */
1951         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
1952                                                                  Disabling the timer masks the timer interrupt, but the timer
1953                                                                      value continues to count down.
1954                                                                  0 = Timer disabled.
1955                                                                  1 = Timer enabled. */
1956 #else /* Word 0 - Little Endian */
1957         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
1958                                                                  Disabling the timer masks the timer interrupt, but the timer
1959                                                                      value continues to count down.
1960                                                                  0 = Timer disabled.
1961                                                                  1 = Timer enabled. */
1962         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
1963                                                                  0 = Timer interrupt is not masked.
1964                                                                  1 = Timer interrupt is masked. */
1965         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
1966                                                                  A register write that sets IMASK to 1 latches this bit to
1967                                                                      reflect the status of the interrupt immediately before that
1968                                                                      write.
1969                                                                  0 = Interrupt not asserted.
1970                                                                  1 = Interrupt asserted. */
1971         uint32_t reserved_3_31         : 29;
1972 #endif /* Word 0 - End */
1973     } s;
1974     /* struct bdk_ap_cntp_ctl_el0_s cn; */
1975 };
1976 typedef union bdk_ap_cntp_ctl_el0 bdk_ap_cntp_ctl_el0_t;
1977 
1978 #define BDK_AP_CNTP_CTL_EL0 BDK_AP_CNTP_CTL_EL0_FUNC()
1979 static inline uint64_t BDK_AP_CNTP_CTL_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTP_CTL_EL0_FUNC(void)1980 static inline uint64_t BDK_AP_CNTP_CTL_EL0_FUNC(void)
1981 {
1982     return 0x3030e020100ll;
1983 }
1984 
1985 #define typedef_BDK_AP_CNTP_CTL_EL0 bdk_ap_cntp_ctl_el0_t
1986 #define bustype_BDK_AP_CNTP_CTL_EL0 BDK_CSR_TYPE_SYSREG
1987 #define basename_BDK_AP_CNTP_CTL_EL0 "AP_CNTP_CTL_EL0"
1988 #define busnum_BDK_AP_CNTP_CTL_EL0 0
1989 #define arguments_BDK_AP_CNTP_CTL_EL0 -1,-1,-1,-1
1990 
1991 /**
1992  * Register (SYSREG) ap_cntp_ctl_el02
1993  *
1994  * AP Counter-timer Physical Timer Control Register
1995  * Alias of AP_CNTP_CTL_EL0 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
1996  */
1997 union bdk_ap_cntp_ctl_el02
1998 {
1999     uint32_t u;
2000     struct bdk_ap_cntp_ctl_el02_s
2001     {
2002 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2003         uint32_t reserved_0_31         : 32;
2004 #else /* Word 0 - Little Endian */
2005         uint32_t reserved_0_31         : 32;
2006 #endif /* Word 0 - End */
2007     } s;
2008     /* struct bdk_ap_cntp_ctl_el02_s cn; */
2009 };
2010 typedef union bdk_ap_cntp_ctl_el02 bdk_ap_cntp_ctl_el02_t;
2011 
2012 #define BDK_AP_CNTP_CTL_EL02 BDK_AP_CNTP_CTL_EL02_FUNC()
2013 static inline uint64_t BDK_AP_CNTP_CTL_EL02_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTP_CTL_EL02_FUNC(void)2014 static inline uint64_t BDK_AP_CNTP_CTL_EL02_FUNC(void)
2015 {
2016     return 0x3050e020100ll;
2017 }
2018 
2019 #define typedef_BDK_AP_CNTP_CTL_EL02 bdk_ap_cntp_ctl_el02_t
2020 #define bustype_BDK_AP_CNTP_CTL_EL02 BDK_CSR_TYPE_SYSREG
2021 #define basename_BDK_AP_CNTP_CTL_EL02 "AP_CNTP_CTL_EL02"
2022 #define busnum_BDK_AP_CNTP_CTL_EL02 0
2023 #define arguments_BDK_AP_CNTP_CTL_EL02 -1,-1,-1,-1
2024 
2025 /**
2026  * Register (SYSREG) ap_cntp_cval_el0
2027  *
2028  * AP Counter-timer Physical Timer Compare Value Register
2029  * Holds the compare value for the EL1 physical timer.
2030  */
2031 union bdk_ap_cntp_cval_el0
2032 {
2033     uint64_t u;
2034     struct bdk_ap_cntp_cval_el0_s
2035     {
2036 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2037         uint64_t data                  : 64; /**< [ 63:  0](R/W) EL1 physical timer compare value. */
2038 #else /* Word 0 - Little Endian */
2039         uint64_t data                  : 64; /**< [ 63:  0](R/W) EL1 physical timer compare value. */
2040 #endif /* Word 0 - End */
2041     } s;
2042     /* struct bdk_ap_cntp_cval_el0_s cn; */
2043 };
2044 typedef union bdk_ap_cntp_cval_el0 bdk_ap_cntp_cval_el0_t;
2045 
2046 #define BDK_AP_CNTP_CVAL_EL0 BDK_AP_CNTP_CVAL_EL0_FUNC()
2047 static inline uint64_t BDK_AP_CNTP_CVAL_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTP_CVAL_EL0_FUNC(void)2048 static inline uint64_t BDK_AP_CNTP_CVAL_EL0_FUNC(void)
2049 {
2050     return 0x3030e020200ll;
2051 }
2052 
2053 #define typedef_BDK_AP_CNTP_CVAL_EL0 bdk_ap_cntp_cval_el0_t
2054 #define bustype_BDK_AP_CNTP_CVAL_EL0 BDK_CSR_TYPE_SYSREG
2055 #define basename_BDK_AP_CNTP_CVAL_EL0 "AP_CNTP_CVAL_EL0"
2056 #define busnum_BDK_AP_CNTP_CVAL_EL0 0
2057 #define arguments_BDK_AP_CNTP_CVAL_EL0 -1,-1,-1,-1
2058 
2059 /**
2060  * Register (SYSREG) ap_cntp_cval_el02
2061  *
2062  * AP Counter-timer Physical Timer Compare Value Register
2063  * Alias of AP_CNTP_CVAL_EL0 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
2064  */
2065 union bdk_ap_cntp_cval_el02
2066 {
2067     uint64_t u;
2068     struct bdk_ap_cntp_cval_el02_s
2069     {
2070 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2071         uint64_t reserved_0_63         : 64;
2072 #else /* Word 0 - Little Endian */
2073         uint64_t reserved_0_63         : 64;
2074 #endif /* Word 0 - End */
2075     } s;
2076     /* struct bdk_ap_cntp_cval_el02_s cn; */
2077 };
2078 typedef union bdk_ap_cntp_cval_el02 bdk_ap_cntp_cval_el02_t;
2079 
2080 #define BDK_AP_CNTP_CVAL_EL02 BDK_AP_CNTP_CVAL_EL02_FUNC()
2081 static inline uint64_t BDK_AP_CNTP_CVAL_EL02_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTP_CVAL_EL02_FUNC(void)2082 static inline uint64_t BDK_AP_CNTP_CVAL_EL02_FUNC(void)
2083 {
2084     return 0x3050e020200ll;
2085 }
2086 
2087 #define typedef_BDK_AP_CNTP_CVAL_EL02 bdk_ap_cntp_cval_el02_t
2088 #define bustype_BDK_AP_CNTP_CVAL_EL02 BDK_CSR_TYPE_SYSREG
2089 #define basename_BDK_AP_CNTP_CVAL_EL02 "AP_CNTP_CVAL_EL02"
2090 #define busnum_BDK_AP_CNTP_CVAL_EL02 0
2091 #define arguments_BDK_AP_CNTP_CVAL_EL02 -1,-1,-1,-1
2092 
2093 /**
2094  * Register (SYSREG) ap_cntp_tval_el0
2095  *
2096  * AP Counter-timer Physical Timer Value Register
2097  * Holds the timer value for the EL1 physical timer.
2098  */
2099 union bdk_ap_cntp_tval_el0
2100 {
2101     uint32_t u;
2102     struct bdk_ap_cntp_tval_el0_s
2103     {
2104 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2105         uint32_t data                  : 32; /**< [ 31:  0](R/W) EL1 physical timer value. */
2106 #else /* Word 0 - Little Endian */
2107         uint32_t data                  : 32; /**< [ 31:  0](R/W) EL1 physical timer value. */
2108 #endif /* Word 0 - End */
2109     } s;
2110     /* struct bdk_ap_cntp_tval_el0_s cn; */
2111 };
2112 typedef union bdk_ap_cntp_tval_el0 bdk_ap_cntp_tval_el0_t;
2113 
2114 #define BDK_AP_CNTP_TVAL_EL0 BDK_AP_CNTP_TVAL_EL0_FUNC()
2115 static inline uint64_t BDK_AP_CNTP_TVAL_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTP_TVAL_EL0_FUNC(void)2116 static inline uint64_t BDK_AP_CNTP_TVAL_EL0_FUNC(void)
2117 {
2118     return 0x3030e020000ll;
2119 }
2120 
2121 #define typedef_BDK_AP_CNTP_TVAL_EL0 bdk_ap_cntp_tval_el0_t
2122 #define bustype_BDK_AP_CNTP_TVAL_EL0 BDK_CSR_TYPE_SYSREG
2123 #define basename_BDK_AP_CNTP_TVAL_EL0 "AP_CNTP_TVAL_EL0"
2124 #define busnum_BDK_AP_CNTP_TVAL_EL0 0
2125 #define arguments_BDK_AP_CNTP_TVAL_EL0 -1,-1,-1,-1
2126 
2127 /**
2128  * Register (SYSREG) ap_cntp_tval_el02
2129  *
2130  * AP Counter-timer Physical Timer Value Register
2131  * Alias of CNTP_TVAL_EL1 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
2132  */
2133 union bdk_ap_cntp_tval_el02
2134 {
2135     uint32_t u;
2136     struct bdk_ap_cntp_tval_el02_s
2137     {
2138 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2139         uint32_t reserved_0_31         : 32;
2140 #else /* Word 0 - Little Endian */
2141         uint32_t reserved_0_31         : 32;
2142 #endif /* Word 0 - End */
2143     } s;
2144     /* struct bdk_ap_cntp_tval_el02_s cn; */
2145 };
2146 typedef union bdk_ap_cntp_tval_el02 bdk_ap_cntp_tval_el02_t;
2147 
2148 #define BDK_AP_CNTP_TVAL_EL02 BDK_AP_CNTP_TVAL_EL02_FUNC()
2149 static inline uint64_t BDK_AP_CNTP_TVAL_EL02_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTP_TVAL_EL02_FUNC(void)2150 static inline uint64_t BDK_AP_CNTP_TVAL_EL02_FUNC(void)
2151 {
2152     return 0x3050e020000ll;
2153 }
2154 
2155 #define typedef_BDK_AP_CNTP_TVAL_EL02 bdk_ap_cntp_tval_el02_t
2156 #define bustype_BDK_AP_CNTP_TVAL_EL02 BDK_CSR_TYPE_SYSREG
2157 #define basename_BDK_AP_CNTP_TVAL_EL02 "AP_CNTP_TVAL_EL02"
2158 #define busnum_BDK_AP_CNTP_TVAL_EL02 0
2159 #define arguments_BDK_AP_CNTP_TVAL_EL02 -1,-1,-1,-1
2160 
2161 /**
2162  * Register (SYSREG) ap_cntpct_el0
2163  *
2164  * AP Counter-timer Physical Count Register
2165  * Holds the 64-bit physical count value.
2166  */
2167 union bdk_ap_cntpct_el0
2168 {
2169     uint64_t u;
2170     struct bdk_ap_cntpct_el0_s
2171     {
2172 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2173         uint64_t data                  : 64; /**< [ 63:  0](RO) Physical count value. */
2174 #else /* Word 0 - Little Endian */
2175         uint64_t data                  : 64; /**< [ 63:  0](RO) Physical count value. */
2176 #endif /* Word 0 - End */
2177     } s;
2178     /* struct bdk_ap_cntpct_el0_s cn; */
2179 };
2180 typedef union bdk_ap_cntpct_el0 bdk_ap_cntpct_el0_t;
2181 
2182 #define BDK_AP_CNTPCT_EL0 BDK_AP_CNTPCT_EL0_FUNC()
2183 static inline uint64_t BDK_AP_CNTPCT_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTPCT_EL0_FUNC(void)2184 static inline uint64_t BDK_AP_CNTPCT_EL0_FUNC(void)
2185 {
2186     return 0x3030e000100ll;
2187 }
2188 
2189 #define typedef_BDK_AP_CNTPCT_EL0 bdk_ap_cntpct_el0_t
2190 #define bustype_BDK_AP_CNTPCT_EL0 BDK_CSR_TYPE_SYSREG
2191 #define basename_BDK_AP_CNTPCT_EL0 "AP_CNTPCT_EL0"
2192 #define busnum_BDK_AP_CNTPCT_EL0 0
2193 #define arguments_BDK_AP_CNTPCT_EL0 -1,-1,-1,-1
2194 
2195 /**
2196  * Register (SYSREG) ap_cntps_ctl_el1
2197  *
2198  * AP Counter-timer Physical Secure Timer Control Register
2199  * Control register for the secure physical timer, usually
2200  *     accessible at EL3 but configurably accessible at EL1 in Secure
2201  *     state.
2202  */
2203 union bdk_ap_cntps_ctl_el1
2204 {
2205     uint32_t u;
2206     struct bdk_ap_cntps_ctl_el1_s
2207     {
2208 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2209         uint32_t reserved_3_31         : 29;
2210         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
2211                                                                  A register write that sets IMASK to 1 latches this bit to
2212                                                                      reflect the status of the interrupt immediately before that
2213                                                                      write.
2214                                                                  0 = Interrupt not asserted.
2215                                                                  1 = Interrupt asserted. */
2216         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
2217                                                                  0 = Timer interrupt is not masked.
2218                                                                  1 = Timer interrupt is masked. */
2219         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
2220                                                                  Disabling the timer masks the timer interrupt, but the timer
2221                                                                      value continues to count down.
2222                                                                  0 = Timer disabled.
2223                                                                  1 = Timer enabled. */
2224 #else /* Word 0 - Little Endian */
2225         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
2226                                                                  Disabling the timer masks the timer interrupt, but the timer
2227                                                                      value continues to count down.
2228                                                                  0 = Timer disabled.
2229                                                                  1 = Timer enabled. */
2230         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
2231                                                                  0 = Timer interrupt is not masked.
2232                                                                  1 = Timer interrupt is masked. */
2233         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
2234                                                                  A register write that sets IMASK to 1 latches this bit to
2235                                                                      reflect the status of the interrupt immediately before that
2236                                                                      write.
2237                                                                  0 = Interrupt not asserted.
2238                                                                  1 = Interrupt asserted. */
2239         uint32_t reserved_3_31         : 29;
2240 #endif /* Word 0 - End */
2241     } s;
2242     /* struct bdk_ap_cntps_ctl_el1_s cn; */
2243 };
2244 typedef union bdk_ap_cntps_ctl_el1 bdk_ap_cntps_ctl_el1_t;
2245 
2246 #define BDK_AP_CNTPS_CTL_EL1 BDK_AP_CNTPS_CTL_EL1_FUNC()
2247 static inline uint64_t BDK_AP_CNTPS_CTL_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTPS_CTL_EL1_FUNC(void)2248 static inline uint64_t BDK_AP_CNTPS_CTL_EL1_FUNC(void)
2249 {
2250     return 0x3070e020100ll;
2251 }
2252 
2253 #define typedef_BDK_AP_CNTPS_CTL_EL1 bdk_ap_cntps_ctl_el1_t
2254 #define bustype_BDK_AP_CNTPS_CTL_EL1 BDK_CSR_TYPE_SYSREG
2255 #define basename_BDK_AP_CNTPS_CTL_EL1 "AP_CNTPS_CTL_EL1"
2256 #define busnum_BDK_AP_CNTPS_CTL_EL1 0
2257 #define arguments_BDK_AP_CNTPS_CTL_EL1 -1,-1,-1,-1
2258 
2259 /**
2260  * Register (SYSREG) ap_cntps_cval_el1
2261  *
2262  * AP Counter-timer Physical Secure Timer Compare Value Register
2263  * Holds the compare value for the secure physical timer, usually
2264  *     accessible at EL3 but configurably accessible at EL1 in Secure
2265  *     state.
2266  */
2267 union bdk_ap_cntps_cval_el1
2268 {
2269     uint64_t u;
2270     struct bdk_ap_cntps_cval_el1_s
2271     {
2272 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2273         uint64_t data                  : 64; /**< [ 63:  0](R/W) Secure physical timer compare value. */
2274 #else /* Word 0 - Little Endian */
2275         uint64_t data                  : 64; /**< [ 63:  0](R/W) Secure physical timer compare value. */
2276 #endif /* Word 0 - End */
2277     } s;
2278     /* struct bdk_ap_cntps_cval_el1_s cn; */
2279 };
2280 typedef union bdk_ap_cntps_cval_el1 bdk_ap_cntps_cval_el1_t;
2281 
2282 #define BDK_AP_CNTPS_CVAL_EL1 BDK_AP_CNTPS_CVAL_EL1_FUNC()
2283 static inline uint64_t BDK_AP_CNTPS_CVAL_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTPS_CVAL_EL1_FUNC(void)2284 static inline uint64_t BDK_AP_CNTPS_CVAL_EL1_FUNC(void)
2285 {
2286     return 0x3070e020200ll;
2287 }
2288 
2289 #define typedef_BDK_AP_CNTPS_CVAL_EL1 bdk_ap_cntps_cval_el1_t
2290 #define bustype_BDK_AP_CNTPS_CVAL_EL1 BDK_CSR_TYPE_SYSREG
2291 #define basename_BDK_AP_CNTPS_CVAL_EL1 "AP_CNTPS_CVAL_EL1"
2292 #define busnum_BDK_AP_CNTPS_CVAL_EL1 0
2293 #define arguments_BDK_AP_CNTPS_CVAL_EL1 -1,-1,-1,-1
2294 
2295 /**
2296  * Register (SYSREG) ap_cntps_tval_el1
2297  *
2298  * AP Counter-timer Physical Secure Timer Value Register
2299  * This register holds the timer value for the secure physical timer, usually
2300  * accessible at EL3 but configurably accessible at EL1 in the secure state.
2301  */
2302 union bdk_ap_cntps_tval_el1
2303 {
2304     uint32_t u;
2305     struct bdk_ap_cntps_tval_el1_s
2306     {
2307 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2308         uint32_t data                  : 32; /**< [ 31:  0](R/W) Secure physical timer value. */
2309 #else /* Word 0 - Little Endian */
2310         uint32_t data                  : 32; /**< [ 31:  0](R/W) Secure physical timer value. */
2311 #endif /* Word 0 - End */
2312     } s;
2313     /* struct bdk_ap_cntps_tval_el1_s cn; */
2314 };
2315 typedef union bdk_ap_cntps_tval_el1 bdk_ap_cntps_tval_el1_t;
2316 
2317 #define BDK_AP_CNTPS_TVAL_EL1 BDK_AP_CNTPS_TVAL_EL1_FUNC()
2318 static inline uint64_t BDK_AP_CNTPS_TVAL_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTPS_TVAL_EL1_FUNC(void)2319 static inline uint64_t BDK_AP_CNTPS_TVAL_EL1_FUNC(void)
2320 {
2321     return 0x3070e020000ll;
2322 }
2323 
2324 #define typedef_BDK_AP_CNTPS_TVAL_EL1 bdk_ap_cntps_tval_el1_t
2325 #define bustype_BDK_AP_CNTPS_TVAL_EL1 BDK_CSR_TYPE_SYSREG
2326 #define basename_BDK_AP_CNTPS_TVAL_EL1 "AP_CNTPS_TVAL_EL1"
2327 #define busnum_BDK_AP_CNTPS_TVAL_EL1 0
2328 #define arguments_BDK_AP_CNTPS_TVAL_EL1 -1,-1,-1,-1
2329 
2330 /**
2331  * Register (SYSREG) ap_cntv_ctl_el0
2332  *
2333  * AP Counter-timer Virtual Timer Control Register
2334  * Control register for the virtual timer.
2335  */
2336 union bdk_ap_cntv_ctl_el0
2337 {
2338     uint32_t u;
2339     struct bdk_ap_cntv_ctl_el0_s
2340     {
2341 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2342         uint32_t reserved_3_31         : 29;
2343         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
2344                                                                  A register write that sets IMASK to 1 latches this bit to
2345                                                                      reflect the status of the interrupt immediately before that
2346                                                                      write.
2347                                                                  0 = Interrupt not asserted.
2348                                                                  1 = Interrupt asserted. */
2349         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
2350                                                                  0 = Timer interrupt is not masked.
2351                                                                  1 = Timer interrupt is masked. */
2352         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
2353                                                                  Disabling the timer masks the timer interrupt, but the timer
2354                                                                      value continues to count down.
2355                                                                  0 = Timer disabled.
2356                                                                  1 = Timer enabled. */
2357 #else /* Word 0 - Little Endian */
2358         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables the timer.
2359                                                                  Disabling the timer masks the timer interrupt, but the timer
2360                                                                      value continues to count down.
2361                                                                  0 = Timer disabled.
2362                                                                  1 = Timer enabled. */
2363         uint32_t imask                 : 1;  /**< [  1:  1](R/W) Timer interrupt mask bit.
2364                                                                  0 = Timer interrupt is not masked.
2365                                                                  1 = Timer interrupt is masked. */
2366         uint32_t istatus               : 1;  /**< [  2:  2](RO) The status of the timer interrupt. This bit is read-only.
2367                                                                  A register write that sets IMASK to 1 latches this bit to
2368                                                                      reflect the status of the interrupt immediately before that
2369                                                                      write.
2370                                                                  0 = Interrupt not asserted.
2371                                                                  1 = Interrupt asserted. */
2372         uint32_t reserved_3_31         : 29;
2373 #endif /* Word 0 - End */
2374     } s;
2375     /* struct bdk_ap_cntv_ctl_el0_s cn; */
2376 };
2377 typedef union bdk_ap_cntv_ctl_el0 bdk_ap_cntv_ctl_el0_t;
2378 
2379 #define BDK_AP_CNTV_CTL_EL0 BDK_AP_CNTV_CTL_EL0_FUNC()
2380 static inline uint64_t BDK_AP_CNTV_CTL_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTV_CTL_EL0_FUNC(void)2381 static inline uint64_t BDK_AP_CNTV_CTL_EL0_FUNC(void)
2382 {
2383     return 0x3030e030100ll;
2384 }
2385 
2386 #define typedef_BDK_AP_CNTV_CTL_EL0 bdk_ap_cntv_ctl_el0_t
2387 #define bustype_BDK_AP_CNTV_CTL_EL0 BDK_CSR_TYPE_SYSREG
2388 #define basename_BDK_AP_CNTV_CTL_EL0 "AP_CNTV_CTL_EL0"
2389 #define busnum_BDK_AP_CNTV_CTL_EL0 0
2390 #define arguments_BDK_AP_CNTV_CTL_EL0 -1,-1,-1,-1
2391 
2392 /**
2393  * Register (SYSREG) ap_cntv_ctl_el02
2394  *
2395  * AP Counter-timer Virtual Timer Control Register
2396  * Alias of AP_CNTV_CTL_EL0 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
2397  */
2398 union bdk_ap_cntv_ctl_el02
2399 {
2400     uint32_t u;
2401     struct bdk_ap_cntv_ctl_el02_s
2402     {
2403 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2404         uint32_t reserved_0_31         : 32;
2405 #else /* Word 0 - Little Endian */
2406         uint32_t reserved_0_31         : 32;
2407 #endif /* Word 0 - End */
2408     } s;
2409     /* struct bdk_ap_cntv_ctl_el02_s cn; */
2410 };
2411 typedef union bdk_ap_cntv_ctl_el02 bdk_ap_cntv_ctl_el02_t;
2412 
2413 #define BDK_AP_CNTV_CTL_EL02 BDK_AP_CNTV_CTL_EL02_FUNC()
2414 static inline uint64_t BDK_AP_CNTV_CTL_EL02_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTV_CTL_EL02_FUNC(void)2415 static inline uint64_t BDK_AP_CNTV_CTL_EL02_FUNC(void)
2416 {
2417     return 0x3050e030100ll;
2418 }
2419 
2420 #define typedef_BDK_AP_CNTV_CTL_EL02 bdk_ap_cntv_ctl_el02_t
2421 #define bustype_BDK_AP_CNTV_CTL_EL02 BDK_CSR_TYPE_SYSREG
2422 #define basename_BDK_AP_CNTV_CTL_EL02 "AP_CNTV_CTL_EL02"
2423 #define busnum_BDK_AP_CNTV_CTL_EL02 0
2424 #define arguments_BDK_AP_CNTV_CTL_EL02 -1,-1,-1,-1
2425 
2426 /**
2427  * Register (SYSREG) ap_cntv_cval_el0
2428  *
2429  * AP Counter-timer Virtual Timer Compare Value Register
2430  * Holds the compare value for the virtual timer.
2431  */
2432 union bdk_ap_cntv_cval_el0
2433 {
2434     uint64_t u;
2435     struct bdk_ap_cntv_cval_el0_s
2436     {
2437 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2438         uint64_t data                  : 64; /**< [ 63:  0](R/W) Virtual timer compare value. */
2439 #else /* Word 0 - Little Endian */
2440         uint64_t data                  : 64; /**< [ 63:  0](R/W) Virtual timer compare value. */
2441 #endif /* Word 0 - End */
2442     } s;
2443     /* struct bdk_ap_cntv_cval_el0_s cn; */
2444 };
2445 typedef union bdk_ap_cntv_cval_el0 bdk_ap_cntv_cval_el0_t;
2446 
2447 #define BDK_AP_CNTV_CVAL_EL0 BDK_AP_CNTV_CVAL_EL0_FUNC()
2448 static inline uint64_t BDK_AP_CNTV_CVAL_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTV_CVAL_EL0_FUNC(void)2449 static inline uint64_t BDK_AP_CNTV_CVAL_EL0_FUNC(void)
2450 {
2451     return 0x3030e030200ll;
2452 }
2453 
2454 #define typedef_BDK_AP_CNTV_CVAL_EL0 bdk_ap_cntv_cval_el0_t
2455 #define bustype_BDK_AP_CNTV_CVAL_EL0 BDK_CSR_TYPE_SYSREG
2456 #define basename_BDK_AP_CNTV_CVAL_EL0 "AP_CNTV_CVAL_EL0"
2457 #define busnum_BDK_AP_CNTV_CVAL_EL0 0
2458 #define arguments_BDK_AP_CNTV_CVAL_EL0 -1,-1,-1,-1
2459 
2460 /**
2461  * Register (SYSREG) ap_cntv_cval_el02
2462  *
2463  * AP Counter-timer Virtual Timer Compare Value Register
2464  * Alias of AP_CNTV_CVAL_EL0 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
2465  */
2466 union bdk_ap_cntv_cval_el02
2467 {
2468     uint64_t u;
2469     struct bdk_ap_cntv_cval_el02_s
2470     {
2471 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2472         uint64_t reserved_0_63         : 64;
2473 #else /* Word 0 - Little Endian */
2474         uint64_t reserved_0_63         : 64;
2475 #endif /* Word 0 - End */
2476     } s;
2477     /* struct bdk_ap_cntv_cval_el02_s cn; */
2478 };
2479 typedef union bdk_ap_cntv_cval_el02 bdk_ap_cntv_cval_el02_t;
2480 
2481 #define BDK_AP_CNTV_CVAL_EL02 BDK_AP_CNTV_CVAL_EL02_FUNC()
2482 static inline uint64_t BDK_AP_CNTV_CVAL_EL02_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTV_CVAL_EL02_FUNC(void)2483 static inline uint64_t BDK_AP_CNTV_CVAL_EL02_FUNC(void)
2484 {
2485     return 0x3050e030200ll;
2486 }
2487 
2488 #define typedef_BDK_AP_CNTV_CVAL_EL02 bdk_ap_cntv_cval_el02_t
2489 #define bustype_BDK_AP_CNTV_CVAL_EL02 BDK_CSR_TYPE_SYSREG
2490 #define basename_BDK_AP_CNTV_CVAL_EL02 "AP_CNTV_CVAL_EL02"
2491 #define busnum_BDK_AP_CNTV_CVAL_EL02 0
2492 #define arguments_BDK_AP_CNTV_CVAL_EL02 -1,-1,-1,-1
2493 
2494 /**
2495  * Register (SYSREG) ap_cntv_tval_el0
2496  *
2497  * AP Counter-timer Virtual Timer Value Register
2498  * Holds the timer value for the virtual timer.
2499  */
2500 union bdk_ap_cntv_tval_el0
2501 {
2502     uint32_t u;
2503     struct bdk_ap_cntv_tval_el0_s
2504     {
2505 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2506         uint32_t data                  : 32; /**< [ 31:  0](R/W) Virtual timer value. */
2507 #else /* Word 0 - Little Endian */
2508         uint32_t data                  : 32; /**< [ 31:  0](R/W) Virtual timer value. */
2509 #endif /* Word 0 - End */
2510     } s;
2511     /* struct bdk_ap_cntv_tval_el0_s cn; */
2512 };
2513 typedef union bdk_ap_cntv_tval_el0 bdk_ap_cntv_tval_el0_t;
2514 
2515 #define BDK_AP_CNTV_TVAL_EL0 BDK_AP_CNTV_TVAL_EL0_FUNC()
2516 static inline uint64_t BDK_AP_CNTV_TVAL_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTV_TVAL_EL0_FUNC(void)2517 static inline uint64_t BDK_AP_CNTV_TVAL_EL0_FUNC(void)
2518 {
2519     return 0x3030e030000ll;
2520 }
2521 
2522 #define typedef_BDK_AP_CNTV_TVAL_EL0 bdk_ap_cntv_tval_el0_t
2523 #define bustype_BDK_AP_CNTV_TVAL_EL0 BDK_CSR_TYPE_SYSREG
2524 #define basename_BDK_AP_CNTV_TVAL_EL0 "AP_CNTV_TVAL_EL0"
2525 #define busnum_BDK_AP_CNTV_TVAL_EL0 0
2526 #define arguments_BDK_AP_CNTV_TVAL_EL0 -1,-1,-1,-1
2527 
2528 /**
2529  * Register (SYSREG) ap_cntv_tval_el02
2530  *
2531  * AP Counter-timer Virtual Timer Value Register
2532  * Alias of AP_CNTV_TVAL_EL0 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
2533  */
2534 union bdk_ap_cntv_tval_el02
2535 {
2536     uint32_t u;
2537     struct bdk_ap_cntv_tval_el02_s
2538     {
2539 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2540         uint32_t reserved_0_31         : 32;
2541 #else /* Word 0 - Little Endian */
2542         uint32_t reserved_0_31         : 32;
2543 #endif /* Word 0 - End */
2544     } s;
2545     /* struct bdk_ap_cntv_tval_el02_s cn; */
2546 };
2547 typedef union bdk_ap_cntv_tval_el02 bdk_ap_cntv_tval_el02_t;
2548 
2549 #define BDK_AP_CNTV_TVAL_EL02 BDK_AP_CNTV_TVAL_EL02_FUNC()
2550 static inline uint64_t BDK_AP_CNTV_TVAL_EL02_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTV_TVAL_EL02_FUNC(void)2551 static inline uint64_t BDK_AP_CNTV_TVAL_EL02_FUNC(void)
2552 {
2553     return 0x3050e030000ll;
2554 }
2555 
2556 #define typedef_BDK_AP_CNTV_TVAL_EL02 bdk_ap_cntv_tval_el02_t
2557 #define bustype_BDK_AP_CNTV_TVAL_EL02 BDK_CSR_TYPE_SYSREG
2558 #define basename_BDK_AP_CNTV_TVAL_EL02 "AP_CNTV_TVAL_EL02"
2559 #define busnum_BDK_AP_CNTV_TVAL_EL02 0
2560 #define arguments_BDK_AP_CNTV_TVAL_EL02 -1,-1,-1,-1
2561 
2562 /**
2563  * Register (SYSREG) ap_cntvct_el0
2564  *
2565  * AP Counter-timer Virtual Count Register
2566  * Holds the 64-bit virtual count value.
2567  */
2568 union bdk_ap_cntvct_el0
2569 {
2570     uint64_t u;
2571     struct bdk_ap_cntvct_el0_s
2572     {
2573 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2574         uint64_t data                  : 64; /**< [ 63:  0](RO) Virtual count value. */
2575 #else /* Word 0 - Little Endian */
2576         uint64_t data                  : 64; /**< [ 63:  0](RO) Virtual count value. */
2577 #endif /* Word 0 - End */
2578     } s;
2579     /* struct bdk_ap_cntvct_el0_s cn; */
2580 };
2581 typedef union bdk_ap_cntvct_el0 bdk_ap_cntvct_el0_t;
2582 
2583 #define BDK_AP_CNTVCT_EL0 BDK_AP_CNTVCT_EL0_FUNC()
2584 static inline uint64_t BDK_AP_CNTVCT_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTVCT_EL0_FUNC(void)2585 static inline uint64_t BDK_AP_CNTVCT_EL0_FUNC(void)
2586 {
2587     return 0x3030e000200ll;
2588 }
2589 
2590 #define typedef_BDK_AP_CNTVCT_EL0 bdk_ap_cntvct_el0_t
2591 #define bustype_BDK_AP_CNTVCT_EL0 BDK_CSR_TYPE_SYSREG
2592 #define basename_BDK_AP_CNTVCT_EL0 "AP_CNTVCT_EL0"
2593 #define busnum_BDK_AP_CNTVCT_EL0 0
2594 #define arguments_BDK_AP_CNTVCT_EL0 -1,-1,-1,-1
2595 
2596 /**
2597  * Register (SYSREG) ap_cntvoff_el2
2598  *
2599  * AP Counter-timer Virtual Offset Register
2600  * Holds the 64-bit virtual offset.
2601  */
2602 union bdk_ap_cntvoff_el2
2603 {
2604     uint64_t u;
2605     struct bdk_ap_cntvoff_el2_s
2606     {
2607 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2608         uint64_t data                  : 64; /**< [ 63:  0](R/W) Virtual offset. */
2609 #else /* Word 0 - Little Endian */
2610         uint64_t data                  : 64; /**< [ 63:  0](R/W) Virtual offset. */
2611 #endif /* Word 0 - End */
2612     } s;
2613     /* struct bdk_ap_cntvoff_el2_s cn; */
2614 };
2615 typedef union bdk_ap_cntvoff_el2 bdk_ap_cntvoff_el2_t;
2616 
2617 #define BDK_AP_CNTVOFF_EL2 BDK_AP_CNTVOFF_EL2_FUNC()
2618 static inline uint64_t BDK_AP_CNTVOFF_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CNTVOFF_EL2_FUNC(void)2619 static inline uint64_t BDK_AP_CNTVOFF_EL2_FUNC(void)
2620 {
2621     return 0x3040e000300ll;
2622 }
2623 
2624 #define typedef_BDK_AP_CNTVOFF_EL2 bdk_ap_cntvoff_el2_t
2625 #define bustype_BDK_AP_CNTVOFF_EL2 BDK_CSR_TYPE_SYSREG
2626 #define basename_BDK_AP_CNTVOFF_EL2 "AP_CNTVOFF_EL2"
2627 #define busnum_BDK_AP_CNTVOFF_EL2 0
2628 #define arguments_BDK_AP_CNTVOFF_EL2 -1,-1,-1,-1
2629 
2630 /**
2631  * Register (SYSREG) ap_contextidr_el1
2632  *
2633  * AP Context ID Register
2634  * Identifies the current Process Identifier.
2635  */
2636 union bdk_ap_contextidr_el1
2637 {
2638     uint32_t u;
2639     struct bdk_ap_contextidr_el1_s
2640     {
2641 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2642         uint32_t procid                : 32; /**< [ 31:  0](R/W) Process Identifier. This field must be programmed with a
2643                                                                      unique value that identifies the current process. The bottom 8
2644                                                                      bits of this register are not used to hold the ASID. */
2645 #else /* Word 0 - Little Endian */
2646         uint32_t procid                : 32; /**< [ 31:  0](R/W) Process Identifier. This field must be programmed with a
2647                                                                      unique value that identifies the current process. The bottom 8
2648                                                                      bits of this register are not used to hold the ASID. */
2649 #endif /* Word 0 - End */
2650     } s;
2651     /* struct bdk_ap_contextidr_el1_s cn; */
2652 };
2653 typedef union bdk_ap_contextidr_el1 bdk_ap_contextidr_el1_t;
2654 
2655 #define BDK_AP_CONTEXTIDR_EL1 BDK_AP_CONTEXTIDR_EL1_FUNC()
2656 static inline uint64_t BDK_AP_CONTEXTIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CONTEXTIDR_EL1_FUNC(void)2657 static inline uint64_t BDK_AP_CONTEXTIDR_EL1_FUNC(void)
2658 {
2659     return 0x3000d000100ll;
2660 }
2661 
2662 #define typedef_BDK_AP_CONTEXTIDR_EL1 bdk_ap_contextidr_el1_t
2663 #define bustype_BDK_AP_CONTEXTIDR_EL1 BDK_CSR_TYPE_SYSREG
2664 #define basename_BDK_AP_CONTEXTIDR_EL1 "AP_CONTEXTIDR_EL1"
2665 #define busnum_BDK_AP_CONTEXTIDR_EL1 0
2666 #define arguments_BDK_AP_CONTEXTIDR_EL1 -1,-1,-1,-1
2667 
2668 /**
2669  * Register (SYSREG) ap_contextidr_el12
2670  *
2671  * AP Context ID Register
2672  * Alias of AP_CONTEXTIDR_EL1 when accessed at EL2/2 and AP_HCR_EL2[E2H] is set.
2673  */
2674 union bdk_ap_contextidr_el12
2675 {
2676     uint32_t u;
2677     struct bdk_ap_contextidr_el12_s
2678     {
2679 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2680         uint32_t reserved_0_31         : 32;
2681 #else /* Word 0 - Little Endian */
2682         uint32_t reserved_0_31         : 32;
2683 #endif /* Word 0 - End */
2684     } s;
2685     /* struct bdk_ap_contextidr_el12_s cn; */
2686 };
2687 typedef union bdk_ap_contextidr_el12 bdk_ap_contextidr_el12_t;
2688 
2689 #define BDK_AP_CONTEXTIDR_EL12 BDK_AP_CONTEXTIDR_EL12_FUNC()
2690 static inline uint64_t BDK_AP_CONTEXTIDR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CONTEXTIDR_EL12_FUNC(void)2691 static inline uint64_t BDK_AP_CONTEXTIDR_EL12_FUNC(void)
2692 {
2693     return 0x3050d000100ll;
2694 }
2695 
2696 #define typedef_BDK_AP_CONTEXTIDR_EL12 bdk_ap_contextidr_el12_t
2697 #define bustype_BDK_AP_CONTEXTIDR_EL12 BDK_CSR_TYPE_SYSREG
2698 #define basename_BDK_AP_CONTEXTIDR_EL12 "AP_CONTEXTIDR_EL12"
2699 #define busnum_BDK_AP_CONTEXTIDR_EL12 0
2700 #define arguments_BDK_AP_CONTEXTIDR_EL12 -1,-1,-1,-1
2701 
2702 /**
2703  * Register (SYSREG) ap_contextidr_el2
2704  *
2705  * AP Context ID EL2 Register
2706  * v8.1: Identifies the current Process Identifier.
2707  */
2708 union bdk_ap_contextidr_el2
2709 {
2710     uint32_t u;
2711     struct bdk_ap_contextidr_el2_s
2712     {
2713 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2714         uint32_t procid                : 32; /**< [ 31:  0](R/W) v8.1: Process Identifier. This field must be programmed with a
2715                                                                      unique value that identifies the current process. The bottom 8
2716                                                                      bits of this register are not used to hold the ASID. */
2717 #else /* Word 0 - Little Endian */
2718         uint32_t procid                : 32; /**< [ 31:  0](R/W) v8.1: Process Identifier. This field must be programmed with a
2719                                                                      unique value that identifies the current process. The bottom 8
2720                                                                      bits of this register are not used to hold the ASID. */
2721 #endif /* Word 0 - End */
2722     } s;
2723     /* struct bdk_ap_contextidr_el2_s cn; */
2724 };
2725 typedef union bdk_ap_contextidr_el2 bdk_ap_contextidr_el2_t;
2726 
2727 #define BDK_AP_CONTEXTIDR_EL2 BDK_AP_CONTEXTIDR_EL2_FUNC()
2728 static inline uint64_t BDK_AP_CONTEXTIDR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CONTEXTIDR_EL2_FUNC(void)2729 static inline uint64_t BDK_AP_CONTEXTIDR_EL2_FUNC(void)
2730 {
2731     return 0x3040d000100ll;
2732 }
2733 
2734 #define typedef_BDK_AP_CONTEXTIDR_EL2 bdk_ap_contextidr_el2_t
2735 #define bustype_BDK_AP_CONTEXTIDR_EL2 BDK_CSR_TYPE_SYSREG
2736 #define basename_BDK_AP_CONTEXTIDR_EL2 "AP_CONTEXTIDR_EL2"
2737 #define busnum_BDK_AP_CONTEXTIDR_EL2 0
2738 #define arguments_BDK_AP_CONTEXTIDR_EL2 -1,-1,-1,-1
2739 
2740 /**
2741  * Register (SYSREG) ap_cpacr_el1
2742  *
2743  * AP Architectural Feature Access Control Register
2744  * Controls access to Trace, Floating-point, and Advanced SIMD
2745  *     functionality.
2746  */
2747 union bdk_ap_cpacr_el1
2748 {
2749     uint32_t u;
2750     struct bdk_ap_cpacr_el1_s
2751     {
2752 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2753         uint32_t reserved_22_31        : 10;
2754         uint32_t fpen                  : 2;  /**< [ 21: 20](R/W) Causes instructions that access the registers associated with
2755                                                                      Floating Point and Advanced SIMD execution to trap to EL1 when
2756                                                                      executed from EL0 or EL1.
2757                                                                  0x0 = Causes any instructions in EL0 or EL1 that use the registers
2758                                                                      associated with Floating Point and Advanced SIMD execution to
2759                                                                      be trapped.
2760                                                                  0x1 = Causes any instructions in EL0 that use the registers
2761                                                                      associated with Floating Point and Advanced SIMD execution to
2762                                                                      be trapped, but does not cause any instruction in EL1 to be
2763                                                                      trapped.
2764                                                                  0x2 = Causes any instructions in EL0 or EL1 that use the registers
2765                                                                      associated with Floating Point and Advanced SIMD execution to
2766                                                                      be trapped.
2767                                                                  0x3 = Does not cause any instruction to be trapped. */
2768         uint32_t reserved_0_19         : 20;
2769 #else /* Word 0 - Little Endian */
2770         uint32_t reserved_0_19         : 20;
2771         uint32_t fpen                  : 2;  /**< [ 21: 20](R/W) Causes instructions that access the registers associated with
2772                                                                      Floating Point and Advanced SIMD execution to trap to EL1 when
2773                                                                      executed from EL0 or EL1.
2774                                                                  0x0 = Causes any instructions in EL0 or EL1 that use the registers
2775                                                                      associated with Floating Point and Advanced SIMD execution to
2776                                                                      be trapped.
2777                                                                  0x1 = Causes any instructions in EL0 that use the registers
2778                                                                      associated with Floating Point and Advanced SIMD execution to
2779                                                                      be trapped, but does not cause any instruction in EL1 to be
2780                                                                      trapped.
2781                                                                  0x2 = Causes any instructions in EL0 or EL1 that use the registers
2782                                                                      associated with Floating Point and Advanced SIMD execution to
2783                                                                      be trapped.
2784                                                                  0x3 = Does not cause any instruction to be trapped. */
2785         uint32_t reserved_22_31        : 10;
2786 #endif /* Word 0 - End */
2787     } s;
2788     struct bdk_ap_cpacr_el1_cn
2789     {
2790 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2791         uint32_t reserved_29_31        : 3;
2792         uint32_t reserved_28           : 1;
2793         uint32_t reserved_22_27        : 6;
2794         uint32_t fpen                  : 2;  /**< [ 21: 20](R/W) Causes instructions that access the registers associated with
2795                                                                      Floating Point and Advanced SIMD execution to trap to EL1 when
2796                                                                      executed from EL0 or EL1.
2797                                                                  0x0 = Causes any instructions in EL0 or EL1 that use the registers
2798                                                                      associated with Floating Point and Advanced SIMD execution to
2799                                                                      be trapped.
2800                                                                  0x1 = Causes any instructions in EL0 that use the registers
2801                                                                      associated with Floating Point and Advanced SIMD execution to
2802                                                                      be trapped, but does not cause any instruction in EL1 to be
2803                                                                      trapped.
2804                                                                  0x2 = Causes any instructions in EL0 or EL1 that use the registers
2805                                                                      associated with Floating Point and Advanced SIMD execution to
2806                                                                      be trapped.
2807                                                                  0x3 = Does not cause any instruction to be trapped. */
2808         uint32_t reserved_0_19         : 20;
2809 #else /* Word 0 - Little Endian */
2810         uint32_t reserved_0_19         : 20;
2811         uint32_t fpen                  : 2;  /**< [ 21: 20](R/W) Causes instructions that access the registers associated with
2812                                                                      Floating Point and Advanced SIMD execution to trap to EL1 when
2813                                                                      executed from EL0 or EL1.
2814                                                                  0x0 = Causes any instructions in EL0 or EL1 that use the registers
2815                                                                      associated with Floating Point and Advanced SIMD execution to
2816                                                                      be trapped.
2817                                                                  0x1 = Causes any instructions in EL0 that use the registers
2818                                                                      associated with Floating Point and Advanced SIMD execution to
2819                                                                      be trapped, but does not cause any instruction in EL1 to be
2820                                                                      trapped.
2821                                                                  0x2 = Causes any instructions in EL0 or EL1 that use the registers
2822                                                                      associated with Floating Point and Advanced SIMD execution to
2823                                                                      be trapped.
2824                                                                  0x3 = Does not cause any instruction to be trapped. */
2825         uint32_t reserved_22_27        : 6;
2826         uint32_t reserved_28           : 1;
2827         uint32_t reserved_29_31        : 3;
2828 #endif /* Word 0 - End */
2829     } cn;
2830 };
2831 typedef union bdk_ap_cpacr_el1 bdk_ap_cpacr_el1_t;
2832 
2833 #define BDK_AP_CPACR_EL1 BDK_AP_CPACR_EL1_FUNC()
2834 static inline uint64_t BDK_AP_CPACR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CPACR_EL1_FUNC(void)2835 static inline uint64_t BDK_AP_CPACR_EL1_FUNC(void)
2836 {
2837     return 0x30001000200ll;
2838 }
2839 
2840 #define typedef_BDK_AP_CPACR_EL1 bdk_ap_cpacr_el1_t
2841 #define bustype_BDK_AP_CPACR_EL1 BDK_CSR_TYPE_SYSREG
2842 #define basename_BDK_AP_CPACR_EL1 "AP_CPACR_EL1"
2843 #define busnum_BDK_AP_CPACR_EL1 0
2844 #define arguments_BDK_AP_CPACR_EL1 -1,-1,-1,-1
2845 
2846 /**
2847  * Register (SYSREG) ap_cpacr_el12
2848  *
2849  * AP Architectural Feature Access Control Register
2850  * Alias of AP_CPACR_EL1 when accessed from EL2 and AP_HCR_EL2[E2H] is set.
2851  */
2852 union bdk_ap_cpacr_el12
2853 {
2854     uint32_t u;
2855     struct bdk_ap_cpacr_el12_s
2856     {
2857 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2858         uint32_t reserved_0_31         : 32;
2859 #else /* Word 0 - Little Endian */
2860         uint32_t reserved_0_31         : 32;
2861 #endif /* Word 0 - End */
2862     } s;
2863     /* struct bdk_ap_cpacr_el12_s cn; */
2864 };
2865 typedef union bdk_ap_cpacr_el12 bdk_ap_cpacr_el12_t;
2866 
2867 #define BDK_AP_CPACR_EL12 BDK_AP_CPACR_EL12_FUNC()
2868 static inline uint64_t BDK_AP_CPACR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CPACR_EL12_FUNC(void)2869 static inline uint64_t BDK_AP_CPACR_EL12_FUNC(void)
2870 {
2871     return 0x30501000200ll;
2872 }
2873 
2874 #define typedef_BDK_AP_CPACR_EL12 bdk_ap_cpacr_el12_t
2875 #define bustype_BDK_AP_CPACR_EL12 BDK_CSR_TYPE_SYSREG
2876 #define basename_BDK_AP_CPACR_EL12 "AP_CPACR_EL12"
2877 #define busnum_BDK_AP_CPACR_EL12 0
2878 #define arguments_BDK_AP_CPACR_EL12 -1,-1,-1,-1
2879 
2880 /**
2881  * Register (SYSREG) ap_cptr_el2
2882  *
2883  * AP Architectural Feature Trap EL2 Non-E2H Register
2884  * Controls trapping to EL2 of access to CPACR, AP_CPACR_EL1, Trace
2885  *     functionality and registers associated with Floating Point and
2886  *     Advanced SIMD execution. Also controls EL2 access to this
2887  *     functionality.
2888  *
2889  * This register is at the same select as AP_CPTR_EL2_E2H and is used when E2H=0.
2890  */
2891 union bdk_ap_cptr_el2
2892 {
2893     uint32_t u;
2894     struct bdk_ap_cptr_el2_s
2895     {
2896 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2897         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to CPACR or AP_CPACR_EL1 from EL1 to
2898                                                                      trap to EL2.
2899                                                                  0 = Does not cause access to CPACR or AP_CPACR_EL1 to be trapped.
2900                                                                  1 = Causes access to CPACR or AP_CPACR_EL1 to be trapped. */
2901         uint32_t reserved_14_30        : 17;
2902         uint32_t rsvd_12_13            : 2;  /**< [ 13: 12](RO) Reserved 1. */
2903         uint32_t reserved_11           : 1;
2904         uint32_t tfp                   : 1;  /**< [ 10: 10](R/W) This causes instructions that access the registers associated
2905                                                                      with Floating Point and Advanced SIMD execution to trap to EL2
2906                                                                      when executed from EL0, EL1, or EL2, unless trapped to EL1.
2907 
2908                                                                  0 = Does not cause any instruction to be trapped.
2909                                                                  1 = Causes any instructions that use the registers associated with
2910                                                                      Floating Point and Advanced SIMD execution to be trapped. */
2911         uint32_t rsvd_0_9              : 10; /**< [  9:  0](RO) Reserved 1. */
2912 #else /* Word 0 - Little Endian */
2913         uint32_t rsvd_0_9              : 10; /**< [  9:  0](RO) Reserved 1. */
2914         uint32_t tfp                   : 1;  /**< [ 10: 10](R/W) This causes instructions that access the registers associated
2915                                                                      with Floating Point and Advanced SIMD execution to trap to EL2
2916                                                                      when executed from EL0, EL1, or EL2, unless trapped to EL1.
2917 
2918                                                                  0 = Does not cause any instruction to be trapped.
2919                                                                  1 = Causes any instructions that use the registers associated with
2920                                                                      Floating Point and Advanced SIMD execution to be trapped. */
2921         uint32_t reserved_11           : 1;
2922         uint32_t rsvd_12_13            : 2;  /**< [ 13: 12](RO) Reserved 1. */
2923         uint32_t reserved_14_30        : 17;
2924         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to CPACR or AP_CPACR_EL1 from EL1 to
2925                                                                      trap to EL2.
2926                                                                  0 = Does not cause access to CPACR or AP_CPACR_EL1 to be trapped.
2927                                                                  1 = Causes access to CPACR or AP_CPACR_EL1 to be trapped. */
2928 #endif /* Word 0 - End */
2929     } s;
2930     struct bdk_ap_cptr_el2_cn
2931     {
2932 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2933         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to CPACR or AP_CPACR_EL1 from EL1 to
2934                                                                      trap to EL2.
2935                                                                  0 = Does not cause access to CPACR or AP_CPACR_EL1 to be trapped.
2936                                                                  1 = Causes access to CPACR or AP_CPACR_EL1 to be trapped. */
2937         uint32_t reserved_29_30        : 2;
2938         uint32_t reserved_28           : 1;
2939         uint32_t reserved_20_27        : 8;
2940         uint32_t reserved_14_19        : 6;
2941         uint32_t rsvd_12_13            : 2;  /**< [ 13: 12](RO) Reserved 1. */
2942         uint32_t reserved_11           : 1;
2943         uint32_t tfp                   : 1;  /**< [ 10: 10](R/W) This causes instructions that access the registers associated
2944                                                                      with Floating Point and Advanced SIMD execution to trap to EL2
2945                                                                      when executed from EL0, EL1, or EL2, unless trapped to EL1.
2946 
2947                                                                  0 = Does not cause any instruction to be trapped.
2948                                                                  1 = Causes any instructions that use the registers associated with
2949                                                                      Floating Point and Advanced SIMD execution to be trapped. */
2950         uint32_t rsvd_0_9              : 10; /**< [  9:  0](RO) Reserved 1. */
2951 #else /* Word 0 - Little Endian */
2952         uint32_t rsvd_0_9              : 10; /**< [  9:  0](RO) Reserved 1. */
2953         uint32_t tfp                   : 1;  /**< [ 10: 10](R/W) This causes instructions that access the registers associated
2954                                                                      with Floating Point and Advanced SIMD execution to trap to EL2
2955                                                                      when executed from EL0, EL1, or EL2, unless trapped to EL1.
2956 
2957                                                                  0 = Does not cause any instruction to be trapped.
2958                                                                  1 = Causes any instructions that use the registers associated with
2959                                                                      Floating Point and Advanced SIMD execution to be trapped. */
2960         uint32_t reserved_11           : 1;
2961         uint32_t rsvd_12_13            : 2;  /**< [ 13: 12](RO) Reserved 1. */
2962         uint32_t reserved_14_19        : 6;
2963         uint32_t reserved_20_27        : 8;
2964         uint32_t reserved_28           : 1;
2965         uint32_t reserved_29_30        : 2;
2966         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to CPACR or AP_CPACR_EL1 from EL1 to
2967                                                                      trap to EL2.
2968                                                                  0 = Does not cause access to CPACR or AP_CPACR_EL1 to be trapped.
2969                                                                  1 = Causes access to CPACR or AP_CPACR_EL1 to be trapped. */
2970 #endif /* Word 0 - End */
2971     } cn;
2972 };
2973 typedef union bdk_ap_cptr_el2 bdk_ap_cptr_el2_t;
2974 
2975 #define BDK_AP_CPTR_EL2 BDK_AP_CPTR_EL2_FUNC()
2976 static inline uint64_t BDK_AP_CPTR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CPTR_EL2_FUNC(void)2977 static inline uint64_t BDK_AP_CPTR_EL2_FUNC(void)
2978 {
2979     return 0x30401010200ll;
2980 }
2981 
2982 #define typedef_BDK_AP_CPTR_EL2 bdk_ap_cptr_el2_t
2983 #define bustype_BDK_AP_CPTR_EL2 BDK_CSR_TYPE_SYSREG
2984 #define basename_BDK_AP_CPTR_EL2 "AP_CPTR_EL2"
2985 #define busnum_BDK_AP_CPTR_EL2 0
2986 #define arguments_BDK_AP_CPTR_EL2 -1,-1,-1,-1
2987 
2988 /**
2989  * Register (SYSREG) ap_cptr_el2_e2h
2990  *
2991  * AP Architectural Feature Trap EL2 E2H Register
2992  * Controls trapping to EL2 of access to CPACR, AP_CPACR_EL1, Trace
2993  *     functionality and registers associated with Floating Point and
2994  *     Advanced SIMD execution. Also controls EL2 access to this
2995  *     functionality.
2996  *
2997  * This register is at the same select as AP_CPTR_EL2 and is used when E2H=1.
2998  */
2999 union bdk_ap_cptr_el2_e2h
3000 {
3001     uint32_t u;
3002     struct bdk_ap_cptr_el2_e2h_s
3003     {
3004 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3005         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to CPACR or AP_CPACR_EL1 from EL1 to
3006                                                                      trap to EL2. When AP_HCR_EL2[TGE] == 0:
3007                                                                  0 = Does not cause access to CPACR or AP_CPACR_EL1 to be trapped.
3008                                                                  1 = Causes access to CPACR or AP_CPACR_EL1 to be trapped.
3009 
3010                                                                  When AP_HCR_EL2[TGE] == 1, this bit is ignored by hardware and
3011                                                                  does not cause access to the AP_CPACR_EL1 to be trapped. */
3012         uint32_t reserved_22_30        : 9;
3013         uint32_t fpen                  : 2;  /**< [ 21: 20](R/W) This causes instructions that access the registers associated with
3014                                                                  Floating Point and Advanced SIMD execution to trap to EL2 when executed
3015                                                                  from EL0 or EL2.
3016                                                                  0x0 = This field value causes any instructions that use the registers
3017                                                                       associated with Floating Point and Advanced SIMD execution to be
3018                                                                       trapped in the following cases:
3019                                                                         * When AP_HCR_EL2[TGE] == 0, when the instruction is executed at
3020                                                                           EL0, EL1 or EL2 unless the instruction is trapped to EL1 as
3021                                                                           a result of the AP_CPACR_EL1[FPEN] bit.
3022                                                                         * When AP_HCR_EL2[TGE] == 1, when the instruction is executed at
3023                                                                           EL0 or EL2.
3024 
3025                                                                  0x1 = This field value causes any instructions executed at EL0 that use
3026                                                                       the registerss associated with Floating Point or Advanced SIMD
3027                                                                       execution to be trapped when AP_HCR_EL2[TGE]==1 only.  It does not
3028                                                                       cause any instruction executed at EL1 or EL2 to be trapped and
3029                                                                       it does not cause any instruction to be trapped when AP_HCR_EL2[TGE]==0.
3030 
3031                                                                  0x2 = This field value causes any instructions that use the registers
3032                                                                       associated with Floating Point and Advanced SIMD execution to be
3033                                                                       trapped in the following cases:
3034                                                                         * When AP_HCR_EL2[TGE] == 0, when the instruction is executed at
3035                                                                           EL0, EL1 or EL2 unless the instruction is trapped to EL2 as
3036                                                                           a result of the AP_CPACR_EL1[FPEN] bit.
3037                                                                         * When AP_HCR_EL2[TGE] == 1, when the instruction is executed at
3038                                                                           EL0 or EL2.
3039 
3040                                                                  0x3 = This field value does not cause any instruction to be trapped. */
3041         uint32_t reserved_0_19         : 20;
3042 #else /* Word 0 - Little Endian */
3043         uint32_t reserved_0_19         : 20;
3044         uint32_t fpen                  : 2;  /**< [ 21: 20](R/W) This causes instructions that access the registers associated with
3045                                                                  Floating Point and Advanced SIMD execution to trap to EL2 when executed
3046                                                                  from EL0 or EL2.
3047                                                                  0x0 = This field value causes any instructions that use the registers
3048                                                                       associated with Floating Point and Advanced SIMD execution to be
3049                                                                       trapped in the following cases:
3050                                                                         * When AP_HCR_EL2[TGE] == 0, when the instruction is executed at
3051                                                                           EL0, EL1 or EL2 unless the instruction is trapped to EL1 as
3052                                                                           a result of the AP_CPACR_EL1[FPEN] bit.
3053                                                                         * When AP_HCR_EL2[TGE] == 1, when the instruction is executed at
3054                                                                           EL0 or EL2.
3055 
3056                                                                  0x1 = This field value causes any instructions executed at EL0 that use
3057                                                                       the registerss associated with Floating Point or Advanced SIMD
3058                                                                       execution to be trapped when AP_HCR_EL2[TGE]==1 only.  It does not
3059                                                                       cause any instruction executed at EL1 or EL2 to be trapped and
3060                                                                       it does not cause any instruction to be trapped when AP_HCR_EL2[TGE]==0.
3061 
3062                                                                  0x2 = This field value causes any instructions that use the registers
3063                                                                       associated with Floating Point and Advanced SIMD execution to be
3064                                                                       trapped in the following cases:
3065                                                                         * When AP_HCR_EL2[TGE] == 0, when the instruction is executed at
3066                                                                           EL0, EL1 or EL2 unless the instruction is trapped to EL2 as
3067                                                                           a result of the AP_CPACR_EL1[FPEN] bit.
3068                                                                         * When AP_HCR_EL2[TGE] == 1, when the instruction is executed at
3069                                                                           EL0 or EL2.
3070 
3071                                                                  0x3 = This field value does not cause any instruction to be trapped. */
3072         uint32_t reserved_22_30        : 9;
3073         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to CPACR or AP_CPACR_EL1 from EL1 to
3074                                                                      trap to EL2. When AP_HCR_EL2[TGE] == 0:
3075                                                                  0 = Does not cause access to CPACR or AP_CPACR_EL1 to be trapped.
3076                                                                  1 = Causes access to CPACR or AP_CPACR_EL1 to be trapped.
3077 
3078                                                                  When AP_HCR_EL2[TGE] == 1, this bit is ignored by hardware and
3079                                                                  does not cause access to the AP_CPACR_EL1 to be trapped. */
3080 #endif /* Word 0 - End */
3081     } s;
3082     struct bdk_ap_cptr_el2_e2h_cn
3083     {
3084 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3085         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to CPACR or AP_CPACR_EL1 from EL1 to
3086                                                                      trap to EL2. When AP_HCR_EL2[TGE] == 0:
3087                                                                  0 = Does not cause access to CPACR or AP_CPACR_EL1 to be trapped.
3088                                                                  1 = Causes access to CPACR or AP_CPACR_EL1 to be trapped.
3089 
3090                                                                  When AP_HCR_EL2[TGE] == 1, this bit is ignored by hardware and
3091                                                                  does not cause access to the AP_CPACR_EL1 to be trapped. */
3092         uint32_t reserved_29_30        : 2;
3093         uint32_t reserved_28           : 1;
3094         uint32_t reserved_22_27        : 6;
3095         uint32_t fpen                  : 2;  /**< [ 21: 20](R/W) This causes instructions that access the registers associated with
3096                                                                  Floating Point and Advanced SIMD execution to trap to EL2 when executed
3097                                                                  from EL0 or EL2.
3098                                                                  0x0 = This field value causes any instructions that use the registers
3099                                                                       associated with Floating Point and Advanced SIMD execution to be
3100                                                                       trapped in the following cases:
3101                                                                         * When AP_HCR_EL2[TGE] == 0, when the instruction is executed at
3102                                                                           EL0, EL1 or EL2 unless the instruction is trapped to EL1 as
3103                                                                           a result of the AP_CPACR_EL1[FPEN] bit.
3104                                                                         * When AP_HCR_EL2[TGE] == 1, when the instruction is executed at
3105                                                                           EL0 or EL2.
3106 
3107                                                                  0x1 = This field value causes any instructions executed at EL0 that use
3108                                                                       the registerss associated with Floating Point or Advanced SIMD
3109                                                                       execution to be trapped when AP_HCR_EL2[TGE]==1 only.  It does not
3110                                                                       cause any instruction executed at EL1 or EL2 to be trapped and
3111                                                                       it does not cause any instruction to be trapped when AP_HCR_EL2[TGE]==0.
3112 
3113                                                                  0x2 = This field value causes any instructions that use the registers
3114                                                                       associated with Floating Point and Advanced SIMD execution to be
3115                                                                       trapped in the following cases:
3116                                                                         * When AP_HCR_EL2[TGE] == 0, when the instruction is executed at
3117                                                                           EL0, EL1 or EL2 unless the instruction is trapped to EL2 as
3118                                                                           a result of the AP_CPACR_EL1[FPEN] bit.
3119                                                                         * When AP_HCR_EL2[TGE] == 1, when the instruction is executed at
3120                                                                           EL0 or EL2.
3121 
3122                                                                  0x3 = This field value does not cause any instruction to be trapped. */
3123         uint32_t reserved_0_19         : 20;
3124 #else /* Word 0 - Little Endian */
3125         uint32_t reserved_0_19         : 20;
3126         uint32_t fpen                  : 2;  /**< [ 21: 20](R/W) This causes instructions that access the registers associated with
3127                                                                  Floating Point and Advanced SIMD execution to trap to EL2 when executed
3128                                                                  from EL0 or EL2.
3129                                                                  0x0 = This field value causes any instructions that use the registers
3130                                                                       associated with Floating Point and Advanced SIMD execution to be
3131                                                                       trapped in the following cases:
3132                                                                         * When AP_HCR_EL2[TGE] == 0, when the instruction is executed at
3133                                                                           EL0, EL1 or EL2 unless the instruction is trapped to EL1 as
3134                                                                           a result of the AP_CPACR_EL1[FPEN] bit.
3135                                                                         * When AP_HCR_EL2[TGE] == 1, when the instruction is executed at
3136                                                                           EL0 or EL2.
3137 
3138                                                                  0x1 = This field value causes any instructions executed at EL0 that use
3139                                                                       the registerss associated with Floating Point or Advanced SIMD
3140                                                                       execution to be trapped when AP_HCR_EL2[TGE]==1 only.  It does not
3141                                                                       cause any instruction executed at EL1 or EL2 to be trapped and
3142                                                                       it does not cause any instruction to be trapped when AP_HCR_EL2[TGE]==0.
3143 
3144                                                                  0x2 = This field value causes any instructions that use the registers
3145                                                                       associated with Floating Point and Advanced SIMD execution to be
3146                                                                       trapped in the following cases:
3147                                                                         * When AP_HCR_EL2[TGE] == 0, when the instruction is executed at
3148                                                                           EL0, EL1 or EL2 unless the instruction is trapped to EL2 as
3149                                                                           a result of the AP_CPACR_EL1[FPEN] bit.
3150                                                                         * When AP_HCR_EL2[TGE] == 1, when the instruction is executed at
3151                                                                           EL0 or EL2.
3152 
3153                                                                  0x3 = This field value does not cause any instruction to be trapped. */
3154         uint32_t reserved_22_27        : 6;
3155         uint32_t reserved_28           : 1;
3156         uint32_t reserved_29_30        : 2;
3157         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to CPACR or AP_CPACR_EL1 from EL1 to
3158                                                                      trap to EL2. When AP_HCR_EL2[TGE] == 0:
3159                                                                  0 = Does not cause access to CPACR or AP_CPACR_EL1 to be trapped.
3160                                                                  1 = Causes access to CPACR or AP_CPACR_EL1 to be trapped.
3161 
3162                                                                  When AP_HCR_EL2[TGE] == 1, this bit is ignored by hardware and
3163                                                                  does not cause access to the AP_CPACR_EL1 to be trapped. */
3164 #endif /* Word 0 - End */
3165     } cn;
3166 };
3167 typedef union bdk_ap_cptr_el2_e2h bdk_ap_cptr_el2_e2h_t;
3168 
3169 #define BDK_AP_CPTR_EL2_E2H BDK_AP_CPTR_EL2_E2H_FUNC()
3170 static inline uint64_t BDK_AP_CPTR_EL2_E2H_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CPTR_EL2_E2H_FUNC(void)3171 static inline uint64_t BDK_AP_CPTR_EL2_E2H_FUNC(void)
3172 {
3173     return 0x30401010210ll;
3174 }
3175 
3176 #define typedef_BDK_AP_CPTR_EL2_E2H bdk_ap_cptr_el2_e2h_t
3177 #define bustype_BDK_AP_CPTR_EL2_E2H BDK_CSR_TYPE_SYSREG
3178 #define basename_BDK_AP_CPTR_EL2_E2H "AP_CPTR_EL2_E2H"
3179 #define busnum_BDK_AP_CPTR_EL2_E2H 0
3180 #define arguments_BDK_AP_CPTR_EL2_E2H -1,-1,-1,-1
3181 
3182 /**
3183  * Register (SYSREG) ap_cptr_el3
3184  *
3185  * AP Architectural Feature Trap EL3 Register
3186  * Controls trapping to EL3 of access to AP_CPACR_EL1, Trace
3187  *     functionality and registers associated with Floating Point and
3188  *     Advanced SIMD execution. Also controls EL3 access to this
3189  *     functionality.
3190  */
3191 union bdk_ap_cptr_el3
3192 {
3193     uint32_t u;
3194     struct bdk_ap_cptr_el3_s
3195     {
3196 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3197         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to the AP_CPACR_EL1 from EL1 or the
3198                                                                      AP_CPTR_EL2 from EL2 to trap to EL3 unless it is trapped at EL2.
3199 
3200                                                                  0 = Does not cause access to the AP_CPACR_EL1 or AP_CPTR_EL2 to be
3201                                                                      trapped.
3202                                                                  1 = Causes access to the AP_CPACR_EL1 or AP_CPTR_EL2 to be trapped. */
3203         uint32_t reserved_11_30        : 20;
3204         uint32_t tfp                   : 1;  /**< [ 10: 10](R/W) This causes instructions that access the registers associated
3205                                                                      with Floating Point and Advanced SIMD execution to trap to EL3
3206                                                                      when executed from any Exception level, unless trapped to EL1
3207                                                                      or EL2.
3208                                                                  0 = Does not cause any instruction to be trapped.
3209                                                                  1 = Causes any instructions that use the registers associated with
3210                                                                      Floating Point and Advanced SIMD execution to be trapped. */
3211         uint32_t reserved_0_9          : 10;
3212 #else /* Word 0 - Little Endian */
3213         uint32_t reserved_0_9          : 10;
3214         uint32_t tfp                   : 1;  /**< [ 10: 10](R/W) This causes instructions that access the registers associated
3215                                                                      with Floating Point and Advanced SIMD execution to trap to EL3
3216                                                                      when executed from any Exception level, unless trapped to EL1
3217                                                                      or EL2.
3218                                                                  0 = Does not cause any instruction to be trapped.
3219                                                                  1 = Causes any instructions that use the registers associated with
3220                                                                      Floating Point and Advanced SIMD execution to be trapped. */
3221         uint32_t reserved_11_30        : 20;
3222         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to the AP_CPACR_EL1 from EL1 or the
3223                                                                      AP_CPTR_EL2 from EL2 to trap to EL3 unless it is trapped at EL2.
3224 
3225                                                                  0 = Does not cause access to the AP_CPACR_EL1 or AP_CPTR_EL2 to be
3226                                                                      trapped.
3227                                                                  1 = Causes access to the AP_CPACR_EL1 or AP_CPTR_EL2 to be trapped. */
3228 #endif /* Word 0 - End */
3229     } s;
3230     struct bdk_ap_cptr_el3_cn
3231     {
3232 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3233         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to the AP_CPACR_EL1 from EL1 or the
3234                                                                      AP_CPTR_EL2 from EL2 to trap to EL3 unless it is trapped at EL2.
3235 
3236                                                                  0 = Does not cause access to the AP_CPACR_EL1 or AP_CPTR_EL2 to be
3237                                                                      trapped.
3238                                                                  1 = Causes access to the AP_CPACR_EL1 or AP_CPTR_EL2 to be trapped. */
3239         uint32_t reserved_21_30        : 10;
3240         uint32_t reserved_20           : 1;
3241         uint32_t reserved_11_19        : 9;
3242         uint32_t tfp                   : 1;  /**< [ 10: 10](R/W) This causes instructions that access the registers associated
3243                                                                      with Floating Point and Advanced SIMD execution to trap to EL3
3244                                                                      when executed from any Exception level, unless trapped to EL1
3245                                                                      or EL2.
3246                                                                  0 = Does not cause any instruction to be trapped.
3247                                                                  1 = Causes any instructions that use the registers associated with
3248                                                                      Floating Point and Advanced SIMD execution to be trapped. */
3249         uint32_t reserved_0_9          : 10;
3250 #else /* Word 0 - Little Endian */
3251         uint32_t reserved_0_9          : 10;
3252         uint32_t tfp                   : 1;  /**< [ 10: 10](R/W) This causes instructions that access the registers associated
3253                                                                      with Floating Point and Advanced SIMD execution to trap to EL3
3254                                                                      when executed from any Exception level, unless trapped to EL1
3255                                                                      or EL2.
3256                                                                  0 = Does not cause any instruction to be trapped.
3257                                                                  1 = Causes any instructions that use the registers associated with
3258                                                                      Floating Point and Advanced SIMD execution to be trapped. */
3259         uint32_t reserved_11_19        : 9;
3260         uint32_t reserved_20           : 1;
3261         uint32_t reserved_21_30        : 10;
3262         uint32_t tcpac                 : 1;  /**< [ 31: 31](R/W) This causes a direct access to the AP_CPACR_EL1 from EL1 or the
3263                                                                      AP_CPTR_EL2 from EL2 to trap to EL3 unless it is trapped at EL2.
3264 
3265                                                                  0 = Does not cause access to the AP_CPACR_EL1 or AP_CPTR_EL2 to be
3266                                                                      trapped.
3267                                                                  1 = Causes access to the AP_CPACR_EL1 or AP_CPTR_EL2 to be trapped. */
3268 #endif /* Word 0 - End */
3269     } cn;
3270 };
3271 typedef union bdk_ap_cptr_el3 bdk_ap_cptr_el3_t;
3272 
3273 #define BDK_AP_CPTR_EL3 BDK_AP_CPTR_EL3_FUNC()
3274 static inline uint64_t BDK_AP_CPTR_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CPTR_EL3_FUNC(void)3275 static inline uint64_t BDK_AP_CPTR_EL3_FUNC(void)
3276 {
3277     return 0x30601010200ll;
3278 }
3279 
3280 #define typedef_BDK_AP_CPTR_EL3 bdk_ap_cptr_el3_t
3281 #define bustype_BDK_AP_CPTR_EL3 BDK_CSR_TYPE_SYSREG
3282 #define basename_BDK_AP_CPTR_EL3 "AP_CPTR_EL3"
3283 #define busnum_BDK_AP_CPTR_EL3 0
3284 #define arguments_BDK_AP_CPTR_EL3 -1,-1,-1,-1
3285 
3286 /**
3287  * Register (SYSREG) ap_csselr_el1
3288  *
3289  * AP Cache Size Selection Register
3290  * Selects the current Cache Size ID Register, AP_CCSIDR_EL1, by
3291  *     specifying the required cache level and the cache type (either
3292  *     instruction or data cache).
3293  */
3294 union bdk_ap_csselr_el1
3295 {
3296     uint32_t u;
3297     struct bdk_ap_csselr_el1_s
3298     {
3299 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3300         uint32_t reserved_4_31         : 28;
3301         uint32_t level                 : 3;  /**< [  3:  1](R/W) Cache level of required cache. */
3302         uint32_t ind                   : 1;  /**< [  0:  0](R/W) Instruction not Data bit.
3303                                                                  0 = Data or unified cache.
3304                                                                  1 = Instruction cache. */
3305 #else /* Word 0 - Little Endian */
3306         uint32_t ind                   : 1;  /**< [  0:  0](R/W) Instruction not Data bit.
3307                                                                  0 = Data or unified cache.
3308                                                                  1 = Instruction cache. */
3309         uint32_t level                 : 3;  /**< [  3:  1](R/W) Cache level of required cache. */
3310         uint32_t reserved_4_31         : 28;
3311 #endif /* Word 0 - End */
3312     } s;
3313     /* struct bdk_ap_csselr_el1_s cn; */
3314 };
3315 typedef union bdk_ap_csselr_el1 bdk_ap_csselr_el1_t;
3316 
3317 #define BDK_AP_CSSELR_EL1 BDK_AP_CSSELR_EL1_FUNC()
3318 static inline uint64_t BDK_AP_CSSELR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CSSELR_EL1_FUNC(void)3319 static inline uint64_t BDK_AP_CSSELR_EL1_FUNC(void)
3320 {
3321     return 0x30200000000ll;
3322 }
3323 
3324 #define typedef_BDK_AP_CSSELR_EL1 bdk_ap_csselr_el1_t
3325 #define bustype_BDK_AP_CSSELR_EL1 BDK_CSR_TYPE_SYSREG
3326 #define basename_BDK_AP_CSSELR_EL1 "AP_CSSELR_EL1"
3327 #define busnum_BDK_AP_CSSELR_EL1 0
3328 #define arguments_BDK_AP_CSSELR_EL1 -1,-1,-1,-1
3329 
3330 /**
3331  * Register (SYSREG) ap_ctr_el0
3332  *
3333  * AP Cache Type Register
3334  * This register provides information about the architecture of the caches.
3335  */
3336 union bdk_ap_ctr_el0
3337 {
3338     uint32_t u;
3339     struct bdk_ap_ctr_el0_s
3340     {
3341 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3342         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
3343         uint32_t reserved_28_30        : 3;
3344         uint32_t cwg                   : 4;  /**< [ 27: 24](RO) Cache writeback granule. Log2 of the number of
3345                                                                      words of the maximum size of memory that can be overwritten as
3346                                                                      a result of the eviction of a cache entry that has had a
3347                                                                      memory location in it modified.
3348 
3349                                                                   The architectural maximum of 512 words (2KB) must be assumed.
3350 
3351                                                                   The cache writeback granule can be determined from maximum
3352                                                                      cache line size encoded in the Cache Size ID Registers. */
3353         uint32_t erg                   : 4;  /**< [ 23: 20](RO) Exclusives reservation granule. Log2 of the number
3354                                                                      of words of the maximum size of the reservation granule that
3355                                                                      has been implemented for the Load-Exclusive and
3356                                                                      Store-Exclusive instructions. */
3357         uint32_t dminline              : 4;  /**< [ 19: 16](RO) Log2 of the number of words in the smallest cache
3358                                                                      line of all the data caches and unified caches that are
3359                                                                      controlled by the PE.
3360 
3361                                                                  For CNXXXX, 128 bytes. */
3362         uint32_t l1ip                  : 2;  /**< [ 15: 14](RO) Level 1 instruction cache policy. Indicates the indexing and
3363                                                                      tagging policy for the L1 instruction cache.
3364 
3365                                                                  0x1 = ASID-tagged virtual index, virtual tag (AIVIVT).
3366                                                                  0x2 = Virtual index, physical tag (VIPT).
3367                                                                  0x3 = Physical index, physical tag (PIPT). */
3368         uint32_t reserved_4_13         : 10;
3369         uint32_t iminline              : 4;  /**< [  3:  0](RO) Log2 of the number of words in the smallest cache line of all the instruction
3370                                                                  caches that are controlled by the PE.
3371 
3372                                                                  For CNXXXX, 128 bytes. */
3373 #else /* Word 0 - Little Endian */
3374         uint32_t iminline              : 4;  /**< [  3:  0](RO) Log2 of the number of words in the smallest cache line of all the instruction
3375                                                                  caches that are controlled by the PE.
3376 
3377                                                                  For CNXXXX, 128 bytes. */
3378         uint32_t reserved_4_13         : 10;
3379         uint32_t l1ip                  : 2;  /**< [ 15: 14](RO) Level 1 instruction cache policy. Indicates the indexing and
3380                                                                      tagging policy for the L1 instruction cache.
3381 
3382                                                                  0x1 = ASID-tagged virtual index, virtual tag (AIVIVT).
3383                                                                  0x2 = Virtual index, physical tag (VIPT).
3384                                                                  0x3 = Physical index, physical tag (PIPT). */
3385         uint32_t dminline              : 4;  /**< [ 19: 16](RO) Log2 of the number of words in the smallest cache
3386                                                                      line of all the data caches and unified caches that are
3387                                                                      controlled by the PE.
3388 
3389                                                                  For CNXXXX, 128 bytes. */
3390         uint32_t erg                   : 4;  /**< [ 23: 20](RO) Exclusives reservation granule. Log2 of the number
3391                                                                      of words of the maximum size of the reservation granule that
3392                                                                      has been implemented for the Load-Exclusive and
3393                                                                      Store-Exclusive instructions. */
3394         uint32_t cwg                   : 4;  /**< [ 27: 24](RO) Cache writeback granule. Log2 of the number of
3395                                                                      words of the maximum size of memory that can be overwritten as
3396                                                                      a result of the eviction of a cache entry that has had a
3397                                                                      memory location in it modified.
3398 
3399                                                                   The architectural maximum of 512 words (2KB) must be assumed.
3400 
3401                                                                   The cache writeback granule can be determined from maximum
3402                                                                      cache line size encoded in the Cache Size ID Registers. */
3403         uint32_t reserved_28_30        : 3;
3404         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
3405 #endif /* Word 0 - End */
3406     } s;
3407     /* struct bdk_ap_ctr_el0_s cn; */
3408 };
3409 typedef union bdk_ap_ctr_el0 bdk_ap_ctr_el0_t;
3410 
3411 #define BDK_AP_CTR_EL0 BDK_AP_CTR_EL0_FUNC()
3412 static inline uint64_t BDK_AP_CTR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CTR_EL0_FUNC(void)3413 static inline uint64_t BDK_AP_CTR_EL0_FUNC(void)
3414 {
3415     return 0x30300000100ll;
3416 }
3417 
3418 #define typedef_BDK_AP_CTR_EL0 bdk_ap_ctr_el0_t
3419 #define bustype_BDK_AP_CTR_EL0 BDK_CSR_TYPE_SYSREG
3420 #define basename_BDK_AP_CTR_EL0 "AP_CTR_EL0"
3421 #define busnum_BDK_AP_CTR_EL0 0
3422 #define arguments_BDK_AP_CTR_EL0 -1,-1,-1,-1
3423 
3424 /**
3425  * Register (SYSREG) ap_currentel
3426  *
3427  * AP Current Exception Level Register
3428  * Holds the current Exception level.
3429  */
3430 union bdk_ap_currentel
3431 {
3432     uint32_t u;
3433     struct bdk_ap_currentel_s
3434     {
3435 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3436         uint32_t reserved_4_31         : 28;
3437         uint32_t el                    : 2;  /**< [  3:  2](RO) Current Exception level.
3438                                                                  0x0 = EL0.
3439                                                                  0x1 = EL1.
3440                                                                  0x2 = EL2.
3441                                                                  0x3 = EL3. */
3442         uint32_t reserved_0_1          : 2;
3443 #else /* Word 0 - Little Endian */
3444         uint32_t reserved_0_1          : 2;
3445         uint32_t el                    : 2;  /**< [  3:  2](RO) Current Exception level.
3446                                                                  0x0 = EL0.
3447                                                                  0x1 = EL1.
3448                                                                  0x2 = EL2.
3449                                                                  0x3 = EL3. */
3450         uint32_t reserved_4_31         : 28;
3451 #endif /* Word 0 - End */
3452     } s;
3453     /* struct bdk_ap_currentel_s cn; */
3454 };
3455 typedef union bdk_ap_currentel bdk_ap_currentel_t;
3456 
3457 #define BDK_AP_CURRENTEL BDK_AP_CURRENTEL_FUNC()
3458 static inline uint64_t BDK_AP_CURRENTEL_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CURRENTEL_FUNC(void)3459 static inline uint64_t BDK_AP_CURRENTEL_FUNC(void)
3460 {
3461     return 0x30004020200ll;
3462 }
3463 
3464 #define typedef_BDK_AP_CURRENTEL bdk_ap_currentel_t
3465 #define bustype_BDK_AP_CURRENTEL BDK_CSR_TYPE_SYSREG
3466 #define basename_BDK_AP_CURRENTEL "AP_CURRENTEL"
3467 #define busnum_BDK_AP_CURRENTEL 0
3468 #define arguments_BDK_AP_CURRENTEL -1,-1,-1,-1
3469 
3470 /**
3471  * Register (SYSREG) ap_cvm_access_el1
3472  *
3473  * AP Cavium Access EL1 Register
3474  * This register controls trapping on register accesses.
3475  *
3476  * Read/write access at EL1, EL2 and EL3.
3477  *
3478  * Note that AP_HCR_EL2[TIDCP] can also prevent all CVM* access at EL1
3479  * and below and takes priority over AP_CVM_ACCESS_EL1.
3480  *
3481  * Note that AP_CVM_ACCESS_EL1 can grant access to EL0 for AP_CVM_*_EL1
3482  * registers. This is non standard. A some point AP_CVM_ACCESS_EL1 may be
3483  * depreciated.
3484  *
3485  * A 1 in the appropriate bit in the AP_CVM_ACCESS_ELn register prevents
3486  * any access at lower exception levels.
3487  *
3488  * Internal:
3489  * If access is denied at multiple exception levels then the
3490  * trap occurs at the lowest. This is similar to ARM's
3491  * AP_CPACR_EL1/AP_CPTR_EL2/AP_CPTR_EL3.
3492  */
3493 union bdk_ap_cvm_access_el1
3494 {
3495     uint64_t u;
3496     struct bdk_ap_cvm_access_el1_s
3497     {
3498 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3499         uint64_t reserved_9_63         : 55;
3500         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 1 traps to EL1 unless
3501                                                                  AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3502         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 1
3503                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3504         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3505                                                                  with the exception level lower than 1 traps to EL1 unless
3506                                                                  AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3507         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 1 traps
3508                                                                  to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3509         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_Icache* or AP_CVM_Dcache* with the exception
3510                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then
3511                                                                  EL2. */
3512         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 1
3513                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3514         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 1
3515                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3516         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 1
3517                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3518         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3519                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then
3520                                                                  EL2. */
3521 #else /* Word 0 - Little Endian */
3522         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3523                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then
3524                                                                  EL2. */
3525         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 1
3526                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3527         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 1
3528                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3529         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 1
3530                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3531         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_Icache* or AP_CVM_Dcache* with the exception
3532                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then
3533                                                                  EL2. */
3534         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 1 traps
3535                                                                  to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3536         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3537                                                                  with the exception level lower than 1 traps to EL1 unless
3538                                                                  AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3539         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 1
3540                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3541         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 1 traps to EL1 unless
3542                                                                  AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3543         uint64_t reserved_9_63         : 55;
3544 #endif /* Word 0 - End */
3545     } s;
3546     struct bdk_ap_cvm_access_el1_cn8
3547     {
3548 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3549         uint64_t reserved_9_63         : 55;
3550         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 1 traps to EL1 unless
3551                                                                  AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3552         uint64_t reserved_6_7          : 2;
3553         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 1 traps
3554                                                                  to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3555         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_Icache* or AP_CVM_Dcache* with the exception
3556                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then
3557                                                                  EL2. */
3558         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 1
3559                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3560         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 1
3561                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3562         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 1
3563                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3564         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3565                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then
3566                                                                  EL2. */
3567 #else /* Word 0 - Little Endian */
3568         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3569                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then
3570                                                                  EL2. */
3571         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 1
3572                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3573         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 1
3574                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3575         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 1
3576                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3577         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_Icache* or AP_CVM_Dcache* with the exception
3578                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then
3579                                                                  EL2. */
3580         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 1 traps
3581                                                                  to EL1 unless AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3582         uint64_t reserved_6_7          : 2;
3583         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 1 traps to EL1 unless
3584                                                                  AP_HCR_EL2[TGE] && !AP_SCR_EL3[NS], then EL2. */
3585         uint64_t reserved_9_63         : 55;
3586 #endif /* Word 0 - End */
3587     } cn8;
3588     struct bdk_ap_cvm_access_el1_cn9
3589     {
3590 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3591         uint64_t reserved_9_63         : 55;
3592         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 1 traps to EL1 unless
3593                                                                  AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3594         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 1
3595                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3596         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3597                                                                  with the exception level lower than 1 traps to EL1 unless
3598                                                                  AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3599         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 1 traps
3600                                                                  to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3601         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_Icache* or AP_CVM_Dcache* with the exception
3602                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then
3603                                                                  EL2. */
3604         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 1
3605                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3606         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 1
3607                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3608         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 1
3609                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3610         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3611                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then
3612                                                                  EL2. */
3613 #else /* Word 0 - Little Endian */
3614         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3615                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then
3616                                                                  EL2. */
3617         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 1
3618                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3619         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 1
3620                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3621         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 1
3622                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3623         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_Icache* or AP_CVM_Dcache* with the exception
3624                                                                  level lower than 1 traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then
3625                                                                  EL2. */
3626         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 1 traps
3627                                                                  to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3628         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3629                                                                  with the exception level lower than 1 traps to EL1 unless
3630                                                                  AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3631         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 1
3632                                                                  traps to EL1 unless AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3633         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 1 traps to EL1 unless
3634                                                                  AP_HCR_EL2[TGE] && AP_SCR_EL3[NS], then EL2. */
3635         uint64_t reserved_9_63         : 55;
3636 #endif /* Word 0 - End */
3637     } cn9;
3638 };
3639 typedef union bdk_ap_cvm_access_el1 bdk_ap_cvm_access_el1_t;
3640 
3641 #define BDK_AP_CVM_ACCESS_EL1 BDK_AP_CVM_ACCESS_EL1_FUNC()
3642 static inline uint64_t BDK_AP_CVM_ACCESS_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_ACCESS_EL1_FUNC(void)3643 static inline uint64_t BDK_AP_CVM_ACCESS_EL1_FUNC(void)
3644 {
3645     return 0x3000b000300ll;
3646 }
3647 
3648 #define typedef_BDK_AP_CVM_ACCESS_EL1 bdk_ap_cvm_access_el1_t
3649 #define bustype_BDK_AP_CVM_ACCESS_EL1 BDK_CSR_TYPE_SYSREG
3650 #define basename_BDK_AP_CVM_ACCESS_EL1 "AP_CVM_ACCESS_EL1"
3651 #define busnum_BDK_AP_CVM_ACCESS_EL1 0
3652 #define arguments_BDK_AP_CVM_ACCESS_EL1 -1,-1,-1,-1
3653 
3654 /**
3655  * Register (SYSREG) ap_cvm_access_el2
3656  *
3657  * AP Cavium Access EL2 Register
3658  * This register controls trap/access of Cavium registers. Read/write access at EL2 and EL3.
3659  */
3660 union bdk_ap_cvm_access_el2
3661 {
3662     uint64_t u;
3663     struct bdk_ap_cvm_access_el2_s
3664     {
3665 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3666         uint64_t reserved_9_63         : 55;
3667         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 2 traps to EL2 unless
3668                                                                  prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3669         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 2
3670                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3671         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3672                                                                  with the exception level lower than 2 traps to EL2 unless prohibited by
3673                                                                  AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3674         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 2 traps
3675                                                                  to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3676         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception
3677                                                                  level lower than 2 traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or
3678                                                                  AP_SCR_EL3[NS] = 0. */
3679         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 2
3680                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3681         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 2
3682                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3683         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 2 traps to
3684                                                                  EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3685         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3686                                                                  level lower than 2 traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or
3687                                                                  AP_SCR_EL3[NS] = 0. */
3688 #else /* Word 0 - Little Endian */
3689         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3690                                                                  level lower than 2 traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or
3691                                                                  AP_SCR_EL3[NS] = 0. */
3692         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 2 traps to
3693                                                                  EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3694         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 2
3695                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3696         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 2
3697                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3698         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception
3699                                                                  level lower than 2 traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or
3700                                                                  AP_SCR_EL3[NS] = 0. */
3701         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 2 traps
3702                                                                  to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3703         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3704                                                                  with the exception level lower than 2 traps to EL2 unless prohibited by
3705                                                                  AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3706         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 2
3707                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3708         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 2 traps to EL2 unless
3709                                                                  prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3710         uint64_t reserved_9_63         : 55;
3711 #endif /* Word 0 - End */
3712     } s;
3713     struct bdk_ap_cvm_access_el2_cn8
3714     {
3715 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3716         uint64_t reserved_9_63         : 55;
3717         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 2 traps to EL2 unless
3718                                                                  prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3719         uint64_t reserved_6_7          : 2;
3720         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 2 traps
3721                                                                  to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3722         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception
3723                                                                  level lower than 2 traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or
3724                                                                  AP_SCR_EL3[NS] = 0. */
3725         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 2
3726                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3727         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 2
3728                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3729         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 2 traps to
3730                                                                  EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3731         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3732                                                                  level lower than 2 traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or
3733                                                                  AP_SCR_EL3[NS] = 0. */
3734 #else /* Word 0 - Little Endian */
3735         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3736                                                                  level lower than 2 traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or
3737                                                                  AP_SCR_EL3[NS] = 0. */
3738         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 2 traps to
3739                                                                  EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3740         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 2
3741                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3742         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 2
3743                                                                  traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3744         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception
3745                                                                  level lower than 2 traps to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or
3746                                                                  AP_SCR_EL3[NS] = 0. */
3747         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read operation to AP_CVM_EVATTID with the exception level lower than 2 traps
3748                                                                  to EL2 unless prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3749         uint64_t reserved_6_7          : 2;
3750         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 2 traps to EL2 unless
3751                                                                  prohibited by AP_CVM_ACCESS_EL1 or AP_SCR_EL3[NS] = 0. */
3752         uint64_t reserved_9_63         : 55;
3753 #endif /* Word 0 - End */
3754     } cn8;
3755     /* struct bdk_ap_cvm_access_el2_s cn9; */
3756 };
3757 typedef union bdk_ap_cvm_access_el2 bdk_ap_cvm_access_el2_t;
3758 
3759 #define BDK_AP_CVM_ACCESS_EL2 BDK_AP_CVM_ACCESS_EL2_FUNC()
3760 static inline uint64_t BDK_AP_CVM_ACCESS_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_ACCESS_EL2_FUNC(void)3761 static inline uint64_t BDK_AP_CVM_ACCESS_EL2_FUNC(void)
3762 {
3763     return 0x3040b000300ll;
3764 }
3765 
3766 #define typedef_BDK_AP_CVM_ACCESS_EL2 bdk_ap_cvm_access_el2_t
3767 #define bustype_BDK_AP_CVM_ACCESS_EL2 BDK_CSR_TYPE_SYSREG
3768 #define basename_BDK_AP_CVM_ACCESS_EL2 "AP_CVM_ACCESS_EL2"
3769 #define busnum_BDK_AP_CVM_ACCESS_EL2 0
3770 #define arguments_BDK_AP_CVM_ACCESS_EL2 -1,-1,-1,-1
3771 
3772 /**
3773  * Register (SYSREG) ap_cvm_access_el3
3774  *
3775  * AP Cavium Access EL3 Register
3776  * Internal:
3777  * Software should expose the CvmCACHE instruction to EL2 or
3778  * EL1 with extreme caution. Exposing this instruction to lower
3779  * exception levels may cause nonsecure state to mess with secure
3780  * state, which would cause a security hole.
3781  */
3782 union bdk_ap_cvm_access_el3
3783 {
3784     uint64_t u;
3785     struct bdk_ap_cvm_access_el3_s
3786     {
3787 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3788         uint64_t reserved_9_63         : 55;
3789         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 3 traps to EL3. */
3790         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 3
3791                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3792                                                                  AP_HCR_EL2[TIDCP]. */
3793         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3794                                                                  with the exception level lower than 3 traps to EL3 unless prohibited by
3795                                                                  AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3796         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read or write operation to AP_CVM_EVATTID with the exception level lower than 3 traps to
3797                                                                  EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3798         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception level
3799                                                                  lower
3800                                                                  than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3801                                                                  AP_HCR_EL2[TIDCP]. */
3802         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 3 traps to
3803                                                                  EL3
3804                                                                  unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3805         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 3 traps to
3806                                                                  EL3
3807                                                                  unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3808         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 3 traps to
3809                                                                  EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3810         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3811                                                                  level lower than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2,
3812                                                                  AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3813 #else /* Word 0 - Little Endian */
3814         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3815                                                                  level lower than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2,
3816                                                                  AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3817         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 3 traps to
3818                                                                  EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3819         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 3 traps to
3820                                                                  EL3
3821                                                                  unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3822         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 3 traps to
3823                                                                  EL3
3824                                                                  unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3825         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception level
3826                                                                  lower
3827                                                                  than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3828                                                                  AP_HCR_EL2[TIDCP]. */
3829         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read or write operation to AP_CVM_EVATTID with the exception level lower than 3 traps to
3830                                                                  EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3831         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3832                                                                  with the exception level lower than 3 traps to EL3 unless prohibited by
3833                                                                  AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3834         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 3
3835                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3836                                                                  AP_HCR_EL2[TIDCP]. */
3837         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 3 traps to EL3. */
3838         uint64_t reserved_9_63         : 55;
3839 #endif /* Word 0 - End */
3840     } s;
3841     struct bdk_ap_cvm_access_el3_cn8
3842     {
3843 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3844         uint64_t reserved_9_63         : 55;
3845         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 3 traps to EL3. */
3846         uint64_t reserved_6_7          : 2;
3847         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read or write operation to AP_CVM_EVATTID with the exception level lower than 3 traps to
3848                                                                  EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3849         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception level
3850                                                                  lower
3851                                                                  than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3852                                                                  AP_HCR_EL2[TIDCP]. */
3853         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 3 traps to
3854                                                                  EL3
3855                                                                  unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3856         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 3 traps to
3857                                                                  EL3
3858                                                                  unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3859         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 3 traps to
3860                                                                  EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3861         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3862                                                                  level lower than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2,
3863                                                                  AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3864 #else /* Word 0 - Little Endian */
3865         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3866                                                                  level lower than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2,
3867                                                                  AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3868         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 3 traps to
3869                                                                  EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3870         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 3 traps to
3871                                                                  EL3
3872                                                                  unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3873         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 3 traps to
3874                                                                  EL3
3875                                                                  unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3876         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception level
3877                                                                  lower
3878                                                                  than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3879                                                                  AP_HCR_EL2[TIDCP]. */
3880         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read or write operation to AP_CVM_EVATTID with the exception level lower than 3 traps to
3881                                                                  EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3882         uint64_t reserved_6_7          : 2;
3883         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 3 traps to EL3. */
3884         uint64_t reserved_9_63         : 55;
3885 #endif /* Word 0 - End */
3886     } cn8;
3887     struct bdk_ap_cvm_access_el3_cn9
3888     {
3889 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3890         uint64_t reserved_9_63         : 55;
3891         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 3 traps to EL3. */
3892         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 3
3893                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3894                                                                  AP_HCR_EL2[TIDCP]. */
3895         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3896                                                                  with the exception level lower than 3 traps to EL3 unless prohibited by
3897                                                                  AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3898         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read or write operation to AP_CVM_EVATTID with the exception level lower than
3899                                                                  3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3900                                                                  AP_HCR_EL2[TIDCP]. */
3901         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception
3902                                                                  level lower than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2,
3903                                                                  AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3904         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 3
3905                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3906                                                                  AP_HCR_EL2[TIDCP]. */
3907         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 3
3908                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3909                                                                  AP_HCR_EL2[TIDCP]. */
3910         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 3
3911                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3912                                                                  AP_HCR_EL2[TIDCP]. */
3913         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3914                                                                  level lower than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2,
3915                                                                  AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3916 #else /* Word 0 - Little Endian */
3917         uint64_t cvm_ctl               : 1;  /**< [  0:  0](R/W) A read or write operation to AP_CVM_CTL or AP_CVM_MEMCTL with the exception
3918                                                                  level lower than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2,
3919                                                                  AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3920         uint64_t powthrottle           : 1;  /**< [  1:  1](R/W) A read or write operation to PowThrottle with the exception level lower than 3
3921                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3922                                                                  AP_HCR_EL2[TIDCP]. */
3923         uint64_t cvm_bist              : 1;  /**< [  2:  2](R/W) A read or write operation to AP_CVM_BIST* with the exception level lower than 3
3924                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3925                                                                  AP_HCR_EL2[TIDCP]. */
3926         uint64_t cvm_err               : 1;  /**< [  3:  3](R/W) A read or write operation to AP_CVM_ERR* with the exception level lower than 3
3927                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3928                                                                  AP_HCR_EL2[TIDCP]. */
3929         uint64_t cvm_i_d_cache         : 1;  /**< [  4:  4](R/W) A read or write operation to AP_CVM_ICACHE* or AP_CVM_DCACHE* with the exception
3930                                                                  level lower than 3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2,
3931                                                                  AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3932         uint64_t cvm_evattid           : 1;  /**< [  5:  5](R/W) A read or write operation to AP_CVM_EVATTID with the exception level lower than
3933                                                                  3 traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3934                                                                  AP_HCR_EL2[TIDCP]. */
3935         uint64_t cvm_statprof          : 1;  /**< [  6:  6](R/W) A read or write operation to AP_CVM_STATPROFCTL_EL1 or AP_CVM_STATPROFCMP_EL1
3936                                                                  with the exception level lower than 3 traps to EL3 unless prohibited by
3937                                                                  AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or AP_HCR_EL2[TIDCP]. */
3938         uint64_t cvm_pn                : 1;  /**< [  7:  7](R/W) A read or write operation to AP_CVM_PN_EL1 with the exception level lower than 3
3939                                                                  traps to EL3 unless prohibited by AP_CVM_ACCESS_EL2, AP_CVM_ACCESS_EL1, or
3940                                                                  AP_HCR_EL2[TIDCP]. */
3941         uint64_t cvm_cache             : 1;  /**< [  8:  8](R/W) A Cvm_Cache instruction with the exception level lower than 3 traps to EL3. */
3942         uint64_t reserved_9_63         : 55;
3943 #endif /* Word 0 - End */
3944     } cn9;
3945 };
3946 typedef union bdk_ap_cvm_access_el3 bdk_ap_cvm_access_el3_t;
3947 
3948 #define BDK_AP_CVM_ACCESS_EL3 BDK_AP_CVM_ACCESS_EL3_FUNC()
3949 static inline uint64_t BDK_AP_CVM_ACCESS_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_ACCESS_EL3_FUNC(void)3950 static inline uint64_t BDK_AP_CVM_ACCESS_EL3_FUNC(void)
3951 {
3952     return 0x3060b000300ll;
3953 }
3954 
3955 #define typedef_BDK_AP_CVM_ACCESS_EL3 bdk_ap_cvm_access_el3_t
3956 #define bustype_BDK_AP_CVM_ACCESS_EL3 BDK_CSR_TYPE_SYSREG
3957 #define basename_BDK_AP_CVM_ACCESS_EL3 "AP_CVM_ACCESS_EL3"
3958 #define busnum_BDK_AP_CVM_ACCESS_EL3 0
3959 #define arguments_BDK_AP_CVM_ACCESS_EL3 -1,-1,-1,-1
3960 
3961 /**
3962  * Register (SYSREG) ap_cvm_bist0_el1
3963  *
3964  * AP Cavium BIST0 Register
3965  * This register indicates BIST status, where a 1 in a bit position indicates defective.
3966  */
3967 union bdk_ap_cvm_bist0_el1
3968 {
3969     uint64_t u;
3970     struct bdk_ap_cvm_bist0_el1_s
3971     {
3972 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3973         uint64_t reserved_35_63        : 29;
3974         uint64_t fuse_controller_reports_hard_repair : 1;/**< [ 34: 34](RO) Fuse controller reports hard repair. */
3975         uint64_t clear_bist_was_run    : 1;  /**< [ 33: 33](RO) Clear BIST was run. */
3976         uint64_t manufacturing_mode    : 1;  /**< [ 32: 32](RO) Manufacturing mode. */
3977         uint64_t icache_data_banks_with_unrepairable_defects : 8;/**< [ 31: 24](RO) Icache data banks with unrepairable defects. */
3978         uint64_t icache_data_banks_with_defects : 8;/**< [ 23: 16](RO) Icache data banks with defects. */
3979         uint64_t reserved_8_15         : 8;
3980         uint64_t aes_roms_defective    : 1;  /**< [  7:  7](RO) AES ROMs defective. */
3981         uint64_t fpu_roms_defective    : 1;  /**< [  6:  6](RO) FPU ROMs defective. */
3982         uint64_t fpu_rf_defective      : 1;  /**< [  5:  5](RO) FPU/SIMD RF defective. */
3983         uint64_t integer_rf_defective  : 1;  /**< [  4:  4](RO) Integer RF defective. */
3984         uint64_t jrt_defective         : 1;  /**< [  3:  3](RO) JRT defective. */
3985         uint64_t bht_defective         : 1;  /**< [  2:  2](RO) BHT defective. */
3986         uint64_t icache_tag_defective  : 1;  /**< [  1:  1](RO) Icache tag defective. */
3987         uint64_t icache_data_defective : 1;  /**< [  0:  0](RO) Icache data defective/unrepairable. */
3988 #else /* Word 0 - Little Endian */
3989         uint64_t icache_data_defective : 1;  /**< [  0:  0](RO) Icache data defective/unrepairable. */
3990         uint64_t icache_tag_defective  : 1;  /**< [  1:  1](RO) Icache tag defective. */
3991         uint64_t bht_defective         : 1;  /**< [  2:  2](RO) BHT defective. */
3992         uint64_t jrt_defective         : 1;  /**< [  3:  3](RO) JRT defective. */
3993         uint64_t integer_rf_defective  : 1;  /**< [  4:  4](RO) Integer RF defective. */
3994         uint64_t fpu_rf_defective      : 1;  /**< [  5:  5](RO) FPU/SIMD RF defective. */
3995         uint64_t fpu_roms_defective    : 1;  /**< [  6:  6](RO) FPU ROMs defective. */
3996         uint64_t aes_roms_defective    : 1;  /**< [  7:  7](RO) AES ROMs defective. */
3997         uint64_t reserved_8_15         : 8;
3998         uint64_t icache_data_banks_with_defects : 8;/**< [ 23: 16](RO) Icache data banks with defects. */
3999         uint64_t icache_data_banks_with_unrepairable_defects : 8;/**< [ 31: 24](RO) Icache data banks with unrepairable defects. */
4000         uint64_t manufacturing_mode    : 1;  /**< [ 32: 32](RO) Manufacturing mode. */
4001         uint64_t clear_bist_was_run    : 1;  /**< [ 33: 33](RO) Clear BIST was run. */
4002         uint64_t fuse_controller_reports_hard_repair : 1;/**< [ 34: 34](RO) Fuse controller reports hard repair. */
4003         uint64_t reserved_35_63        : 29;
4004 #endif /* Word 0 - End */
4005     } s;
4006     /* struct bdk_ap_cvm_bist0_el1_s cn8; */
4007     struct bdk_ap_cvm_bist0_el1_cn9
4008     {
4009 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4010         uint64_t reserved_35_63        : 29;
4011         uint64_t fuse_controller_reports_hard_repair : 1;/**< [ 34: 34](RO) Fuse controller reports hard repair. */
4012         uint64_t reserved_33           : 1;
4013         uint64_t manufacturing_mode    : 1;  /**< [ 32: 32](RO) Manufacturing mode. */
4014         uint64_t icache_data_banks_with_unrepairable_defects : 8;/**< [ 31: 24](RO) Icache data banks with unrepairable defects. */
4015         uint64_t icache_data_banks_with_defects : 8;/**< [ 23: 16](RO) Icache data banks with defects. */
4016         uint64_t reserved_8_15         : 8;
4017         uint64_t aes_roms_defective    : 1;  /**< [  7:  7](RO) AES ROMs defective. */
4018         uint64_t fpu_roms_defective    : 1;  /**< [  6:  6](RO) FPU ROMs defective. */
4019         uint64_t fpu_rf_defective      : 1;  /**< [  5:  5](RO) FPU/SIMD RF defective. */
4020         uint64_t integer_rf_defective  : 1;  /**< [  4:  4](RO) Integer RF defective. */
4021         uint64_t jrt_defective         : 1;  /**< [  3:  3](RO) JRT defective. */
4022         uint64_t bht_defective         : 1;  /**< [  2:  2](RO) BHT defective. */
4023         uint64_t icache_tag_defective  : 1;  /**< [  1:  1](RO) Icache tag defective. */
4024         uint64_t icache_data_defective : 1;  /**< [  0:  0](RO) Icache data defective/unrepairable. */
4025 #else /* Word 0 - Little Endian */
4026         uint64_t icache_data_defective : 1;  /**< [  0:  0](RO) Icache data defective/unrepairable. */
4027         uint64_t icache_tag_defective  : 1;  /**< [  1:  1](RO) Icache tag defective. */
4028         uint64_t bht_defective         : 1;  /**< [  2:  2](RO) BHT defective. */
4029         uint64_t jrt_defective         : 1;  /**< [  3:  3](RO) JRT defective. */
4030         uint64_t integer_rf_defective  : 1;  /**< [  4:  4](RO) Integer RF defective. */
4031         uint64_t fpu_rf_defective      : 1;  /**< [  5:  5](RO) FPU/SIMD RF defective. */
4032         uint64_t fpu_roms_defective    : 1;  /**< [  6:  6](RO) FPU ROMs defective. */
4033         uint64_t aes_roms_defective    : 1;  /**< [  7:  7](RO) AES ROMs defective. */
4034         uint64_t reserved_8_15         : 8;
4035         uint64_t icache_data_banks_with_defects : 8;/**< [ 23: 16](RO) Icache data banks with defects. */
4036         uint64_t icache_data_banks_with_unrepairable_defects : 8;/**< [ 31: 24](RO) Icache data banks with unrepairable defects. */
4037         uint64_t manufacturing_mode    : 1;  /**< [ 32: 32](RO) Manufacturing mode. */
4038         uint64_t reserved_33           : 1;
4039         uint64_t fuse_controller_reports_hard_repair : 1;/**< [ 34: 34](RO) Fuse controller reports hard repair. */
4040         uint64_t reserved_35_63        : 29;
4041 #endif /* Word 0 - End */
4042     } cn9;
4043 };
4044 typedef union bdk_ap_cvm_bist0_el1 bdk_ap_cvm_bist0_el1_t;
4045 
4046 #define BDK_AP_CVM_BIST0_EL1 BDK_AP_CVM_BIST0_EL1_FUNC()
4047 static inline uint64_t BDK_AP_CVM_BIST0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_BIST0_EL1_FUNC(void)4048 static inline uint64_t BDK_AP_CVM_BIST0_EL1_FUNC(void)
4049 {
4050     return 0x3000b010000ll;
4051 }
4052 
4053 #define typedef_BDK_AP_CVM_BIST0_EL1 bdk_ap_cvm_bist0_el1_t
4054 #define bustype_BDK_AP_CVM_BIST0_EL1 BDK_CSR_TYPE_SYSREG
4055 #define basename_BDK_AP_CVM_BIST0_EL1 "AP_CVM_BIST0_EL1"
4056 #define busnum_BDK_AP_CVM_BIST0_EL1 0
4057 #define arguments_BDK_AP_CVM_BIST0_EL1 -1,-1,-1,-1
4058 
4059 /**
4060  * Register (SYSREG) ap_cvm_bist1_el1
4061  *
4062  * AP Cavium BIST1 Register
4063  * This register indicates BIST status, where a 1 in a bit position indicates defective.
4064  */
4065 union bdk_ap_cvm_bist1_el1
4066 {
4067     uint64_t u;
4068     struct bdk_ap_cvm_bist1_el1_s
4069     {
4070 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4071         uint64_t reserved_48_63        : 16;
4072         uint64_t icache_bank7          : 6;  /**< [ 47: 42](RO) Icache bank7 bad set, 0x3F means no defect. */
4073         uint64_t icache_bank6          : 6;  /**< [ 41: 36](RO) Icache bank6 bad set, 0x3F means no defect. */
4074         uint64_t icache_bank5          : 6;  /**< [ 35: 30](RO) Icache bank5 bad set, 0x3F means no defect. */
4075         uint64_t icache_bank4          : 6;  /**< [ 29: 24](RO) Icache bank4 bad set, 0x3F means no defect. */
4076         uint64_t icache_bank3          : 6;  /**< [ 23: 18](RO) Icache bank3 bad set, 0x3F means no defect. */
4077         uint64_t icache_bank2          : 6;  /**< [ 17: 12](RO) Icache bank2 bad set, 0x3F means no defect. */
4078         uint64_t icache_bank1          : 6;  /**< [ 11:  6](RO) Icache bank1 bad set, 0x3F means no defect. */
4079         uint64_t icache_bank0          : 6;  /**< [  5:  0](RO) Icache bank0 bad set, 0x3F means no defect. */
4080 #else /* Word 0 - Little Endian */
4081         uint64_t icache_bank0          : 6;  /**< [  5:  0](RO) Icache bank0 bad set, 0x3F means no defect. */
4082         uint64_t icache_bank1          : 6;  /**< [ 11:  6](RO) Icache bank1 bad set, 0x3F means no defect. */
4083         uint64_t icache_bank2          : 6;  /**< [ 17: 12](RO) Icache bank2 bad set, 0x3F means no defect. */
4084         uint64_t icache_bank3          : 6;  /**< [ 23: 18](RO) Icache bank3 bad set, 0x3F means no defect. */
4085         uint64_t icache_bank4          : 6;  /**< [ 29: 24](RO) Icache bank4 bad set, 0x3F means no defect. */
4086         uint64_t icache_bank5          : 6;  /**< [ 35: 30](RO) Icache bank5 bad set, 0x3F means no defect. */
4087         uint64_t icache_bank6          : 6;  /**< [ 41: 36](RO) Icache bank6 bad set, 0x3F means no defect. */
4088         uint64_t icache_bank7          : 6;  /**< [ 47: 42](RO) Icache bank7 bad set, 0x3F means no defect. */
4089         uint64_t reserved_48_63        : 16;
4090 #endif /* Word 0 - End */
4091     } s;
4092     /* struct bdk_ap_cvm_bist1_el1_s cn8; */
4093     struct bdk_ap_cvm_bist1_el1_cn9
4094     {
4095 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4096         uint64_t reserved_0_63         : 64;
4097 #else /* Word 0 - Little Endian */
4098         uint64_t reserved_0_63         : 64;
4099 #endif /* Word 0 - End */
4100     } cn9;
4101 };
4102 typedef union bdk_ap_cvm_bist1_el1 bdk_ap_cvm_bist1_el1_t;
4103 
4104 #define BDK_AP_CVM_BIST1_EL1 BDK_AP_CVM_BIST1_EL1_FUNC()
4105 static inline uint64_t BDK_AP_CVM_BIST1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_BIST1_EL1_FUNC(void)4106 static inline uint64_t BDK_AP_CVM_BIST1_EL1_FUNC(void)
4107 {
4108     return 0x3000b010100ll;
4109 }
4110 
4111 #define typedef_BDK_AP_CVM_BIST1_EL1 bdk_ap_cvm_bist1_el1_t
4112 #define bustype_BDK_AP_CVM_BIST1_EL1 BDK_CSR_TYPE_SYSREG
4113 #define basename_BDK_AP_CVM_BIST1_EL1 "AP_CVM_BIST1_EL1"
4114 #define busnum_BDK_AP_CVM_BIST1_EL1 0
4115 #define arguments_BDK_AP_CVM_BIST1_EL1 -1,-1,-1,-1
4116 
4117 /**
4118  * Register (SYSREG) ap_cvm_bist2_el1
4119  *
4120  * AP Cavium BIST2 Register
4121  * This register indicates BIST status, where a 1 in a bit position indicates defective.
4122  */
4123 union bdk_ap_cvm_bist2_el1
4124 {
4125     uint64_t u;
4126     struct bdk_ap_cvm_bist2_el1_s
4127     {
4128 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4129         uint64_t reserved_9_63         : 55;
4130         uint64_t wcu                   : 1;  /**< [  8:  8](RO) WCU defective. */
4131         uint64_t dut                   : 1;  /**< [  7:  7](RO) DUT defective. */
4132         uint64_t wbf                   : 1;  /**< [  6:  6](RO) WBF defective. */
4133         uint64_t maf                   : 1;  /**< [  5:  5](RO) MAF defective. */
4134         uint64_t utlb                  : 1;  /**< [  4:  4](RO) UTLB defective. */
4135         uint64_t mtlb                  : 1;  /**< [  3:  3](RO) MTLB defective. */
4136         uint64_t l1dp                  : 1;  /**< [  2:  2](RO) Dcache PTAG defective. */
4137         uint64_t l1dv                  : 1;  /**< [  1:  1](RO) Dcache VTAG defective. */
4138         uint64_t l1dd                  : 1;  /**< [  0:  0](RO) Dcache Data defective. */
4139 #else /* Word 0 - Little Endian */
4140         uint64_t l1dd                  : 1;  /**< [  0:  0](RO) Dcache Data defective. */
4141         uint64_t l1dv                  : 1;  /**< [  1:  1](RO) Dcache VTAG defective. */
4142         uint64_t l1dp                  : 1;  /**< [  2:  2](RO) Dcache PTAG defective. */
4143         uint64_t mtlb                  : 1;  /**< [  3:  3](RO) MTLB defective. */
4144         uint64_t utlb                  : 1;  /**< [  4:  4](RO) UTLB defective. */
4145         uint64_t maf                   : 1;  /**< [  5:  5](RO) MAF defective. */
4146         uint64_t wbf                   : 1;  /**< [  6:  6](RO) WBF defective. */
4147         uint64_t dut                   : 1;  /**< [  7:  7](RO) DUT defective. */
4148         uint64_t wcu                   : 1;  /**< [  8:  8](RO) WCU defective. */
4149         uint64_t reserved_9_63         : 55;
4150 #endif /* Word 0 - End */
4151     } s;
4152     /* struct bdk_ap_cvm_bist2_el1_s cn8; */
4153     struct bdk_ap_cvm_bist2_el1_cn9
4154     {
4155 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4156         uint64_t reserved_0_63         : 64;
4157 #else /* Word 0 - Little Endian */
4158         uint64_t reserved_0_63         : 64;
4159 #endif /* Word 0 - End */
4160     } cn9;
4161 };
4162 typedef union bdk_ap_cvm_bist2_el1 bdk_ap_cvm_bist2_el1_t;
4163 
4164 #define BDK_AP_CVM_BIST2_EL1 BDK_AP_CVM_BIST2_EL1_FUNC()
4165 static inline uint64_t BDK_AP_CVM_BIST2_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_BIST2_EL1_FUNC(void)4166 static inline uint64_t BDK_AP_CVM_BIST2_EL1_FUNC(void)
4167 {
4168     return 0x3000b010400ll;
4169 }
4170 
4171 #define typedef_BDK_AP_CVM_BIST2_EL1 bdk_ap_cvm_bist2_el1_t
4172 #define bustype_BDK_AP_CVM_BIST2_EL1 BDK_CSR_TYPE_SYSREG
4173 #define basename_BDK_AP_CVM_BIST2_EL1 "AP_CVM_BIST2_EL1"
4174 #define busnum_BDK_AP_CVM_BIST2_EL1 0
4175 #define arguments_BDK_AP_CVM_BIST2_EL1 -1,-1,-1,-1
4176 
4177 /**
4178  * Register (SYSREG) ap_cvm_bist3_el1
4179  *
4180  * AP Cavium BIST3 Register
4181  * This register indicates BIST status, where a 1 in a bit position indicates defective.
4182  */
4183 union bdk_ap_cvm_bist3_el1
4184 {
4185     uint64_t u;
4186     struct bdk_ap_cvm_bist3_el1_s
4187     {
4188 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4189         uint64_t reserved_48_63        : 16;
4190         uint64_t set7                  : 6;  /**< [ 47: 42](RO) Dcache set7 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4191         uint64_t set6                  : 6;  /**< [ 41: 36](RO) Dcache set6 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4192         uint64_t set5                  : 6;  /**< [ 35: 30](RO) Dcache set5 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4193         uint64_t set4                  : 6;  /**< [ 29: 24](RO) Dcache set4 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4194         uint64_t set3                  : 6;  /**< [ 23: 18](RO) Dcache set3 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4195         uint64_t set2                  : 6;  /**< [ 17: 12](RO) Dcache set2 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4196         uint64_t set1                  : 6;  /**< [ 11:  6](RO) Dcache set1 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4197         uint64_t set0                  : 6;  /**< [  5:  0](RO) Dcache set0 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4198 #else /* Word 0 - Little Endian */
4199         uint64_t set0                  : 6;  /**< [  5:  0](RO) Dcache set0 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4200         uint64_t set1                  : 6;  /**< [ 11:  6](RO) Dcache set1 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4201         uint64_t set2                  : 6;  /**< [ 17: 12](RO) Dcache set2 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4202         uint64_t set3                  : 6;  /**< [ 23: 18](RO) Dcache set3 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4203         uint64_t set4                  : 6;  /**< [ 29: 24](RO) Dcache set4 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4204         uint64_t set5                  : 6;  /**< [ 35: 30](RO) Dcache set5 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4205         uint64_t set6                  : 6;  /**< [ 41: 36](RO) Dcache set6 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4206         uint64_t set7                  : 6;  /**< [ 47: 42](RO) Dcache set7 bad way, 0x3F = no defect, 0x3E = multiple defects. */
4207         uint64_t reserved_48_63        : 16;
4208 #endif /* Word 0 - End */
4209     } s;
4210     /* struct bdk_ap_cvm_bist3_el1_s cn8; */
4211     struct bdk_ap_cvm_bist3_el1_cn9
4212     {
4213 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4214         uint64_t reserved_48_63        : 16;
4215         uint64_t reserved_0_47         : 48;
4216 #else /* Word 0 - Little Endian */
4217         uint64_t reserved_0_47         : 48;
4218         uint64_t reserved_48_63        : 16;
4219 #endif /* Word 0 - End */
4220     } cn9;
4221 };
4222 typedef union bdk_ap_cvm_bist3_el1 bdk_ap_cvm_bist3_el1_t;
4223 
4224 #define BDK_AP_CVM_BIST3_EL1 BDK_AP_CVM_BIST3_EL1_FUNC()
4225 static inline uint64_t BDK_AP_CVM_BIST3_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_BIST3_EL1_FUNC(void)4226 static inline uint64_t BDK_AP_CVM_BIST3_EL1_FUNC(void)
4227 {
4228     return 0x3000b010500ll;
4229 }
4230 
4231 #define typedef_BDK_AP_CVM_BIST3_EL1 bdk_ap_cvm_bist3_el1_t
4232 #define bustype_BDK_AP_CVM_BIST3_EL1 BDK_CSR_TYPE_SYSREG
4233 #define basename_BDK_AP_CVM_BIST3_EL1 "AP_CVM_BIST3_EL1"
4234 #define busnum_BDK_AP_CVM_BIST3_EL1 0
4235 #define arguments_BDK_AP_CVM_BIST3_EL1 -1,-1,-1,-1
4236 
4237 /**
4238  * Register (SYSREG) ap_cvm_cpid_el2
4239  *
4240  * AP Cavium Cache Partitioning EL2 Register
4241  * This register provides Cavium-specific control information.
4242  */
4243 union bdk_ap_cvm_cpid_el2
4244 {
4245     uint64_t u;
4246     struct bdk_ap_cvm_cpid_el2_s
4247     {
4248 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4249         uint64_t reserved_7_63         : 57;
4250         uint64_t cpid                  : 7;  /**< [  6:  0](R/W) Cache partition ID. */
4251 #else /* Word 0 - Little Endian */
4252         uint64_t cpid                  : 7;  /**< [  6:  0](R/W) Cache partition ID. */
4253         uint64_t reserved_7_63         : 57;
4254 #endif /* Word 0 - End */
4255     } s;
4256     /* struct bdk_ap_cvm_cpid_el2_s cn; */
4257 };
4258 typedef union bdk_ap_cvm_cpid_el2 bdk_ap_cvm_cpid_el2_t;
4259 
4260 #define BDK_AP_CVM_CPID_EL2 BDK_AP_CVM_CPID_EL2_FUNC()
4261 static inline uint64_t BDK_AP_CVM_CPID_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_CPID_EL2_FUNC(void)4262 static inline uint64_t BDK_AP_CVM_CPID_EL2_FUNC(void)
4263 {
4264     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
4265         return 0x3040b060400ll;
4266     __bdk_csr_fatal("AP_CVM_CPID_EL2", 0, 0, 0, 0, 0);
4267 }
4268 
4269 #define typedef_BDK_AP_CVM_CPID_EL2 bdk_ap_cvm_cpid_el2_t
4270 #define bustype_BDK_AP_CVM_CPID_EL2 BDK_CSR_TYPE_SYSREG
4271 #define basename_BDK_AP_CVM_CPID_EL2 "AP_CVM_CPID_EL2"
4272 #define busnum_BDK_AP_CVM_CPID_EL2 0
4273 #define arguments_BDK_AP_CVM_CPID_EL2 -1,-1,-1,-1
4274 
4275 /**
4276  * Register (SYSREG) ap_cvm_cpid_el3
4277  *
4278  * AP Cavium Cache Partitioning EL3 Register
4279  * This register provides Cavium-specific control information.
4280  */
4281 union bdk_ap_cvm_cpid_el3
4282 {
4283     uint64_t u;
4284     struct bdk_ap_cvm_cpid_el3_s
4285     {
4286 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4287         uint64_t reserved_7_63         : 57;
4288         uint64_t cpid                  : 7;  /**< [  6:  0](R/W) Cache partition ID. */
4289 #else /* Word 0 - Little Endian */
4290         uint64_t cpid                  : 7;  /**< [  6:  0](R/W) Cache partition ID. */
4291         uint64_t reserved_7_63         : 57;
4292 #endif /* Word 0 - End */
4293     } s;
4294     /* struct bdk_ap_cvm_cpid_el3_s cn; */
4295 };
4296 typedef union bdk_ap_cvm_cpid_el3 bdk_ap_cvm_cpid_el3_t;
4297 
4298 #define BDK_AP_CVM_CPID_EL3 BDK_AP_CVM_CPID_EL3_FUNC()
4299 static inline uint64_t BDK_AP_CVM_CPID_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_CPID_EL3_FUNC(void)4300 static inline uint64_t BDK_AP_CVM_CPID_EL3_FUNC(void)
4301 {
4302     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
4303         return 0x3060b060400ll;
4304     __bdk_csr_fatal("AP_CVM_CPID_EL3", 0, 0, 0, 0, 0);
4305 }
4306 
4307 #define typedef_BDK_AP_CVM_CPID_EL3 bdk_ap_cvm_cpid_el3_t
4308 #define bustype_BDK_AP_CVM_CPID_EL3 BDK_CSR_TYPE_SYSREG
4309 #define basename_BDK_AP_CVM_CPID_EL3 "AP_CVM_CPID_EL3"
4310 #define busnum_BDK_AP_CVM_CPID_EL3 0
4311 #define arguments_BDK_AP_CVM_CPID_EL3 -1,-1,-1,-1
4312 
4313 /**
4314  * Register (SYSREG) ap_cvm_dcachedata0_el1
4315  *
4316  * AP Cavium Dcache Data 0 Register
4317  */
4318 union bdk_ap_cvm_dcachedata0_el1
4319 {
4320     uint64_t u;
4321     struct bdk_ap_cvm_dcachedata0_el1_s
4322     {
4323 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4324         uint64_t data                  : 64; /**< [ 63:  0](RO) Dcache data. */
4325 #else /* Word 0 - Little Endian */
4326         uint64_t data                  : 64; /**< [ 63:  0](RO) Dcache data. */
4327 #endif /* Word 0 - End */
4328     } s;
4329     /* struct bdk_ap_cvm_dcachedata0_el1_s cn; */
4330 };
4331 typedef union bdk_ap_cvm_dcachedata0_el1 bdk_ap_cvm_dcachedata0_el1_t;
4332 
4333 #define BDK_AP_CVM_DCACHEDATA0_EL1 BDK_AP_CVM_DCACHEDATA0_EL1_FUNC()
4334 static inline uint64_t BDK_AP_CVM_DCACHEDATA0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DCACHEDATA0_EL1_FUNC(void)4335 static inline uint64_t BDK_AP_CVM_DCACHEDATA0_EL1_FUNC(void)
4336 {
4337     return 0x3000b030400ll;
4338 }
4339 
4340 #define typedef_BDK_AP_CVM_DCACHEDATA0_EL1 bdk_ap_cvm_dcachedata0_el1_t
4341 #define bustype_BDK_AP_CVM_DCACHEDATA0_EL1 BDK_CSR_TYPE_SYSREG
4342 #define basename_BDK_AP_CVM_DCACHEDATA0_EL1 "AP_CVM_DCACHEDATA0_EL1"
4343 #define busnum_BDK_AP_CVM_DCACHEDATA0_EL1 0
4344 #define arguments_BDK_AP_CVM_DCACHEDATA0_EL1 -1,-1,-1,-1
4345 
4346 /**
4347  * Register (SYSREG) ap_cvm_dcachedata1_el1
4348  *
4349  * AP Cavium Dcache Data 1 Register
4350  */
4351 union bdk_ap_cvm_dcachedata1_el1
4352 {
4353     uint64_t u;
4354     struct bdk_ap_cvm_dcachedata1_el1_s
4355     {
4356 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4357         uint64_t reserved_8_63         : 56;
4358         uint64_t parity                : 8;  /**< [  7:  0](RO) Parity bits. */
4359 #else /* Word 0 - Little Endian */
4360         uint64_t parity                : 8;  /**< [  7:  0](RO) Parity bits. */
4361         uint64_t reserved_8_63         : 56;
4362 #endif /* Word 0 - End */
4363     } s;
4364     /* struct bdk_ap_cvm_dcachedata1_el1_s cn; */
4365 };
4366 typedef union bdk_ap_cvm_dcachedata1_el1 bdk_ap_cvm_dcachedata1_el1_t;
4367 
4368 #define BDK_AP_CVM_DCACHEDATA1_EL1 BDK_AP_CVM_DCACHEDATA1_EL1_FUNC()
4369 static inline uint64_t BDK_AP_CVM_DCACHEDATA1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DCACHEDATA1_EL1_FUNC(void)4370 static inline uint64_t BDK_AP_CVM_DCACHEDATA1_EL1_FUNC(void)
4371 {
4372     return 0x3000b030500ll;
4373 }
4374 
4375 #define typedef_BDK_AP_CVM_DCACHEDATA1_EL1 bdk_ap_cvm_dcachedata1_el1_t
4376 #define bustype_BDK_AP_CVM_DCACHEDATA1_EL1 BDK_CSR_TYPE_SYSREG
4377 #define basename_BDK_AP_CVM_DCACHEDATA1_EL1 "AP_CVM_DCACHEDATA1_EL1"
4378 #define busnum_BDK_AP_CVM_DCACHEDATA1_EL1 0
4379 #define arguments_BDK_AP_CVM_DCACHEDATA1_EL1 -1,-1,-1,-1
4380 
4381 /**
4382  * Register (SYSREG) ap_cvm_dcacheptag0_el1
4383  *
4384  * AP Cavium Dcache Ptag 0 Register
4385  */
4386 union bdk_ap_cvm_dcacheptag0_el1
4387 {
4388     uint64_t u;
4389     struct bdk_ap_cvm_dcacheptag0_el1_s
4390     {
4391 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4392         uint64_t reserved_44_63        : 20;
4393         uint64_t nsec                  : 1;  /**< [ 43: 43](RO) Not-shared. */
4394         uint64_t ptag                  : 33; /**< [ 42: 10](RO) Physical tag \<42:10\>. */
4395         uint64_t reserved_1_9          : 9;
4396         uint64_t valid                 : 1;  /**< [  0:  0](RO) Valid. */
4397 #else /* Word 0 - Little Endian */
4398         uint64_t valid                 : 1;  /**< [  0:  0](RO) Valid. */
4399         uint64_t reserved_1_9          : 9;
4400         uint64_t ptag                  : 33; /**< [ 42: 10](RO) Physical tag \<42:10\>. */
4401         uint64_t nsec                  : 1;  /**< [ 43: 43](RO) Not-shared. */
4402         uint64_t reserved_44_63        : 20;
4403 #endif /* Word 0 - End */
4404     } s;
4405     /* struct bdk_ap_cvm_dcacheptag0_el1_s cn; */
4406 };
4407 typedef union bdk_ap_cvm_dcacheptag0_el1 bdk_ap_cvm_dcacheptag0_el1_t;
4408 
4409 #define BDK_AP_CVM_DCACHEPTAG0_EL1 BDK_AP_CVM_DCACHEPTAG0_EL1_FUNC()
4410 static inline uint64_t BDK_AP_CVM_DCACHEPTAG0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DCACHEPTAG0_EL1_FUNC(void)4411 static inline uint64_t BDK_AP_CVM_DCACHEPTAG0_EL1_FUNC(void)
4412 {
4413     return 0x3000b040400ll;
4414 }
4415 
4416 #define typedef_BDK_AP_CVM_DCACHEPTAG0_EL1 bdk_ap_cvm_dcacheptag0_el1_t
4417 #define bustype_BDK_AP_CVM_DCACHEPTAG0_EL1 BDK_CSR_TYPE_SYSREG
4418 #define basename_BDK_AP_CVM_DCACHEPTAG0_EL1 "AP_CVM_DCACHEPTAG0_EL1"
4419 #define busnum_BDK_AP_CVM_DCACHEPTAG0_EL1 0
4420 #define arguments_BDK_AP_CVM_DCACHEPTAG0_EL1 -1,-1,-1,-1
4421 
4422 /**
4423  * Register (SYSREG) ap_cvm_dcachevtag0_el1
4424  *
4425  * AP Cavium Dcache Vtag 0 Register
4426  */
4427 union bdk_ap_cvm_dcachevtag0_el1
4428 {
4429     uint64_t u;
4430     struct bdk_ap_cvm_dcachevtag0_el1_s
4431     {
4432 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4433         uint64_t reserved_60_63        : 4;
4434         uint64_t eva_vmid              : 4;  /**< [ 59: 56](RO) Entry EVA_VMID. */
4435         uint64_t reserved_49_55        : 7;
4436         uint64_t r                     : 1;  /**< [ 48: 48](RO) Entry R. */
4437         uint64_t vtag                  : 38; /**< [ 47: 10](RO) Entry VTAG\<47:10\>. */
4438         uint64_t eva_asid              : 6;  /**< [  9:  4](RO) Entry EVA_ASID. */
4439         uint64_t ng                    : 1;  /**< [  3:  3](RO) Entry NG. */
4440         uint64_t el_1or0               : 1;  /**< [  2:  2](RO) Entry is EL0 or EL1. */
4441         uint64_t nsec                  : 1;  /**< [  1:  1](RO) Entry is NS. */
4442         uint64_t valid                 : 1;  /**< [  0:  0](RO) Entry valid. */
4443 #else /* Word 0 - Little Endian */
4444         uint64_t valid                 : 1;  /**< [  0:  0](RO) Entry valid. */
4445         uint64_t nsec                  : 1;  /**< [  1:  1](RO) Entry is NS. */
4446         uint64_t el_1or0               : 1;  /**< [  2:  2](RO) Entry is EL0 or EL1. */
4447         uint64_t ng                    : 1;  /**< [  3:  3](RO) Entry NG. */
4448         uint64_t eva_asid              : 6;  /**< [  9:  4](RO) Entry EVA_ASID. */
4449         uint64_t vtag                  : 38; /**< [ 47: 10](RO) Entry VTAG\<47:10\>. */
4450         uint64_t r                     : 1;  /**< [ 48: 48](RO) Entry R. */
4451         uint64_t reserved_49_55        : 7;
4452         uint64_t eva_vmid              : 4;  /**< [ 59: 56](RO) Entry EVA_VMID. */
4453         uint64_t reserved_60_63        : 4;
4454 #endif /* Word 0 - End */
4455     } s;
4456     /* struct bdk_ap_cvm_dcachevtag0_el1_s cn; */
4457 };
4458 typedef union bdk_ap_cvm_dcachevtag0_el1 bdk_ap_cvm_dcachevtag0_el1_t;
4459 
4460 #define BDK_AP_CVM_DCACHEVTAG0_EL1 BDK_AP_CVM_DCACHEVTAG0_EL1_FUNC()
4461 static inline uint64_t BDK_AP_CVM_DCACHEVTAG0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DCACHEVTAG0_EL1_FUNC(void)4462 static inline uint64_t BDK_AP_CVM_DCACHEVTAG0_EL1_FUNC(void)
4463 {
4464     return 0x3000b030600ll;
4465 }
4466 
4467 #define typedef_BDK_AP_CVM_DCACHEVTAG0_EL1 bdk_ap_cvm_dcachevtag0_el1_t
4468 #define bustype_BDK_AP_CVM_DCACHEVTAG0_EL1 BDK_CSR_TYPE_SYSREG
4469 #define basename_BDK_AP_CVM_DCACHEVTAG0_EL1 "AP_CVM_DCACHEVTAG0_EL1"
4470 #define busnum_BDK_AP_CVM_DCACHEVTAG0_EL1 0
4471 #define arguments_BDK_AP_CVM_DCACHEVTAG0_EL1 -1,-1,-1,-1
4472 
4473 /**
4474  * Register (SYSREG) ap_cvm_dcachevtag1_el1
4475  *
4476  * AP Cavium Dcache Vtag 1 Register
4477  */
4478 union bdk_ap_cvm_dcachevtag1_el1
4479 {
4480     uint64_t u;
4481     struct bdk_ap_cvm_dcachevtag1_el1_s
4482     {
4483 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4484         uint64_t reserved_25_63        : 39;
4485         uint64_t ent1                  : 9;  /**< [ 24: 16](RO) ENT1. */
4486         uint64_t reserved_9_15         : 7;
4487         uint64_t ent2                  : 9;  /**< [  8:  0](RO) ENT2. */
4488 #else /* Word 0 - Little Endian */
4489         uint64_t ent2                  : 9;  /**< [  8:  0](RO) ENT2. */
4490         uint64_t reserved_9_15         : 7;
4491         uint64_t ent1                  : 9;  /**< [ 24: 16](RO) ENT1. */
4492         uint64_t reserved_25_63        : 39;
4493 #endif /* Word 0 - End */
4494     } s;
4495     /* struct bdk_ap_cvm_dcachevtag1_el1_s cn; */
4496 };
4497 typedef union bdk_ap_cvm_dcachevtag1_el1 bdk_ap_cvm_dcachevtag1_el1_t;
4498 
4499 #define BDK_AP_CVM_DCACHEVTAG1_EL1 BDK_AP_CVM_DCACHEVTAG1_EL1_FUNC()
4500 static inline uint64_t BDK_AP_CVM_DCACHEVTAG1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DCACHEVTAG1_EL1_FUNC(void)4501 static inline uint64_t BDK_AP_CVM_DCACHEVTAG1_EL1_FUNC(void)
4502 {
4503     return 0x3000b030700ll;
4504 }
4505 
4506 #define typedef_BDK_AP_CVM_DCACHEVTAG1_EL1 bdk_ap_cvm_dcachevtag1_el1_t
4507 #define bustype_BDK_AP_CVM_DCACHEVTAG1_EL1 BDK_CSR_TYPE_SYSREG
4508 #define basename_BDK_AP_CVM_DCACHEVTAG1_EL1 "AP_CVM_DCACHEVTAG1_EL1"
4509 #define busnum_BDK_AP_CVM_DCACHEVTAG1_EL1 0
4510 #define arguments_BDK_AP_CVM_DCACHEVTAG1_EL1 -1,-1,-1,-1
4511 
4512 /**
4513  * Register (SYSREG) ap_cvm_debug0_el3
4514  *
4515  * INTERNAL: AP Cavium Debug 0 Register
4516  *
4517  * This register is for diagnostic use only.
4518  */
4519 union bdk_ap_cvm_debug0_el3
4520 {
4521     uint64_t u;
4522     struct bdk_ap_cvm_debug0_el3_s
4523     {
4524 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4525         uint64_t current_pc            : 64; /**< [ 63:  0](RO) Current PC. */
4526 #else /* Word 0 - Little Endian */
4527         uint64_t current_pc            : 64; /**< [ 63:  0](RO) Current PC. */
4528 #endif /* Word 0 - End */
4529     } s;
4530     /* struct bdk_ap_cvm_debug0_el3_s cn; */
4531 };
4532 typedef union bdk_ap_cvm_debug0_el3 bdk_ap_cvm_debug0_el3_t;
4533 
4534 #define BDK_AP_CVM_DEBUG0_EL3 BDK_AP_CVM_DEBUG0_EL3_FUNC()
4535 static inline uint64_t BDK_AP_CVM_DEBUG0_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DEBUG0_EL3_FUNC(void)4536 static inline uint64_t BDK_AP_CVM_DEBUG0_EL3_FUNC(void)
4537 {
4538     return 0x3060b040000ll;
4539 }
4540 
4541 #define typedef_BDK_AP_CVM_DEBUG0_EL3 bdk_ap_cvm_debug0_el3_t
4542 #define bustype_BDK_AP_CVM_DEBUG0_EL3 BDK_CSR_TYPE_SYSREG
4543 #define basename_BDK_AP_CVM_DEBUG0_EL3 "AP_CVM_DEBUG0_EL3"
4544 #define busnum_BDK_AP_CVM_DEBUG0_EL3 0
4545 #define arguments_BDK_AP_CVM_DEBUG0_EL3 -1,-1,-1,-1
4546 
4547 /**
4548  * Register (SYSREG) ap_cvm_debug1_el3
4549  *
4550  * INTERNAL: AP Cavium Debug 1 Register
4551  *
4552  * This register is for diagnostic use only.
4553  */
4554 union bdk_ap_cvm_debug1_el3
4555 {
4556     uint64_t u;
4557     struct bdk_ap_cvm_debug1_el3_s
4558     {
4559 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4560         uint64_t current_fetch         : 64; /**< [ 63:  0](RO) Current fetcher address. */
4561 #else /* Word 0 - Little Endian */
4562         uint64_t current_fetch         : 64; /**< [ 63:  0](RO) Current fetcher address. */
4563 #endif /* Word 0 - End */
4564     } s;
4565     /* struct bdk_ap_cvm_debug1_el3_s cn; */
4566 };
4567 typedef union bdk_ap_cvm_debug1_el3 bdk_ap_cvm_debug1_el3_t;
4568 
4569 #define BDK_AP_CVM_DEBUG1_EL3 BDK_AP_CVM_DEBUG1_EL3_FUNC()
4570 static inline uint64_t BDK_AP_CVM_DEBUG1_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DEBUG1_EL3_FUNC(void)4571 static inline uint64_t BDK_AP_CVM_DEBUG1_EL3_FUNC(void)
4572 {
4573     return 0x3060b040100ll;
4574 }
4575 
4576 #define typedef_BDK_AP_CVM_DEBUG1_EL3 bdk_ap_cvm_debug1_el3_t
4577 #define bustype_BDK_AP_CVM_DEBUG1_EL3 BDK_CSR_TYPE_SYSREG
4578 #define basename_BDK_AP_CVM_DEBUG1_EL3 "AP_CVM_DEBUG1_EL3"
4579 #define busnum_BDK_AP_CVM_DEBUG1_EL3 0
4580 #define arguments_BDK_AP_CVM_DEBUG1_EL3 -1,-1,-1,-1
4581 
4582 /**
4583  * Register (SYSREG) ap_cvm_debug2_el3
4584  *
4585  * INTERNAL: AP Cavium Debug 2 Register
4586  *
4587  * This register is for diagnostic use only.
4588  */
4589 union bdk_ap_cvm_debug2_el3
4590 {
4591     uint64_t u;
4592     struct bdk_ap_cvm_debug2_el3_s
4593     {
4594 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4595         uint64_t last_ifill            : 64; /**< [ 63:  0](RO) Last ifill address. */
4596 #else /* Word 0 - Little Endian */
4597         uint64_t last_ifill            : 64; /**< [ 63:  0](RO) Last ifill address. */
4598 #endif /* Word 0 - End */
4599     } s;
4600     /* struct bdk_ap_cvm_debug2_el3_s cn; */
4601 };
4602 typedef union bdk_ap_cvm_debug2_el3 bdk_ap_cvm_debug2_el3_t;
4603 
4604 #define BDK_AP_CVM_DEBUG2_EL3 BDK_AP_CVM_DEBUG2_EL3_FUNC()
4605 static inline uint64_t BDK_AP_CVM_DEBUG2_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DEBUG2_EL3_FUNC(void)4606 static inline uint64_t BDK_AP_CVM_DEBUG2_EL3_FUNC(void)
4607 {
4608     return 0x3060b040200ll;
4609 }
4610 
4611 #define typedef_BDK_AP_CVM_DEBUG2_EL3 bdk_ap_cvm_debug2_el3_t
4612 #define bustype_BDK_AP_CVM_DEBUG2_EL3 BDK_CSR_TYPE_SYSREG
4613 #define basename_BDK_AP_CVM_DEBUG2_EL3 "AP_CVM_DEBUG2_EL3"
4614 #define busnum_BDK_AP_CVM_DEBUG2_EL3 0
4615 #define arguments_BDK_AP_CVM_DEBUG2_EL3 -1,-1,-1,-1
4616 
4617 /**
4618  * Register (SYSREG) ap_cvm_debug3_el3
4619  *
4620  * INTERNAL: AP Cavium Debug 3 Register
4621  *
4622  * This register is for diagnostic use only.
4623  */
4624 union bdk_ap_cvm_debug3_el3
4625 {
4626     uint64_t u;
4627     struct bdk_ap_cvm_debug3_el3_s
4628     {
4629 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4630         uint64_t last_committed        : 64; /**< [ 63:  0](RO) Last committed instruction PC. */
4631 #else /* Word 0 - Little Endian */
4632         uint64_t last_committed        : 64; /**< [ 63:  0](RO) Last committed instruction PC. */
4633 #endif /* Word 0 - End */
4634     } s;
4635     /* struct bdk_ap_cvm_debug3_el3_s cn; */
4636 };
4637 typedef union bdk_ap_cvm_debug3_el3 bdk_ap_cvm_debug3_el3_t;
4638 
4639 #define BDK_AP_CVM_DEBUG3_EL3 BDK_AP_CVM_DEBUG3_EL3_FUNC()
4640 static inline uint64_t BDK_AP_CVM_DEBUG3_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DEBUG3_EL3_FUNC(void)4641 static inline uint64_t BDK_AP_CVM_DEBUG3_EL3_FUNC(void)
4642 {
4643     return 0x3060b040300ll;
4644 }
4645 
4646 #define typedef_BDK_AP_CVM_DEBUG3_EL3 bdk_ap_cvm_debug3_el3_t
4647 #define bustype_BDK_AP_CVM_DEBUG3_EL3 BDK_CSR_TYPE_SYSREG
4648 #define basename_BDK_AP_CVM_DEBUG3_EL3 "AP_CVM_DEBUG3_EL3"
4649 #define busnum_BDK_AP_CVM_DEBUG3_EL3 0
4650 #define arguments_BDK_AP_CVM_DEBUG3_EL3 -1,-1,-1,-1
4651 
4652 /**
4653  * Register (SYSREG) ap_cvm_debug4_el3
4654  *
4655  * INTERNAL: AP Cavium Debug 4 Register
4656  *
4657  * This register is for diagnostic use only.
4658  */
4659 union bdk_ap_cvm_debug4_el3
4660 {
4661     uint64_t u;
4662     struct bdk_ap_cvm_debug4_el3_s
4663     {
4664 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4665         uint64_t reserved_24_63        : 40;
4666         uint64_t dual_issue_reason     : 8;  /**< [ 23: 16](RO) Reason dual issue didn't occur. */
4667         uint64_t issue_reason          : 8;  /**< [ 15:  8](RO) Reason issue didn't occur. */
4668         uint64_t reserved_5_7          : 3;
4669         uint64_t mem_stall_4a          : 1;  /**< [  4:  4](RO) Memory Stall stage 4a. */
4670         uint64_t waiting_for_pfill_4a  : 1;  /**< [  3:  3](RO) Waiting for PFILL stage 4a. */
4671         uint64_t waiting_for_ifill_4a  : 1;  /**< [  2:  2](RO) Waiting for IFILL stage 4a. */
4672         uint64_t exception_level       : 2;  /**< [  1:  0](RO) Current exception level. */
4673 #else /* Word 0 - Little Endian */
4674         uint64_t exception_level       : 2;  /**< [  1:  0](RO) Current exception level. */
4675         uint64_t waiting_for_ifill_4a  : 1;  /**< [  2:  2](RO) Waiting for IFILL stage 4a. */
4676         uint64_t waiting_for_pfill_4a  : 1;  /**< [  3:  3](RO) Waiting for PFILL stage 4a. */
4677         uint64_t mem_stall_4a          : 1;  /**< [  4:  4](RO) Memory Stall stage 4a. */
4678         uint64_t reserved_5_7          : 3;
4679         uint64_t issue_reason          : 8;  /**< [ 15:  8](RO) Reason issue didn't occur. */
4680         uint64_t dual_issue_reason     : 8;  /**< [ 23: 16](RO) Reason dual issue didn't occur. */
4681         uint64_t reserved_24_63        : 40;
4682 #endif /* Word 0 - End */
4683     } s;
4684     /* struct bdk_ap_cvm_debug4_el3_s cn; */
4685 };
4686 typedef union bdk_ap_cvm_debug4_el3 bdk_ap_cvm_debug4_el3_t;
4687 
4688 #define BDK_AP_CVM_DEBUG4_EL3 BDK_AP_CVM_DEBUG4_EL3_FUNC()
4689 static inline uint64_t BDK_AP_CVM_DEBUG4_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DEBUG4_EL3_FUNC(void)4690 static inline uint64_t BDK_AP_CVM_DEBUG4_EL3_FUNC(void)
4691 {
4692     return 0x3060b050000ll;
4693 }
4694 
4695 #define typedef_BDK_AP_CVM_DEBUG4_EL3 bdk_ap_cvm_debug4_el3_t
4696 #define bustype_BDK_AP_CVM_DEBUG4_EL3 BDK_CSR_TYPE_SYSREG
4697 #define basename_BDK_AP_CVM_DEBUG4_EL3 "AP_CVM_DEBUG4_EL3"
4698 #define busnum_BDK_AP_CVM_DEBUG4_EL3 0
4699 #define arguments_BDK_AP_CVM_DEBUG4_EL3 -1,-1,-1,-1
4700 
4701 /**
4702  * Register (SYSREG) ap_cvm_debug6_el3
4703  *
4704  * INTERNAL: AP Cavium Debug 6 Register
4705  *
4706  * This register is for diagnostic use only.
4707  */
4708 union bdk_ap_cvm_debug6_el3
4709 {
4710     uint64_t u;
4711     struct bdk_ap_cvm_debug6_el3_s
4712     {
4713 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4714         uint64_t reserved_41_63        : 23;
4715         uint64_t power_off             : 1;  /**< [ 40: 40](RO)  */
4716         uint64_t power_longterm        : 8;  /**< [ 39: 32](RO)  */
4717         uint64_t power_setting         : 8;  /**< [ 31: 24](RO)  */
4718         uint64_t reserved_22_23        : 2;
4719         uint64_t interval_power        : 22; /**< [ 21:  0](RO)  */
4720 #else /* Word 0 - Little Endian */
4721         uint64_t interval_power        : 22; /**< [ 21:  0](RO)  */
4722         uint64_t reserved_22_23        : 2;
4723         uint64_t power_setting         : 8;  /**< [ 31: 24](RO)  */
4724         uint64_t power_longterm        : 8;  /**< [ 39: 32](RO)  */
4725         uint64_t power_off             : 1;  /**< [ 40: 40](RO)  */
4726         uint64_t reserved_41_63        : 23;
4727 #endif /* Word 0 - End */
4728     } s;
4729     /* struct bdk_ap_cvm_debug6_el3_s cn; */
4730 };
4731 typedef union bdk_ap_cvm_debug6_el3 bdk_ap_cvm_debug6_el3_t;
4732 
4733 #define BDK_AP_CVM_DEBUG6_EL3 BDK_AP_CVM_DEBUG6_EL3_FUNC()
4734 static inline uint64_t BDK_AP_CVM_DEBUG6_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DEBUG6_EL3_FUNC(void)4735 static inline uint64_t BDK_AP_CVM_DEBUG6_EL3_FUNC(void)
4736 {
4737     return 0x3060b050200ll;
4738 }
4739 
4740 #define typedef_BDK_AP_CVM_DEBUG6_EL3 bdk_ap_cvm_debug6_el3_t
4741 #define bustype_BDK_AP_CVM_DEBUG6_EL3 BDK_CSR_TYPE_SYSREG
4742 #define basename_BDK_AP_CVM_DEBUG6_EL3 "AP_CVM_DEBUG6_EL3"
4743 #define busnum_BDK_AP_CVM_DEBUG6_EL3 0
4744 #define arguments_BDK_AP_CVM_DEBUG6_EL3 -1,-1,-1,-1
4745 
4746 /**
4747  * Register (SYSREG) ap_cvm_debug7_el3
4748  *
4749  * INTERNAL: AP Cavium Debug 7 Register
4750  *
4751  * This register is for diagnostic use only.
4752  */
4753 union bdk_ap_cvm_debug7_el3
4754 {
4755     uint64_t u;
4756     struct bdk_ap_cvm_debug7_el3_s
4757     {
4758 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4759         uint64_t reserved_0_63         : 64;
4760 #else /* Word 0 - Little Endian */
4761         uint64_t reserved_0_63         : 64;
4762 #endif /* Word 0 - End */
4763     } s;
4764     /* struct bdk_ap_cvm_debug7_el3_s cn; */
4765 };
4766 typedef union bdk_ap_cvm_debug7_el3 bdk_ap_cvm_debug7_el3_t;
4767 
4768 #define BDK_AP_CVM_DEBUG7_EL3 BDK_AP_CVM_DEBUG7_EL3_FUNC()
4769 static inline uint64_t BDK_AP_CVM_DEBUG7_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DEBUG7_EL3_FUNC(void)4770 static inline uint64_t BDK_AP_CVM_DEBUG7_EL3_FUNC(void)
4771 {
4772     return 0x3060b050300ll;
4773 }
4774 
4775 #define typedef_BDK_AP_CVM_DEBUG7_EL3 bdk_ap_cvm_debug7_el3_t
4776 #define bustype_BDK_AP_CVM_DEBUG7_EL3 BDK_CSR_TYPE_SYSREG
4777 #define basename_BDK_AP_CVM_DEBUG7_EL3 "AP_CVM_DEBUG7_EL3"
4778 #define busnum_BDK_AP_CVM_DEBUG7_EL3 0
4779 #define arguments_BDK_AP_CVM_DEBUG7_EL3 -1,-1,-1,-1
4780 
4781 /**
4782  * Register (SYSREG) ap_cvm_debug8_el3
4783  *
4784  * INTERNAL: AP Cavium Debug 8 Register
4785  *
4786  * This register is for diagnostic use only.
4787  */
4788 union bdk_ap_cvm_debug8_el3
4789 {
4790     uint64_t u;
4791     struct bdk_ap_cvm_debug8_el3_s
4792     {
4793 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4794         uint64_t rdb_dsc_set_arry_1    : 18; /**< [ 63: 46](RO) Bits 17..0 of rdb_dsc_set_arry[1]. */
4795         uint64_t rdb_dsc_set_arry_0    : 36; /**< [ 45: 10](RO) Rdb_dsc_set_arry[0]. */
4796         uint64_t uwr_ack_def_cnt       : 2;  /**< [  9:  8](RO) Upstream write message ack count. */
4797         uint64_t sgi_ack_def_cnt       : 2;  /**< [  7:  6](RO) SGI generate message ack count. */
4798         uint64_t dct_ack_def_cnt       : 2;  /**< [  5:  4](RO) Deactivate message ack count. */
4799         uint64_t act_ack_def_cnt       : 2;  /**< [  3:  2](RO) Activate message ack count. */
4800         uint64_t clr_ack_def_cnt       : 2;  /**< [  1:  0](RO) Clear message ack count. */
4801 #else /* Word 0 - Little Endian */
4802         uint64_t clr_ack_def_cnt       : 2;  /**< [  1:  0](RO) Clear message ack count. */
4803         uint64_t act_ack_def_cnt       : 2;  /**< [  3:  2](RO) Activate message ack count. */
4804         uint64_t dct_ack_def_cnt       : 2;  /**< [  5:  4](RO) Deactivate message ack count. */
4805         uint64_t sgi_ack_def_cnt       : 2;  /**< [  7:  6](RO) SGI generate message ack count. */
4806         uint64_t uwr_ack_def_cnt       : 2;  /**< [  9:  8](RO) Upstream write message ack count. */
4807         uint64_t rdb_dsc_set_arry_0    : 36; /**< [ 45: 10](RO) Rdb_dsc_set_arry[0]. */
4808         uint64_t rdb_dsc_set_arry_1    : 18; /**< [ 63: 46](RO) Bits 17..0 of rdb_dsc_set_arry[1]. */
4809 #endif /* Word 0 - End */
4810     } s;
4811     /* struct bdk_ap_cvm_debug8_el3_s cn; */
4812 };
4813 typedef union bdk_ap_cvm_debug8_el3 bdk_ap_cvm_debug8_el3_t;
4814 
4815 #define BDK_AP_CVM_DEBUG8_EL3 BDK_AP_CVM_DEBUG8_EL3_FUNC()
4816 static inline uint64_t BDK_AP_CVM_DEBUG8_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DEBUG8_EL3_FUNC(void)4817 static inline uint64_t BDK_AP_CVM_DEBUG8_EL3_FUNC(void)
4818 {
4819     return 0x3060b070000ll;
4820 }
4821 
4822 #define typedef_BDK_AP_CVM_DEBUG8_EL3 bdk_ap_cvm_debug8_el3_t
4823 #define bustype_BDK_AP_CVM_DEBUG8_EL3 BDK_CSR_TYPE_SYSREG
4824 #define basename_BDK_AP_CVM_DEBUG8_EL3 "AP_CVM_DEBUG8_EL3"
4825 #define busnum_BDK_AP_CVM_DEBUG8_EL3 0
4826 #define arguments_BDK_AP_CVM_DEBUG8_EL3 -1,-1,-1,-1
4827 
4828 /**
4829  * Register (SYSREG) ap_cvm_debug9_el3
4830  *
4831  * INTERNAL: AP Cavium Debug 9 Register
4832  *
4833  * This register is for diagnostic use only.
4834  */
4835 union bdk_ap_cvm_debug9_el3
4836 {
4837     uint64_t u;
4838     struct bdk_ap_cvm_debug9_el3_s
4839     {
4840 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4841         uint64_t reserved_48_63        : 16;
4842         uint64_t dsc_fsm_enc_state_1   : 4;  /**< [ 47: 44](RO) DSC FSM ENC state\<1\>. */
4843         uint64_t dsc_fsm_enc_state_0   : 4;  /**< [ 43: 40](RO) DSC FSM ENC state\<0\>. */
4844         uint64_t clr_fsm_enc_state     : 3;  /**< [ 39: 37](RO) CLR FSM ENC state. */
4845         uint64_t qsc_fsm_enc_state     : 3;  /**< [ 36: 34](RO) QSC FSM ENC state. */
4846         uint64_t dsc_fifo              : 4;  /**< [ 33: 30](RO) DSC FIFO. */
4847         uint64_t ppi_fifo              : 4;  /**< [ 29: 26](RO) PPI FIFO. */
4848         uint64_t cdc_fifo              : 4;  /**< [ 25: 22](RO) CDC FIFO. */
4849         uint64_t eac_fifo              : 4;  /**< [ 21: 18](RO) EAC FIFO. */
4850         uint64_t rdb_dsc_set_arry_1    : 18; /**< [ 17:  0](RO) rdb_dsc_set_arry[1]\<35:18\>. */
4851 #else /* Word 0 - Little Endian */
4852         uint64_t rdb_dsc_set_arry_1    : 18; /**< [ 17:  0](RO) rdb_dsc_set_arry[1]\<35:18\>. */
4853         uint64_t eac_fifo              : 4;  /**< [ 21: 18](RO) EAC FIFO. */
4854         uint64_t cdc_fifo              : 4;  /**< [ 25: 22](RO) CDC FIFO. */
4855         uint64_t ppi_fifo              : 4;  /**< [ 29: 26](RO) PPI FIFO. */
4856         uint64_t dsc_fifo              : 4;  /**< [ 33: 30](RO) DSC FIFO. */
4857         uint64_t qsc_fsm_enc_state     : 3;  /**< [ 36: 34](RO) QSC FSM ENC state. */
4858         uint64_t clr_fsm_enc_state     : 3;  /**< [ 39: 37](RO) CLR FSM ENC state. */
4859         uint64_t dsc_fsm_enc_state_0   : 4;  /**< [ 43: 40](RO) DSC FSM ENC state\<0\>. */
4860         uint64_t dsc_fsm_enc_state_1   : 4;  /**< [ 47: 44](RO) DSC FSM ENC state\<1\>. */
4861         uint64_t reserved_48_63        : 16;
4862 #endif /* Word 0 - End */
4863     } s;
4864     /* struct bdk_ap_cvm_debug9_el3_s cn; */
4865 };
4866 typedef union bdk_ap_cvm_debug9_el3 bdk_ap_cvm_debug9_el3_t;
4867 
4868 #define BDK_AP_CVM_DEBUG9_EL3 BDK_AP_CVM_DEBUG9_EL3_FUNC()
4869 static inline uint64_t BDK_AP_CVM_DEBUG9_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DEBUG9_EL3_FUNC(void)4870 static inline uint64_t BDK_AP_CVM_DEBUG9_EL3_FUNC(void)
4871 {
4872     return 0x3060b070100ll;
4873 }
4874 
4875 #define typedef_BDK_AP_CVM_DEBUG9_EL3 bdk_ap_cvm_debug9_el3_t
4876 #define bustype_BDK_AP_CVM_DEBUG9_EL3 BDK_CSR_TYPE_SYSREG
4877 #define basename_BDK_AP_CVM_DEBUG9_EL3 "AP_CVM_DEBUG9_EL3"
4878 #define busnum_BDK_AP_CVM_DEBUG9_EL3 0
4879 #define arguments_BDK_AP_CVM_DEBUG9_EL3 -1,-1,-1,-1
4880 
4881 /**
4882  * Register (SYSREG) ap_cvm_dll_observabilty_el3
4883  *
4884  * INTERNAL: AP Cavium DLL Observability Register
4885  */
4886 union bdk_ap_cvm_dll_observabilty_el3
4887 {
4888     uint64_t u;
4889     struct bdk_ap_cvm_dll_observabilty_el3_s
4890     {
4891 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4892         uint64_t reserved_60_63        : 4;
4893         uint64_t max_seen              : 12; /**< [ 59: 48](RO) Maximum setting seen. */
4894         uint64_t min_seen              : 12; /**< [ 47: 36](RO) Minimum setting seen. */
4895         uint64_t rclk_dll_lock         : 1;  /**< [ 35: 35](RO) rclk_dll__lock. */
4896         uint64_t dll_state             : 3;  /**< [ 34: 32](RO) dll_state\<2:0\>. */
4897         uint64_t dll_setting           : 12; /**< [ 31: 20](RO) dll_setting\<11:0\>. */
4898         uint64_t raw_dly_elem_enable   : 16; /**< [ 19:  4](RO) raw_dly_elem_enable\<15:0\>. */
4899         uint64_t clk_invert            : 1;  /**< [  3:  3](RO) clk_invert. */
4900         uint64_t pd_pos_rclk_refclk    : 1;  /**< [  2:  2](RO) pd_pos_rclk_refclk. */
4901         uint64_t pdl_rclk_refclk       : 1;  /**< [  1:  1](RO) pdl_rclk_refclk. */
4902         uint64_t pdr_rclk_refclk       : 1;  /**< [  0:  0](RO) pdr_rclk_refclk. */
4903 #else /* Word 0 - Little Endian */
4904         uint64_t pdr_rclk_refclk       : 1;  /**< [  0:  0](RO) pdr_rclk_refclk. */
4905         uint64_t pdl_rclk_refclk       : 1;  /**< [  1:  1](RO) pdl_rclk_refclk. */
4906         uint64_t pd_pos_rclk_refclk    : 1;  /**< [  2:  2](RO) pd_pos_rclk_refclk. */
4907         uint64_t clk_invert            : 1;  /**< [  3:  3](RO) clk_invert. */
4908         uint64_t raw_dly_elem_enable   : 16; /**< [ 19:  4](RO) raw_dly_elem_enable\<15:0\>. */
4909         uint64_t dll_setting           : 12; /**< [ 31: 20](RO) dll_setting\<11:0\>. */
4910         uint64_t dll_state             : 3;  /**< [ 34: 32](RO) dll_state\<2:0\>. */
4911         uint64_t rclk_dll_lock         : 1;  /**< [ 35: 35](RO) rclk_dll__lock. */
4912         uint64_t min_seen              : 12; /**< [ 47: 36](RO) Minimum setting seen. */
4913         uint64_t max_seen              : 12; /**< [ 59: 48](RO) Maximum setting seen. */
4914         uint64_t reserved_60_63        : 4;
4915 #endif /* Word 0 - End */
4916     } s;
4917     /* struct bdk_ap_cvm_dll_observabilty_el3_s cn; */
4918 };
4919 typedef union bdk_ap_cvm_dll_observabilty_el3 bdk_ap_cvm_dll_observabilty_el3_t;
4920 
4921 #define BDK_AP_CVM_DLL_OBSERVABILTY_EL3 BDK_AP_CVM_DLL_OBSERVABILTY_EL3_FUNC()
4922 static inline uint64_t BDK_AP_CVM_DLL_OBSERVABILTY_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_DLL_OBSERVABILTY_EL3_FUNC(void)4923 static inline uint64_t BDK_AP_CVM_DLL_OBSERVABILTY_EL3_FUNC(void)
4924 {
4925     return 0x3060b050100ll;
4926 }
4927 
4928 #define typedef_BDK_AP_CVM_DLL_OBSERVABILTY_EL3 bdk_ap_cvm_dll_observabilty_el3_t
4929 #define bustype_BDK_AP_CVM_DLL_OBSERVABILTY_EL3 BDK_CSR_TYPE_SYSREG
4930 #define basename_BDK_AP_CVM_DLL_OBSERVABILTY_EL3 "AP_CVM_DLL_OBSERVABILTY_EL3"
4931 #define busnum_BDK_AP_CVM_DLL_OBSERVABILTY_EL3 0
4932 #define arguments_BDK_AP_CVM_DLL_OBSERVABILTY_EL3 -1,-1,-1,-1
4933 
4934 /**
4935  * Register (SYSREG) ap_cvm_erricache_el1
4936  *
4937  * AP Cavium Error Icache Register
4938  */
4939 union bdk_ap_cvm_erricache_el1
4940 {
4941     uint64_t u;
4942     struct bdk_ap_cvm_erricache_el1_s
4943     {
4944 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4945         uint64_t reserved_17_63        : 47;
4946         uint64_t set                   : 6;  /**< [ 16: 11](R/W) Set which had the parity error. */
4947         uint64_t va                    : 8;  /**< [ 10:  3](R/W) VA\<10:3\> of address which had the parity error. */
4948         uint64_t reserved_1_2          : 2;
4949         uint64_t icache_data_error     : 1;  /**< [  0:  0](R/W) Icache corrected a data error. */
4950 #else /* Word 0 - Little Endian */
4951         uint64_t icache_data_error     : 1;  /**< [  0:  0](R/W) Icache corrected a data error. */
4952         uint64_t reserved_1_2          : 2;
4953         uint64_t va                    : 8;  /**< [ 10:  3](R/W) VA\<10:3\> of address which had the parity error. */
4954         uint64_t set                   : 6;  /**< [ 16: 11](R/W) Set which had the parity error. */
4955         uint64_t reserved_17_63        : 47;
4956 #endif /* Word 0 - End */
4957     } s;
4958     /* struct bdk_ap_cvm_erricache_el1_s cn; */
4959 };
4960 typedef union bdk_ap_cvm_erricache_el1 bdk_ap_cvm_erricache_el1_t;
4961 
4962 #define BDK_AP_CVM_ERRICACHE_EL1 BDK_AP_CVM_ERRICACHE_EL1_FUNC()
4963 static inline uint64_t BDK_AP_CVM_ERRICACHE_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_ERRICACHE_EL1_FUNC(void)4964 static inline uint64_t BDK_AP_CVM_ERRICACHE_EL1_FUNC(void)
4965 {
4966     return 0x3000b020000ll;
4967 }
4968 
4969 #define typedef_BDK_AP_CVM_ERRICACHE_EL1 bdk_ap_cvm_erricache_el1_t
4970 #define bustype_BDK_AP_CVM_ERRICACHE_EL1 BDK_CSR_TYPE_SYSREG
4971 #define basename_BDK_AP_CVM_ERRICACHE_EL1 "AP_CVM_ERRICACHE_EL1"
4972 #define busnum_BDK_AP_CVM_ERRICACHE_EL1 0
4973 #define arguments_BDK_AP_CVM_ERRICACHE_EL1 -1,-1,-1,-1
4974 
4975 /**
4976  * Register (SYSREG) ap_cvm_errmem_el1
4977  *
4978  * AP Cavium Error Memory Register
4979  */
4980 union bdk_ap_cvm_errmem_el1
4981 {
4982     uint64_t u;
4983     struct bdk_ap_cvm_errmem_el1_s
4984     {
4985 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4986         uint64_t reserved_49_63        : 15;
4987         uint64_t wbfsbeerr             : 1;  /**< [ 48: 48](RO) Reserved. */
4988         uint64_t gsynctonosw           : 1;  /**< [ 47: 47](R/W) Global sync timeout, no report to software. */
4989         uint64_t gsynctodis            : 1;  /**< [ 46: 46](R/W) Global sync timeout disable. */
4990         uint64_t gsyncto               : 1;  /**< [ 45: 45](R/W/H) Global sync timeout. */
4991         uint64_t wcumultdis            : 1;  /**< [ 44: 44](R/W) WCU multiple match error disable. */
4992         uint64_t wcumult               : 1;  /**< [ 43: 43](R/W/H) WCU multiple match error. */
4993         uint64_t mtlbmultdis           : 1;  /**< [ 42: 42](R/W) MTLB multiple match error disable. */
4994         uint64_t mtlbmult              : 1;  /**< [ 41: 41](R/W/H) MTLB multiple match error. */
4995         uint64_t reserved_40           : 1;
4996         uint64_t barriertonosw         : 1;  /**< [ 39: 39](R/W) Barrier timeout, no report to software. */
4997         uint64_t barriertodis          : 1;  /**< [ 38: 38](R/W) Barrier timeout disable. */
4998         uint64_t barrierto             : 1;  /**< [ 37: 37](R/W/H) Barrier timeout. */
4999         uint64_t reserved_36           : 1;
5000         uint64_t rbftonosw             : 1;  /**< [ 35: 35](R/W) Read buffer timeout, no report to software. */
5001         uint64_t rbftodis              : 1;  /**< [ 34: 34](R/W) Read buffer timeout disable. */
5002         uint64_t rbfto                 : 1;  /**< [ 33: 33](R/W/H) Read buffer timeout. */
5003         uint64_t wcuperrforce          : 1;  /**< [ 32: 32](R/W/H) WCU parity error force. Bit is cleared when error is forced on next write operation. */
5004         uint64_t wcuperrnosw           : 1;  /**< [ 31: 31](R/W) WCU parity error, no report to software. */
5005         uint64_t wcuperrdis            : 1;  /**< [ 30: 30](R/W) WCU parity error disable. */
5006         uint64_t wcuperr               : 1;  /**< [ 29: 29](R/W/H) WCU corrected parity error. */
5007         uint64_t wbfdbeforce           : 1;  /**< [ 28: 28](R/W/H) Write-buffer DBE force. Bit is cleared when error is forced on next write operation. */
5008         uint64_t wbfsbeforce           : 1;  /**< [ 27: 27](R/W/H) Write-buffer SBE force. Bit is cleared when error is forced on next write operation. */
5009         uint64_t wbfperrnosw           : 1;  /**< [ 26: 26](R/W) Write-buffer single-bit error, no report to software. */
5010         uint64_t wbfperrdis            : 1;  /**< [ 25: 25](R/W) Write-buffer double-bit error disable. */
5011         uint64_t wbfperr               : 1;  /**< [ 24: 24](R/W/H) Write-buffer double-bit error. */
5012         uint64_t mafperrforce          : 1;  /**< [ 23: 23](R/W/H) MAF parity error force. Bit is cleared when error is forced on next write operation. */
5013         uint64_t mafperrnosw           : 1;  /**< [ 22: 22](R/W) MAF parity error, no report to software. */
5014         uint64_t mafperrdis            : 1;  /**< [ 21: 21](R/W) MAF parity error disable. */
5015         uint64_t mafperr               : 1;  /**< [ 20: 20](R/W/H) MAF parity error. */
5016         uint64_t utlbperrforce         : 1;  /**< [ 19: 19](R/W/H) uTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5017         uint64_t utlbperrnosw          : 1;  /**< [ 18: 18](R/W) uTLB correctable parity error, no report to software. */
5018         uint64_t utlbperrdis           : 1;  /**< [ 17: 17](R/W) uTLB correctable parity error disable. */
5019         uint64_t utlbperr              : 1;  /**< [ 16: 16](R/W/H) uTLB corrected a parity error. */
5020         uint64_t mtlbperrforce         : 1;  /**< [ 15: 15](R/W/H) MTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5021         uint64_t mtlbperrnosw          : 1;  /**< [ 14: 14](R/W) MTLB correctable parity error, no report to software. */
5022         uint64_t mtlbperrdis           : 1;  /**< [ 13: 13](R/W) MTLB correctable parity error disable. */
5023         uint64_t mtlbperr              : 1;  /**< [ 12: 12](R/W/H) MTLB corrected a parity error. */
5024         uint64_t l1dperrforce          : 1;  /**< [ 11: 11](R/W/H) Dcache correctable parity error force. Bit is cleared when error is forced on next write operation. */
5025         uint64_t l1dperrnosw           : 1;  /**< [ 10: 10](R/W) Dcache correctable parity error, no report to software. */
5026         uint64_t l1dperrdis            : 1;  /**< [  9:  9](R/W) Dcache correctable parity error disable. */
5027         uint64_t l1dperr               : 1;  /**< [  8:  8](R/W/H) Dcache corrected a parity error. */
5028         uint64_t l1dway                : 5;  /**< [  7:  3](R/W/H) Indicates Dcache way. */
5029         uint64_t l1dset                : 3;  /**< [  2:  0](R/W/H) Indicates Dcache set. */
5030 #else /* Word 0 - Little Endian */
5031         uint64_t l1dset                : 3;  /**< [  2:  0](R/W/H) Indicates Dcache set. */
5032         uint64_t l1dway                : 5;  /**< [  7:  3](R/W/H) Indicates Dcache way. */
5033         uint64_t l1dperr               : 1;  /**< [  8:  8](R/W/H) Dcache corrected a parity error. */
5034         uint64_t l1dperrdis            : 1;  /**< [  9:  9](R/W) Dcache correctable parity error disable. */
5035         uint64_t l1dperrnosw           : 1;  /**< [ 10: 10](R/W) Dcache correctable parity error, no report to software. */
5036         uint64_t l1dperrforce          : 1;  /**< [ 11: 11](R/W/H) Dcache correctable parity error force. Bit is cleared when error is forced on next write operation. */
5037         uint64_t mtlbperr              : 1;  /**< [ 12: 12](R/W/H) MTLB corrected a parity error. */
5038         uint64_t mtlbperrdis           : 1;  /**< [ 13: 13](R/W) MTLB correctable parity error disable. */
5039         uint64_t mtlbperrnosw          : 1;  /**< [ 14: 14](R/W) MTLB correctable parity error, no report to software. */
5040         uint64_t mtlbperrforce         : 1;  /**< [ 15: 15](R/W/H) MTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5041         uint64_t utlbperr              : 1;  /**< [ 16: 16](R/W/H) uTLB corrected a parity error. */
5042         uint64_t utlbperrdis           : 1;  /**< [ 17: 17](R/W) uTLB correctable parity error disable. */
5043         uint64_t utlbperrnosw          : 1;  /**< [ 18: 18](R/W) uTLB correctable parity error, no report to software. */
5044         uint64_t utlbperrforce         : 1;  /**< [ 19: 19](R/W/H) uTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5045         uint64_t mafperr               : 1;  /**< [ 20: 20](R/W/H) MAF parity error. */
5046         uint64_t mafperrdis            : 1;  /**< [ 21: 21](R/W) MAF parity error disable. */
5047         uint64_t mafperrnosw           : 1;  /**< [ 22: 22](R/W) MAF parity error, no report to software. */
5048         uint64_t mafperrforce          : 1;  /**< [ 23: 23](R/W/H) MAF parity error force. Bit is cleared when error is forced on next write operation. */
5049         uint64_t wbfperr               : 1;  /**< [ 24: 24](R/W/H) Write-buffer double-bit error. */
5050         uint64_t wbfperrdis            : 1;  /**< [ 25: 25](R/W) Write-buffer double-bit error disable. */
5051         uint64_t wbfperrnosw           : 1;  /**< [ 26: 26](R/W) Write-buffer single-bit error, no report to software. */
5052         uint64_t wbfsbeforce           : 1;  /**< [ 27: 27](R/W/H) Write-buffer SBE force. Bit is cleared when error is forced on next write operation. */
5053         uint64_t wbfdbeforce           : 1;  /**< [ 28: 28](R/W/H) Write-buffer DBE force. Bit is cleared when error is forced on next write operation. */
5054         uint64_t wcuperr               : 1;  /**< [ 29: 29](R/W/H) WCU corrected parity error. */
5055         uint64_t wcuperrdis            : 1;  /**< [ 30: 30](R/W) WCU parity error disable. */
5056         uint64_t wcuperrnosw           : 1;  /**< [ 31: 31](R/W) WCU parity error, no report to software. */
5057         uint64_t wcuperrforce          : 1;  /**< [ 32: 32](R/W/H) WCU parity error force. Bit is cleared when error is forced on next write operation. */
5058         uint64_t rbfto                 : 1;  /**< [ 33: 33](R/W/H) Read buffer timeout. */
5059         uint64_t rbftodis              : 1;  /**< [ 34: 34](R/W) Read buffer timeout disable. */
5060         uint64_t rbftonosw             : 1;  /**< [ 35: 35](R/W) Read buffer timeout, no report to software. */
5061         uint64_t reserved_36           : 1;
5062         uint64_t barrierto             : 1;  /**< [ 37: 37](R/W/H) Barrier timeout. */
5063         uint64_t barriertodis          : 1;  /**< [ 38: 38](R/W) Barrier timeout disable. */
5064         uint64_t barriertonosw         : 1;  /**< [ 39: 39](R/W) Barrier timeout, no report to software. */
5065         uint64_t reserved_40           : 1;
5066         uint64_t mtlbmult              : 1;  /**< [ 41: 41](R/W/H) MTLB multiple match error. */
5067         uint64_t mtlbmultdis           : 1;  /**< [ 42: 42](R/W) MTLB multiple match error disable. */
5068         uint64_t wcumult               : 1;  /**< [ 43: 43](R/W/H) WCU multiple match error. */
5069         uint64_t wcumultdis            : 1;  /**< [ 44: 44](R/W) WCU multiple match error disable. */
5070         uint64_t gsyncto               : 1;  /**< [ 45: 45](R/W/H) Global sync timeout. */
5071         uint64_t gsynctodis            : 1;  /**< [ 46: 46](R/W) Global sync timeout disable. */
5072         uint64_t gsynctonosw           : 1;  /**< [ 47: 47](R/W) Global sync timeout, no report to software. */
5073         uint64_t wbfsbeerr             : 1;  /**< [ 48: 48](RO) Reserved. */
5074         uint64_t reserved_49_63        : 15;
5075 #endif /* Word 0 - End */
5076     } s;
5077     struct bdk_ap_cvm_errmem_el1_cn88xxp1
5078     {
5079 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5080         uint64_t reserved_49_63        : 15;
5081         uint64_t wbfsbeerr             : 1;  /**< [ 48: 48](RO) Reserved. */
5082         uint64_t gsynctonosw           : 1;  /**< [ 47: 47](R/W) Global sync timeout, no report to software. */
5083         uint64_t gsynctodis            : 1;  /**< [ 46: 46](R/W) Global sync timeout disable. */
5084         uint64_t gsyncto               : 1;  /**< [ 45: 45](R/W/H) Global sync timeout. */
5085         uint64_t wcumultdis            : 1;  /**< [ 44: 44](R/W) WCU multiple match error disable. */
5086         uint64_t wcumult               : 1;  /**< [ 43: 43](R/W/H) WCU multiple match error. */
5087         uint64_t mtlbmultdis           : 1;  /**< [ 42: 42](R/W) MTLB multiple match error disable. */
5088         uint64_t mtlbmult              : 1;  /**< [ 41: 41](R/W/H) MTLB multiple match error. */
5089         uint64_t barriertoforce        : 1;  /**< [ 40: 40](R/W/H) Barrier timeout force. Bit is cleared when error is forced. */
5090         uint64_t barriertonosw         : 1;  /**< [ 39: 39](R/W) Barrier timeout, no report to software. */
5091         uint64_t barriertodis          : 1;  /**< [ 38: 38](R/W) Barrier timeout disable. */
5092         uint64_t barrierto             : 1;  /**< [ 37: 37](R/W/H) Barrier timeout. */
5093         uint64_t rbftoforce            : 1;  /**< [ 36: 36](R/W/H) Read buffer timeout force. Bit is cleared when error is forced. */
5094         uint64_t rbftonosw             : 1;  /**< [ 35: 35](R/W) Read buffer timeout, no report to software. */
5095         uint64_t rbftodis              : 1;  /**< [ 34: 34](R/W) Read buffer timeout disable. */
5096         uint64_t rbfto                 : 1;  /**< [ 33: 33](R/W/H) Read buffer timeout. */
5097         uint64_t wcuperrforce          : 1;  /**< [ 32: 32](R/W/H) WCU parity error force. Bit is cleared when error is forced on next write operation. */
5098         uint64_t wcuperrnosw           : 1;  /**< [ 31: 31](R/W) WCU parity error, no report to software. */
5099         uint64_t wcuperrdis            : 1;  /**< [ 30: 30](R/W) WCU parity error disable. */
5100         uint64_t wcuperr               : 1;  /**< [ 29: 29](R/W/H) WCU corrected parity error. */
5101         uint64_t wbfdbeforce           : 1;  /**< [ 28: 28](R/W/H) Write-buffer DBE force. Bit is cleared when error is forced on next write operation. */
5102         uint64_t wbfsbeforce           : 1;  /**< [ 27: 27](R/W/H) Write-buffer SBE force. Bit is cleared when error is forced on next write operation. */
5103         uint64_t wbfperrnosw           : 1;  /**< [ 26: 26](R/W) Write-buffer single-bit error, no report to software. */
5104         uint64_t wbfperrdis            : 1;  /**< [ 25: 25](R/W) Write-buffer double-bit error disable. */
5105         uint64_t wbfperr               : 1;  /**< [ 24: 24](R/W/H) Write-buffer double-bit error. */
5106         uint64_t mafperrforce          : 1;  /**< [ 23: 23](R/W/H) MAF parity error force. Bit is cleared when error is forced on next write operation. */
5107         uint64_t mafperrnosw           : 1;  /**< [ 22: 22](R/W) MAF parity error, no report to software. */
5108         uint64_t mafperrdis            : 1;  /**< [ 21: 21](R/W) MAF parity error disable. */
5109         uint64_t mafperr               : 1;  /**< [ 20: 20](R/W/H) MAF parity error. */
5110         uint64_t utlbperrforce         : 1;  /**< [ 19: 19](R/W/H) uTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5111         uint64_t utlbperrnosw          : 1;  /**< [ 18: 18](R/W) uTLB correctable parity error, no report to software. */
5112         uint64_t utlbperrdis           : 1;  /**< [ 17: 17](R/W) uTLB correctable parity error disable. */
5113         uint64_t utlbperr              : 1;  /**< [ 16: 16](R/W/H) uTLB corrected a parity error. */
5114         uint64_t mtlbperrforce         : 1;  /**< [ 15: 15](R/W/H) MTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5115         uint64_t mtlbperrnosw          : 1;  /**< [ 14: 14](R/W) MTLB correctable parity error, no report to software. */
5116         uint64_t mtlbperrdis           : 1;  /**< [ 13: 13](R/W) MTLB correctable parity error disable. */
5117         uint64_t mtlbperr              : 1;  /**< [ 12: 12](R/W/H) MTLB corrected a parity error. */
5118         uint64_t l1dperrforce          : 1;  /**< [ 11: 11](R/W/H) Dcache correctable parity error force. Bit is cleared when error is forced on next write operation. */
5119         uint64_t l1dperrnosw           : 1;  /**< [ 10: 10](R/W) Dcache correctable parity error, no report to software. */
5120         uint64_t l1dperrdis            : 1;  /**< [  9:  9](R/W) Dcache correctable parity error disable. */
5121         uint64_t l1dperr               : 1;  /**< [  8:  8](R/W/H) Dcache corrected a parity error. */
5122         uint64_t l1dway                : 5;  /**< [  7:  3](R/W/H) Indicates Dcache way. */
5123         uint64_t l1dset                : 3;  /**< [  2:  0](R/W/H) Indicates Dcache set. */
5124 #else /* Word 0 - Little Endian */
5125         uint64_t l1dset                : 3;  /**< [  2:  0](R/W/H) Indicates Dcache set. */
5126         uint64_t l1dway                : 5;  /**< [  7:  3](R/W/H) Indicates Dcache way. */
5127         uint64_t l1dperr               : 1;  /**< [  8:  8](R/W/H) Dcache corrected a parity error. */
5128         uint64_t l1dperrdis            : 1;  /**< [  9:  9](R/W) Dcache correctable parity error disable. */
5129         uint64_t l1dperrnosw           : 1;  /**< [ 10: 10](R/W) Dcache correctable parity error, no report to software. */
5130         uint64_t l1dperrforce          : 1;  /**< [ 11: 11](R/W/H) Dcache correctable parity error force. Bit is cleared when error is forced on next write operation. */
5131         uint64_t mtlbperr              : 1;  /**< [ 12: 12](R/W/H) MTLB corrected a parity error. */
5132         uint64_t mtlbperrdis           : 1;  /**< [ 13: 13](R/W) MTLB correctable parity error disable. */
5133         uint64_t mtlbperrnosw          : 1;  /**< [ 14: 14](R/W) MTLB correctable parity error, no report to software. */
5134         uint64_t mtlbperrforce         : 1;  /**< [ 15: 15](R/W/H) MTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5135         uint64_t utlbperr              : 1;  /**< [ 16: 16](R/W/H) uTLB corrected a parity error. */
5136         uint64_t utlbperrdis           : 1;  /**< [ 17: 17](R/W) uTLB correctable parity error disable. */
5137         uint64_t utlbperrnosw          : 1;  /**< [ 18: 18](R/W) uTLB correctable parity error, no report to software. */
5138         uint64_t utlbperrforce         : 1;  /**< [ 19: 19](R/W/H) uTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5139         uint64_t mafperr               : 1;  /**< [ 20: 20](R/W/H) MAF parity error. */
5140         uint64_t mafperrdis            : 1;  /**< [ 21: 21](R/W) MAF parity error disable. */
5141         uint64_t mafperrnosw           : 1;  /**< [ 22: 22](R/W) MAF parity error, no report to software. */
5142         uint64_t mafperrforce          : 1;  /**< [ 23: 23](R/W/H) MAF parity error force. Bit is cleared when error is forced on next write operation. */
5143         uint64_t wbfperr               : 1;  /**< [ 24: 24](R/W/H) Write-buffer double-bit error. */
5144         uint64_t wbfperrdis            : 1;  /**< [ 25: 25](R/W) Write-buffer double-bit error disable. */
5145         uint64_t wbfperrnosw           : 1;  /**< [ 26: 26](R/W) Write-buffer single-bit error, no report to software. */
5146         uint64_t wbfsbeforce           : 1;  /**< [ 27: 27](R/W/H) Write-buffer SBE force. Bit is cleared when error is forced on next write operation. */
5147         uint64_t wbfdbeforce           : 1;  /**< [ 28: 28](R/W/H) Write-buffer DBE force. Bit is cleared when error is forced on next write operation. */
5148         uint64_t wcuperr               : 1;  /**< [ 29: 29](R/W/H) WCU corrected parity error. */
5149         uint64_t wcuperrdis            : 1;  /**< [ 30: 30](R/W) WCU parity error disable. */
5150         uint64_t wcuperrnosw           : 1;  /**< [ 31: 31](R/W) WCU parity error, no report to software. */
5151         uint64_t wcuperrforce          : 1;  /**< [ 32: 32](R/W/H) WCU parity error force. Bit is cleared when error is forced on next write operation. */
5152         uint64_t rbfto                 : 1;  /**< [ 33: 33](R/W/H) Read buffer timeout. */
5153         uint64_t rbftodis              : 1;  /**< [ 34: 34](R/W) Read buffer timeout disable. */
5154         uint64_t rbftonosw             : 1;  /**< [ 35: 35](R/W) Read buffer timeout, no report to software. */
5155         uint64_t rbftoforce            : 1;  /**< [ 36: 36](R/W/H) Read buffer timeout force. Bit is cleared when error is forced. */
5156         uint64_t barrierto             : 1;  /**< [ 37: 37](R/W/H) Barrier timeout. */
5157         uint64_t barriertodis          : 1;  /**< [ 38: 38](R/W) Barrier timeout disable. */
5158         uint64_t barriertonosw         : 1;  /**< [ 39: 39](R/W) Barrier timeout, no report to software. */
5159         uint64_t barriertoforce        : 1;  /**< [ 40: 40](R/W/H) Barrier timeout force. Bit is cleared when error is forced. */
5160         uint64_t mtlbmult              : 1;  /**< [ 41: 41](R/W/H) MTLB multiple match error. */
5161         uint64_t mtlbmultdis           : 1;  /**< [ 42: 42](R/W) MTLB multiple match error disable. */
5162         uint64_t wcumult               : 1;  /**< [ 43: 43](R/W/H) WCU multiple match error. */
5163         uint64_t wcumultdis            : 1;  /**< [ 44: 44](R/W) WCU multiple match error disable. */
5164         uint64_t gsyncto               : 1;  /**< [ 45: 45](R/W/H) Global sync timeout. */
5165         uint64_t gsynctodis            : 1;  /**< [ 46: 46](R/W) Global sync timeout disable. */
5166         uint64_t gsynctonosw           : 1;  /**< [ 47: 47](R/W) Global sync timeout, no report to software. */
5167         uint64_t wbfsbeerr             : 1;  /**< [ 48: 48](RO) Reserved. */
5168         uint64_t reserved_49_63        : 15;
5169 #endif /* Word 0 - End */
5170     } cn88xxp1;
5171     struct bdk_ap_cvm_errmem_el1_cn9
5172     {
5173 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5174         uint64_t reserved_49_63        : 15;
5175         uint64_t reserved_0_48         : 49;
5176 #else /* Word 0 - Little Endian */
5177         uint64_t reserved_0_48         : 49;
5178         uint64_t reserved_49_63        : 15;
5179 #endif /* Word 0 - End */
5180     } cn9;
5181     struct bdk_ap_cvm_errmem_el1_cn81xx
5182     {
5183 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5184         uint64_t reserved_49_63        : 15;
5185         uint64_t wbfsbeerr             : 1;  /**< [ 48: 48](RO) Reserved. */
5186         uint64_t gsynctonosw           : 1;  /**< [ 47: 47](R/W) Global sync timeout, no report to software. */
5187         uint64_t gsynctodis            : 1;  /**< [ 46: 46](R/W) Global sync timeout disable. */
5188         uint64_t gsyncto               : 1;  /**< [ 45: 45](R/W/H) Global sync timeout. */
5189         uint64_t wcumultdis            : 1;  /**< [ 44: 44](R/W) WCU multiple match error disable. */
5190         uint64_t wcumult               : 1;  /**< [ 43: 43](R/W/H) WCU multiple match error. */
5191         uint64_t mtlbmultdis           : 1;  /**< [ 42: 42](R/W) MTLB multiple match error disable. */
5192         uint64_t mtlbmult              : 1;  /**< [ 41: 41](R/W/H) MTLB multiple match error. */
5193         uint64_t spare40               : 1;  /**< [ 40: 40](R/W/H) Reserved. */
5194         uint64_t barriertonosw         : 1;  /**< [ 39: 39](R/W) Barrier timeout, no report to software. */
5195         uint64_t barriertodis          : 1;  /**< [ 38: 38](R/W) Barrier timeout disable. */
5196         uint64_t barrierto             : 1;  /**< [ 37: 37](R/W/H) Barrier timeout. */
5197         uint64_t spare36               : 1;  /**< [ 36: 36](R/W/H) Reserved. */
5198         uint64_t rbftonosw             : 1;  /**< [ 35: 35](R/W) Read buffer timeout, no report to software. */
5199         uint64_t rbftodis              : 1;  /**< [ 34: 34](R/W) Read buffer timeout disable. */
5200         uint64_t rbfto                 : 1;  /**< [ 33: 33](R/W/H) Read buffer timeout. */
5201         uint64_t wcuperrforce          : 1;  /**< [ 32: 32](R/W/H) WCU parity error force. Bit is cleared when error is forced on next write operation. */
5202         uint64_t wcuperrnosw           : 1;  /**< [ 31: 31](R/W) WCU parity error, no report to software. */
5203         uint64_t wcuperrdis            : 1;  /**< [ 30: 30](R/W) WCU parity error disable. */
5204         uint64_t wcuperr               : 1;  /**< [ 29: 29](R/W/H) WCU corrected parity error. */
5205         uint64_t wbfdbeforce           : 1;  /**< [ 28: 28](R/W/H) Write-buffer DBE force. Bit is cleared when error is forced on next write operation. */
5206         uint64_t wbfsbeforce           : 1;  /**< [ 27: 27](R/W/H) Write-buffer SBE force. Bit is cleared when error is forced on next write operation. */
5207         uint64_t wbfperrnosw           : 1;  /**< [ 26: 26](R/W) Write-buffer single-bit error, no report to software. */
5208         uint64_t wbfperrdis            : 1;  /**< [ 25: 25](R/W) Write-buffer double-bit error disable. */
5209         uint64_t wbfperr               : 1;  /**< [ 24: 24](R/W/H) Write-buffer double-bit error. */
5210         uint64_t mafperrforce          : 1;  /**< [ 23: 23](R/W/H) MAF parity error force. Bit is cleared when error is forced on next write operation. */
5211         uint64_t mafperrnosw           : 1;  /**< [ 22: 22](R/W) MAF parity error, no report to software. */
5212         uint64_t mafperrdis            : 1;  /**< [ 21: 21](R/W) MAF parity error disable. */
5213         uint64_t mafperr               : 1;  /**< [ 20: 20](R/W/H) MAF parity error. */
5214         uint64_t utlbperrforce         : 1;  /**< [ 19: 19](R/W/H) uTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5215         uint64_t utlbperrnosw          : 1;  /**< [ 18: 18](R/W) uTLB correctable parity error, no report to software. */
5216         uint64_t utlbperrdis           : 1;  /**< [ 17: 17](R/W) uTLB correctable parity error disable. */
5217         uint64_t utlbperr              : 1;  /**< [ 16: 16](R/W/H) uTLB corrected a parity error. */
5218         uint64_t mtlbperrforce         : 1;  /**< [ 15: 15](R/W/H) MTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5219         uint64_t mtlbperrnosw          : 1;  /**< [ 14: 14](R/W) MTLB correctable parity error, no report to software. */
5220         uint64_t mtlbperrdis           : 1;  /**< [ 13: 13](R/W) MTLB correctable parity error disable. */
5221         uint64_t mtlbperr              : 1;  /**< [ 12: 12](R/W/H) MTLB corrected a parity error. */
5222         uint64_t l1dperrforce          : 1;  /**< [ 11: 11](R/W/H) Dcache correctable parity error force. Bit is cleared when error is forced on next write operation. */
5223         uint64_t l1dperrnosw           : 1;  /**< [ 10: 10](R/W) Dcache correctable parity error, no report to software. */
5224         uint64_t l1dperrdis            : 1;  /**< [  9:  9](R/W) Dcache correctable parity error disable. */
5225         uint64_t l1dperr               : 1;  /**< [  8:  8](R/W/H) Dcache corrected a parity error. */
5226         uint64_t l1dway                : 5;  /**< [  7:  3](R/W/H) Indicates Dcache way. */
5227         uint64_t l1dset                : 3;  /**< [  2:  0](R/W/H) Indicates Dcache set. */
5228 #else /* Word 0 - Little Endian */
5229         uint64_t l1dset                : 3;  /**< [  2:  0](R/W/H) Indicates Dcache set. */
5230         uint64_t l1dway                : 5;  /**< [  7:  3](R/W/H) Indicates Dcache way. */
5231         uint64_t l1dperr               : 1;  /**< [  8:  8](R/W/H) Dcache corrected a parity error. */
5232         uint64_t l1dperrdis            : 1;  /**< [  9:  9](R/W) Dcache correctable parity error disable. */
5233         uint64_t l1dperrnosw           : 1;  /**< [ 10: 10](R/W) Dcache correctable parity error, no report to software. */
5234         uint64_t l1dperrforce          : 1;  /**< [ 11: 11](R/W/H) Dcache correctable parity error force. Bit is cleared when error is forced on next write operation. */
5235         uint64_t mtlbperr              : 1;  /**< [ 12: 12](R/W/H) MTLB corrected a parity error. */
5236         uint64_t mtlbperrdis           : 1;  /**< [ 13: 13](R/W) MTLB correctable parity error disable. */
5237         uint64_t mtlbperrnosw          : 1;  /**< [ 14: 14](R/W) MTLB correctable parity error, no report to software. */
5238         uint64_t mtlbperrforce         : 1;  /**< [ 15: 15](R/W/H) MTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5239         uint64_t utlbperr              : 1;  /**< [ 16: 16](R/W/H) uTLB corrected a parity error. */
5240         uint64_t utlbperrdis           : 1;  /**< [ 17: 17](R/W) uTLB correctable parity error disable. */
5241         uint64_t utlbperrnosw          : 1;  /**< [ 18: 18](R/W) uTLB correctable parity error, no report to software. */
5242         uint64_t utlbperrforce         : 1;  /**< [ 19: 19](R/W/H) uTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5243         uint64_t mafperr               : 1;  /**< [ 20: 20](R/W/H) MAF parity error. */
5244         uint64_t mafperrdis            : 1;  /**< [ 21: 21](R/W) MAF parity error disable. */
5245         uint64_t mafperrnosw           : 1;  /**< [ 22: 22](R/W) MAF parity error, no report to software. */
5246         uint64_t mafperrforce          : 1;  /**< [ 23: 23](R/W/H) MAF parity error force. Bit is cleared when error is forced on next write operation. */
5247         uint64_t wbfperr               : 1;  /**< [ 24: 24](R/W/H) Write-buffer double-bit error. */
5248         uint64_t wbfperrdis            : 1;  /**< [ 25: 25](R/W) Write-buffer double-bit error disable. */
5249         uint64_t wbfperrnosw           : 1;  /**< [ 26: 26](R/W) Write-buffer single-bit error, no report to software. */
5250         uint64_t wbfsbeforce           : 1;  /**< [ 27: 27](R/W/H) Write-buffer SBE force. Bit is cleared when error is forced on next write operation. */
5251         uint64_t wbfdbeforce           : 1;  /**< [ 28: 28](R/W/H) Write-buffer DBE force. Bit is cleared when error is forced on next write operation. */
5252         uint64_t wcuperr               : 1;  /**< [ 29: 29](R/W/H) WCU corrected parity error. */
5253         uint64_t wcuperrdis            : 1;  /**< [ 30: 30](R/W) WCU parity error disable. */
5254         uint64_t wcuperrnosw           : 1;  /**< [ 31: 31](R/W) WCU parity error, no report to software. */
5255         uint64_t wcuperrforce          : 1;  /**< [ 32: 32](R/W/H) WCU parity error force. Bit is cleared when error is forced on next write operation. */
5256         uint64_t rbfto                 : 1;  /**< [ 33: 33](R/W/H) Read buffer timeout. */
5257         uint64_t rbftodis              : 1;  /**< [ 34: 34](R/W) Read buffer timeout disable. */
5258         uint64_t rbftonosw             : 1;  /**< [ 35: 35](R/W) Read buffer timeout, no report to software. */
5259         uint64_t spare36               : 1;  /**< [ 36: 36](R/W/H) Reserved. */
5260         uint64_t barrierto             : 1;  /**< [ 37: 37](R/W/H) Barrier timeout. */
5261         uint64_t barriertodis          : 1;  /**< [ 38: 38](R/W) Barrier timeout disable. */
5262         uint64_t barriertonosw         : 1;  /**< [ 39: 39](R/W) Barrier timeout, no report to software. */
5263         uint64_t spare40               : 1;  /**< [ 40: 40](R/W/H) Reserved. */
5264         uint64_t mtlbmult              : 1;  /**< [ 41: 41](R/W/H) MTLB multiple match error. */
5265         uint64_t mtlbmultdis           : 1;  /**< [ 42: 42](R/W) MTLB multiple match error disable. */
5266         uint64_t wcumult               : 1;  /**< [ 43: 43](R/W/H) WCU multiple match error. */
5267         uint64_t wcumultdis            : 1;  /**< [ 44: 44](R/W) WCU multiple match error disable. */
5268         uint64_t gsyncto               : 1;  /**< [ 45: 45](R/W/H) Global sync timeout. */
5269         uint64_t gsynctodis            : 1;  /**< [ 46: 46](R/W) Global sync timeout disable. */
5270         uint64_t gsynctonosw           : 1;  /**< [ 47: 47](R/W) Global sync timeout, no report to software. */
5271         uint64_t wbfsbeerr             : 1;  /**< [ 48: 48](RO) Reserved. */
5272         uint64_t reserved_49_63        : 15;
5273 #endif /* Word 0 - End */
5274     } cn81xx;
5275     struct bdk_ap_cvm_errmem_el1_cn83xx
5276     {
5277 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5278         uint64_t reserved_49_63        : 15;
5279         uint64_t wbfsbeerr             : 1;  /**< [ 48: 48](R/W/H) Write-buffer single-bit error. */
5280         uint64_t gsynctonosw           : 1;  /**< [ 47: 47](R/W) Global sync timeout, no report to software. */
5281         uint64_t gsynctodis            : 1;  /**< [ 46: 46](R/W) Global sync timeout disable. */
5282         uint64_t gsyncto               : 1;  /**< [ 45: 45](R/W/H) Global sync timeout. */
5283         uint64_t wcumultdis            : 1;  /**< [ 44: 44](R/W) WCU multiple match error disable. */
5284         uint64_t wcumult               : 1;  /**< [ 43: 43](R/W/H) WCU multiple match error. */
5285         uint64_t mtlbmultdis           : 1;  /**< [ 42: 42](R/W) MTLB multiple match error disable. */
5286         uint64_t mtlbmult              : 1;  /**< [ 41: 41](R/W/H) MTLB multiple match error. */
5287         uint64_t spare40               : 1;  /**< [ 40: 40](R/W/H) Reserved. */
5288         uint64_t barriertonosw         : 1;  /**< [ 39: 39](R/W) Barrier timeout, no report to software. */
5289         uint64_t barriertodis          : 1;  /**< [ 38: 38](R/W) Barrier timeout disable. */
5290         uint64_t barrierto             : 1;  /**< [ 37: 37](R/W/H) Barrier timeout. */
5291         uint64_t spare36               : 1;  /**< [ 36: 36](R/W/H) Reserved. */
5292         uint64_t rbftonosw             : 1;  /**< [ 35: 35](R/W) Read buffer timeout, no report to software. */
5293         uint64_t rbftodis              : 1;  /**< [ 34: 34](R/W) Read buffer timeout disable. */
5294         uint64_t rbfto                 : 1;  /**< [ 33: 33](R/W/H) Read buffer timeout. */
5295         uint64_t wcuperrforce          : 1;  /**< [ 32: 32](R/W/H) WCU parity error force. Bit is cleared when error is forced on next write operation. */
5296         uint64_t wcuperrnosw           : 1;  /**< [ 31: 31](R/W) WCU parity error, no report to software. */
5297         uint64_t wcuperrdis            : 1;  /**< [ 30: 30](R/W) WCU parity error disable. */
5298         uint64_t wcuperr               : 1;  /**< [ 29: 29](R/W/H) WCU corrected parity error. */
5299         uint64_t wbfdbeforce           : 1;  /**< [ 28: 28](R/W/H) Write-buffer DBE force. Bit is cleared when error is forced on next write operation. */
5300         uint64_t wbfsbeforce           : 1;  /**< [ 27: 27](R/W/H) Write-buffer SBE force. Bit is cleared when error is forced on next write operation. */
5301         uint64_t wbfperrnosw           : 1;  /**< [ 26: 26](R/W) Write-buffer single-bit error, no report to software. */
5302         uint64_t wbfperrdis            : 1;  /**< [ 25: 25](R/W) Write-buffer double-bit error disable. */
5303         uint64_t wbfperr               : 1;  /**< [ 24: 24](R/W/H) Write-buffer double-bit error. */
5304         uint64_t mafperrforce          : 1;  /**< [ 23: 23](R/W/H) MAF parity error force. Bit is cleared when error is forced on next write operation. */
5305         uint64_t mafperrnosw           : 1;  /**< [ 22: 22](R/W) MAF parity error, no report to software. */
5306         uint64_t mafperrdis            : 1;  /**< [ 21: 21](R/W) MAF parity error disable. */
5307         uint64_t mafperr               : 1;  /**< [ 20: 20](R/W/H) MAF parity error. */
5308         uint64_t utlbperrforce         : 1;  /**< [ 19: 19](R/W/H) uTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5309         uint64_t utlbperrnosw          : 1;  /**< [ 18: 18](R/W) uTLB correctable parity error, no report to software. */
5310         uint64_t utlbperrdis           : 1;  /**< [ 17: 17](R/W) uTLB correctable parity error disable. */
5311         uint64_t utlbperr              : 1;  /**< [ 16: 16](R/W/H) uTLB corrected a parity error. */
5312         uint64_t mtlbperrforce         : 1;  /**< [ 15: 15](R/W/H) MTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5313         uint64_t mtlbperrnosw          : 1;  /**< [ 14: 14](R/W) MTLB correctable parity error, no report to software. */
5314         uint64_t mtlbperrdis           : 1;  /**< [ 13: 13](R/W) MTLB correctable parity error disable. */
5315         uint64_t mtlbperr              : 1;  /**< [ 12: 12](R/W/H) MTLB corrected a parity error. */
5316         uint64_t l1dperrforce          : 1;  /**< [ 11: 11](R/W/H) Dcache correctable parity error force. Bit is cleared when error is forced on next write operation. */
5317         uint64_t l1dperrnosw           : 1;  /**< [ 10: 10](R/W) Dcache correctable parity error, no report to software. */
5318         uint64_t l1dperrdis            : 1;  /**< [  9:  9](R/W) Dcache correctable parity error disable. */
5319         uint64_t l1dperr               : 1;  /**< [  8:  8](R/W/H) Dcache corrected a parity error. */
5320         uint64_t l1dway                : 5;  /**< [  7:  3](R/W/H) Indicates Dcache way. */
5321         uint64_t l1dset                : 3;  /**< [  2:  0](R/W/H) Indicates Dcache set. */
5322 #else /* Word 0 - Little Endian */
5323         uint64_t l1dset                : 3;  /**< [  2:  0](R/W/H) Indicates Dcache set. */
5324         uint64_t l1dway                : 5;  /**< [  7:  3](R/W/H) Indicates Dcache way. */
5325         uint64_t l1dperr               : 1;  /**< [  8:  8](R/W/H) Dcache corrected a parity error. */
5326         uint64_t l1dperrdis            : 1;  /**< [  9:  9](R/W) Dcache correctable parity error disable. */
5327         uint64_t l1dperrnosw           : 1;  /**< [ 10: 10](R/W) Dcache correctable parity error, no report to software. */
5328         uint64_t l1dperrforce          : 1;  /**< [ 11: 11](R/W/H) Dcache correctable parity error force. Bit is cleared when error is forced on next write operation. */
5329         uint64_t mtlbperr              : 1;  /**< [ 12: 12](R/W/H) MTLB corrected a parity error. */
5330         uint64_t mtlbperrdis           : 1;  /**< [ 13: 13](R/W) MTLB correctable parity error disable. */
5331         uint64_t mtlbperrnosw          : 1;  /**< [ 14: 14](R/W) MTLB correctable parity error, no report to software. */
5332         uint64_t mtlbperrforce         : 1;  /**< [ 15: 15](R/W/H) MTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5333         uint64_t utlbperr              : 1;  /**< [ 16: 16](R/W/H) uTLB corrected a parity error. */
5334         uint64_t utlbperrdis           : 1;  /**< [ 17: 17](R/W) uTLB correctable parity error disable. */
5335         uint64_t utlbperrnosw          : 1;  /**< [ 18: 18](R/W) uTLB correctable parity error, no report to software. */
5336         uint64_t utlbperrforce         : 1;  /**< [ 19: 19](R/W/H) uTLB correctable parity error force. Bit is cleared when error is forced on next write operation. */
5337         uint64_t mafperr               : 1;  /**< [ 20: 20](R/W/H) MAF parity error. */
5338         uint64_t mafperrdis            : 1;  /**< [ 21: 21](R/W) MAF parity error disable. */
5339         uint64_t mafperrnosw           : 1;  /**< [ 22: 22](R/W) MAF parity error, no report to software. */
5340         uint64_t mafperrforce          : 1;  /**< [ 23: 23](R/W/H) MAF parity error force. Bit is cleared when error is forced on next write operation. */
5341         uint64_t wbfperr               : 1;  /**< [ 24: 24](R/W/H) Write-buffer double-bit error. */
5342         uint64_t wbfperrdis            : 1;  /**< [ 25: 25](R/W) Write-buffer double-bit error disable. */
5343         uint64_t wbfperrnosw           : 1;  /**< [ 26: 26](R/W) Write-buffer single-bit error, no report to software. */
5344         uint64_t wbfsbeforce           : 1;  /**< [ 27: 27](R/W/H) Write-buffer SBE force. Bit is cleared when error is forced on next write operation. */
5345         uint64_t wbfdbeforce           : 1;  /**< [ 28: 28](R/W/H) Write-buffer DBE force. Bit is cleared when error is forced on next write operation. */
5346         uint64_t wcuperr               : 1;  /**< [ 29: 29](R/W/H) WCU corrected parity error. */
5347         uint64_t wcuperrdis            : 1;  /**< [ 30: 30](R/W) WCU parity error disable. */
5348         uint64_t wcuperrnosw           : 1;  /**< [ 31: 31](R/W) WCU parity error, no report to software. */
5349         uint64_t wcuperrforce          : 1;  /**< [ 32: 32](R/W/H) WCU parity error force. Bit is cleared when error is forced on next write operation. */
5350         uint64_t rbfto                 : 1;  /**< [ 33: 33](R/W/H) Read buffer timeout. */
5351         uint64_t rbftodis              : 1;  /**< [ 34: 34](R/W) Read buffer timeout disable. */
5352         uint64_t rbftonosw             : 1;  /**< [ 35: 35](R/W) Read buffer timeout, no report to software. */
5353         uint64_t spare36               : 1;  /**< [ 36: 36](R/W/H) Reserved. */
5354         uint64_t barrierto             : 1;  /**< [ 37: 37](R/W/H) Barrier timeout. */
5355         uint64_t barriertodis          : 1;  /**< [ 38: 38](R/W) Barrier timeout disable. */
5356         uint64_t barriertonosw         : 1;  /**< [ 39: 39](R/W) Barrier timeout, no report to software. */
5357         uint64_t spare40               : 1;  /**< [ 40: 40](R/W/H) Reserved. */
5358         uint64_t mtlbmult              : 1;  /**< [ 41: 41](R/W/H) MTLB multiple match error. */
5359         uint64_t mtlbmultdis           : 1;  /**< [ 42: 42](R/W) MTLB multiple match error disable. */
5360         uint64_t wcumult               : 1;  /**< [ 43: 43](R/W/H) WCU multiple match error. */
5361         uint64_t wcumultdis            : 1;  /**< [ 44: 44](R/W) WCU multiple match error disable. */
5362         uint64_t gsyncto               : 1;  /**< [ 45: 45](R/W/H) Global sync timeout. */
5363         uint64_t gsynctodis            : 1;  /**< [ 46: 46](R/W) Global sync timeout disable. */
5364         uint64_t gsynctonosw           : 1;  /**< [ 47: 47](R/W) Global sync timeout, no report to software. */
5365         uint64_t wbfsbeerr             : 1;  /**< [ 48: 48](R/W/H) Write-buffer single-bit error. */
5366         uint64_t reserved_49_63        : 15;
5367 #endif /* Word 0 - End */
5368     } cn83xx;
5369     /* struct bdk_ap_cvm_errmem_el1_cn81xx cn88xxp2; */
5370 };
5371 typedef union bdk_ap_cvm_errmem_el1 bdk_ap_cvm_errmem_el1_t;
5372 
5373 #define BDK_AP_CVM_ERRMEM_EL1 BDK_AP_CVM_ERRMEM_EL1_FUNC()
5374 static inline uint64_t BDK_AP_CVM_ERRMEM_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_ERRMEM_EL1_FUNC(void)5375 static inline uint64_t BDK_AP_CVM_ERRMEM_EL1_FUNC(void)
5376 {
5377     return 0x3000b020400ll;
5378 }
5379 
5380 #define typedef_BDK_AP_CVM_ERRMEM_EL1 bdk_ap_cvm_errmem_el1_t
5381 #define bustype_BDK_AP_CVM_ERRMEM_EL1 BDK_CSR_TYPE_SYSREG
5382 #define basename_BDK_AP_CVM_ERRMEM_EL1 "AP_CVM_ERRMEM_EL1"
5383 #define busnum_BDK_AP_CVM_ERRMEM_EL1 0
5384 #define arguments_BDK_AP_CVM_ERRMEM_EL1 -1,-1,-1,-1
5385 
5386 /**
5387  * Register (SYSREG) ap_cvm_evattid_el1
5388  *
5389  * AP Cavium EVATTID Register
5390  * This register is for diagnostic use only.
5391  */
5392 union bdk_ap_cvm_evattid_el1
5393 {
5394     uint64_t u;
5395     struct bdk_ap_cvm_evattid_el1_s
5396     {
5397 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5398         uint64_t reserved_60_63        : 4;
5399         uint64_t el3_vmid              : 4;  /**< [ 59: 56](R/W) Current EL3 EVA VMID. */
5400         uint64_t reserved_55           : 1;
5401         uint64_t el3_asid              : 7;  /**< [ 54: 48](R/W) Current EL3 EVA ASID. */
5402         uint64_t el2_vmid              : 4;  /**< [ 47: 44](R/W) Current EL2 EVA VMID. */
5403         uint64_t reserved_31_43        : 13;
5404         uint64_t el2_asid_e2h          : 7;  /**< [ 30: 24](R/W) Current EL2 E2H EVA ASID. */
5405         uint64_t el1_vmid_s            : 4;  /**< [ 23: 20](R/W) Current EL1 secure EVA VMID. */
5406         uint64_t reserved_12_19        : 8;
5407         uint64_t el1_vmid_ns           : 4;  /**< [ 11:  8](R/W) Current EL1 nonsecure EVA VMID. */
5408         uint64_t reserved_0_7          : 8;
5409 #else /* Word 0 - Little Endian */
5410         uint64_t reserved_0_7          : 8;
5411         uint64_t el1_vmid_ns           : 4;  /**< [ 11:  8](R/W) Current EL1 nonsecure EVA VMID. */
5412         uint64_t reserved_12_19        : 8;
5413         uint64_t el1_vmid_s            : 4;  /**< [ 23: 20](R/W) Current EL1 secure EVA VMID. */
5414         uint64_t el2_asid_e2h          : 7;  /**< [ 30: 24](R/W) Current EL2 E2H EVA ASID. */
5415         uint64_t reserved_31_43        : 13;
5416         uint64_t el2_vmid              : 4;  /**< [ 47: 44](R/W) Current EL2 EVA VMID. */
5417         uint64_t el3_asid              : 7;  /**< [ 54: 48](R/W) Current EL3 EVA ASID. */
5418         uint64_t reserved_55           : 1;
5419         uint64_t el3_vmid              : 4;  /**< [ 59: 56](R/W) Current EL3 EVA VMID. */
5420         uint64_t reserved_60_63        : 4;
5421 #endif /* Word 0 - End */
5422     } s;
5423     struct bdk_ap_cvm_evattid_el1_cn8
5424     {
5425 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5426         uint64_t reserved_38_63        : 26;
5427         uint64_t el2_asid              : 6;  /**< [ 37: 32](R/W) Current EL2 EVA ASID. */
5428         uint64_t reserved_20_31        : 12;
5429         uint64_t el1_vmid              : 4;  /**< [ 19: 16](R/W) Current EL1 EVA VMID. */
5430         uint64_t reserved_6_15         : 10;
5431         uint64_t el1_asid              : 6;  /**< [  5:  0](R/W) Current EL1 EVA ASID. */
5432 #else /* Word 0 - Little Endian */
5433         uint64_t el1_asid              : 6;  /**< [  5:  0](R/W) Current EL1 EVA ASID. */
5434         uint64_t reserved_6_15         : 10;
5435         uint64_t el1_vmid              : 4;  /**< [ 19: 16](R/W) Current EL1 EVA VMID. */
5436         uint64_t reserved_20_31        : 12;
5437         uint64_t el2_asid              : 6;  /**< [ 37: 32](R/W) Current EL2 EVA ASID. */
5438         uint64_t reserved_38_63        : 26;
5439 #endif /* Word 0 - End */
5440     } cn8;
5441     struct bdk_ap_cvm_evattid_el1_cn9
5442     {
5443 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5444         uint64_t reserved_60_63        : 4;
5445         uint64_t el3_vmid              : 4;  /**< [ 59: 56](R/W) Current EL3 EVA VMID. */
5446         uint64_t reserved_55           : 1;
5447         uint64_t el3_asid              : 7;  /**< [ 54: 48](R/W) Current EL3 EVA ASID. */
5448         uint64_t el2_vmid              : 4;  /**< [ 47: 44](R/W) Current EL2 EVA VMID. */
5449         uint64_t reserved_43           : 1;
5450         uint64_t el2_asid              : 7;  /**< [ 42: 36](R/W) Current EL2 EVA ASID. */
5451         uint64_t el2_vmid_e2h          : 4;  /**< [ 35: 32](R/W) Current EL2 E2H EVA VMID. */
5452         uint64_t reserved_31           : 1;
5453         uint64_t el2_asid_e2h          : 7;  /**< [ 30: 24](R/W) Current EL2 E2H EVA ASID. */
5454         uint64_t el1_vmid_s            : 4;  /**< [ 23: 20](R/W) Current EL1 secure EVA VMID. */
5455         uint64_t reserved_19           : 1;
5456         uint64_t el1_asid_s            : 7;  /**< [ 18: 12](R/W) Current EL1 secure EVA ASID. */
5457         uint64_t el1_vmid_ns           : 4;  /**< [ 11:  8](R/W) Current EL1 nonsecure EVA VMID. */
5458         uint64_t reserved_7            : 1;
5459         uint64_t el1_asid_ns           : 7;  /**< [  6:  0](R/W) Current EL1 nonsecure EVA ASID. */
5460 #else /* Word 0 - Little Endian */
5461         uint64_t el1_asid_ns           : 7;  /**< [  6:  0](R/W) Current EL1 nonsecure EVA ASID. */
5462         uint64_t reserved_7            : 1;
5463         uint64_t el1_vmid_ns           : 4;  /**< [ 11:  8](R/W) Current EL1 nonsecure EVA VMID. */
5464         uint64_t el1_asid_s            : 7;  /**< [ 18: 12](R/W) Current EL1 secure EVA ASID. */
5465         uint64_t reserved_19           : 1;
5466         uint64_t el1_vmid_s            : 4;  /**< [ 23: 20](R/W) Current EL1 secure EVA VMID. */
5467         uint64_t el2_asid_e2h          : 7;  /**< [ 30: 24](R/W) Current EL2 E2H EVA ASID. */
5468         uint64_t reserved_31           : 1;
5469         uint64_t el2_vmid_e2h          : 4;  /**< [ 35: 32](R/W) Current EL2 E2H EVA VMID. */
5470         uint64_t el2_asid              : 7;  /**< [ 42: 36](R/W) Current EL2 EVA ASID. */
5471         uint64_t reserved_43           : 1;
5472         uint64_t el2_vmid              : 4;  /**< [ 47: 44](R/W) Current EL2 EVA VMID. */
5473         uint64_t el3_asid              : 7;  /**< [ 54: 48](R/W) Current EL3 EVA ASID. */
5474         uint64_t reserved_55           : 1;
5475         uint64_t el3_vmid              : 4;  /**< [ 59: 56](R/W) Current EL3 EVA VMID. */
5476         uint64_t reserved_60_63        : 4;
5477 #endif /* Word 0 - End */
5478     } cn9;
5479 };
5480 typedef union bdk_ap_cvm_evattid_el1 bdk_ap_cvm_evattid_el1_t;
5481 
5482 #define BDK_AP_CVM_EVATTID_EL1 BDK_AP_CVM_EVATTID_EL1_FUNC()
5483 static inline uint64_t BDK_AP_CVM_EVATTID_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_EVATTID_EL1_FUNC(void)5484 static inline uint64_t BDK_AP_CVM_EVATTID_EL1_FUNC(void)
5485 {
5486     return 0x3000b020500ll;
5487 }
5488 
5489 #define typedef_BDK_AP_CVM_EVATTID_EL1 bdk_ap_cvm_evattid_el1_t
5490 #define bustype_BDK_AP_CVM_EVATTID_EL1 BDK_CSR_TYPE_SYSREG
5491 #define basename_BDK_AP_CVM_EVATTID_EL1 "AP_CVM_EVATTID_EL1"
5492 #define busnum_BDK_AP_CVM_EVATTID_EL1 0
5493 #define arguments_BDK_AP_CVM_EVATTID_EL1 -1,-1,-1,-1
5494 
5495 /**
5496  * Register (SYSREG) ap_cvm_icachedata0_el1
5497  *
5498  * INTERNAL: AP Cavium Icache Data 0 Register
5499  */
5500 union bdk_ap_cvm_icachedata0_el1
5501 {
5502     uint64_t u;
5503     struct bdk_ap_cvm_icachedata0_el1_s
5504     {
5505 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5506         uint64_t data                  : 64; /**< [ 63:  0](RO) Icache data\<63:0\> from an Icache read operation. */
5507 #else /* Word 0 - Little Endian */
5508         uint64_t data                  : 64; /**< [ 63:  0](RO) Icache data\<63:0\> from an Icache read operation. */
5509 #endif /* Word 0 - End */
5510     } s;
5511     /* struct bdk_ap_cvm_icachedata0_el1_s cn; */
5512 };
5513 typedef union bdk_ap_cvm_icachedata0_el1 bdk_ap_cvm_icachedata0_el1_t;
5514 
5515 #define BDK_AP_CVM_ICACHEDATA0_EL1 BDK_AP_CVM_ICACHEDATA0_EL1_FUNC()
5516 static inline uint64_t BDK_AP_CVM_ICACHEDATA0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_ICACHEDATA0_EL1_FUNC(void)5517 static inline uint64_t BDK_AP_CVM_ICACHEDATA0_EL1_FUNC(void)
5518 {
5519     return 0x3000b030000ll;
5520 }
5521 
5522 #define typedef_BDK_AP_CVM_ICACHEDATA0_EL1 bdk_ap_cvm_icachedata0_el1_t
5523 #define bustype_BDK_AP_CVM_ICACHEDATA0_EL1 BDK_CSR_TYPE_SYSREG
5524 #define basename_BDK_AP_CVM_ICACHEDATA0_EL1 "AP_CVM_ICACHEDATA0_EL1"
5525 #define busnum_BDK_AP_CVM_ICACHEDATA0_EL1 0
5526 #define arguments_BDK_AP_CVM_ICACHEDATA0_EL1 -1,-1,-1,-1
5527 
5528 /**
5529  * Register (SYSREG) ap_cvm_icachedata1_el1
5530  *
5531  * INTERNAL: AP Cavium Icache Data 1 Register
5532  */
5533 union bdk_ap_cvm_icachedata1_el1
5534 {
5535     uint64_t u;
5536     struct bdk_ap_cvm_icachedata1_el1_s
5537     {
5538 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5539         uint64_t reserved_2_63         : 62;
5540         uint64_t data                  : 2;  /**< [  1:  0](RO) Icache data\<65:64\> from an Icache read operation. */
5541 #else /* Word 0 - Little Endian */
5542         uint64_t data                  : 2;  /**< [  1:  0](RO) Icache data\<65:64\> from an Icache read operation. */
5543         uint64_t reserved_2_63         : 62;
5544 #endif /* Word 0 - End */
5545     } s;
5546     /* struct bdk_ap_cvm_icachedata1_el1_s cn; */
5547 };
5548 typedef union bdk_ap_cvm_icachedata1_el1 bdk_ap_cvm_icachedata1_el1_t;
5549 
5550 #define BDK_AP_CVM_ICACHEDATA1_EL1 BDK_AP_CVM_ICACHEDATA1_EL1_FUNC()
5551 static inline uint64_t BDK_AP_CVM_ICACHEDATA1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_ICACHEDATA1_EL1_FUNC(void)5552 static inline uint64_t BDK_AP_CVM_ICACHEDATA1_EL1_FUNC(void)
5553 {
5554     return 0x3000b030100ll;
5555 }
5556 
5557 #define typedef_BDK_AP_CVM_ICACHEDATA1_EL1 bdk_ap_cvm_icachedata1_el1_t
5558 #define bustype_BDK_AP_CVM_ICACHEDATA1_EL1 BDK_CSR_TYPE_SYSREG
5559 #define basename_BDK_AP_CVM_ICACHEDATA1_EL1 "AP_CVM_ICACHEDATA1_EL1"
5560 #define busnum_BDK_AP_CVM_ICACHEDATA1_EL1 0
5561 #define arguments_BDK_AP_CVM_ICACHEDATA1_EL1 -1,-1,-1,-1
5562 
5563 /**
5564  * Register (SYSREG) ap_cvm_icachetag0_el1
5565  *
5566  * INTERNAL: AP Cavium Icache Tag 0 Register
5567  */
5568 union bdk_ap_cvm_icachetag0_el1
5569 {
5570     uint64_t u;
5571     struct bdk_ap_cvm_icachetag0_el1_s
5572     {
5573 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5574         uint64_t reserved_52_63        : 12;
5575         uint64_t valid                 : 1;  /**< [ 51: 51](RO) Valid. */
5576         uint64_t va                    : 40; /**< [ 50: 11](RO) VA in tags. */
5577         uint64_t asid_valid_ignored    : 1;  /**< [ 10: 10](RO) ASID valid is ignored. */
5578         uint64_t asid_index            : 6;  /**< [  9:  4](RO) ASID index. */
5579         uint64_t vmid_index            : 4;  /**< [  3:  0](RO) VMID index. */
5580 #else /* Word 0 - Little Endian */
5581         uint64_t vmid_index            : 4;  /**< [  3:  0](RO) VMID index. */
5582         uint64_t asid_index            : 6;  /**< [  9:  4](RO) ASID index. */
5583         uint64_t asid_valid_ignored    : 1;  /**< [ 10: 10](RO) ASID valid is ignored. */
5584         uint64_t va                    : 40; /**< [ 50: 11](RO) VA in tags. */
5585         uint64_t valid                 : 1;  /**< [ 51: 51](RO) Valid. */
5586         uint64_t reserved_52_63        : 12;
5587 #endif /* Word 0 - End */
5588     } s;
5589     /* struct bdk_ap_cvm_icachetag0_el1_s cn; */
5590 };
5591 typedef union bdk_ap_cvm_icachetag0_el1 bdk_ap_cvm_icachetag0_el1_t;
5592 
5593 #define BDK_AP_CVM_ICACHETAG0_EL1 BDK_AP_CVM_ICACHETAG0_EL1_FUNC()
5594 static inline uint64_t BDK_AP_CVM_ICACHETAG0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_ICACHETAG0_EL1_FUNC(void)5595 static inline uint64_t BDK_AP_CVM_ICACHETAG0_EL1_FUNC(void)
5596 {
5597     return 0x3000b030200ll;
5598 }
5599 
5600 #define typedef_BDK_AP_CVM_ICACHETAG0_EL1 bdk_ap_cvm_icachetag0_el1_t
5601 #define bustype_BDK_AP_CVM_ICACHETAG0_EL1 BDK_CSR_TYPE_SYSREG
5602 #define basename_BDK_AP_CVM_ICACHETAG0_EL1 "AP_CVM_ICACHETAG0_EL1"
5603 #define busnum_BDK_AP_CVM_ICACHETAG0_EL1 0
5604 #define arguments_BDK_AP_CVM_ICACHETAG0_EL1 -1,-1,-1,-1
5605 
5606 /**
5607  * Register (SYSREG) ap_cvm_memdebug0_el3
5608  *
5609  * INTERNAL: AP Cavium Memory Debug 0 Register
5610  */
5611 union bdk_ap_cvm_memdebug0_el3
5612 {
5613     uint64_t u;
5614     struct bdk_ap_cvm_memdebug0_el3_s
5615     {
5616 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5617         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5618 #else /* Word 0 - Little Endian */
5619         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5620 #endif /* Word 0 - End */
5621     } s;
5622     /* struct bdk_ap_cvm_memdebug0_el3_s cn; */
5623 };
5624 typedef union bdk_ap_cvm_memdebug0_el3 bdk_ap_cvm_memdebug0_el3_t;
5625 
5626 #define BDK_AP_CVM_MEMDEBUG0_EL3 BDK_AP_CVM_MEMDEBUG0_EL3_FUNC()
5627 static inline uint64_t BDK_AP_CVM_MEMDEBUG0_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_MEMDEBUG0_EL3_FUNC(void)5628 static inline uint64_t BDK_AP_CVM_MEMDEBUG0_EL3_FUNC(void)
5629 {
5630     return 0x3060b040400ll;
5631 }
5632 
5633 #define typedef_BDK_AP_CVM_MEMDEBUG0_EL3 bdk_ap_cvm_memdebug0_el3_t
5634 #define bustype_BDK_AP_CVM_MEMDEBUG0_EL3 BDK_CSR_TYPE_SYSREG
5635 #define basename_BDK_AP_CVM_MEMDEBUG0_EL3 "AP_CVM_MEMDEBUG0_EL3"
5636 #define busnum_BDK_AP_CVM_MEMDEBUG0_EL3 0
5637 #define arguments_BDK_AP_CVM_MEMDEBUG0_EL3 -1,-1,-1,-1
5638 
5639 /**
5640  * Register (SYSREG) ap_cvm_memdebug1_el3
5641  *
5642  * INTERNAL: AP Cavium Memory Debug 1 Register
5643  */
5644 union bdk_ap_cvm_memdebug1_el3
5645 {
5646     uint64_t u;
5647     struct bdk_ap_cvm_memdebug1_el3_s
5648     {
5649 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5650         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5651 #else /* Word 0 - Little Endian */
5652         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5653 #endif /* Word 0 - End */
5654     } s;
5655     /* struct bdk_ap_cvm_memdebug1_el3_s cn; */
5656 };
5657 typedef union bdk_ap_cvm_memdebug1_el3 bdk_ap_cvm_memdebug1_el3_t;
5658 
5659 #define BDK_AP_CVM_MEMDEBUG1_EL3 BDK_AP_CVM_MEMDEBUG1_EL3_FUNC()
5660 static inline uint64_t BDK_AP_CVM_MEMDEBUG1_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_MEMDEBUG1_EL3_FUNC(void)5661 static inline uint64_t BDK_AP_CVM_MEMDEBUG1_EL3_FUNC(void)
5662 {
5663     return 0x3060b040500ll;
5664 }
5665 
5666 #define typedef_BDK_AP_CVM_MEMDEBUG1_EL3 bdk_ap_cvm_memdebug1_el3_t
5667 #define bustype_BDK_AP_CVM_MEMDEBUG1_EL3 BDK_CSR_TYPE_SYSREG
5668 #define basename_BDK_AP_CVM_MEMDEBUG1_EL3 "AP_CVM_MEMDEBUG1_EL3"
5669 #define busnum_BDK_AP_CVM_MEMDEBUG1_EL3 0
5670 #define arguments_BDK_AP_CVM_MEMDEBUG1_EL3 -1,-1,-1,-1
5671 
5672 /**
5673  * Register (SYSREG) ap_cvm_memdebug2_el3
5674  *
5675  * INTERNAL: AP Cavium Memory Debug 2 Register
5676  */
5677 union bdk_ap_cvm_memdebug2_el3
5678 {
5679     uint64_t u;
5680     struct bdk_ap_cvm_memdebug2_el3_s
5681     {
5682 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5683         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5684 #else /* Word 0 - Little Endian */
5685         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5686 #endif /* Word 0 - End */
5687     } s;
5688     /* struct bdk_ap_cvm_memdebug2_el3_s cn; */
5689 };
5690 typedef union bdk_ap_cvm_memdebug2_el3 bdk_ap_cvm_memdebug2_el3_t;
5691 
5692 #define BDK_AP_CVM_MEMDEBUG2_EL3 BDK_AP_CVM_MEMDEBUG2_EL3_FUNC()
5693 static inline uint64_t BDK_AP_CVM_MEMDEBUG2_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_MEMDEBUG2_EL3_FUNC(void)5694 static inline uint64_t BDK_AP_CVM_MEMDEBUG2_EL3_FUNC(void)
5695 {
5696     return 0x3060b040600ll;
5697 }
5698 
5699 #define typedef_BDK_AP_CVM_MEMDEBUG2_EL3 bdk_ap_cvm_memdebug2_el3_t
5700 #define bustype_BDK_AP_CVM_MEMDEBUG2_EL3 BDK_CSR_TYPE_SYSREG
5701 #define basename_BDK_AP_CVM_MEMDEBUG2_EL3 "AP_CVM_MEMDEBUG2_EL3"
5702 #define busnum_BDK_AP_CVM_MEMDEBUG2_EL3 0
5703 #define arguments_BDK_AP_CVM_MEMDEBUG2_EL3 -1,-1,-1,-1
5704 
5705 /**
5706  * Register (SYSREG) ap_cvm_memdebug3_el3
5707  *
5708  * INTERNAL: AP Cavium Memory Debug 3 Register
5709  */
5710 union bdk_ap_cvm_memdebug3_el3
5711 {
5712     uint64_t u;
5713     struct bdk_ap_cvm_memdebug3_el3_s
5714     {
5715 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5716         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5717 #else /* Word 0 - Little Endian */
5718         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5719 #endif /* Word 0 - End */
5720     } s;
5721     /* struct bdk_ap_cvm_memdebug3_el3_s cn; */
5722 };
5723 typedef union bdk_ap_cvm_memdebug3_el3 bdk_ap_cvm_memdebug3_el3_t;
5724 
5725 #define BDK_AP_CVM_MEMDEBUG3_EL3 BDK_AP_CVM_MEMDEBUG3_EL3_FUNC()
5726 static inline uint64_t BDK_AP_CVM_MEMDEBUG3_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_MEMDEBUG3_EL3_FUNC(void)5727 static inline uint64_t BDK_AP_CVM_MEMDEBUG3_EL3_FUNC(void)
5728 {
5729     return 0x3060b040700ll;
5730 }
5731 
5732 #define typedef_BDK_AP_CVM_MEMDEBUG3_EL3 bdk_ap_cvm_memdebug3_el3_t
5733 #define bustype_BDK_AP_CVM_MEMDEBUG3_EL3 BDK_CSR_TYPE_SYSREG
5734 #define basename_BDK_AP_CVM_MEMDEBUG3_EL3 "AP_CVM_MEMDEBUG3_EL3"
5735 #define busnum_BDK_AP_CVM_MEMDEBUG3_EL3 0
5736 #define arguments_BDK_AP_CVM_MEMDEBUG3_EL3 -1,-1,-1,-1
5737 
5738 /**
5739  * Register (SYSREG) ap_cvm_memdebug4_el3
5740  *
5741  * INTERNAL: AP Cavium Memory Debug 4 Register
5742  */
5743 union bdk_ap_cvm_memdebug4_el3
5744 {
5745     uint64_t u;
5746     struct bdk_ap_cvm_memdebug4_el3_s
5747     {
5748 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5749         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5750 #else /* Word 0 - Little Endian */
5751         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5752 #endif /* Word 0 - End */
5753     } s;
5754     /* struct bdk_ap_cvm_memdebug4_el3_s cn; */
5755 };
5756 typedef union bdk_ap_cvm_memdebug4_el3 bdk_ap_cvm_memdebug4_el3_t;
5757 
5758 #define BDK_AP_CVM_MEMDEBUG4_EL3 BDK_AP_CVM_MEMDEBUG4_EL3_FUNC()
5759 static inline uint64_t BDK_AP_CVM_MEMDEBUG4_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_MEMDEBUG4_EL3_FUNC(void)5760 static inline uint64_t BDK_AP_CVM_MEMDEBUG4_EL3_FUNC(void)
5761 {
5762     return 0x3060b050400ll;
5763 }
5764 
5765 #define typedef_BDK_AP_CVM_MEMDEBUG4_EL3 bdk_ap_cvm_memdebug4_el3_t
5766 #define bustype_BDK_AP_CVM_MEMDEBUG4_EL3 BDK_CSR_TYPE_SYSREG
5767 #define basename_BDK_AP_CVM_MEMDEBUG4_EL3 "AP_CVM_MEMDEBUG4_EL3"
5768 #define busnum_BDK_AP_CVM_MEMDEBUG4_EL3 0
5769 #define arguments_BDK_AP_CVM_MEMDEBUG4_EL3 -1,-1,-1,-1
5770 
5771 /**
5772  * Register (SYSREG) ap_cvm_memdebug5_el3
5773  *
5774  * INTERNAL: AP Cavium Memory Debug 5 Register
5775  */
5776 union bdk_ap_cvm_memdebug5_el3
5777 {
5778     uint64_t u;
5779     struct bdk_ap_cvm_memdebug5_el3_s
5780     {
5781 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5782         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5783 #else /* Word 0 - Little Endian */
5784         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5785 #endif /* Word 0 - End */
5786     } s;
5787     /* struct bdk_ap_cvm_memdebug5_el3_s cn; */
5788 };
5789 typedef union bdk_ap_cvm_memdebug5_el3 bdk_ap_cvm_memdebug5_el3_t;
5790 
5791 #define BDK_AP_CVM_MEMDEBUG5_EL3 BDK_AP_CVM_MEMDEBUG5_EL3_FUNC()
5792 static inline uint64_t BDK_AP_CVM_MEMDEBUG5_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_MEMDEBUG5_EL3_FUNC(void)5793 static inline uint64_t BDK_AP_CVM_MEMDEBUG5_EL3_FUNC(void)
5794 {
5795     return 0x3060b050500ll;
5796 }
5797 
5798 #define typedef_BDK_AP_CVM_MEMDEBUG5_EL3 bdk_ap_cvm_memdebug5_el3_t
5799 #define bustype_BDK_AP_CVM_MEMDEBUG5_EL3 BDK_CSR_TYPE_SYSREG
5800 #define basename_BDK_AP_CVM_MEMDEBUG5_EL3 "AP_CVM_MEMDEBUG5_EL3"
5801 #define busnum_BDK_AP_CVM_MEMDEBUG5_EL3 0
5802 #define arguments_BDK_AP_CVM_MEMDEBUG5_EL3 -1,-1,-1,-1
5803 
5804 /**
5805  * Register (SYSREG) ap_cvm_memdebug6_el3
5806  *
5807  * INTERNAL: AP Cavium Memory Debug 6 Register
5808  */
5809 union bdk_ap_cvm_memdebug6_el3
5810 {
5811     uint64_t u;
5812     struct bdk_ap_cvm_memdebug6_el3_s
5813     {
5814 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5815         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5816 #else /* Word 0 - Little Endian */
5817         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5818 #endif /* Word 0 - End */
5819     } s;
5820     /* struct bdk_ap_cvm_memdebug6_el3_s cn; */
5821 };
5822 typedef union bdk_ap_cvm_memdebug6_el3 bdk_ap_cvm_memdebug6_el3_t;
5823 
5824 #define BDK_AP_CVM_MEMDEBUG6_EL3 BDK_AP_CVM_MEMDEBUG6_EL3_FUNC()
5825 static inline uint64_t BDK_AP_CVM_MEMDEBUG6_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_MEMDEBUG6_EL3_FUNC(void)5826 static inline uint64_t BDK_AP_CVM_MEMDEBUG6_EL3_FUNC(void)
5827 {
5828     return 0x3060b050600ll;
5829 }
5830 
5831 #define typedef_BDK_AP_CVM_MEMDEBUG6_EL3 bdk_ap_cvm_memdebug6_el3_t
5832 #define bustype_BDK_AP_CVM_MEMDEBUG6_EL3 BDK_CSR_TYPE_SYSREG
5833 #define basename_BDK_AP_CVM_MEMDEBUG6_EL3 "AP_CVM_MEMDEBUG6_EL3"
5834 #define busnum_BDK_AP_CVM_MEMDEBUG6_EL3 0
5835 #define arguments_BDK_AP_CVM_MEMDEBUG6_EL3 -1,-1,-1,-1
5836 
5837 /**
5838  * Register (SYSREG) ap_cvm_memdebug7_el3
5839  *
5840  * INTERNAL: AP Cavium Memory Debug 7 Register
5841  */
5842 union bdk_ap_cvm_memdebug7_el3
5843 {
5844     uint64_t u;
5845     struct bdk_ap_cvm_memdebug7_el3_s
5846     {
5847 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5848         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5849 #else /* Word 0 - Little Endian */
5850         uint64_t debug                 : 64; /**< [ 63:  0](RO) Undocumented debug. */
5851 #endif /* Word 0 - End */
5852     } s;
5853     /* struct bdk_ap_cvm_memdebug7_el3_s cn; */
5854 };
5855 typedef union bdk_ap_cvm_memdebug7_el3 bdk_ap_cvm_memdebug7_el3_t;
5856 
5857 #define BDK_AP_CVM_MEMDEBUG7_EL3 BDK_AP_CVM_MEMDEBUG7_EL3_FUNC()
5858 static inline uint64_t BDK_AP_CVM_MEMDEBUG7_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_MEMDEBUG7_EL3_FUNC(void)5859 static inline uint64_t BDK_AP_CVM_MEMDEBUG7_EL3_FUNC(void)
5860 {
5861     return 0x3060b050700ll;
5862 }
5863 
5864 #define typedef_BDK_AP_CVM_MEMDEBUG7_EL3 bdk_ap_cvm_memdebug7_el3_t
5865 #define bustype_BDK_AP_CVM_MEMDEBUG7_EL3 BDK_CSR_TYPE_SYSREG
5866 #define basename_BDK_AP_CVM_MEMDEBUG7_EL3 "AP_CVM_MEMDEBUG7_EL3"
5867 #define busnum_BDK_AP_CVM_MEMDEBUG7_EL3 0
5868 #define arguments_BDK_AP_CVM_MEMDEBUG7_EL3 -1,-1,-1,-1
5869 
5870 /**
5871  * Register (SYSREG) ap_cvm_nvbar_el3
5872  *
5873  * AP Cavium DEL3T Address Register
5874  */
5875 union bdk_ap_cvm_nvbar_el3
5876 {
5877     uint64_t u;
5878     struct bdk_ap_cvm_nvbar_el3_s
5879     {
5880 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5881         uint64_t vector_address        : 53; /**< [ 63: 11](R/W) Cavium-specific exception vector address. */
5882         uint64_t reserved_0_10         : 11;
5883 #else /* Word 0 - Little Endian */
5884         uint64_t reserved_0_10         : 11;
5885         uint64_t vector_address        : 53; /**< [ 63: 11](R/W) Cavium-specific exception vector address. */
5886 #endif /* Word 0 - End */
5887     } s;
5888     /* struct bdk_ap_cvm_nvbar_el3_s cn; */
5889 };
5890 typedef union bdk_ap_cvm_nvbar_el3 bdk_ap_cvm_nvbar_el3_t;
5891 
5892 #define BDK_AP_CVM_NVBAR_EL3 BDK_AP_CVM_NVBAR_EL3_FUNC()
5893 static inline uint64_t BDK_AP_CVM_NVBAR_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_NVBAR_EL3_FUNC(void)5894 static inline uint64_t BDK_AP_CVM_NVBAR_EL3_FUNC(void)
5895 {
5896     return 0x3060b060000ll;
5897 }
5898 
5899 #define typedef_BDK_AP_CVM_NVBAR_EL3 bdk_ap_cvm_nvbar_el3_t
5900 #define bustype_BDK_AP_CVM_NVBAR_EL3 BDK_CSR_TYPE_SYSREG
5901 #define basename_BDK_AP_CVM_NVBAR_EL3 "AP_CVM_NVBAR_EL3"
5902 #define busnum_BDK_AP_CVM_NVBAR_EL3 0
5903 #define arguments_BDK_AP_CVM_NVBAR_EL3 -1,-1,-1,-1
5904 
5905 /**
5906  * Register (SYSREG) ap_cvm_pn_el1
5907  *
5908  * AP Cavium Processor Number Register
5909  * This register is accessible at EL1, but subject to the access controls in AP_CVM_ACCESS_EL1/EL2/EL3
5910  */
5911 union bdk_ap_cvm_pn_el1
5912 {
5913     uint64_t u;
5914     struct bdk_ap_cvm_pn_el1_s
5915     {
5916 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5917         uint64_t reserved_40_63        : 24;
5918         uint64_t clu                   : 8;  /**< [ 39: 32](RO) The cluster this core resides in. */
5919         uint64_t reserved_16_31        : 16;
5920         uint64_t pn                    : 16; /**< [ 15:  0](RO) The flat processor number value for the core. */
5921 #else /* Word 0 - Little Endian */
5922         uint64_t pn                    : 16; /**< [ 15:  0](RO) The flat processor number value for the core. */
5923         uint64_t reserved_16_31        : 16;
5924         uint64_t clu                   : 8;  /**< [ 39: 32](RO) The cluster this core resides in. */
5925         uint64_t reserved_40_63        : 24;
5926 #endif /* Word 0 - End */
5927     } s;
5928     /* struct bdk_ap_cvm_pn_el1_s cn; */
5929 };
5930 typedef union bdk_ap_cvm_pn_el1 bdk_ap_cvm_pn_el1_t;
5931 
5932 #define BDK_AP_CVM_PN_EL1 BDK_AP_CVM_PN_EL1_FUNC()
5933 static inline uint64_t BDK_AP_CVM_PN_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_PN_EL1_FUNC(void)5934 static inline uint64_t BDK_AP_CVM_PN_EL1_FUNC(void)
5935 {
5936     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
5937         return 0x3000b040200ll;
5938     __bdk_csr_fatal("AP_CVM_PN_EL1", 0, 0, 0, 0, 0);
5939 }
5940 
5941 #define typedef_BDK_AP_CVM_PN_EL1 bdk_ap_cvm_pn_el1_t
5942 #define bustype_BDK_AP_CVM_PN_EL1 BDK_CSR_TYPE_SYSREG
5943 #define basename_BDK_AP_CVM_PN_EL1 "AP_CVM_PN_EL1"
5944 #define busnum_BDK_AP_CVM_PN_EL1 0
5945 #define arguments_BDK_AP_CVM_PN_EL1 -1,-1,-1,-1
5946 
5947 /**
5948  * Register (SYSREG) ap_cvm_power_el1
5949  *
5950  * AP Cavium Power Control Register
5951  * This register controls power management.
5952  */
5953 union bdk_ap_cvm_power_el1
5954 {
5955     uint64_t u;
5956     struct bdk_ap_cvm_power_el1_s
5957     {
5958 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5959         uint64_t maxpow                : 8;  /**< [ 63: 56](R/W) Reserved.
5960                                                                  Internal:
5961                                                                  Maximum power. */
5962         uint64_t average_power         : 8;  /**< [ 55: 48](R/W) Average power.
5963                                                                  Time-averaged dynamic-power estimate for this core, in mA/GHz.
5964                                                                  An approximation of this core's power is calculated with:
5965 
5966                                                                    _ core_power = core_const * core_powered_on + [AVERAGE_POWER] * voltage * freq.
5967 
5968                                                                  Where:
5969 
5970                                                                  _ core_power is in mW.
5971 
5972                                                                  _ core_const is a per-core constant leakage from the HRM power application note, and is in
5973                                                                  mA.
5974 
5975                                                                  _ core_powered_on is a boolean indicating power applied, from RST_PP_POWER\<core_number\>.
5976 
5977                                                                  _ voltage is determined by the platform, perhaps by reading a VRM setting.
5978 
5979                                                                  _ freq is in GHz and is from RST_BOOT[C_MUL] * 0.050, assuming standard 50 MHz ref-clock. */
5980         uint64_t current_setting       : 8;  /**< [ 47: 40](R/W) Reserved.
5981                                                                  Internal:
5982                                                                  Current setting. */
5983         uint64_t hrm_adjustment        : 8;  /**< [ 39: 32](R/W) Reserved.
5984                                                                  Internal:
5985                                                                  HRM adjustment. */
5986         uint64_t reserved_29_31        : 3;
5987         uint64_t override              : 1;  /**< [ 28: 28](R/W) Reserved.
5988                                                                  Internal:
5989                                                                  Override. */
5990         uint64_t disable_stagger       : 1;  /**< [ 27: 27](R/W) Reserved.
5991                                                                  Internal:
5992                                                                  Disable stagger. */
5993         uint64_t period                : 3;  /**< [ 26: 24](R/W) Reserved.
5994                                                                  Internal:
5995                                                                  Period. */
5996         uint64_t powlim                : 8;  /**< [ 23: 16](R/W) Reserved.
5997                                                                  Internal:
5998                                                                  Power limit. */
5999         uint64_t max_setting           : 8;  /**< [ 15:  8](R/W) Reserved.
6000                                                                  Internal:
6001                                                                  Maximum setting. */
6002         uint64_t min_setting           : 8;  /**< [  7:  0](R/W) Reserved.
6003                                                                  Internal:
6004                                                                  Minimum setting. */
6005 #else /* Word 0 - Little Endian */
6006         uint64_t min_setting           : 8;  /**< [  7:  0](R/W) Reserved.
6007                                                                  Internal:
6008                                                                  Minimum setting. */
6009         uint64_t max_setting           : 8;  /**< [ 15:  8](R/W) Reserved.
6010                                                                  Internal:
6011                                                                  Maximum setting. */
6012         uint64_t powlim                : 8;  /**< [ 23: 16](R/W) Reserved.
6013                                                                  Internal:
6014                                                                  Power limit. */
6015         uint64_t period                : 3;  /**< [ 26: 24](R/W) Reserved.
6016                                                                  Internal:
6017                                                                  Period. */
6018         uint64_t disable_stagger       : 1;  /**< [ 27: 27](R/W) Reserved.
6019                                                                  Internal:
6020                                                                  Disable stagger. */
6021         uint64_t override              : 1;  /**< [ 28: 28](R/W) Reserved.
6022                                                                  Internal:
6023                                                                  Override. */
6024         uint64_t reserved_29_31        : 3;
6025         uint64_t hrm_adjustment        : 8;  /**< [ 39: 32](R/W) Reserved.
6026                                                                  Internal:
6027                                                                  HRM adjustment. */
6028         uint64_t current_setting       : 8;  /**< [ 47: 40](R/W) Reserved.
6029                                                                  Internal:
6030                                                                  Current setting. */
6031         uint64_t average_power         : 8;  /**< [ 55: 48](R/W) Average power.
6032                                                                  Time-averaged dynamic-power estimate for this core, in mA/GHz.
6033                                                                  An approximation of this core's power is calculated with:
6034 
6035                                                                    _ core_power = core_const * core_powered_on + [AVERAGE_POWER] * voltage * freq.
6036 
6037                                                                  Where:
6038 
6039                                                                  _ core_power is in mW.
6040 
6041                                                                  _ core_const is a per-core constant leakage from the HRM power application note, and is in
6042                                                                  mA.
6043 
6044                                                                  _ core_powered_on is a boolean indicating power applied, from RST_PP_POWER\<core_number\>.
6045 
6046                                                                  _ voltage is determined by the platform, perhaps by reading a VRM setting.
6047 
6048                                                                  _ freq is in GHz and is from RST_BOOT[C_MUL] * 0.050, assuming standard 50 MHz ref-clock. */
6049         uint64_t maxpow                : 8;  /**< [ 63: 56](R/W) Reserved.
6050                                                                  Internal:
6051                                                                  Maximum power. */
6052 #endif /* Word 0 - End */
6053     } s;
6054     /* struct bdk_ap_cvm_power_el1_s cn8; */
6055     struct bdk_ap_cvm_power_el1_cn9
6056     {
6057 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6058         uint64_t maxpow                : 8;  /**< [ 63: 56](R/W) Reserved.
6059                                                                  Internal:
6060                                                                  Maximum power. */
6061         uint64_t average_power         : 8;  /**< [ 55: 48](R/W) Average power.
6062                                                                  Time-averaged dynamic-power estimate for this core, in mA/GHz.
6063                                                                  An approximation of this core's power is calculated with:
6064 
6065                                                                    _ core_power = core_const * core_powered_on + [AVERAGE_POWER] * voltage * freq.
6066 
6067                                                                  Where:
6068 
6069                                                                  _ core_power is in mW.
6070 
6071                                                                  _ core_const is a per-core constant leakage from the HRM power application note, and is in
6072                                                                  mA.
6073 
6074                                                                  _ core_powered_on is a boolean indicating power applied, from RST_PP_POWER\<core_number\>.
6075 
6076                                                                  _ voltage is determined by the platform, perhaps by reading a AVS setting.
6077 
6078                                                                  _ freq is in GHz and is from RST_BOOT[C_MUL] * 0.050, assuming standard 50 MHz ref-clock. */
6079         uint64_t current_setting       : 8;  /**< [ 47: 40](R/W) Reserved.
6080                                                                  Internal:
6081                                                                  Current setting. */
6082         uint64_t hrm_adjustment        : 8;  /**< [ 39: 32](R/W) Reserved.
6083                                                                  Internal:
6084                                                                  HRM adjustment. */
6085         uint64_t reserved_29_31        : 3;
6086         uint64_t override              : 1;  /**< [ 28: 28](R/W) Reserved.
6087                                                                  Internal:
6088                                                                  Override. */
6089         uint64_t disable_stagger       : 1;  /**< [ 27: 27](R/W) Reserved.
6090                                                                  Internal:
6091                                                                  Disable stagger. */
6092         uint64_t period                : 3;  /**< [ 26: 24](R/W) Reserved.
6093                                                                  Internal:
6094                                                                  Period. */
6095         uint64_t powlim                : 8;  /**< [ 23: 16](R/W) Reserved.
6096                                                                  Internal:
6097                                                                  Power limit. */
6098         uint64_t max_setting           : 8;  /**< [ 15:  8](R/W) Reserved.
6099                                                                  Internal:
6100                                                                  Maximum setting. */
6101         uint64_t min_setting           : 8;  /**< [  7:  0](R/W) Reserved.
6102                                                                  Internal:
6103                                                                  Minimum setting. */
6104 #else /* Word 0 - Little Endian */
6105         uint64_t min_setting           : 8;  /**< [  7:  0](R/W) Reserved.
6106                                                                  Internal:
6107                                                                  Minimum setting. */
6108         uint64_t max_setting           : 8;  /**< [ 15:  8](R/W) Reserved.
6109                                                                  Internal:
6110                                                                  Maximum setting. */
6111         uint64_t powlim                : 8;  /**< [ 23: 16](R/W) Reserved.
6112                                                                  Internal:
6113                                                                  Power limit. */
6114         uint64_t period                : 3;  /**< [ 26: 24](R/W) Reserved.
6115                                                                  Internal:
6116                                                                  Period. */
6117         uint64_t disable_stagger       : 1;  /**< [ 27: 27](R/W) Reserved.
6118                                                                  Internal:
6119                                                                  Disable stagger. */
6120         uint64_t override              : 1;  /**< [ 28: 28](R/W) Reserved.
6121                                                                  Internal:
6122                                                                  Override. */
6123         uint64_t reserved_29_31        : 3;
6124         uint64_t hrm_adjustment        : 8;  /**< [ 39: 32](R/W) Reserved.
6125                                                                  Internal:
6126                                                                  HRM adjustment. */
6127         uint64_t current_setting       : 8;  /**< [ 47: 40](R/W) Reserved.
6128                                                                  Internal:
6129                                                                  Current setting. */
6130         uint64_t average_power         : 8;  /**< [ 55: 48](R/W) Average power.
6131                                                                  Time-averaged dynamic-power estimate for this core, in mA/GHz.
6132                                                                  An approximation of this core's power is calculated with:
6133 
6134                                                                    _ core_power = core_const * core_powered_on + [AVERAGE_POWER] * voltage * freq.
6135 
6136                                                                  Where:
6137 
6138                                                                  _ core_power is in mW.
6139 
6140                                                                  _ core_const is a per-core constant leakage from the HRM power application note, and is in
6141                                                                  mA.
6142 
6143                                                                  _ core_powered_on is a boolean indicating power applied, from RST_PP_POWER\<core_number\>.
6144 
6145                                                                  _ voltage is determined by the platform, perhaps by reading a AVS setting.
6146 
6147                                                                  _ freq is in GHz and is from RST_BOOT[C_MUL] * 0.050, assuming standard 50 MHz ref-clock. */
6148         uint64_t maxpow                : 8;  /**< [ 63: 56](R/W) Reserved.
6149                                                                  Internal:
6150                                                                  Maximum power. */
6151 #endif /* Word 0 - End */
6152     } cn9;
6153 };
6154 typedef union bdk_ap_cvm_power_el1 bdk_ap_cvm_power_el1_t;
6155 
6156 #define BDK_AP_CVM_POWER_EL1 BDK_AP_CVM_POWER_EL1_FUNC()
6157 static inline uint64_t BDK_AP_CVM_POWER_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_POWER_EL1_FUNC(void)6158 static inline uint64_t BDK_AP_CVM_POWER_EL1_FUNC(void)
6159 {
6160     return 0x3000b000200ll;
6161 }
6162 
6163 #define typedef_BDK_AP_CVM_POWER_EL1 bdk_ap_cvm_power_el1_t
6164 #define bustype_BDK_AP_CVM_POWER_EL1 BDK_CSR_TYPE_SYSREG
6165 #define basename_BDK_AP_CVM_POWER_EL1 "AP_CVM_POWER_EL1"
6166 #define busnum_BDK_AP_CVM_POWER_EL1 0
6167 #define arguments_BDK_AP_CVM_POWER_EL1 -1,-1,-1,-1
6168 
6169 /**
6170  * Register (SYSREG) ap_cvm_scratch#_el1
6171  *
6172  * AP Cavium Scratchpad Register
6173  * This register provides aid to post silicon debug as a scratchpad for software.
6174  */
6175 union bdk_ap_cvm_scratchx_el1
6176 {
6177     uint64_t u;
6178     struct bdk_ap_cvm_scratchx_el1_s
6179     {
6180 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6181         uint64_t data                  : 64; /**< [ 63:  0](R/W) Scratch. */
6182 #else /* Word 0 - Little Endian */
6183         uint64_t data                  : 64; /**< [ 63:  0](R/W) Scratch. */
6184 #endif /* Word 0 - End */
6185     } s;
6186     /* struct bdk_ap_cvm_scratchx_el1_s cn; */
6187 };
6188 typedef union bdk_ap_cvm_scratchx_el1 bdk_ap_cvm_scratchx_el1_t;
6189 
6190 static inline uint64_t BDK_AP_CVM_SCRATCHX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_CVM_SCRATCHX_EL1(unsigned long a)6191 static inline uint64_t BDK_AP_CVM_SCRATCHX_EL1(unsigned long a)
6192 {
6193     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
6194         return 0x3000b050000ll + 0x100ll * ((a) & 0x3);
6195     __bdk_csr_fatal("AP_CVM_SCRATCHX_EL1", 1, a, 0, 0, 0);
6196 }
6197 
6198 #define typedef_BDK_AP_CVM_SCRATCHX_EL1(a) bdk_ap_cvm_scratchx_el1_t
6199 #define bustype_BDK_AP_CVM_SCRATCHX_EL1(a) BDK_CSR_TYPE_SYSREG
6200 #define basename_BDK_AP_CVM_SCRATCHX_EL1(a) "AP_CVM_SCRATCHX_EL1"
6201 #define busnum_BDK_AP_CVM_SCRATCHX_EL1(a) (a)
6202 #define arguments_BDK_AP_CVM_SCRATCHX_EL1(a) (a),-1,-1,-1
6203 
6204 /**
6205  * Register (SYSREG) ap_cvm_statprofcmp_el1
6206  *
6207  * AP Cavium Statistical Profiling Comparator Value Register
6208  */
6209 union bdk_ap_cvm_statprofcmp_el1
6210 {
6211     uint64_t u;
6212     struct bdk_ap_cvm_statprofcmp_el1_s
6213     {
6214 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6215         uint64_t cmp_val               : 64; /**< [ 63:  0](R/W) When enabled (AP_CVM_STATPROFCTL_EL1[DIR_SAMPLE]=1), this register provides
6216                                                                  the value of the address or op-code and mask to be used in directed sample mode.
6217                                                                  The compare mode is indicated by AP_CVM_STATPROFCTL_EL1.OC_PC */
6218 #else /* Word 0 - Little Endian */
6219         uint64_t cmp_val               : 64; /**< [ 63:  0](R/W) When enabled (AP_CVM_STATPROFCTL_EL1[DIR_SAMPLE]=1), this register provides
6220                                                                  the value of the address or op-code and mask to be used in directed sample mode.
6221                                                                  The compare mode is indicated by AP_CVM_STATPROFCTL_EL1.OC_PC */
6222 #endif /* Word 0 - End */
6223     } s;
6224     /* struct bdk_ap_cvm_statprofcmp_el1_s cn; */
6225 };
6226 typedef union bdk_ap_cvm_statprofcmp_el1 bdk_ap_cvm_statprofcmp_el1_t;
6227 
6228 #define BDK_AP_CVM_STATPROFCMP_EL1 BDK_AP_CVM_STATPROFCMP_EL1_FUNC()
6229 static inline uint64_t BDK_AP_CVM_STATPROFCMP_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_STATPROFCMP_EL1_FUNC(void)6230 static inline uint64_t BDK_AP_CVM_STATPROFCMP_EL1_FUNC(void)
6231 {
6232     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
6233         return 0x3000b040100ll;
6234     __bdk_csr_fatal("AP_CVM_STATPROFCMP_EL1", 0, 0, 0, 0, 0);
6235 }
6236 
6237 #define typedef_BDK_AP_CVM_STATPROFCMP_EL1 bdk_ap_cvm_statprofcmp_el1_t
6238 #define bustype_BDK_AP_CVM_STATPROFCMP_EL1 BDK_CSR_TYPE_SYSREG
6239 #define basename_BDK_AP_CVM_STATPROFCMP_EL1 "AP_CVM_STATPROFCMP_EL1"
6240 #define busnum_BDK_AP_CVM_STATPROFCMP_EL1 0
6241 #define arguments_BDK_AP_CVM_STATPROFCMP_EL1 -1,-1,-1,-1
6242 
6243 /**
6244  * Register (SYSREG) ap_cvm_statprofctl_el1
6245  *
6246  * AP Cavium Statistical Profiling Configuration Register
6247  */
6248 union bdk_ap_cvm_statprofctl_el1
6249 {
6250     uint64_t u;
6251     struct bdk_ap_cvm_statprofctl_el1_s
6252     {
6253 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6254         uint64_t reserved_6_63         : 58;
6255         uint64_t el                    : 3;  /**< [  5:  3](R/W) When in directed sample mode, indicates whether the instruction matching
6256                                                                  logic includes a comparison of the EL of the target instruction.
6257                                                                  0x0 = Do not include an EL compare.
6258                                                                  0x4 = Instruction match if value match and instruction EL=0.
6259                                                                  0x5 = Instruction match if value match and instruction EL=1.
6260                                                                  0x6 = Instruction match if value match and instruction EL=2.
6261                                                                  0x7 = Instruction match if value match and instruction EL=3. */
6262         uint64_t oc_pc                 : 1;  /**< [  2:  2](R/W) When in directed sample mode, indicates whether the instruction to be
6263                                                                  sample is found by matching the PC or the OpCode.
6264                                                                  0 = Comparator matches AP_CVM_STATPROFCMP_EL1[52:2] against instruction PC.
6265                                                                  1 = Comparator matches AP_CVM_STATPROFCMP_EL1[31:0] against instruction opcode
6266                                                                     with bits enabled for comparison with a corresponding 1 in AP_CVM_STATPROFCMP_EL1[63:32]. */
6267         uint64_t dir_sample            : 1;  /**< [  1:  1](R/W) When set, replaces statistical profile's random sample selection logic
6268                                                                  with the output of the instruction and/or address comparators from the
6269                                                                  trace logic. This provides the ability to profile a specific instruction.
6270                                                                  Note that this feature will not function if trace is enabled. */
6271         uint64_t ernd                  : 1;  /**< [  0:  0](R/W) Provides the value for AP_PMSIDR_EL1[ERND]. This field describes how
6272                                                                  randomization is used in selecting the sample. See AP_PMSIDR_EL1[ERND]. */
6273 #else /* Word 0 - Little Endian */
6274         uint64_t ernd                  : 1;  /**< [  0:  0](R/W) Provides the value for AP_PMSIDR_EL1[ERND]. This field describes how
6275                                                                  randomization is used in selecting the sample. See AP_PMSIDR_EL1[ERND]. */
6276         uint64_t dir_sample            : 1;  /**< [  1:  1](R/W) When set, replaces statistical profile's random sample selection logic
6277                                                                  with the output of the instruction and/or address comparators from the
6278                                                                  trace logic. This provides the ability to profile a specific instruction.
6279                                                                  Note that this feature will not function if trace is enabled. */
6280         uint64_t oc_pc                 : 1;  /**< [  2:  2](R/W) When in directed sample mode, indicates whether the instruction to be
6281                                                                  sample is found by matching the PC or the OpCode.
6282                                                                  0 = Comparator matches AP_CVM_STATPROFCMP_EL1[52:2] against instruction PC.
6283                                                                  1 = Comparator matches AP_CVM_STATPROFCMP_EL1[31:0] against instruction opcode
6284                                                                     with bits enabled for comparison with a corresponding 1 in AP_CVM_STATPROFCMP_EL1[63:32]. */
6285         uint64_t el                    : 3;  /**< [  5:  3](R/W) When in directed sample mode, indicates whether the instruction matching
6286                                                                  logic includes a comparison of the EL of the target instruction.
6287                                                                  0x0 = Do not include an EL compare.
6288                                                                  0x4 = Instruction match if value match and instruction EL=0.
6289                                                                  0x5 = Instruction match if value match and instruction EL=1.
6290                                                                  0x6 = Instruction match if value match and instruction EL=2.
6291                                                                  0x7 = Instruction match if value match and instruction EL=3. */
6292         uint64_t reserved_6_63         : 58;
6293 #endif /* Word 0 - End */
6294     } s;
6295     /* struct bdk_ap_cvm_statprofctl_el1_s cn; */
6296 };
6297 typedef union bdk_ap_cvm_statprofctl_el1 bdk_ap_cvm_statprofctl_el1_t;
6298 
6299 #define BDK_AP_CVM_STATPROFCTL_EL1 BDK_AP_CVM_STATPROFCTL_EL1_FUNC()
6300 static inline uint64_t BDK_AP_CVM_STATPROFCTL_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_STATPROFCTL_EL1_FUNC(void)6301 static inline uint64_t BDK_AP_CVM_STATPROFCTL_EL1_FUNC(void)
6302 {
6303     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
6304         return 0x3000b040000ll;
6305     __bdk_csr_fatal("AP_CVM_STATPROFCTL_EL1", 0, 0, 0, 0, 0);
6306 }
6307 
6308 #define typedef_BDK_AP_CVM_STATPROFCTL_EL1 bdk_ap_cvm_statprofctl_el1_t
6309 #define bustype_BDK_AP_CVM_STATPROFCTL_EL1 BDK_CSR_TYPE_SYSREG
6310 #define basename_BDK_AP_CVM_STATPROFCTL_EL1 "AP_CVM_STATPROFCTL_EL1"
6311 #define busnum_BDK_AP_CVM_STATPROFCTL_EL1 0
6312 #define arguments_BDK_AP_CVM_STATPROFCTL_EL1 -1,-1,-1,-1
6313 
6314 /**
6315  * Register (SYSREG) ap_cvm_trapaddr#_el3
6316  *
6317  * AP Cavium Trap Address Register
6318  * This register provides ternary match bits for physical address traps.
6319  *
6320  * Usage Constraints:
6321  *   This register is R/W at EL3.
6322  *
6323  * Traps and Enables:
6324  *   There are no traps nor enables affecting this register.
6325  *
6326  * Configurations:
6327  *   R/W fields in this register reset to IMPLEMENTATION DEFINED values that might be UNKNOWN.
6328  *   Cavium implementations will reset to 0x0.
6329  */
6330 union bdk_ap_cvm_trapaddrx_el3
6331 {
6332     uint64_t u;
6333     struct bdk_ap_cvm_trapaddrx_el3_s
6334     {
6335 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6336         uint64_t stld                  : 2;  /**< [ 63: 62](R/W) 0x0 = Don't match (though redundant with enable bits in AP_CVM_TRAPCTL()_EL3).
6337                                                                  0x1 = Match load.
6338                                                                  0x2 = Match store.
6339                                                                  0x3 = Match load and store. */
6340         uint64_t reserved_52_61        : 10;
6341         uint64_t pa                    : 45; /**< [ 51:  7](R/W) Physical address match bits \<51:7\>. */
6342         uint64_t reserved_0_6          : 7;
6343 #else /* Word 0 - Little Endian */
6344         uint64_t reserved_0_6          : 7;
6345         uint64_t pa                    : 45; /**< [ 51:  7](R/W) Physical address match bits \<51:7\>. */
6346         uint64_t reserved_52_61        : 10;
6347         uint64_t stld                  : 2;  /**< [ 63: 62](R/W) 0x0 = Don't match (though redundant with enable bits in AP_CVM_TRAPCTL()_EL3).
6348                                                                  0x1 = Match load.
6349                                                                  0x2 = Match store.
6350                                                                  0x3 = Match load and store. */
6351 #endif /* Word 0 - End */
6352     } s;
6353     /* struct bdk_ap_cvm_trapaddrx_el3_s cn; */
6354 };
6355 typedef union bdk_ap_cvm_trapaddrx_el3 bdk_ap_cvm_trapaddrx_el3_t;
6356 
6357 static inline uint64_t BDK_AP_CVM_TRAPADDRX_EL3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_CVM_TRAPADDRX_EL3(unsigned long a)6358 static inline uint64_t BDK_AP_CVM_TRAPADDRX_EL3(unsigned long a)
6359 {
6360     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a>=4)&&(a<=7)))
6361         return 0x3060b070000ll + 0x100ll * ((a) & 0x7);
6362     __bdk_csr_fatal("AP_CVM_TRAPADDRX_EL3", 1, a, 0, 0, 0);
6363 }
6364 
6365 #define typedef_BDK_AP_CVM_TRAPADDRX_EL3(a) bdk_ap_cvm_trapaddrx_el3_t
6366 #define bustype_BDK_AP_CVM_TRAPADDRX_EL3(a) BDK_CSR_TYPE_SYSREG
6367 #define basename_BDK_AP_CVM_TRAPADDRX_EL3(a) "AP_CVM_TRAPADDRX_EL3"
6368 #define busnum_BDK_AP_CVM_TRAPADDRX_EL3(a) (a)
6369 #define arguments_BDK_AP_CVM_TRAPADDRX_EL3(a) (a),-1,-1,-1
6370 
6371 /**
6372  * Register (SYSREG) ap_cvm_trapaddrena#_el3
6373  *
6374  * AP Cavium Trap Address Enable Register
6375  * This register provides ternary enable bits for physical address traps.
6376  *
6377  * Usage Constraints:
6378  *   This register is R/W at EL3.
6379  *
6380  * Traps and Enables:
6381  *   There are no traps nor enables affecting this register.
6382  *
6383  * Configurations:
6384  *   R/W fields in this register reset to IMPLEMENTATION DEFINED values that might be UNKNOWN.
6385  *   Cavium implementations will reset to 0x0.
6386  */
6387 union bdk_ap_cvm_trapaddrenax_el3
6388 {
6389     uint64_t u;
6390     struct bdk_ap_cvm_trapaddrenax_el3_s
6391     {
6392 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6393         uint64_t reserved_52_63        : 12;
6394         uint64_t pa_ena                : 45; /**< [ 51:  7](R/W) Physical address match enable bits \<51:7\>. */
6395         uint64_t reserved_0_6          : 7;
6396 #else /* Word 0 - Little Endian */
6397         uint64_t reserved_0_6          : 7;
6398         uint64_t pa_ena                : 45; /**< [ 51:  7](R/W) Physical address match enable bits \<51:7\>. */
6399         uint64_t reserved_52_63        : 12;
6400 #endif /* Word 0 - End */
6401     } s;
6402     /* struct bdk_ap_cvm_trapaddrenax_el3_s cn; */
6403 };
6404 typedef union bdk_ap_cvm_trapaddrenax_el3 bdk_ap_cvm_trapaddrenax_el3_t;
6405 
6406 static inline uint64_t BDK_AP_CVM_TRAPADDRENAX_EL3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_CVM_TRAPADDRENAX_EL3(unsigned long a)6407 static inline uint64_t BDK_AP_CVM_TRAPADDRENAX_EL3(unsigned long a)
6408 {
6409     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a>=4)&&(a<=7)))
6410         return 0x3060b090000ll + 0x100ll * ((a) & 0x7);
6411     __bdk_csr_fatal("AP_CVM_TRAPADDRENAX_EL3", 1, a, 0, 0, 0);
6412 }
6413 
6414 #define typedef_BDK_AP_CVM_TRAPADDRENAX_EL3(a) bdk_ap_cvm_trapaddrenax_el3_t
6415 #define bustype_BDK_AP_CVM_TRAPADDRENAX_EL3(a) BDK_CSR_TYPE_SYSREG
6416 #define basename_BDK_AP_CVM_TRAPADDRENAX_EL3(a) "AP_CVM_TRAPADDRENAX_EL3"
6417 #define busnum_BDK_AP_CVM_TRAPADDRENAX_EL3(a) (a)
6418 #define arguments_BDK_AP_CVM_TRAPADDRENAX_EL3(a) (a),-1,-1,-1
6419 
6420 /**
6421  * Register (SYSREG) ap_cvm_trapctl#_el3
6422  *
6423  * AP Cavium Trap Control Register
6424  * This register provides control and identification of the Cavium physical address and
6425  * instruction trap functionality. There are eight of these registers. Registers zero
6426  * through three apply to the instruction matchers and registers four through seven apply
6427  * to the address matchers.
6428  *
6429  * Usage Constraints:
6430  *   This register is R/W at EL3.
6431  *
6432  * Traps and Enables:
6433  *   There are no traps nor enables affecting this register.
6434  *
6435  * Configurations:
6436  *   R/W fields in this register reset to IMPLEMENTATION DEFINED values that might be UNKNOWN.
6437  *   Cavium implementations will reset to 0x0.
6438  */
6439 union bdk_ap_cvm_trapctlx_el3
6440 {
6441     uint64_t u;
6442     struct bdk_ap_cvm_trapctlx_el3_s
6443     {
6444 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6445         uint64_t reserved_37_63        : 27;
6446         uint64_t el2                   : 1;  /**< [ 36: 36](R/W) Trap accesses from EL2. */
6447         uint64_t el1ns                 : 1;  /**< [ 35: 35](R/W) Trap accesses from EL1NS. */
6448         uint64_t el1s                  : 1;  /**< [ 34: 34](R/W) Trap accesses from EL1S. */
6449         uint64_t el0ns                 : 1;  /**< [ 33: 33](R/W) Trap accesses from EL0NS. */
6450         uint64_t el0s                  : 1;  /**< [ 32: 32](R/W) Trap accesses from EL0S. */
6451         uint64_t reserved_8_31         : 24;
6452         uint64_t action                : 4;  /**< [  7:  4](R/W) Trap action:
6453                                                                    0x0 = Trap to EL3 on a match.
6454                                                                    0x1 = Flush the instruction pipeline and reissue instruction. For instruction matches
6455                                                                  only, otherwise UNPREDICTABLE.
6456                                                                    0x2-0xF = Reserved. */
6457         uint64_t mtype                 : 3;  /**< [  3:  1](R/W) Read-only. Typs of matcher for software capability discovery:
6458                                                                    0x0 = Not present.
6459                                                                    0x1 = Physical address matcher. This value is advertised in indices 4..7.
6460                                                                    0x2 = Instruction matcher. This value is advertised in indices 0..3. */
6461         uint64_t ena                   : 1;  /**< [  0:  0](R/W) Enable. */
6462 #else /* Word 0 - Little Endian */
6463         uint64_t ena                   : 1;  /**< [  0:  0](R/W) Enable. */
6464         uint64_t mtype                 : 3;  /**< [  3:  1](R/W) Read-only. Typs of matcher for software capability discovery:
6465                                                                    0x0 = Not present.
6466                                                                    0x1 = Physical address matcher. This value is advertised in indices 4..7.
6467                                                                    0x2 = Instruction matcher. This value is advertised in indices 0..3. */
6468         uint64_t action                : 4;  /**< [  7:  4](R/W) Trap action:
6469                                                                    0x0 = Trap to EL3 on a match.
6470                                                                    0x1 = Flush the instruction pipeline and reissue instruction. For instruction matches
6471                                                                  only, otherwise UNPREDICTABLE.
6472                                                                    0x2-0xF = Reserved. */
6473         uint64_t reserved_8_31         : 24;
6474         uint64_t el0s                  : 1;  /**< [ 32: 32](R/W) Trap accesses from EL0S. */
6475         uint64_t el0ns                 : 1;  /**< [ 33: 33](R/W) Trap accesses from EL0NS. */
6476         uint64_t el1s                  : 1;  /**< [ 34: 34](R/W) Trap accesses from EL1S. */
6477         uint64_t el1ns                 : 1;  /**< [ 35: 35](R/W) Trap accesses from EL1NS. */
6478         uint64_t el2                   : 1;  /**< [ 36: 36](R/W) Trap accesses from EL2. */
6479         uint64_t reserved_37_63        : 27;
6480 #endif /* Word 0 - End */
6481     } s;
6482     /* struct bdk_ap_cvm_trapctlx_el3_s cn; */
6483 };
6484 typedef union bdk_ap_cvm_trapctlx_el3 bdk_ap_cvm_trapctlx_el3_t;
6485 
6486 static inline uint64_t BDK_AP_CVM_TRAPCTLX_EL3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_CVM_TRAPCTLX_EL3(unsigned long a)6487 static inline uint64_t BDK_AP_CVM_TRAPCTLX_EL3(unsigned long a)
6488 {
6489     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=7))
6490         return 0x3060b080000ll + 0x100ll * ((a) & 0x7);
6491     __bdk_csr_fatal("AP_CVM_TRAPCTLX_EL3", 1, a, 0, 0, 0);
6492 }
6493 
6494 #define typedef_BDK_AP_CVM_TRAPCTLX_EL3(a) bdk_ap_cvm_trapctlx_el3_t
6495 #define bustype_BDK_AP_CVM_TRAPCTLX_EL3(a) BDK_CSR_TYPE_SYSREG
6496 #define basename_BDK_AP_CVM_TRAPCTLX_EL3(a) "AP_CVM_TRAPCTLX_EL3"
6497 #define busnum_BDK_AP_CVM_TRAPCTLX_EL3(a) (a)
6498 #define arguments_BDK_AP_CVM_TRAPCTLX_EL3(a) (a),-1,-1,-1
6499 
6500 /**
6501  * Register (SYSREG) ap_cvm_trapinsn#_el3
6502  *
6503  * AP Cavium Trap Instructions Register
6504  * This register provides ternary match and enable bits for instruction word traps.
6505  *
6506  * Usage Constraints:
6507  *   This register is R/W at EL3.
6508  *
6509  * Traps and Enables:
6510  *   There are no traps nor enables affecting this register.
6511  *
6512  * Configurations:
6513  *   R/W fields in this register reset to IMPLEMENTATION DEFINED values that might be UNKNOWN.
6514  *   Cavium implementations will reset to 0x0.
6515  */
6516 union bdk_ap_cvm_trapinsnx_el3
6517 {
6518     uint64_t u;
6519     struct bdk_ap_cvm_trapinsnx_el3_s
6520     {
6521 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6522         uint64_t insn_ena              : 32; /**< [ 63: 32](R/W) Instruction match bits. */
6523         uint64_t insn                  : 32; /**< [ 31:  0](R/W) Instruction match enable bits. */
6524 #else /* Word 0 - Little Endian */
6525         uint64_t insn                  : 32; /**< [ 31:  0](R/W) Instruction match enable bits. */
6526         uint64_t insn_ena              : 32; /**< [ 63: 32](R/W) Instruction match bits. */
6527 #endif /* Word 0 - End */
6528     } s;
6529     /* struct bdk_ap_cvm_trapinsnx_el3_s cn; */
6530 };
6531 typedef union bdk_ap_cvm_trapinsnx_el3 bdk_ap_cvm_trapinsnx_el3_t;
6532 
6533 static inline uint64_t BDK_AP_CVM_TRAPINSNX_EL3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_CVM_TRAPINSNX_EL3(unsigned long a)6534 static inline uint64_t BDK_AP_CVM_TRAPINSNX_EL3(unsigned long a)
6535 {
6536     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
6537         return 0x3060b090000ll + 0x100ll * ((a) & 0x3);
6538     __bdk_csr_fatal("AP_CVM_TRAPINSNX_EL3", 1, a, 0, 0, 0);
6539 }
6540 
6541 #define typedef_BDK_AP_CVM_TRAPINSNX_EL3(a) bdk_ap_cvm_trapinsnx_el3_t
6542 #define bustype_BDK_AP_CVM_TRAPINSNX_EL3(a) BDK_CSR_TYPE_SYSREG
6543 #define basename_BDK_AP_CVM_TRAPINSNX_EL3(a) "AP_CVM_TRAPINSNX_EL3"
6544 #define busnum_BDK_AP_CVM_TRAPINSNX_EL3(a) (a)
6545 #define arguments_BDK_AP_CVM_TRAPINSNX_EL3(a) (a),-1,-1,-1
6546 
6547 /**
6548  * Register (SYSREG) ap_cvm_trapopc_el3
6549  *
6550  * AP Cavium Trap Exception Opcode Register
6551  * This register stores syndrome information on a trap fault.
6552  *
6553  * Usage Constraints:
6554  *   This register is R/W at EL3.
6555  * Traps and Enables:
6556  *   There are no traps nor enables affecting this register.
6557  * Configurations:
6558  *   RW fields in this register reset to IMPLEMENTATION DEFINED values that might be UNKNOWN.
6559  *   Cavium implementations will reset to 0x0.
6560  */
6561 union bdk_ap_cvm_trapopc_el3
6562 {
6563     uint64_t u;
6564     struct bdk_ap_cvm_trapopc_el3_s
6565     {
6566 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6567         uint64_t reserved_37_63        : 27;
6568         uint64_t regset                : 5;  /**< [ 36: 32](R/W) Matching register set.
6569                                                                  Values zero through 15 refer to physical address match register sets and values 16-31
6570                                                                  refer to instruction match register sets. */
6571         uint64_t insn                  : 32; /**< [ 31:  0](R/W) Instruction word that caused the fault. */
6572 #else /* Word 0 - Little Endian */
6573         uint64_t insn                  : 32; /**< [ 31:  0](R/W) Instruction word that caused the fault. */
6574         uint64_t regset                : 5;  /**< [ 36: 32](R/W) Matching register set.
6575                                                                  Values zero through 15 refer to physical address match register sets and values 16-31
6576                                                                  refer to instruction match register sets. */
6577         uint64_t reserved_37_63        : 27;
6578 #endif /* Word 0 - End */
6579     } s;
6580     /* struct bdk_ap_cvm_trapopc_el3_s cn; */
6581 };
6582 typedef union bdk_ap_cvm_trapopc_el3 bdk_ap_cvm_trapopc_el3_t;
6583 
6584 #define BDK_AP_CVM_TRAPOPC_EL3 BDK_AP_CVM_TRAPOPC_EL3_FUNC()
6585 static inline uint64_t BDK_AP_CVM_TRAPOPC_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_TRAPOPC_EL3_FUNC(void)6586 static inline uint64_t BDK_AP_CVM_TRAPOPC_EL3_FUNC(void)
6587 {
6588     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
6589         return 0x3060b060100ll;
6590     __bdk_csr_fatal("AP_CVM_TRAPOPC_EL3", 0, 0, 0, 0, 0);
6591 }
6592 
6593 #define typedef_BDK_AP_CVM_TRAPOPC_EL3 bdk_ap_cvm_trapopc_el3_t
6594 #define bustype_BDK_AP_CVM_TRAPOPC_EL3 BDK_CSR_TYPE_SYSREG
6595 #define basename_BDK_AP_CVM_TRAPOPC_EL3 "AP_CVM_TRAPOPC_EL3"
6596 #define busnum_BDK_AP_CVM_TRAPOPC_EL3 0
6597 #define arguments_BDK_AP_CVM_TRAPOPC_EL3 -1,-1,-1,-1
6598 
6599 /**
6600  * Register (SYSREG) ap_cvm_xlatdata0_el1
6601  *
6602  * AP Cavium Translation Data 0 EL1 Register
6603  */
6604 union bdk_ap_cvm_xlatdata0_el1
6605 {
6606     uint64_t u;
6607     struct bdk_ap_cvm_xlatdata0_el1_s
6608     {
6609 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6610         uint64_t par                   : 2;  /**< [ 63: 62](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6611         uint64_t reserved_54_61        : 8;
6612         uint64_t walk                  : 2;  /**< [ 53: 52](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6613         uint64_t ng                    : 1;  /**< [ 51: 51](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6614         uint64_t reserved_50           : 1;
6615         uint64_t nsec                  : 1;  /**< [ 49: 49](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6616         uint64_t reserved_48           : 1;
6617         uint64_t ppn                   : 36; /**< [ 47: 12](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6618         uint64_t reserved_10_11        : 2;
6619         uint64_t sh1                   : 2;  /**< [  9:  8](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6620         uint64_t ap1                   : 2;  /**< [  7:  6](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6621         uint64_t xn1                   : 1;  /**< [  5:  5](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6622         uint64_t pxn1                  : 1;  /**< [  4:  4](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6623         uint64_t attr1                 : 4;  /**< [  3:  0](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6624 #else /* Word 0 - Little Endian */
6625         uint64_t attr1                 : 4;  /**< [  3:  0](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6626         uint64_t pxn1                  : 1;  /**< [  4:  4](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6627         uint64_t xn1                   : 1;  /**< [  5:  5](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6628         uint64_t ap1                   : 2;  /**< [  7:  6](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6629         uint64_t sh1                   : 2;  /**< [  9:  8](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6630         uint64_t reserved_10_11        : 2;
6631         uint64_t ppn                   : 36; /**< [ 47: 12](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6632         uint64_t reserved_48           : 1;
6633         uint64_t nsec                  : 1;  /**< [ 49: 49](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6634         uint64_t reserved_50           : 1;
6635         uint64_t ng                    : 1;  /**< [ 51: 51](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6636         uint64_t walk                  : 2;  /**< [ 53: 52](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6637         uint64_t reserved_54_61        : 8;
6638         uint64_t par                   : 2;  /**< [ 63: 62](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6639 #endif /* Word 0 - End */
6640     } s;
6641     /* struct bdk_ap_cvm_xlatdata0_el1_s cn; */
6642 };
6643 typedef union bdk_ap_cvm_xlatdata0_el1 bdk_ap_cvm_xlatdata0_el1_t;
6644 
6645 #define BDK_AP_CVM_XLATDATA0_EL1 BDK_AP_CVM_XLATDATA0_EL1_FUNC()
6646 static inline uint64_t BDK_AP_CVM_XLATDATA0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_XLATDATA0_EL1_FUNC(void)6647 static inline uint64_t BDK_AP_CVM_XLATDATA0_EL1_FUNC(void)
6648 {
6649     return 0x3000b050400ll;
6650 }
6651 
6652 #define typedef_BDK_AP_CVM_XLATDATA0_EL1 bdk_ap_cvm_xlatdata0_el1_t
6653 #define bustype_BDK_AP_CVM_XLATDATA0_EL1 BDK_CSR_TYPE_SYSREG
6654 #define basename_BDK_AP_CVM_XLATDATA0_EL1 "AP_CVM_XLATDATA0_EL1"
6655 #define busnum_BDK_AP_CVM_XLATDATA0_EL1 0
6656 #define arguments_BDK_AP_CVM_XLATDATA0_EL1 -1,-1,-1,-1
6657 
6658 /**
6659  * Register (SYSREG) ap_cvm_xlatdata1_el1
6660  *
6661  * AP Cavium Translation Data 1 EL1 Register
6662  */
6663 union bdk_ap_cvm_xlatdata1_el1
6664 {
6665     uint64_t u;
6666     struct bdk_ap_cvm_xlatdata1_el1_s
6667     {
6668 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6669         uint64_t reserved_63           : 1;
6670         uint64_t ent2                  : 9;  /**< [ 62: 54](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6671         uint64_t reserved_45_53        : 9;
6672         uint64_t ent1                  : 9;  /**< [ 44: 36](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6673         uint64_t reserved_34_35        : 2;
6674         uint64_t mask                  : 22; /**< [ 33: 12](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6675         uint64_t reserved_10_11        : 2;
6676         uint64_t sh2                   : 2;  /**< [  9:  8](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6677         uint64_t ap2                   : 2;  /**< [  7:  6](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6678         uint64_t xn2                   : 1;  /**< [  5:  5](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6679         uint64_t pxn2                  : 1;  /**< [  4:  4](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6680         uint64_t attr2                 : 4;  /**< [  3:  0](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6681 #else /* Word 0 - Little Endian */
6682         uint64_t attr2                 : 4;  /**< [  3:  0](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6683         uint64_t pxn2                  : 1;  /**< [  4:  4](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6684         uint64_t xn2                   : 1;  /**< [  5:  5](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6685         uint64_t ap2                   : 2;  /**< [  7:  6](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6686         uint64_t sh2                   : 2;  /**< [  9:  8](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6687         uint64_t reserved_10_11        : 2;
6688         uint64_t mask                  : 22; /**< [ 33: 12](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6689         uint64_t reserved_34_35        : 2;
6690         uint64_t ent1                  : 9;  /**< [ 44: 36](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6691         uint64_t reserved_45_53        : 9;
6692         uint64_t ent2                  : 9;  /**< [ 62: 54](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6693         uint64_t reserved_63           : 1;
6694 #endif /* Word 0 - End */
6695     } s;
6696     /* struct bdk_ap_cvm_xlatdata1_el1_s cn; */
6697 };
6698 typedef union bdk_ap_cvm_xlatdata1_el1 bdk_ap_cvm_xlatdata1_el1_t;
6699 
6700 #define BDK_AP_CVM_XLATDATA1_EL1 BDK_AP_CVM_XLATDATA1_EL1_FUNC()
6701 static inline uint64_t BDK_AP_CVM_XLATDATA1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_XLATDATA1_EL1_FUNC(void)6702 static inline uint64_t BDK_AP_CVM_XLATDATA1_EL1_FUNC(void)
6703 {
6704     return 0x3000b050500ll;
6705 }
6706 
6707 #define typedef_BDK_AP_CVM_XLATDATA1_EL1 bdk_ap_cvm_xlatdata1_el1_t
6708 #define bustype_BDK_AP_CVM_XLATDATA1_EL1 BDK_CSR_TYPE_SYSREG
6709 #define basename_BDK_AP_CVM_XLATDATA1_EL1 "AP_CVM_XLATDATA1_EL1"
6710 #define busnum_BDK_AP_CVM_XLATDATA1_EL1 0
6711 #define arguments_BDK_AP_CVM_XLATDATA1_EL1 -1,-1,-1,-1
6712 
6713 /**
6714  * Register (SYSREG) ap_cvm_xlatvtag0_el1
6715  *
6716  * AP Cavium Translation Tag 0 EL1 Register
6717  */
6718 union bdk_ap_cvm_xlatvtag0_el1
6719 {
6720     uint64_t u;
6721     struct bdk_ap_cvm_xlatvtag0_el1_s
6722     {
6723 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6724         uint64_t level                 : 2;  /**< [ 63: 62](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6725         uint64_t eva_asid              : 6;  /**< [ 61: 56](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6726         uint64_t eva_vmid              : 4;  /**< [ 55: 52](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6727         uint64_t ng                    : 1;  /**< [ 51: 51](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6728         uint64_t el_1or0               : 1;  /**< [ 50: 50](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6729         uint64_t nsec                  : 1;  /**< [ 49: 49](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6730         uint64_t r                     : 1;  /**< [ 48: 48](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6731         uint64_t vpn                   : 36; /**< [ 47: 12](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6732         uint64_t reserved_1_11         : 11;
6733         uint64_t val                   : 1;  /**< [  0:  0](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6734 #else /* Word 0 - Little Endian */
6735         uint64_t val                   : 1;  /**< [  0:  0](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6736         uint64_t reserved_1_11         : 11;
6737         uint64_t vpn                   : 36; /**< [ 47: 12](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6738         uint64_t r                     : 1;  /**< [ 48: 48](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6739         uint64_t nsec                  : 1;  /**< [ 49: 49](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6740         uint64_t el_1or0               : 1;  /**< [ 50: 50](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6741         uint64_t ng                    : 1;  /**< [ 51: 51](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6742         uint64_t eva_vmid              : 4;  /**< [ 55: 52](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6743         uint64_t eva_asid              : 6;  /**< [ 61: 56](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6744         uint64_t level                 : 2;  /**< [ 63: 62](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6745 #endif /* Word 0 - End */
6746     } s;
6747     /* struct bdk_ap_cvm_xlatvtag0_el1_s cn; */
6748 };
6749 typedef union bdk_ap_cvm_xlatvtag0_el1 bdk_ap_cvm_xlatvtag0_el1_t;
6750 
6751 #define BDK_AP_CVM_XLATVTAG0_EL1 BDK_AP_CVM_XLATVTAG0_EL1_FUNC()
6752 static inline uint64_t BDK_AP_CVM_XLATVTAG0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_XLATVTAG0_EL1_FUNC(void)6753 static inline uint64_t BDK_AP_CVM_XLATVTAG0_EL1_FUNC(void)
6754 {
6755     return 0x3000b050600ll;
6756 }
6757 
6758 #define typedef_BDK_AP_CVM_XLATVTAG0_EL1 bdk_ap_cvm_xlatvtag0_el1_t
6759 #define bustype_BDK_AP_CVM_XLATVTAG0_EL1 BDK_CSR_TYPE_SYSREG
6760 #define basename_BDK_AP_CVM_XLATVTAG0_EL1 "AP_CVM_XLATVTAG0_EL1"
6761 #define busnum_BDK_AP_CVM_XLATVTAG0_EL1 0
6762 #define arguments_BDK_AP_CVM_XLATVTAG0_EL1 -1,-1,-1,-1
6763 
6764 /**
6765  * Register (SYSREG) ap_cvm_xlatvtag1_el1
6766  *
6767  * AP Cavium Translation Tag 1 EL1 Register
6768  */
6769 union bdk_ap_cvm_xlatvtag1_el1
6770 {
6771     uint64_t u;
6772     struct bdk_ap_cvm_xlatvtag1_el1_s
6773     {
6774 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6775         uint64_t reserved_57_63        : 7;
6776         uint64_t ent2                  : 9;  /**< [ 56: 48](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6777         uint64_t reserved_45_47        : 3;
6778         uint64_t ent1                  : 9;  /**< [ 44: 36](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6779         uint64_t reserved_34_35        : 2;
6780         uint64_t mask                  : 22; /**< [ 33: 12](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6781         uint64_t reserved_2_11         : 10;
6782         uint64_t stage2                : 1;  /**< [  1:  1](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6783         uint64_t stage1                : 1;  /**< [  0:  0](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6784 #else /* Word 0 - Little Endian */
6785         uint64_t stage1                : 1;  /**< [  0:  0](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6786         uint64_t stage2                : 1;  /**< [  1:  1](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6787         uint64_t reserved_2_11         : 10;
6788         uint64_t mask                  : 22; /**< [ 33: 12](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6789         uint64_t reserved_34_35        : 2;
6790         uint64_t ent1                  : 9;  /**< [ 44: 36](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6791         uint64_t reserved_45_47        : 3;
6792         uint64_t ent2                  : 9;  /**< [ 56: 48](RO) SYS[CvmCACHE] debug read data from uTLB/MTLB/WCU. */
6793         uint64_t reserved_57_63        : 7;
6794 #endif /* Word 0 - End */
6795     } s;
6796     /* struct bdk_ap_cvm_xlatvtag1_el1_s cn; */
6797 };
6798 typedef union bdk_ap_cvm_xlatvtag1_el1 bdk_ap_cvm_xlatvtag1_el1_t;
6799 
6800 #define BDK_AP_CVM_XLATVTAG1_EL1 BDK_AP_CVM_XLATVTAG1_EL1_FUNC()
6801 static inline uint64_t BDK_AP_CVM_XLATVTAG1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVM_XLATVTAG1_EL1_FUNC(void)6802 static inline uint64_t BDK_AP_CVM_XLATVTAG1_EL1_FUNC(void)
6803 {
6804     return 0x3000b050700ll;
6805 }
6806 
6807 #define typedef_BDK_AP_CVM_XLATVTAG1_EL1 bdk_ap_cvm_xlatvtag1_el1_t
6808 #define bustype_BDK_AP_CVM_XLATVTAG1_EL1 BDK_CSR_TYPE_SYSREG
6809 #define basename_BDK_AP_CVM_XLATVTAG1_EL1 "AP_CVM_XLATVTAG1_EL1"
6810 #define busnum_BDK_AP_CVM_XLATVTAG1_EL1 0
6811 #define arguments_BDK_AP_CVM_XLATVTAG1_EL1 -1,-1,-1,-1
6812 
6813 /**
6814  * Register (SYSREG) ap_cvmctl2_el1
6815  *
6816  * AP Cavium Control Register
6817  * This register provides Cavium-specific control information.
6818  */
6819 union bdk_ap_cvmctl2_el1
6820 {
6821     uint64_t u;
6822     struct bdk_ap_cvmctl2_el1_s
6823     {
6824 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6825         uint64_t reserved_12_63        : 52;
6826         uint64_t livelock_stall_detect : 4;  /**< [ 11:  8](R/W) Livelock stall detector. 0=disable, cycles 16*1\<\<[[11:8] */
6827         uint64_t reserved_4_7          : 4;
6828         uint64_t reduce_map_bandwidth  : 2;  /**< [  3:  2](R/W) Reduce map bandwidth to 1-3 instr/cycle (also reduces max inflight instructions to 32,64,96) */
6829         uint64_t allow_one_ifi         : 1;  /**< [  1:  1](R/W) Allow only one inflight instruction. */
6830         uint64_t allow_one_ifmr        : 1;  /**< [  0:  0](R/W) Allow only one inflight memory reference. */
6831 #else /* Word 0 - Little Endian */
6832         uint64_t allow_one_ifmr        : 1;  /**< [  0:  0](R/W) Allow only one inflight memory reference. */
6833         uint64_t allow_one_ifi         : 1;  /**< [  1:  1](R/W) Allow only one inflight instruction. */
6834         uint64_t reduce_map_bandwidth  : 2;  /**< [  3:  2](R/W) Reduce map bandwidth to 1-3 instr/cycle (also reduces max inflight instructions to 32,64,96) */
6835         uint64_t reserved_4_7          : 4;
6836         uint64_t livelock_stall_detect : 4;  /**< [ 11:  8](R/W) Livelock stall detector. 0=disable, cycles 16*1\<\<[[11:8] */
6837         uint64_t reserved_12_63        : 52;
6838 #endif /* Word 0 - End */
6839     } s;
6840     /* struct bdk_ap_cvmctl2_el1_s cn; */
6841 };
6842 typedef union bdk_ap_cvmctl2_el1 bdk_ap_cvmctl2_el1_t;
6843 
6844 #define BDK_AP_CVMCTL2_EL1 BDK_AP_CVMCTL2_EL1_FUNC()
6845 static inline uint64_t BDK_AP_CVMCTL2_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVMCTL2_EL1_FUNC(void)6846 static inline uint64_t BDK_AP_CVMCTL2_EL1_FUNC(void)
6847 {
6848     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
6849         return 0x3000b000100ll;
6850     __bdk_csr_fatal("AP_CVMCTL2_EL1", 0, 0, 0, 0, 0);
6851 }
6852 
6853 #define typedef_BDK_AP_CVMCTL2_EL1 bdk_ap_cvmctl2_el1_t
6854 #define bustype_BDK_AP_CVMCTL2_EL1 BDK_CSR_TYPE_SYSREG
6855 #define basename_BDK_AP_CVMCTL2_EL1 "AP_CVMCTL2_EL1"
6856 #define busnum_BDK_AP_CVMCTL2_EL1 0
6857 #define arguments_BDK_AP_CVMCTL2_EL1 -1,-1,-1,-1
6858 
6859 /**
6860  * Register (SYSREG) ap_cvmctl_el1
6861  *
6862  * AP Cavium Control Register
6863  * This register provides Cavium-specific control information.
6864  */
6865 union bdk_ap_cvmctl_el1
6866 {
6867     uint64_t u;
6868     struct bdk_ap_cvmctl_el1_s
6869     {
6870 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6871         uint64_t reserved_57_63        : 7;
6872         uint64_t disable_const         : 1;  /**< [ 56: 56](R/W) Disable constant optimization. */
6873         uint64_t disable_alias         : 1;  /**< [ 55: 55](R/W) Disable alias optimization. */
6874         uint64_t disable_ldp_stp_fiss  : 1;  /**< [ 54: 54](R/W) Disable ldp/stp fissioning with unaligned prediction. */
6875         uint64_t disable_io_pred       : 1;  /**< [ 53: 53](R/W) Disable IO space prediction. */
6876         uint64_t disable_unaligned_pred : 1; /**< [ 52: 52](R/W) Disable unaligned prediction. */
6877         uint64_t disable_ldst_ordering_pred : 1;/**< [ 51: 51](R/W) Disable load/store ordering prediction. */
6878         uint64_t reserved_50           : 1;
6879         uint64_t disable_branch_elimination : 1;/**< [ 49: 49](R/W) Disable branch elimination. */
6880         uint64_t disable_optimum_occupancy : 1;/**< [ 48: 48](R/W) Increase ibuf occupancy time. */
6881         uint64_t disable_load2         : 1;  /**< [ 47: 47](R/W) Disable second load port. */
6882         uint64_t force_strong_ordering : 1;  /**< [ 46: 46](R/W) Force strong load ordering.
6883                                                                  0 = Weak ordering.
6884                                                                  1 = Strong ordering.
6885 
6886                                                                  Internal:
6887                                                                  CN8XXX is always strong ordering. */
6888         uint64_t disable_mem_ooo       : 1;  /**< [ 45: 45](R/W) Disable all memory out-of-order. */
6889         uint64_t disable_ooo           : 1;  /**< [ 44: 44](R/W) Disable all out-of-order. */
6890         uint64_t dpref_bp_dis          : 1;  /**< [ 43: 43](R/W) When set, hardware data prefetcher ignores memory system backpressure for next line prefetcher. */
6891         uint64_t dpref_lookahead       : 1;  /**< [ 42: 42](R/W) When set, hardware data prefetcher uses a lookahead of 2. When clear, lookahead of 1. */
6892         uint64_t dpref_next_line       : 1;  /**< [ 41: 41](R/W) Enable next line hardware data prefetcher. */
6893         uint64_t dpref_delta           : 1;  /**< [ 40: 40](R/W) Enable delta stream hardware data prefetcher. */
6894         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
6895         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
6896         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
6897         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
6898         uint64_t force_cim_ich_vtr_to1 : 1;  /**< [ 35: 35](R/W) Set CIM AP_ICH_VTR_EL2[LISTREGS] to 0x1 (i.e. two LRs) on Pass 1. */
6899         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
6900         uint64_t enable_v81            : 1;  /**< [ 33: 33](R/W) Enable v8.1 features, modifying the ID registers to show v8.1. */
6901         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
6902         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
6903                                                                  WFE_DEFER\<7:4\>. */
6904         uint64_t reserved_23           : 1;
6905         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
6906                                                                  the fill operation. */
6907         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
6908         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
6909         uint64_t step_rate             : 4;  /**< [ 19: 16](R/W) Step rate. */
6910         uint64_t reserved_10_15        : 6;
6911         uint64_t disable_flex_execution : 1; /**< [  9:  9](R/W) Disable flex execution; also prevents overlapped execution of DIV/SQRT and other
6912                                                                  instructions (to prevent a DIV load collision). */
6913         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding. */
6914         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
6915         uint64_t reserved_6            : 1;
6916         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
6917         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
6918         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
6919         uint64_t reserved_2            : 1;
6920         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
6921         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
6922 #else /* Word 0 - Little Endian */
6923         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
6924         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
6925         uint64_t reserved_2            : 1;
6926         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
6927         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
6928         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
6929         uint64_t reserved_6            : 1;
6930         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
6931         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding. */
6932         uint64_t disable_flex_execution : 1; /**< [  9:  9](R/W) Disable flex execution; also prevents overlapped execution of DIV/SQRT and other
6933                                                                  instructions (to prevent a DIV load collision). */
6934         uint64_t reserved_10_15        : 6;
6935         uint64_t step_rate             : 4;  /**< [ 19: 16](R/W) Step rate. */
6936         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
6937         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
6938         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
6939                                                                  the fill operation. */
6940         uint64_t reserved_23           : 1;
6941         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
6942                                                                  WFE_DEFER\<7:4\>. */
6943         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
6944         uint64_t enable_v81            : 1;  /**< [ 33: 33](R/W) Enable v8.1 features, modifying the ID registers to show v8.1. */
6945         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
6946         uint64_t force_cim_ich_vtr_to1 : 1;  /**< [ 35: 35](R/W) Set CIM AP_ICH_VTR_EL2[LISTREGS] to 0x1 (i.e. two LRs) on Pass 1. */
6947         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
6948         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
6949         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
6950         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
6951         uint64_t dpref_delta           : 1;  /**< [ 40: 40](R/W) Enable delta stream hardware data prefetcher. */
6952         uint64_t dpref_next_line       : 1;  /**< [ 41: 41](R/W) Enable next line hardware data prefetcher. */
6953         uint64_t dpref_lookahead       : 1;  /**< [ 42: 42](R/W) When set, hardware data prefetcher uses a lookahead of 2. When clear, lookahead of 1. */
6954         uint64_t dpref_bp_dis          : 1;  /**< [ 43: 43](R/W) When set, hardware data prefetcher ignores memory system backpressure for next line prefetcher. */
6955         uint64_t disable_ooo           : 1;  /**< [ 44: 44](R/W) Disable all out-of-order. */
6956         uint64_t disable_mem_ooo       : 1;  /**< [ 45: 45](R/W) Disable all memory out-of-order. */
6957         uint64_t force_strong_ordering : 1;  /**< [ 46: 46](R/W) Force strong load ordering.
6958                                                                  0 = Weak ordering.
6959                                                                  1 = Strong ordering.
6960 
6961                                                                  Internal:
6962                                                                  CN8XXX is always strong ordering. */
6963         uint64_t disable_load2         : 1;  /**< [ 47: 47](R/W) Disable second load port. */
6964         uint64_t disable_optimum_occupancy : 1;/**< [ 48: 48](R/W) Increase ibuf occupancy time. */
6965         uint64_t disable_branch_elimination : 1;/**< [ 49: 49](R/W) Disable branch elimination. */
6966         uint64_t reserved_50           : 1;
6967         uint64_t disable_ldst_ordering_pred : 1;/**< [ 51: 51](R/W) Disable load/store ordering prediction. */
6968         uint64_t disable_unaligned_pred : 1; /**< [ 52: 52](R/W) Disable unaligned prediction. */
6969         uint64_t disable_io_pred       : 1;  /**< [ 53: 53](R/W) Disable IO space prediction. */
6970         uint64_t disable_ldp_stp_fiss  : 1;  /**< [ 54: 54](R/W) Disable ldp/stp fissioning with unaligned prediction. */
6971         uint64_t disable_alias         : 1;  /**< [ 55: 55](R/W) Disable alias optimization. */
6972         uint64_t disable_const         : 1;  /**< [ 56: 56](R/W) Disable constant optimization. */
6973         uint64_t reserved_57_63        : 7;
6974 #endif /* Word 0 - End */
6975     } s;
6976     struct bdk_ap_cvmctl_el1_cn88xxp1
6977     {
6978 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6979         uint64_t reserved_40_63        : 24;
6980         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
6981         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
6982         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
6983         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
6984         uint64_t force_cim_ich_vtr_to1 : 1;  /**< [ 35: 35](R/W) Set CIM AP_ICH_VTR_EL2[LISTREGS] to 0x1 (i.e. two LRs) on Pass 1. */
6985         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
6986         uint64_t enable_v81            : 1;  /**< [ 33: 33](R/W) Enable v8.1 features, modifying the ID registers to show v8.1. */
6987         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
6988         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
6989                                                                  WFE_DEFER\<7:4\>. */
6990         uint64_t disable_icache_probes : 1;  /**< [ 23: 23](R/W) Disable Icache probes. */
6991         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
6992                                                                  the fill operation. */
6993         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
6994         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
6995         uint64_t step_rate             : 4;  /**< [ 19: 16](R/W) Step rate. */
6996         uint64_t reserved_10_15        : 6;
6997         uint64_t disable_flex_execution : 1; /**< [  9:  9](R/W) Disable flex execution; also prevents overlapped execution of DIV/SQRT and other
6998                                                                  instructions (to prevent a DIV load collision). */
6999         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding. */
7000         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
7001         uint64_t disable_fetch_under_fill : 1;/**< [  6:  6](R/W) Disable fetch-under-fill. */
7002         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
7003         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
7004         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
7005         uint64_t disable_icache_prefetching : 1;/**< [  2:  2](R/W) Disable Icache prefetching. */
7006         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
7007         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
7008 #else /* Word 0 - Little Endian */
7009         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
7010         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
7011         uint64_t disable_icache_prefetching : 1;/**< [  2:  2](R/W) Disable Icache prefetching. */
7012         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
7013         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
7014         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
7015         uint64_t disable_fetch_under_fill : 1;/**< [  6:  6](R/W) Disable fetch-under-fill. */
7016         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
7017         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding. */
7018         uint64_t disable_flex_execution : 1; /**< [  9:  9](R/W) Disable flex execution; also prevents overlapped execution of DIV/SQRT and other
7019                                                                  instructions (to prevent a DIV load collision). */
7020         uint64_t reserved_10_15        : 6;
7021         uint64_t step_rate             : 4;  /**< [ 19: 16](R/W) Step rate. */
7022         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
7023         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
7024         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
7025                                                                  the fill operation. */
7026         uint64_t disable_icache_probes : 1;  /**< [ 23: 23](R/W) Disable Icache probes. */
7027         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
7028                                                                  WFE_DEFER\<7:4\>. */
7029         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
7030         uint64_t enable_v81            : 1;  /**< [ 33: 33](R/W) Enable v8.1 features, modifying the ID registers to show v8.1. */
7031         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
7032         uint64_t force_cim_ich_vtr_to1 : 1;  /**< [ 35: 35](R/W) Set CIM AP_ICH_VTR_EL2[LISTREGS] to 0x1 (i.e. two LRs) on Pass 1. */
7033         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
7034         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
7035         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
7036         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
7037         uint64_t reserved_40_63        : 24;
7038 #endif /* Word 0 - End */
7039     } cn88xxp1;
7040     struct bdk_ap_cvmctl_el1_cn9
7041     {
7042 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7043         uint64_t reserved_57_63        : 7;
7044         uint64_t disable_const         : 1;  /**< [ 56: 56](R/W) Disable constant optimization. */
7045         uint64_t disable_alias         : 1;  /**< [ 55: 55](R/W) Disable alias optimization. */
7046         uint64_t disable_ldp_stp_fiss  : 1;  /**< [ 54: 54](R/W) Disable ldp/stp fissioning with unaligned prediction. */
7047         uint64_t disable_io_pred       : 1;  /**< [ 53: 53](R/W) Disable IO space prediction. */
7048         uint64_t disable_unaligned_pred : 1; /**< [ 52: 52](R/W) Disable unaligned prediction. */
7049         uint64_t disable_ldst_ordering_pred : 1;/**< [ 51: 51](R/W) Disable load/store ordering prediction. */
7050         uint64_t reserved_50           : 1;
7051         uint64_t disable_branch_elimination : 1;/**< [ 49: 49](R/W) Disable branch elimination. */
7052         uint64_t disable_optimum_occupancy : 1;/**< [ 48: 48](R/W) Increase ibuf occupancy time. */
7053         uint64_t disable_load2         : 1;  /**< [ 47: 47](R/W) Disable second load port. */
7054         uint64_t force_strong_ordering : 1;  /**< [ 46: 46](R/W) Force strong load ordering.
7055                                                                  0 = Weak ordering.
7056                                                                  1 = Strong ordering.
7057 
7058                                                                  Internal:
7059                                                                  CN8XXX is always strong ordering. */
7060         uint64_t disable_mem_ooo       : 1;  /**< [ 45: 45](R/W) Disable all memory out-of-order. */
7061         uint64_t disable_ooo           : 1;  /**< [ 44: 44](R/W) Disable all out-of-order. */
7062         uint64_t dpref_bp_dis          : 1;  /**< [ 43: 43](R/W) When set, hardware data prefetcher ignores memory system backpressure for next line prefetcher. */
7063         uint64_t dpref_lookahead       : 1;  /**< [ 42: 42](R/W) When set, hardware data prefetcher uses a lookahead of 2. When clear, lookahead of 1. */
7064         uint64_t dpref_next_line       : 1;  /**< [ 41: 41](R/W) Enable next line hardware data prefetcher. */
7065         uint64_t dpref_delta           : 1;  /**< [ 40: 40](R/W) Enable delta stream hardware data prefetcher. */
7066         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
7067         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
7068         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
7069         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
7070         uint64_t reserved_35           : 1;
7071         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
7072         uint64_t enable_v81            : 1;  /**< [ 33: 33](RO) Enable v8.1 features, modifying the ID registers to show v8.1.
7073                                                                  Internal:
7074                                                                  FIXME does this go away with CN98XX. */
7075         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
7076         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
7077                                                                  WFE_DEFER\<7:4\>. */
7078         uint64_t ldil1hwprefdis        : 1;  /**< [ 23: 23](R/W) Disable Istream LDI L1 hardware prefetcher. */
7079         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
7080                                                                  the fill operation. */
7081         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
7082         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
7083         uint64_t reserved_16_19        : 4;
7084         uint64_t reserved_10_15        : 6;
7085         uint64_t reserved_9            : 1;
7086         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding and other fusions. */
7087         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
7088         uint64_t ldil1swprefdis        : 1;  /**< [  6:  6](R/W) Disable LDI L1 software prefetch instructions (PRFM). */
7089         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
7090         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
7091         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
7092         uint64_t ldil1specdis          : 1;  /**< [  2:  2](R/W) Disable all LDI L1 speculative fill requests (only demand fills with machine drained).
7093                                                                  Internal:
7094                                                                  CN88XX-like mode. */
7095         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
7096         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
7097 #else /* Word 0 - Little Endian */
7098         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
7099         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
7100         uint64_t ldil1specdis          : 1;  /**< [  2:  2](R/W) Disable all LDI L1 speculative fill requests (only demand fills with machine drained).
7101                                                                  Internal:
7102                                                                  CN88XX-like mode. */
7103         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
7104         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
7105         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
7106         uint64_t ldil1swprefdis        : 1;  /**< [  6:  6](R/W) Disable LDI L1 software prefetch instructions (PRFM). */
7107         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
7108         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding and other fusions. */
7109         uint64_t reserved_9            : 1;
7110         uint64_t reserved_10_15        : 6;
7111         uint64_t reserved_16_19        : 4;
7112         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
7113         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
7114         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
7115                                                                  the fill operation. */
7116         uint64_t ldil1hwprefdis        : 1;  /**< [ 23: 23](R/W) Disable Istream LDI L1 hardware prefetcher. */
7117         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
7118                                                                  WFE_DEFER\<7:4\>. */
7119         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
7120         uint64_t enable_v81            : 1;  /**< [ 33: 33](RO) Enable v8.1 features, modifying the ID registers to show v8.1.
7121                                                                  Internal:
7122                                                                  FIXME does this go away with CN98XX. */
7123         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
7124         uint64_t reserved_35           : 1;
7125         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
7126         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
7127         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
7128         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
7129         uint64_t dpref_delta           : 1;  /**< [ 40: 40](R/W) Enable delta stream hardware data prefetcher. */
7130         uint64_t dpref_next_line       : 1;  /**< [ 41: 41](R/W) Enable next line hardware data prefetcher. */
7131         uint64_t dpref_lookahead       : 1;  /**< [ 42: 42](R/W) When set, hardware data prefetcher uses a lookahead of 2. When clear, lookahead of 1. */
7132         uint64_t dpref_bp_dis          : 1;  /**< [ 43: 43](R/W) When set, hardware data prefetcher ignores memory system backpressure for next line prefetcher. */
7133         uint64_t disable_ooo           : 1;  /**< [ 44: 44](R/W) Disable all out-of-order. */
7134         uint64_t disable_mem_ooo       : 1;  /**< [ 45: 45](R/W) Disable all memory out-of-order. */
7135         uint64_t force_strong_ordering : 1;  /**< [ 46: 46](R/W) Force strong load ordering.
7136                                                                  0 = Weak ordering.
7137                                                                  1 = Strong ordering.
7138 
7139                                                                  Internal:
7140                                                                  CN8XXX is always strong ordering. */
7141         uint64_t disable_load2         : 1;  /**< [ 47: 47](R/W) Disable second load port. */
7142         uint64_t disable_optimum_occupancy : 1;/**< [ 48: 48](R/W) Increase ibuf occupancy time. */
7143         uint64_t disable_branch_elimination : 1;/**< [ 49: 49](R/W) Disable branch elimination. */
7144         uint64_t reserved_50           : 1;
7145         uint64_t disable_ldst_ordering_pred : 1;/**< [ 51: 51](R/W) Disable load/store ordering prediction. */
7146         uint64_t disable_unaligned_pred : 1; /**< [ 52: 52](R/W) Disable unaligned prediction. */
7147         uint64_t disable_io_pred       : 1;  /**< [ 53: 53](R/W) Disable IO space prediction. */
7148         uint64_t disable_ldp_stp_fiss  : 1;  /**< [ 54: 54](R/W) Disable ldp/stp fissioning with unaligned prediction. */
7149         uint64_t disable_alias         : 1;  /**< [ 55: 55](R/W) Disable alias optimization. */
7150         uint64_t disable_const         : 1;  /**< [ 56: 56](R/W) Disable constant optimization. */
7151         uint64_t reserved_57_63        : 7;
7152 #endif /* Word 0 - End */
7153     } cn9;
7154     struct bdk_ap_cvmctl_el1_cn81xx
7155     {
7156 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7157         uint64_t reserved_44_63        : 20;
7158         uint64_t dpref_bp_dis          : 1;  /**< [ 43: 43](R/W) When set, hardware data prefetcher ignores memory system backpressure for next line prefetcher. */
7159         uint64_t dpref_lookahead       : 1;  /**< [ 42: 42](R/W) When set, hardware data prefetcher uses a lookahead of 2. When clear, lookahead of 1. */
7160         uint64_t dpref_next_line       : 1;  /**< [ 41: 41](R/W) Enable next line hardware data prefetcher. */
7161         uint64_t dpref_delta           : 1;  /**< [ 40: 40](R/W) Enable delta stream hardware data prefetcher. */
7162         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
7163         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
7164         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
7165         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
7166         uint64_t force_cim_ich_vtr_to1 : 1;  /**< [ 35: 35](RAZ) Reserved. */
7167         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
7168         uint64_t enable_v81            : 1;  /**< [ 33: 33](R/W) Enable v8.1 features, modifying the ID registers to show v8.1. */
7169         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
7170         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
7171                                                                  WFE_DEFER\<7:4\>. */
7172         uint64_t disable_icache_probes : 1;  /**< [ 23: 23](R/W) Disable Icache probes. */
7173         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
7174                                                                  the fill operation. */
7175         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
7176         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
7177         uint64_t step_rate             : 4;  /**< [ 19: 16](R/W) Step rate. */
7178         uint64_t reserved_10_15        : 6;
7179         uint64_t disable_flex_execution : 1; /**< [  9:  9](R/W) Disable flex execution; also prevents overlapped execution of DIV/SQRT and other
7180                                                                  instructions (to prevent a DIV load collision). */
7181         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding. */
7182         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
7183         uint64_t disable_fetch_under_fill : 1;/**< [  6:  6](R/W) Disable fetch-under-fill. */
7184         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
7185         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
7186         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
7187         uint64_t disable_icache_prefetching : 1;/**< [  2:  2](R/W) Disable Icache prefetching. */
7188         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
7189         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
7190 #else /* Word 0 - Little Endian */
7191         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
7192         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
7193         uint64_t disable_icache_prefetching : 1;/**< [  2:  2](R/W) Disable Icache prefetching. */
7194         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
7195         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
7196         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
7197         uint64_t disable_fetch_under_fill : 1;/**< [  6:  6](R/W) Disable fetch-under-fill. */
7198         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
7199         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding. */
7200         uint64_t disable_flex_execution : 1; /**< [  9:  9](R/W) Disable flex execution; also prevents overlapped execution of DIV/SQRT and other
7201                                                                  instructions (to prevent a DIV load collision). */
7202         uint64_t reserved_10_15        : 6;
7203         uint64_t step_rate             : 4;  /**< [ 19: 16](R/W) Step rate. */
7204         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
7205         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
7206         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
7207                                                                  the fill operation. */
7208         uint64_t disable_icache_probes : 1;  /**< [ 23: 23](R/W) Disable Icache probes. */
7209         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
7210                                                                  WFE_DEFER\<7:4\>. */
7211         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
7212         uint64_t enable_v81            : 1;  /**< [ 33: 33](R/W) Enable v8.1 features, modifying the ID registers to show v8.1. */
7213         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
7214         uint64_t force_cim_ich_vtr_to1 : 1;  /**< [ 35: 35](RAZ) Reserved. */
7215         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
7216         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
7217         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
7218         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
7219         uint64_t dpref_delta           : 1;  /**< [ 40: 40](R/W) Enable delta stream hardware data prefetcher. */
7220         uint64_t dpref_next_line       : 1;  /**< [ 41: 41](R/W) Enable next line hardware data prefetcher. */
7221         uint64_t dpref_lookahead       : 1;  /**< [ 42: 42](R/W) When set, hardware data prefetcher uses a lookahead of 2. When clear, lookahead of 1. */
7222         uint64_t dpref_bp_dis          : 1;  /**< [ 43: 43](R/W) When set, hardware data prefetcher ignores memory system backpressure for next line prefetcher. */
7223         uint64_t reserved_44_63        : 20;
7224 #endif /* Word 0 - End */
7225     } cn81xx;
7226     /* struct bdk_ap_cvmctl_el1_cn81xx cn83xx; */
7227     struct bdk_ap_cvmctl_el1_cn88xxp2
7228     {
7229 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7230         uint64_t reserved_40_63        : 24;
7231         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
7232         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
7233         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
7234         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
7235         uint64_t force_cim_ich_vtr_to1 : 1;  /**< [ 35: 35](RAZ) Reserved. */
7236         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
7237         uint64_t enable_v81            : 1;  /**< [ 33: 33](R/W) Enable v8.1 features, modifying the ID registers to show v8.1. */
7238         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
7239         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
7240                                                                  WFE_DEFER\<7:4\>. */
7241         uint64_t disable_icache_probes : 1;  /**< [ 23: 23](R/W) Disable Icache probes. */
7242         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
7243                                                                  the fill operation. */
7244         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
7245         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
7246         uint64_t step_rate             : 4;  /**< [ 19: 16](R/W) Step rate. */
7247         uint64_t reserved_10_15        : 6;
7248         uint64_t disable_flex_execution : 1; /**< [  9:  9](R/W) Disable flex execution; also prevents overlapped execution of DIV/SQRT and other
7249                                                                  instructions (to prevent a DIV load collision). */
7250         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding. */
7251         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
7252         uint64_t disable_fetch_under_fill : 1;/**< [  6:  6](R/W) Disable fetch-under-fill. */
7253         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
7254         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
7255         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
7256         uint64_t disable_icache_prefetching : 1;/**< [  2:  2](R/W) Disable Icache prefetching. */
7257         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
7258         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
7259 #else /* Word 0 - Little Endian */
7260         uint64_t disable_icache        : 1;  /**< [  0:  0](R/W) Disable Icache. */
7261         uint64_t random_icache         : 1;  /**< [  1:  1](R/W) Random Icache replacement. */
7262         uint64_t disable_icache_prefetching : 1;/**< [  2:  2](R/W) Disable Icache prefetching. */
7263         uint64_t force_csr_clock       : 1;  /**< [  3:  3](R/W) Force CSR clock. */
7264         uint64_t force_exe_clock       : 1;  /**< [  4:  4](R/W) Force execution-unit clock. */
7265         uint64_t force_issue_clock     : 1;  /**< [  5:  5](R/W) Force issue-unit clock. */
7266         uint64_t disable_fetch_under_fill : 1;/**< [  6:  6](R/W) Disable fetch-under-fill. */
7267         uint64_t disable_wfi           : 1;  /**< [  7:  7](R/W) Disable WFI/WFE. */
7268         uint64_t disable_branch_folding : 1; /**< [  8:  8](R/W) Disable branch folding. */
7269         uint64_t disable_flex_execution : 1; /**< [  9:  9](R/W) Disable flex execution; also prevents overlapped execution of DIV/SQRT and other
7270                                                                  instructions (to prevent a DIV load collision). */
7271         uint64_t reserved_10_15        : 6;
7272         uint64_t step_rate             : 4;  /**< [ 19: 16](R/W) Step rate. */
7273         uint64_t no_exc_icache_parity  : 1;  /**< [ 20: 20](R/W) Suppress exception on Icache correctable parity error. */
7274         uint64_t suppress_parity_checking : 1;/**< [ 21: 21](R/W) Suppress Icache correctable parity checking. */
7275         uint64_t force_icache_parity   : 1;  /**< [ 22: 22](R/W) Force icache correctable parity error on next Icache fill. This bit clears itself after
7276                                                                  the fill operation. */
7277         uint64_t disable_icache_probes : 1;  /**< [ 23: 23](R/W) Disable Icache probes. */
7278         uint64_t wfe_defer             : 8;  /**< [ 31: 24](R/W) WFE defer timer setting.  Time in core-clocks = {| WFE_DEFER, WFE_DEFER\<3:0\>} \<\<
7279                                                                  WFE_DEFER\<7:4\>. */
7280         uint64_t isb_flush             : 1;  /**< [ 32: 32](R/W) Enable pipeline flush after an ISB. */
7281         uint64_t enable_v81            : 1;  /**< [ 33: 33](R/W) Enable v8.1 features, modifying the ID registers to show v8.1. */
7282         uint64_t disable_wfe           : 1;  /**< [ 34: 34](R/W) Disable WFE. */
7283         uint64_t force_cim_ich_vtr_to1 : 1;  /**< [ 35: 35](RAZ) Reserved. */
7284         uint64_t disable_cas           : 1;  /**< [ 36: 36](R/W) Disable the CAS instruction. */
7285         uint64_t disable_casp          : 1;  /**< [ 37: 37](R/W) Disable the CASP instruction. */
7286         uint64_t disable_eret_pred     : 1;  /**< [ 38: 38](R/W) Disable ERET prediction. */
7287         uint64_t mrs_msr_hazard        : 1;  /**< [ 39: 39](R/W) Disable MRS/MSR pipelining, assume hazards. */
7288         uint64_t reserved_40_63        : 24;
7289 #endif /* Word 0 - End */
7290     } cn88xxp2;
7291 };
7292 typedef union bdk_ap_cvmctl_el1 bdk_ap_cvmctl_el1_t;
7293 
7294 #define BDK_AP_CVMCTL_EL1 BDK_AP_CVMCTL_EL1_FUNC()
7295 static inline uint64_t BDK_AP_CVMCTL_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVMCTL_EL1_FUNC(void)7296 static inline uint64_t BDK_AP_CVMCTL_EL1_FUNC(void)
7297 {
7298     return 0x3000b000000ll;
7299 }
7300 
7301 #define typedef_BDK_AP_CVMCTL_EL1 bdk_ap_cvmctl_el1_t
7302 #define bustype_BDK_AP_CVMCTL_EL1 BDK_CSR_TYPE_SYSREG
7303 #define basename_BDK_AP_CVMCTL_EL1 "AP_CVMCTL_EL1"
7304 #define busnum_BDK_AP_CVMCTL_EL1 0
7305 #define arguments_BDK_AP_CVMCTL_EL1 -1,-1,-1,-1
7306 
7307 /**
7308  * Register (SYSREG) ap_cvmmemctl0_el1
7309  *
7310  * AP Cavium Memory Control 0 Register
7311  * This register controls memory features.
7312  */
7313 union bdk_ap_cvmmemctl0_el1
7314 {
7315     uint64_t u;
7316     struct bdk_ap_cvmmemctl0_el1_s
7317     {
7318 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7319         uint64_t reserved_63           : 1;
7320         uint64_t node                  : 2;  /**< [ 62: 61](RO) Local node ID. */
7321         uint64_t stexfailcnt           : 3;  /**< [ 60: 58](RO) ST exclusive fail count. */
7322         uint64_t wfeldex1dis           : 1;  /**< [ 57: 57](R/W) WFE release behavior for LD-exclusive.
7323                                                                  0 = A global monitor transition from exclusive to open (lock flag transition
7324                                                                  from 1 to 0) causes SEV to local core.
7325                                                                  1 = A global monitor transition from exclusive to open (lock flag transition
7326                                                                  from 1 to 0) does not cause SEV to local core. */
7327         uint64_t stlstallforce         : 1;  /**< [ 56: 56](R/W) Force ST_release to wait for flushed write-buffer entries to be ACKed (pass 2.0 only).
7328                                                                  0 = Store-release instructions mark prior relevant write-buffer entries for flush but do
7329                                                                  not wait for the ACKs to return.
7330                                                                  1 = Store-release instructions mark prior relevant write-buffer entries for flush and wait
7331                                                                  for all the ACKs to return. */
7332         uint64_t dmbstallforce         : 1;  /**< [ 55: 55](R/W) Force DMB to wait for flushed write-buffer entries to be ACKed (pass 2.0 only).
7333                                                                  0 = DMB instructions mark prior relevant write-buffer entries for flush, but do not wait
7334                                                                  for the ACKs to return.
7335                                                                  1 = DMB instructions mark prior relevant write-buffer entries for flush and wait for all
7336                                                                  the ACKs to return. */
7337         uint64_t tlbinopdis            : 1;  /**< [ 54: 54](R/W) Disable broadcast TLBI optimization (pass 2.0 only).
7338 
7339                                                                  Address-based broadcast TLBI instructions that go to remote cores are converted
7340                                                                  from address-based TLBI instructions to context-based TLBI instructions. The
7341                                                                  actions on the local core generating the TLBI instruction are still precise.
7342 
7343                                                                  0 = The converted context-based TLBI instructions or original context-based
7344                                                                  TLBIs to remote cores (without intervening interruptions, such as a DSB) are
7345                                                                  coalesced into a single context-based TLBI. Converted and original ones do not
7346                                                                  coalesce.
7347 
7348                                                                  1 = The above-mentioned coalescing is suppressed and converted context-based
7349                                                                  remote TLBIs still go out as such. */
7350         uint64_t tlbiicflush           : 1;  /**< [ 53: 53](R/W) Some local TLBI instructions cause ICache flush (pass 2.0 only).
7351                                                                  0 = Icache flush operation do not happen on the TLBI instructions listed below.
7352                                                                  1 = Icache is flushed on the TLBI instructions listed below:
7353                                                                    * TLBI ALLE2{IS}.
7354                                                                    * TLBI ALLE3{IS}.
7355                                                                    * TLBI VAE1{IS}.
7356                                                                    * TLBI VALE1{IS}.
7357                                                                    * TLBI VAAE1{IS}.
7358                                                                    * TLBI VAALE1{IS}.
7359                                                                    * TLBI VAE2{IS}.
7360                                                                    * TLBI VALE2{IS}.
7361                                                                    * TLBI VAE3{IS}.
7362                                                                    * TLBI VALE3{IS}.
7363                                                                    * TLBI IPAS2E1{IS}.
7364                                                                    * TLBI IPAS2LE1{IS}. */
7365         uint64_t gsyncto               : 5;  /**< [ 52: 48](R/W) GlobalSync timeout. (pass 2.0 only.)
7366                                                                  timeout = 2^[GSYNCTO].
7367                                                                  0x0 = disable timeout. */
7368         uint64_t utlbfillbypdis        : 1;  /**< [ 47: 47](R/W) Disable uTLB fill bypass (pass 2.0 only).
7369                                                                  0 = On a stage1-only translation, the uTLB is written along with the MTLB.
7370                                                                  1 = On a stage1-only translation, the uTLB is not written along with the MTLB causing a
7371                                                                  uTLB miss replay to complete the uTLB fill. */
7372         uint64_t tlbiall               : 1;  /**< [ 46: 46](R/W) Treat all TLBIs like TLBI ALL for a specific exception level. */
7373         uint64_t wbfdsbflushall        : 1;  /**< [ 45: 45](R/W) Any DSB instruction flushes the write buffer. */
7374         uint64_t wbfdmbflushnext       : 1;  /**< [ 44: 44](R/W) DMB instruction to !NSH flushes next ST to !NSH.  uTLB is flushed when this value is
7375                                                                  changed. */
7376         uint64_t stexl2cforce          : 1;  /**< [ 43: 43](R/W) Send all store-exclusive instructions to L2 cache.  uTLB is flushed when this value is
7377                                                                  changed. */
7378         uint64_t ioglobalforce         : 1;  /**< [ 42: 42](R/W) Reserved.  uTLB is flushed when this value is changed.
7379                                                                  Internal:
7380                                                                  Force global order for IO references. */
7381         uint64_t wcumissforce          : 1;  /**< [ 41: 41](R/W) Force all walker cache lookups to miss.  uTLB is flushed when this value is changed. */
7382         uint64_t replayprefdis         : 1;  /**< [ 40: 40](R/W) Replay PREF disable. uTLB miss PREF instruction behavior (see chapter body).
7383                                                                  0 = PREF instructions do attempt a replay for MTLB to uTLB refill.
7384                                                                  1 = PREF instructions do not attempt a replay for MTLB to uTLB refill.
7385                                                                  uTLB is flushed when this value is changed. */
7386         uint64_t zval2cdis             : 1;  /**< [ 39: 39](R/W) ZVA bypass L2C.
7387                                                                  0 = DC_ZVA instructions to L2C are STFIL1 (full block store operation allocating in
7388                                                                  requester L2, fill 0s, self-invalidate L1 cache).
7389                                                                  1 = DC_ZVA instructions to L2C are STTIL1 (full block store operation through to DRAM,
7390                                                                  bypass home and requester L2, fill 0s, self-invalidate L1 cache). */
7391         uint64_t ldil2cdis             : 1;  /**< [ 38: 38](R/W) LDI instruction L2C usage.
7392                                                                  0 = LDI instructions to L2C are LDI (don't allocate in L1, allocates L2 at requester).
7393                                                                  1 = LDI instructions to L2C are LDT (don't allocate in L2 or L1 at home or requester). */
7394         uint64_t dcva47                : 1;  /**< [ 37: 37](R/W) If MMU translations are disabled,
7395                                                                  apply memory attributes to physical addresses where bit\<47\>
7396                                                                  is zero and device attributes to physical address bit\<47\> is
7397                                                                  one. */
7398         uint64_t stprefdis             : 1;  /**< [ 36: 36](R/W) ST PREF instructions disable. */
7399         uint64_t ldprefdis             : 1;  /**< [ 35: 35](R/W) LD PREF instructions disable. */
7400         uint64_t wfildexdis            : 1;  /**< [ 34: 34](R/W) WFE release behavior for LD-exclusive.
7401                                                                  0 = L2C invalidates to global monitor cause SEV to local core.
7402                                                                  1 = L2C invalidates have no effect on global monitor (i.e. lock_register).
7403 
7404                                                                  This field should never be set to 1; setting to 1 does not
7405                                                                  conform to the ARMv8 specification. */
7406         uint64_t wfito                 : 3;  /**< [ 33: 31](R/W) Wait-for-interrupt timeout; timeout=2^(8+[WFITO]). */
7407         uint64_t rbfshortto            : 5;  /**< [ 30: 26](R/W) Read buffer short timeout; timeout = 2^[RBFSHORTTO].
7408                                                                  Must be \>=0x6. The L2C directs the core to use either RBFSHORTTO or RBFTO. The short
7409                                                                  timeout is used when an CCPI link goes down to expedite error indication. */
7410         uint64_t rbfto                 : 5;  /**< [ 25: 21](R/W) Read buffer timeout; timeout = 2^[RBFTO]. Must be \>= 0x6. */
7411         uint64_t wbfallbarrier         : 1;  /**< [ 20: 20](R/W) Write-buffer apply barrier to all ST instructions. */
7412         uint64_t wbfnomerge            : 1;  /**< [ 19: 19](R/W) Write-buffer merge disable. */
7413         uint64_t wbftonshena           : 1;  /**< [ 18: 18](R/W) Write-buffer timeout for NSH entries enable.
7414                                                                  0 = Write-buffer time out for NSH entries = 218 cycles.
7415                                                                  1 = Write-buffer time out for NSH entries = 2^[WBFTO] (see [WBFTO]). */
7416         uint64_t wbftomrgclrena        : 1;  /**< [ 17: 17](R/W) Write-buffer timeout clear-on-merge enable. */
7417         uint64_t wbfto                 : 5;  /**< [ 16: 12](R/W) Write-buffer timeout for non-NSH entries; timeout = 2^WBFTO. */
7418         uint64_t wbfthresh             : 5;  /**< [ 11:  7](R/W) Write-buffer threshold. The write-buffer starts flushing entries to the L2 cache once the
7419                                                                  number of valid write-buffer entries reaches this threshold value. */
7420         uint64_t utlbentriesm1         : 5;  /**< [  6:  2](R/W) Number of uTLB entries - 1.  Future allocation is limited to this size (pass 1, pass 2) */
7421         uint64_t cclkforce             : 1;  /**< [  1:  1](R/W) Force CSR clock enable. When set, force CSR conditional clocking. */
7422         uint64_t mclkforce             : 1;  /**< [  0:  0](R/W) Force memory clock enable. When set, force memory conditional clocking. */
7423 #else /* Word 0 - Little Endian */
7424         uint64_t mclkforce             : 1;  /**< [  0:  0](R/W) Force memory clock enable. When set, force memory conditional clocking. */
7425         uint64_t cclkforce             : 1;  /**< [  1:  1](R/W) Force CSR clock enable. When set, force CSR conditional clocking. */
7426         uint64_t utlbentriesm1         : 5;  /**< [  6:  2](R/W) Number of uTLB entries - 1.  Future allocation is limited to this size (pass 1, pass 2) */
7427         uint64_t wbfthresh             : 5;  /**< [ 11:  7](R/W) Write-buffer threshold. The write-buffer starts flushing entries to the L2 cache once the
7428                                                                  number of valid write-buffer entries reaches this threshold value. */
7429         uint64_t wbfto                 : 5;  /**< [ 16: 12](R/W) Write-buffer timeout for non-NSH entries; timeout = 2^WBFTO. */
7430         uint64_t wbftomrgclrena        : 1;  /**< [ 17: 17](R/W) Write-buffer timeout clear-on-merge enable. */
7431         uint64_t wbftonshena           : 1;  /**< [ 18: 18](R/W) Write-buffer timeout for NSH entries enable.
7432                                                                  0 = Write-buffer time out for NSH entries = 218 cycles.
7433                                                                  1 = Write-buffer time out for NSH entries = 2^[WBFTO] (see [WBFTO]). */
7434         uint64_t wbfnomerge            : 1;  /**< [ 19: 19](R/W) Write-buffer merge disable. */
7435         uint64_t wbfallbarrier         : 1;  /**< [ 20: 20](R/W) Write-buffer apply barrier to all ST instructions. */
7436         uint64_t rbfto                 : 5;  /**< [ 25: 21](R/W) Read buffer timeout; timeout = 2^[RBFTO]. Must be \>= 0x6. */
7437         uint64_t rbfshortto            : 5;  /**< [ 30: 26](R/W) Read buffer short timeout; timeout = 2^[RBFSHORTTO].
7438                                                                  Must be \>=0x6. The L2C directs the core to use either RBFSHORTTO or RBFTO. The short
7439                                                                  timeout is used when an CCPI link goes down to expedite error indication. */
7440         uint64_t wfito                 : 3;  /**< [ 33: 31](R/W) Wait-for-interrupt timeout; timeout=2^(8+[WFITO]). */
7441         uint64_t wfildexdis            : 1;  /**< [ 34: 34](R/W) WFE release behavior for LD-exclusive.
7442                                                                  0 = L2C invalidates to global monitor cause SEV to local core.
7443                                                                  1 = L2C invalidates have no effect on global monitor (i.e. lock_register).
7444 
7445                                                                  This field should never be set to 1; setting to 1 does not
7446                                                                  conform to the ARMv8 specification. */
7447         uint64_t ldprefdis             : 1;  /**< [ 35: 35](R/W) LD PREF instructions disable. */
7448         uint64_t stprefdis             : 1;  /**< [ 36: 36](R/W) ST PREF instructions disable. */
7449         uint64_t dcva47                : 1;  /**< [ 37: 37](R/W) If MMU translations are disabled,
7450                                                                  apply memory attributes to physical addresses where bit\<47\>
7451                                                                  is zero and device attributes to physical address bit\<47\> is
7452                                                                  one. */
7453         uint64_t ldil2cdis             : 1;  /**< [ 38: 38](R/W) LDI instruction L2C usage.
7454                                                                  0 = LDI instructions to L2C are LDI (don't allocate in L1, allocates L2 at requester).
7455                                                                  1 = LDI instructions to L2C are LDT (don't allocate in L2 or L1 at home or requester). */
7456         uint64_t zval2cdis             : 1;  /**< [ 39: 39](R/W) ZVA bypass L2C.
7457                                                                  0 = DC_ZVA instructions to L2C are STFIL1 (full block store operation allocating in
7458                                                                  requester L2, fill 0s, self-invalidate L1 cache).
7459                                                                  1 = DC_ZVA instructions to L2C are STTIL1 (full block store operation through to DRAM,
7460                                                                  bypass home and requester L2, fill 0s, self-invalidate L1 cache). */
7461         uint64_t replayprefdis         : 1;  /**< [ 40: 40](R/W) Replay PREF disable. uTLB miss PREF instruction behavior (see chapter body).
7462                                                                  0 = PREF instructions do attempt a replay for MTLB to uTLB refill.
7463                                                                  1 = PREF instructions do not attempt a replay for MTLB to uTLB refill.
7464                                                                  uTLB is flushed when this value is changed. */
7465         uint64_t wcumissforce          : 1;  /**< [ 41: 41](R/W) Force all walker cache lookups to miss.  uTLB is flushed when this value is changed. */
7466         uint64_t ioglobalforce         : 1;  /**< [ 42: 42](R/W) Reserved.  uTLB is flushed when this value is changed.
7467                                                                  Internal:
7468                                                                  Force global order for IO references. */
7469         uint64_t stexl2cforce          : 1;  /**< [ 43: 43](R/W) Send all store-exclusive instructions to L2 cache.  uTLB is flushed when this value is
7470                                                                  changed. */
7471         uint64_t wbfdmbflushnext       : 1;  /**< [ 44: 44](R/W) DMB instruction to !NSH flushes next ST to !NSH.  uTLB is flushed when this value is
7472                                                                  changed. */
7473         uint64_t wbfdsbflushall        : 1;  /**< [ 45: 45](R/W) Any DSB instruction flushes the write buffer. */
7474         uint64_t tlbiall               : 1;  /**< [ 46: 46](R/W) Treat all TLBIs like TLBI ALL for a specific exception level. */
7475         uint64_t utlbfillbypdis        : 1;  /**< [ 47: 47](R/W) Disable uTLB fill bypass (pass 2.0 only).
7476                                                                  0 = On a stage1-only translation, the uTLB is written along with the MTLB.
7477                                                                  1 = On a stage1-only translation, the uTLB is not written along with the MTLB causing a
7478                                                                  uTLB miss replay to complete the uTLB fill. */
7479         uint64_t gsyncto               : 5;  /**< [ 52: 48](R/W) GlobalSync timeout. (pass 2.0 only.)
7480                                                                  timeout = 2^[GSYNCTO].
7481                                                                  0x0 = disable timeout. */
7482         uint64_t tlbiicflush           : 1;  /**< [ 53: 53](R/W) Some local TLBI instructions cause ICache flush (pass 2.0 only).
7483                                                                  0 = Icache flush operation do not happen on the TLBI instructions listed below.
7484                                                                  1 = Icache is flushed on the TLBI instructions listed below:
7485                                                                    * TLBI ALLE2{IS}.
7486                                                                    * TLBI ALLE3{IS}.
7487                                                                    * TLBI VAE1{IS}.
7488                                                                    * TLBI VALE1{IS}.
7489                                                                    * TLBI VAAE1{IS}.
7490                                                                    * TLBI VAALE1{IS}.
7491                                                                    * TLBI VAE2{IS}.
7492                                                                    * TLBI VALE2{IS}.
7493                                                                    * TLBI VAE3{IS}.
7494                                                                    * TLBI VALE3{IS}.
7495                                                                    * TLBI IPAS2E1{IS}.
7496                                                                    * TLBI IPAS2LE1{IS}. */
7497         uint64_t tlbinopdis            : 1;  /**< [ 54: 54](R/W) Disable broadcast TLBI optimization (pass 2.0 only).
7498 
7499                                                                  Address-based broadcast TLBI instructions that go to remote cores are converted
7500                                                                  from address-based TLBI instructions to context-based TLBI instructions. The
7501                                                                  actions on the local core generating the TLBI instruction are still precise.
7502 
7503                                                                  0 = The converted context-based TLBI instructions or original context-based
7504                                                                  TLBIs to remote cores (without intervening interruptions, such as a DSB) are
7505                                                                  coalesced into a single context-based TLBI. Converted and original ones do not
7506                                                                  coalesce.
7507 
7508                                                                  1 = The above-mentioned coalescing is suppressed and converted context-based
7509                                                                  remote TLBIs still go out as such. */
7510         uint64_t dmbstallforce         : 1;  /**< [ 55: 55](R/W) Force DMB to wait for flushed write-buffer entries to be ACKed (pass 2.0 only).
7511                                                                  0 = DMB instructions mark prior relevant write-buffer entries for flush, but do not wait
7512                                                                  for the ACKs to return.
7513                                                                  1 = DMB instructions mark prior relevant write-buffer entries for flush and wait for all
7514                                                                  the ACKs to return. */
7515         uint64_t stlstallforce         : 1;  /**< [ 56: 56](R/W) Force ST_release to wait for flushed write-buffer entries to be ACKed (pass 2.0 only).
7516                                                                  0 = Store-release instructions mark prior relevant write-buffer entries for flush but do
7517                                                                  not wait for the ACKs to return.
7518                                                                  1 = Store-release instructions mark prior relevant write-buffer entries for flush and wait
7519                                                                  for all the ACKs to return. */
7520         uint64_t wfeldex1dis           : 1;  /**< [ 57: 57](R/W) WFE release behavior for LD-exclusive.
7521                                                                  0 = A global monitor transition from exclusive to open (lock flag transition
7522                                                                  from 1 to 0) causes SEV to local core.
7523                                                                  1 = A global monitor transition from exclusive to open (lock flag transition
7524                                                                  from 1 to 0) does not cause SEV to local core. */
7525         uint64_t stexfailcnt           : 3;  /**< [ 60: 58](RO) ST exclusive fail count. */
7526         uint64_t node                  : 2;  /**< [ 62: 61](RO) Local node ID. */
7527         uint64_t reserved_63           : 1;
7528 #endif /* Word 0 - End */
7529     } s;
7530     struct bdk_ap_cvmmemctl0_el1_cn88xxp1
7531     {
7532 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7533         uint64_t reserved_63           : 1;
7534         uint64_t node                  : 2;  /**< [ 62: 61](RO) Local node ID. */
7535         uint64_t stexfailcnt           : 3;  /**< [ 60: 58](RO) ST exclusive fail count. */
7536         uint64_t reserved_57           : 1;
7537         uint64_t stlstallforce         : 1;  /**< [ 56: 56](R/W) Force ST_release to wait for flushed write-buffer entries to be ACKed (pass 2.0 only).
7538                                                                  0 = Store-release instructions mark prior relevant write-buffer entries for flush but do
7539                                                                  not wait for the ACKs to return.
7540                                                                  1 = Store-release instructions mark prior relevant write-buffer entries for flush and wait
7541                                                                  for all the ACKs to return. */
7542         uint64_t dmbstallforce         : 1;  /**< [ 55: 55](R/W) Force DMB to wait for flushed write-buffer entries to be ACKed (pass 2.0 only).
7543                                                                  0 = DMB instructions mark prior relevant write-buffer entries for flush, but do not wait
7544                                                                  for the ACKs to return.
7545                                                                  1 = DMB instructions mark prior relevant write-buffer entries for flush and wait for all
7546                                                                  the ACKs to return. */
7547         uint64_t tlbinopdis            : 1;  /**< [ 54: 54](R/W) Disable broadcast TLBI optimization (pass 2.0 only).
7548 
7549                                                                  Address-based broadcast TLBI instructions that go to remote cores are converted
7550                                                                  from address-based TLBI instructions to context-based TLBI instructions. The
7551                                                                  actions on the local core generating the TLBI instruction are still precise.
7552 
7553                                                                  0 = The converted context-based TLBI instructions or original context-based
7554                                                                  TLBIs to remote cores (without intervening interruptions, such as a DSB) are
7555                                                                  coalesced into a single context-based TLBI. Converted and original ones do not
7556                                                                  coalesce.
7557 
7558                                                                  1 = The above-mentioned coalescing is suppressed and converted context-based
7559                                                                  remote TLBIs still go out as such. */
7560         uint64_t tlbiicflush           : 1;  /**< [ 53: 53](R/W) Some local TLBI instructions cause ICache flush (pass 2.0 only).
7561                                                                  0 = Icache flush operation do not happen on the TLBI instructions listed below.
7562                                                                  1 = Icache is flushed on the TLBI instructions listed below:
7563                                                                    * TLBI ALLE2{IS}.
7564                                                                    * TLBI ALLE3{IS}.
7565                                                                    * TLBI VAE1{IS}.
7566                                                                    * TLBI VALE1{IS}.
7567                                                                    * TLBI VAAE1{IS}.
7568                                                                    * TLBI VAALE1{IS}.
7569                                                                    * TLBI VAE2{IS}.
7570                                                                    * TLBI VALE2{IS}.
7571                                                                    * TLBI VAE3{IS}.
7572                                                                    * TLBI VALE3{IS}.
7573                                                                    * TLBI IPAS2E1{IS}.
7574                                                                    * TLBI IPAS2LE1{IS}. */
7575         uint64_t gsyncto               : 5;  /**< [ 52: 48](R/W) GlobalSync timeout. (pass 2.0 only.)
7576                                                                  timeout = 2^[GSYNCTO].
7577                                                                  0x0 = disable timeout. */
7578         uint64_t utlbfillbypdis        : 1;  /**< [ 47: 47](R/W) Disable uTLB fill bypass (pass 2.0 only).
7579                                                                  0 = On a stage1-only translation, the uTLB is written along with the MTLB.
7580                                                                  1 = On a stage1-only translation, the uTLB is not written along with the MTLB causing a
7581                                                                  uTLB miss replay to complete the uTLB fill. */
7582         uint64_t tlbiall               : 1;  /**< [ 46: 46](R/W) Treat all TLBIs like TLBI ALL for a specific exception level. */
7583         uint64_t wbfdsbflushall        : 1;  /**< [ 45: 45](R/W) Any DSB instruction flushes the write buffer. */
7584         uint64_t wbfdmbflushnext       : 1;  /**< [ 44: 44](R/W) DMB instruction to !NSH flushes next ST to !NSH.  uTLB is flushed when this value is
7585                                                                  changed. */
7586         uint64_t stexl2cforce          : 1;  /**< [ 43: 43](R/W) Send all store-exclusive instructions to L2 cache.  uTLB is flushed when this value is
7587                                                                  changed. */
7588         uint64_t ioglobalforce         : 1;  /**< [ 42: 42](R/W) Reserved.  uTLB is flushed when this value is changed.
7589                                                                  Internal:
7590                                                                  Force global order for IO references. */
7591         uint64_t wcumissforce          : 1;  /**< [ 41: 41](R/W) Force all walker cache lookups to miss.  uTLB is flushed when this value is changed. */
7592         uint64_t replayprefdis         : 1;  /**< [ 40: 40](R/W) Replay PREF disable. uTLB miss PREF instruction behavior (see chapter body).
7593                                                                  0 = PREF instructions do attempt a replay for MTLB to uTLB refill.
7594                                                                  1 = PREF instructions do not attempt a replay for MTLB to uTLB refill.
7595                                                                  uTLB is flushed when this value is changed. */
7596         uint64_t zval2cdis             : 1;  /**< [ 39: 39](R/W) ZVA bypass L2C.
7597                                                                  0 = DC_ZVA instructions to L2C are STFIL1 (full block store operation allocating in
7598                                                                  requester L2, fill 0s, self-invalidate L1 cache).
7599                                                                  1 = DC_ZVA instructions to L2C are STTIL1 (full block store operation through to DRAM,
7600                                                                  bypass home and requester L2, fill 0s, self-invalidate L1 cache). */
7601         uint64_t ldil2cdis             : 1;  /**< [ 38: 38](R/W) LDI instruction L2C usage.
7602                                                                  0 = LDI instructions to L2C are LDI (don't allocate in L1, allocates L2 at requester).
7603                                                                  1 = LDI instructions to L2C are LDT (don't allocate in L2 or L1 at home or requester). */
7604         uint64_t dcva47                : 1;  /**< [ 37: 37](R/W) If MMU translations are disabled,
7605                                                                  apply memory attributes to physical addresses where bit\<47\>
7606                                                                  is zero and device attributes to physical address bit\<47\> is
7607                                                                  one. */
7608         uint64_t stprefdis             : 1;  /**< [ 36: 36](R/W) ST PREF instructions disable. */
7609         uint64_t ldprefdis             : 1;  /**< [ 35: 35](R/W) LD PREF instructions disable. */
7610         uint64_t wfildexdis            : 1;  /**< [ 34: 34](R/W) WFE release behavior for LD-exclusive.
7611                                                                  0 = L2C invalidates to global monitor cause SEV to local core.
7612                                                                  1 = L2C invalidates have no effect on global monitor (i.e. lock_register).
7613 
7614                                                                  This field should never be set to 1; setting to 1 does not
7615                                                                  conform to the ARMv8 specification. */
7616         uint64_t wfito                 : 3;  /**< [ 33: 31](R/W) Wait-for-interrupt timeout; timeout=2^(8+[WFITO]). */
7617         uint64_t rbfshortto            : 5;  /**< [ 30: 26](R/W) Read buffer short timeout; timeout = 2^[RBFSHORTTO].
7618                                                                  Must be \>=0x6. The L2C directs the core to use either RBFSHORTTO or RBFTO. The short
7619                                                                  timeout is used when an CCPI link goes down to expedite error indication. */
7620         uint64_t rbfto                 : 5;  /**< [ 25: 21](R/W) Read buffer timeout; timeout = 2^[RBFTO]. Must be \>= 0x6. */
7621         uint64_t wbfallbarrier         : 1;  /**< [ 20: 20](R/W) Write-buffer apply barrier to all ST instructions. */
7622         uint64_t wbfnomerge            : 1;  /**< [ 19: 19](R/W) Write-buffer merge disable. */
7623         uint64_t wbftonshena           : 1;  /**< [ 18: 18](R/W) Write-buffer timeout for NSH entries enable.
7624                                                                  0 = Write-buffer time out for NSH entries = 218 cycles.
7625                                                                  1 = Write-buffer time out for NSH entries = 2^[WBFTO] (see [WBFTO]). */
7626         uint64_t wbftomrgclrena        : 1;  /**< [ 17: 17](R/W) Write-buffer timeout clear-on-merge enable. */
7627         uint64_t wbfto                 : 5;  /**< [ 16: 12](R/W) Write-buffer timeout for non-NSH entries; timeout = 2^WBFTO. */
7628         uint64_t wbfthresh             : 5;  /**< [ 11:  7](R/W) Write-buffer threshold. The write-buffer starts flushing entries to the L2 cache once the
7629                                                                  number of valid write-buffer entries reaches this threshold value. */
7630         uint64_t utlbentriesm1         : 5;  /**< [  6:  2](R/W) Number of uTLB entries - 1.  Future allocation is limited to this size (pass 1, pass 2) */
7631         uint64_t cclkforce             : 1;  /**< [  1:  1](R/W) Force CSR clock enable. When set, force CSR conditional clocking. */
7632         uint64_t mclkforce             : 1;  /**< [  0:  0](R/W) Force memory clock enable. When set, force memory conditional clocking. */
7633 #else /* Word 0 - Little Endian */
7634         uint64_t mclkforce             : 1;  /**< [  0:  0](R/W) Force memory clock enable. When set, force memory conditional clocking. */
7635         uint64_t cclkforce             : 1;  /**< [  1:  1](R/W) Force CSR clock enable. When set, force CSR conditional clocking. */
7636         uint64_t utlbentriesm1         : 5;  /**< [  6:  2](R/W) Number of uTLB entries - 1.  Future allocation is limited to this size (pass 1, pass 2) */
7637         uint64_t wbfthresh             : 5;  /**< [ 11:  7](R/W) Write-buffer threshold. The write-buffer starts flushing entries to the L2 cache once the
7638                                                                  number of valid write-buffer entries reaches this threshold value. */
7639         uint64_t wbfto                 : 5;  /**< [ 16: 12](R/W) Write-buffer timeout for non-NSH entries; timeout = 2^WBFTO. */
7640         uint64_t wbftomrgclrena        : 1;  /**< [ 17: 17](R/W) Write-buffer timeout clear-on-merge enable. */
7641         uint64_t wbftonshena           : 1;  /**< [ 18: 18](R/W) Write-buffer timeout for NSH entries enable.
7642                                                                  0 = Write-buffer time out for NSH entries = 218 cycles.
7643                                                                  1 = Write-buffer time out for NSH entries = 2^[WBFTO] (see [WBFTO]). */
7644         uint64_t wbfnomerge            : 1;  /**< [ 19: 19](R/W) Write-buffer merge disable. */
7645         uint64_t wbfallbarrier         : 1;  /**< [ 20: 20](R/W) Write-buffer apply barrier to all ST instructions. */
7646         uint64_t rbfto                 : 5;  /**< [ 25: 21](R/W) Read buffer timeout; timeout = 2^[RBFTO]. Must be \>= 0x6. */
7647         uint64_t rbfshortto            : 5;  /**< [ 30: 26](R/W) Read buffer short timeout; timeout = 2^[RBFSHORTTO].
7648                                                                  Must be \>=0x6. The L2C directs the core to use either RBFSHORTTO or RBFTO. The short
7649                                                                  timeout is used when an CCPI link goes down to expedite error indication. */
7650         uint64_t wfito                 : 3;  /**< [ 33: 31](R/W) Wait-for-interrupt timeout; timeout=2^(8+[WFITO]). */
7651         uint64_t wfildexdis            : 1;  /**< [ 34: 34](R/W) WFE release behavior for LD-exclusive.
7652                                                                  0 = L2C invalidates to global monitor cause SEV to local core.
7653                                                                  1 = L2C invalidates have no effect on global monitor (i.e. lock_register).
7654 
7655                                                                  This field should never be set to 1; setting to 1 does not
7656                                                                  conform to the ARMv8 specification. */
7657         uint64_t ldprefdis             : 1;  /**< [ 35: 35](R/W) LD PREF instructions disable. */
7658         uint64_t stprefdis             : 1;  /**< [ 36: 36](R/W) ST PREF instructions disable. */
7659         uint64_t dcva47                : 1;  /**< [ 37: 37](R/W) If MMU translations are disabled,
7660                                                                  apply memory attributes to physical addresses where bit\<47\>
7661                                                                  is zero and device attributes to physical address bit\<47\> is
7662                                                                  one. */
7663         uint64_t ldil2cdis             : 1;  /**< [ 38: 38](R/W) LDI instruction L2C usage.
7664                                                                  0 = LDI instructions to L2C are LDI (don't allocate in L1, allocates L2 at requester).
7665                                                                  1 = LDI instructions to L2C are LDT (don't allocate in L2 or L1 at home or requester). */
7666         uint64_t zval2cdis             : 1;  /**< [ 39: 39](R/W) ZVA bypass L2C.
7667                                                                  0 = DC_ZVA instructions to L2C are STFIL1 (full block store operation allocating in
7668                                                                  requester L2, fill 0s, self-invalidate L1 cache).
7669                                                                  1 = DC_ZVA instructions to L2C are STTIL1 (full block store operation through to DRAM,
7670                                                                  bypass home and requester L2, fill 0s, self-invalidate L1 cache). */
7671         uint64_t replayprefdis         : 1;  /**< [ 40: 40](R/W) Replay PREF disable. uTLB miss PREF instruction behavior (see chapter body).
7672                                                                  0 = PREF instructions do attempt a replay for MTLB to uTLB refill.
7673                                                                  1 = PREF instructions do not attempt a replay for MTLB to uTLB refill.
7674                                                                  uTLB is flushed when this value is changed. */
7675         uint64_t wcumissforce          : 1;  /**< [ 41: 41](R/W) Force all walker cache lookups to miss.  uTLB is flushed when this value is changed. */
7676         uint64_t ioglobalforce         : 1;  /**< [ 42: 42](R/W) Reserved.  uTLB is flushed when this value is changed.
7677                                                                  Internal:
7678                                                                  Force global order for IO references. */
7679         uint64_t stexl2cforce          : 1;  /**< [ 43: 43](R/W) Send all store-exclusive instructions to L2 cache.  uTLB is flushed when this value is
7680                                                                  changed. */
7681         uint64_t wbfdmbflushnext       : 1;  /**< [ 44: 44](R/W) DMB instruction to !NSH flushes next ST to !NSH.  uTLB is flushed when this value is
7682                                                                  changed. */
7683         uint64_t wbfdsbflushall        : 1;  /**< [ 45: 45](R/W) Any DSB instruction flushes the write buffer. */
7684         uint64_t tlbiall               : 1;  /**< [ 46: 46](R/W) Treat all TLBIs like TLBI ALL for a specific exception level. */
7685         uint64_t utlbfillbypdis        : 1;  /**< [ 47: 47](R/W) Disable uTLB fill bypass (pass 2.0 only).
7686                                                                  0 = On a stage1-only translation, the uTLB is written along with the MTLB.
7687                                                                  1 = On a stage1-only translation, the uTLB is not written along with the MTLB causing a
7688                                                                  uTLB miss replay to complete the uTLB fill. */
7689         uint64_t gsyncto               : 5;  /**< [ 52: 48](R/W) GlobalSync timeout. (pass 2.0 only.)
7690                                                                  timeout = 2^[GSYNCTO].
7691                                                                  0x0 = disable timeout. */
7692         uint64_t tlbiicflush           : 1;  /**< [ 53: 53](R/W) Some local TLBI instructions cause ICache flush (pass 2.0 only).
7693                                                                  0 = Icache flush operation do not happen on the TLBI instructions listed below.
7694                                                                  1 = Icache is flushed on the TLBI instructions listed below:
7695                                                                    * TLBI ALLE2{IS}.
7696                                                                    * TLBI ALLE3{IS}.
7697                                                                    * TLBI VAE1{IS}.
7698                                                                    * TLBI VALE1{IS}.
7699                                                                    * TLBI VAAE1{IS}.
7700                                                                    * TLBI VAALE1{IS}.
7701                                                                    * TLBI VAE2{IS}.
7702                                                                    * TLBI VALE2{IS}.
7703                                                                    * TLBI VAE3{IS}.
7704                                                                    * TLBI VALE3{IS}.
7705                                                                    * TLBI IPAS2E1{IS}.
7706                                                                    * TLBI IPAS2LE1{IS}. */
7707         uint64_t tlbinopdis            : 1;  /**< [ 54: 54](R/W) Disable broadcast TLBI optimization (pass 2.0 only).
7708 
7709                                                                  Address-based broadcast TLBI instructions that go to remote cores are converted
7710                                                                  from address-based TLBI instructions to context-based TLBI instructions. The
7711                                                                  actions on the local core generating the TLBI instruction are still precise.
7712 
7713                                                                  0 = The converted context-based TLBI instructions or original context-based
7714                                                                  TLBIs to remote cores (without intervening interruptions, such as a DSB) are
7715                                                                  coalesced into a single context-based TLBI. Converted and original ones do not
7716                                                                  coalesce.
7717 
7718                                                                  1 = The above-mentioned coalescing is suppressed and converted context-based
7719                                                                  remote TLBIs still go out as such. */
7720         uint64_t dmbstallforce         : 1;  /**< [ 55: 55](R/W) Force DMB to wait for flushed write-buffer entries to be ACKed (pass 2.0 only).
7721                                                                  0 = DMB instructions mark prior relevant write-buffer entries for flush, but do not wait
7722                                                                  for the ACKs to return.
7723                                                                  1 = DMB instructions mark prior relevant write-buffer entries for flush and wait for all
7724                                                                  the ACKs to return. */
7725         uint64_t stlstallforce         : 1;  /**< [ 56: 56](R/W) Force ST_release to wait for flushed write-buffer entries to be ACKed (pass 2.0 only).
7726                                                                  0 = Store-release instructions mark prior relevant write-buffer entries for flush but do
7727                                                                  not wait for the ACKs to return.
7728                                                                  1 = Store-release instructions mark prior relevant write-buffer entries for flush and wait
7729                                                                  for all the ACKs to return. */
7730         uint64_t reserved_57           : 1;
7731         uint64_t stexfailcnt           : 3;  /**< [ 60: 58](RO) ST exclusive fail count. */
7732         uint64_t node                  : 2;  /**< [ 62: 61](RO) Local node ID. */
7733         uint64_t reserved_63           : 1;
7734 #endif /* Word 0 - End */
7735     } cn88xxp1;
7736     struct bdk_ap_cvmmemctl0_el1_cn9
7737     {
7738 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7739         uint64_t reserved_63           : 1;
7740         uint64_t node                  : 2;  /**< [ 62: 61](RO) Local node ID. */
7741         uint64_t stexfailcnt           : 3;  /**< [ 60: 58](RO) ST exclusive fail count. */
7742         uint64_t wfeldex1dis           : 1;  /**< [ 57: 57](R/W) WFE release behavior for LD-exclusive.
7743                                                                  0 = A global monitor transition from exclusive to open (lock flag transition
7744                                                                  from 1 to 0) causes SEV to local core.
7745                                                                  1 = A global monitor transition from exclusive to open (lock flag transition
7746                                                                  from 1 to 0) does not cause SEV to local core. */
7747         uint64_t stlstallforce         : 1;  /**< [ 56: 56](R/W) Force ST_release to wait for flushed write-buffer entries to be ACKed.
7748                                                                  0 = Store-release instructions mark prior relevant write-buffer entries for flush but do
7749                                                                  not wait for the ACKs to return.
7750                                                                  1 = Store-release instructions mark prior relevant write-buffer entries for flush and wait
7751                                                                  for all the ACKs to return. */
7752         uint64_t dmbstallforce         : 1;  /**< [ 55: 55](R/W) Force DMB to wait for flushed write-buffer entries to be ACKed.
7753                                                                  0 = DMB instructions mark prior relevant write-buffer entries for flush, but do not wait
7754                                                                  for the ACKs to return.
7755                                                                  1 = DMB instructions mark prior relevant write-buffer entries for flush and wait for all
7756                                                                  the ACKs to return. */
7757         uint64_t tlbinopdis            : 1;  /**< [ 54: 54](R/W) Disable broadcast TLBI optimization.
7758 
7759                                                                  Address-based broadcast TLBI instructions that go to remote cores are converted
7760                                                                  from address-based TLBI instructions to context-based TLBI instructions. The
7761                                                                  actions on the local core generating the TLBI instruction are still precise.
7762 
7763                                                                  0 = The converted context-based TLBI instructions or original context-based
7764                                                                  TLBIs to remote cores (without intervening interruptions, such as a DSB) are
7765                                                                  coalesced into a single context-based TLBI. Converted and original ones do not
7766                                                                  coalesce.
7767 
7768                                                                  1 = The above-mentioned coalescing is suppressed and converted context-based
7769                                                                  remote TLBIs still go out as such. */
7770         uint64_t tlbiicflush           : 1;  /**< [ 53: 53](R/W) Some local TLBI instructions cause ICache flush.
7771                                                                  0 = Icache flush operation do not happen on the TLBI instructions listed below.
7772                                                                  1 = Icache is flushed on the TLBI instructions listed below:
7773                                                                    * TLBI ALLE2{IS}.
7774                                                                    * TLBI ALLE3{IS}.
7775                                                                    * TLBI VAE1{IS}.
7776                                                                    * TLBI VALE1{IS}.
7777                                                                    * TLBI VAAE1{IS}.
7778                                                                    * TLBI VAALE1{IS}.
7779                                                                    * TLBI VAE2{IS}.
7780                                                                    * TLBI VALE2{IS}.
7781                                                                    * TLBI VAE3{IS}.
7782                                                                    * TLBI VALE3{IS}.
7783                                                                    * TLBI IPAS2E1{IS}.
7784                                                                    * TLBI IPAS2LE1{IS}. */
7785         uint64_t gsyncto               : 5;  /**< [ 52: 48](R/W) GlobalSync timeout.
7786                                                                  timeout = 2^[GSYNCTO].
7787                                                                  0x0 = disable timeout. */
7788         uint64_t utlbfillbypdis        : 1;  /**< [ 47: 47](R/W) Disable uTLB fill bypass.
7789                                                                  0 = On a stage1-only translation, the uTLB is written along with the MTLB.
7790                                                                  1 = On a stage1-only translation, the uTLB is not written along with the MTLB causing a
7791                                                                  uTLB miss replay to complete the uTLB fill. */
7792         uint64_t tlbiall               : 1;  /**< [ 46: 46](R/W) Treat all TLBIs like TLBI ALL for a specific exception level. */
7793         uint64_t wbfdsbflushall        : 1;  /**< [ 45: 45](R/W) Any DSB instruction flushes the write buffer. */
7794         uint64_t wbfdmbflushnext       : 1;  /**< [ 44: 44](R/W) DMB instruction to !NSH flushes next ST to !NSH.  uTLB is not flushed with this value is
7795                                                                  changed. */
7796         uint64_t stexl2cforce          : 1;  /**< [ 43: 43](R/W) Send all store-exclusive instructions to L2 cache.  uTLB is not flushed with this value is
7797                                                                  changed. */
7798         uint64_t ioglobalforce         : 1;  /**< [ 42: 42](R/W) Reserved.
7799                                                                  Internal:
7800                                                                  Force global order for IO references. */
7801         uint64_t wcumissforce          : 1;  /**< [ 41: 41](R/W) Force all walker cache lookups to miss.  uTLB is not flushed with this value is changed. */
7802         uint64_t replayprefdis         : 1;  /**< [ 40: 40](R/W) Replay PREF disable. uTLB miss PREF instruction behavior (see chapter body).
7803                                                                  0 = PREF instructions do attempt a replay for MTLB to uTLB refill.
7804                                                                  1 = PREF instructions do not attempt a replay for MTLB to uTLB refill.
7805 
7806                                                                  uTLB is not flushed with this value is changed. */
7807         uint64_t zval2cdis             : 1;  /**< [ 39: 39](R/W) ZVA bypass L2C.
7808                                                                  0 = DC_ZVA instructions to L2C are STFIL1 (full block store operation allocating in
7809                                                                  requester L2, fill 0s, self-invalidate L1 cache).
7810                                                                  1 = DC_ZVA instructions to L2C are STTIL1 (full block store operation through to DRAM,
7811                                                                  bypass home and requester L2, fill 0s, self-invalidate L1 cache). */
7812         uint64_t ldil2cdis             : 1;  /**< [ 38: 38](R/W) LDI instruction L2C usage.
7813                                                                  0 = LDI instructions to L2C are LDI (don't allocate in L1, allocates L2 at requester).
7814                                                                  1 = LDI instructions to L2C are LDT (don't allocate in L2 or L1 at home or requester). */
7815         uint64_t dcva47                : 1;  /**< [ 37: 37](R/W) If MMU translations are disabled,
7816                                                                  apply memory attributes to physical addresses where bit\<47\>
7817                                                                  is zero and device attributes to physical address bit\<47\> is
7818                                                                  one. */
7819         uint64_t stprefdis             : 1;  /**< [ 36: 36](R/W) ST PREF instructions disable. */
7820         uint64_t ldprefdis             : 1;  /**< [ 35: 35](R/W) LD PREF instructions disable. */
7821         uint64_t wfildexdis            : 1;  /**< [ 34: 34](R/W) WFE release behavior for LD-exclusive.
7822                                                                  0 = L2C invalidates to global monitor cause SEV to local core.
7823                                                                  1 = L2C invalidates have no effect on global monitor (i.e. lock_register).
7824 
7825                                                                  This field should never be set to 1; setting to 1 does not
7826                                                                  conform to the ARMv8 specification. */
7827         uint64_t wfito                 : 3;  /**< [ 33: 31](R/W) Wait-for-interrupt timeout; timeout=2^(8+[WFITO]). */
7828         uint64_t rbfshortto            : 5;  /**< [ 30: 26](R/W) Read buffer short timeout; timeout = 2^[RBFSHORTTO+6].
7829                                                                  The L2C directs the core to use either RBFSHORTTO or RBFTO. The short
7830                                                                  timeout is used when an CCPI link goes down to expedite error indication. */
7831         uint64_t rbfto                 : 5;  /**< [ 25: 21](R/W) Read buffer timeout; timeout = 2^[RBFTO+6]. */
7832         uint64_t wbfallbarrier         : 1;  /**< [ 20: 20](R/W) Write-buffer apply barrier to all ST instructions. */
7833         uint64_t wbfnomerge            : 1;  /**< [ 19: 19](R/W) Write-buffer merge disable. */
7834         uint64_t wbftonshena           : 1;  /**< [ 18: 18](R/W) Write-buffer timeout for NSH entries enable.
7835                                                                  0 = Write-buffer time out for NSH entries = 218 cycles.
7836                                                                  1 = Write-buffer time out for NSH entries = 2^[WBFTO] (see [WBFTO]). */
7837         uint64_t wbftomrgclrena        : 1;  /**< [ 17: 17](R/W) Write-buffer timeout clear-on-merge enable. */
7838         uint64_t wbfto                 : 5;  /**< [ 16: 12](R/W) Write-buffer timeout for non-NSH entries; timeout = 2^WBFTO. */
7839         uint64_t wbfthresh             : 5;  /**< [ 11:  7](R/W) Write-buffer threshold. The write-buffer starts flushing entries to the L2 cache once the
7840                                                                  number of valid write-buffer entries reaches this threshold value. */
7841         uint64_t utlbentriesm1         : 5;  /**< [  6:  2](R/W) Number of uTLB entries minus one.  uTLB is flushed when this value is changed. */
7842         uint64_t cclkforce             : 1;  /**< [  1:  1](R/W) Force CSR clock enable. When set, force CSR conditional clocking. */
7843         uint64_t mclkforce             : 1;  /**< [  0:  0](R/W) Force memory clock enable. When set, force memory conditional clocking. */
7844 #else /* Word 0 - Little Endian */
7845         uint64_t mclkforce             : 1;  /**< [  0:  0](R/W) Force memory clock enable. When set, force memory conditional clocking. */
7846         uint64_t cclkforce             : 1;  /**< [  1:  1](R/W) Force CSR clock enable. When set, force CSR conditional clocking. */
7847         uint64_t utlbentriesm1         : 5;  /**< [  6:  2](R/W) Number of uTLB entries minus one.  uTLB is flushed when this value is changed. */
7848         uint64_t wbfthresh             : 5;  /**< [ 11:  7](R/W) Write-buffer threshold. The write-buffer starts flushing entries to the L2 cache once the
7849                                                                  number of valid write-buffer entries reaches this threshold value. */
7850         uint64_t wbfto                 : 5;  /**< [ 16: 12](R/W) Write-buffer timeout for non-NSH entries; timeout = 2^WBFTO. */
7851         uint64_t wbftomrgclrena        : 1;  /**< [ 17: 17](R/W) Write-buffer timeout clear-on-merge enable. */
7852         uint64_t wbftonshena           : 1;  /**< [ 18: 18](R/W) Write-buffer timeout for NSH entries enable.
7853                                                                  0 = Write-buffer time out for NSH entries = 218 cycles.
7854                                                                  1 = Write-buffer time out for NSH entries = 2^[WBFTO] (see [WBFTO]). */
7855         uint64_t wbfnomerge            : 1;  /**< [ 19: 19](R/W) Write-buffer merge disable. */
7856         uint64_t wbfallbarrier         : 1;  /**< [ 20: 20](R/W) Write-buffer apply barrier to all ST instructions. */
7857         uint64_t rbfto                 : 5;  /**< [ 25: 21](R/W) Read buffer timeout; timeout = 2^[RBFTO+6]. */
7858         uint64_t rbfshortto            : 5;  /**< [ 30: 26](R/W) Read buffer short timeout; timeout = 2^[RBFSHORTTO+6].
7859                                                                  The L2C directs the core to use either RBFSHORTTO or RBFTO. The short
7860                                                                  timeout is used when an CCPI link goes down to expedite error indication. */
7861         uint64_t wfito                 : 3;  /**< [ 33: 31](R/W) Wait-for-interrupt timeout; timeout=2^(8+[WFITO]). */
7862         uint64_t wfildexdis            : 1;  /**< [ 34: 34](R/W) WFE release behavior for LD-exclusive.
7863                                                                  0 = L2C invalidates to global monitor cause SEV to local core.
7864                                                                  1 = L2C invalidates have no effect on global monitor (i.e. lock_register).
7865 
7866                                                                  This field should never be set to 1; setting to 1 does not
7867                                                                  conform to the ARMv8 specification. */
7868         uint64_t ldprefdis             : 1;  /**< [ 35: 35](R/W) LD PREF instructions disable. */
7869         uint64_t stprefdis             : 1;  /**< [ 36: 36](R/W) ST PREF instructions disable. */
7870         uint64_t dcva47                : 1;  /**< [ 37: 37](R/W) If MMU translations are disabled,
7871                                                                  apply memory attributes to physical addresses where bit\<47\>
7872                                                                  is zero and device attributes to physical address bit\<47\> is
7873                                                                  one. */
7874         uint64_t ldil2cdis             : 1;  /**< [ 38: 38](R/W) LDI instruction L2C usage.
7875                                                                  0 = LDI instructions to L2C are LDI (don't allocate in L1, allocates L2 at requester).
7876                                                                  1 = LDI instructions to L2C are LDT (don't allocate in L2 or L1 at home or requester). */
7877         uint64_t zval2cdis             : 1;  /**< [ 39: 39](R/W) ZVA bypass L2C.
7878                                                                  0 = DC_ZVA instructions to L2C are STFIL1 (full block store operation allocating in
7879                                                                  requester L2, fill 0s, self-invalidate L1 cache).
7880                                                                  1 = DC_ZVA instructions to L2C are STTIL1 (full block store operation through to DRAM,
7881                                                                  bypass home and requester L2, fill 0s, self-invalidate L1 cache). */
7882         uint64_t replayprefdis         : 1;  /**< [ 40: 40](R/W) Replay PREF disable. uTLB miss PREF instruction behavior (see chapter body).
7883                                                                  0 = PREF instructions do attempt a replay for MTLB to uTLB refill.
7884                                                                  1 = PREF instructions do not attempt a replay for MTLB to uTLB refill.
7885 
7886                                                                  uTLB is not flushed with this value is changed. */
7887         uint64_t wcumissforce          : 1;  /**< [ 41: 41](R/W) Force all walker cache lookups to miss.  uTLB is not flushed with this value is changed. */
7888         uint64_t ioglobalforce         : 1;  /**< [ 42: 42](R/W) Reserved.
7889                                                                  Internal:
7890                                                                  Force global order for IO references. */
7891         uint64_t stexl2cforce          : 1;  /**< [ 43: 43](R/W) Send all store-exclusive instructions to L2 cache.  uTLB is not flushed with this value is
7892                                                                  changed. */
7893         uint64_t wbfdmbflushnext       : 1;  /**< [ 44: 44](R/W) DMB instruction to !NSH flushes next ST to !NSH.  uTLB is not flushed with this value is
7894                                                                  changed. */
7895         uint64_t wbfdsbflushall        : 1;  /**< [ 45: 45](R/W) Any DSB instruction flushes the write buffer. */
7896         uint64_t tlbiall               : 1;  /**< [ 46: 46](R/W) Treat all TLBIs like TLBI ALL for a specific exception level. */
7897         uint64_t utlbfillbypdis        : 1;  /**< [ 47: 47](R/W) Disable uTLB fill bypass.
7898                                                                  0 = On a stage1-only translation, the uTLB is written along with the MTLB.
7899                                                                  1 = On a stage1-only translation, the uTLB is not written along with the MTLB causing a
7900                                                                  uTLB miss replay to complete the uTLB fill. */
7901         uint64_t gsyncto               : 5;  /**< [ 52: 48](R/W) GlobalSync timeout.
7902                                                                  timeout = 2^[GSYNCTO].
7903                                                                  0x0 = disable timeout. */
7904         uint64_t tlbiicflush           : 1;  /**< [ 53: 53](R/W) Some local TLBI instructions cause ICache flush.
7905                                                                  0 = Icache flush operation do not happen on the TLBI instructions listed below.
7906                                                                  1 = Icache is flushed on the TLBI instructions listed below:
7907                                                                    * TLBI ALLE2{IS}.
7908                                                                    * TLBI ALLE3{IS}.
7909                                                                    * TLBI VAE1{IS}.
7910                                                                    * TLBI VALE1{IS}.
7911                                                                    * TLBI VAAE1{IS}.
7912                                                                    * TLBI VAALE1{IS}.
7913                                                                    * TLBI VAE2{IS}.
7914                                                                    * TLBI VALE2{IS}.
7915                                                                    * TLBI VAE3{IS}.
7916                                                                    * TLBI VALE3{IS}.
7917                                                                    * TLBI IPAS2E1{IS}.
7918                                                                    * TLBI IPAS2LE1{IS}. */
7919         uint64_t tlbinopdis            : 1;  /**< [ 54: 54](R/W) Disable broadcast TLBI optimization.
7920 
7921                                                                  Address-based broadcast TLBI instructions that go to remote cores are converted
7922                                                                  from address-based TLBI instructions to context-based TLBI instructions. The
7923                                                                  actions on the local core generating the TLBI instruction are still precise.
7924 
7925                                                                  0 = The converted context-based TLBI instructions or original context-based
7926                                                                  TLBIs to remote cores (without intervening interruptions, such as a DSB) are
7927                                                                  coalesced into a single context-based TLBI. Converted and original ones do not
7928                                                                  coalesce.
7929 
7930                                                                  1 = The above-mentioned coalescing is suppressed and converted context-based
7931                                                                  remote TLBIs still go out as such. */
7932         uint64_t dmbstallforce         : 1;  /**< [ 55: 55](R/W) Force DMB to wait for flushed write-buffer entries to be ACKed.
7933                                                                  0 = DMB instructions mark prior relevant write-buffer entries for flush, but do not wait
7934                                                                  for the ACKs to return.
7935                                                                  1 = DMB instructions mark prior relevant write-buffer entries for flush and wait for all
7936                                                                  the ACKs to return. */
7937         uint64_t stlstallforce         : 1;  /**< [ 56: 56](R/W) Force ST_release to wait for flushed write-buffer entries to be ACKed.
7938                                                                  0 = Store-release instructions mark prior relevant write-buffer entries for flush but do
7939                                                                  not wait for the ACKs to return.
7940                                                                  1 = Store-release instructions mark prior relevant write-buffer entries for flush and wait
7941                                                                  for all the ACKs to return. */
7942         uint64_t wfeldex1dis           : 1;  /**< [ 57: 57](R/W) WFE release behavior for LD-exclusive.
7943                                                                  0 = A global monitor transition from exclusive to open (lock flag transition
7944                                                                  from 1 to 0) causes SEV to local core.
7945                                                                  1 = A global monitor transition from exclusive to open (lock flag transition
7946                                                                  from 1 to 0) does not cause SEV to local core. */
7947         uint64_t stexfailcnt           : 3;  /**< [ 60: 58](RO) ST exclusive fail count. */
7948         uint64_t node                  : 2;  /**< [ 62: 61](RO) Local node ID. */
7949         uint64_t reserved_63           : 1;
7950 #endif /* Word 0 - End */
7951     } cn9;
7952     struct bdk_ap_cvmmemctl0_el1_cn81xx
7953     {
7954 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7955         uint64_t reserved_63           : 1;
7956         uint64_t node                  : 2;  /**< [ 62: 61](RO) Local node ID. */
7957         uint64_t stexfailcnt           : 3;  /**< [ 60: 58](RO) ST exclusive fail count. */
7958         uint64_t wfeldex1dis           : 1;  /**< [ 57: 57](R/W) WFE release behavior for LD-exclusive.
7959                                                                  0 = A global monitor transition from exclusive to open (lock flag transition
7960                                                                  from 1 to 0) causes SEV to local core.
7961                                                                  1 = A global monitor transition from exclusive to open (lock flag transition
7962                                                                  from 1 to 0) does not cause SEV to local core. */
7963         uint64_t stlstallforce         : 1;  /**< [ 56: 56](R/W) Force ST_release to wait for flushed write-buffer entries to be ACKed.
7964                                                                  0 = Store-release instructions mark prior relevant write-buffer entries for flush but do
7965                                                                  not wait for the ACKs to return.
7966                                                                  1 = Store-release instructions mark prior relevant write-buffer entries for flush and wait
7967                                                                  for all the ACKs to return. */
7968         uint64_t dmbstallforce         : 1;  /**< [ 55: 55](R/W) Force DMB to wait for flushed write-buffer entries to be ACKed.
7969                                                                  0 = DMB instructions mark prior relevant write-buffer entries for flush, but do not wait
7970                                                                  for the ACKs to return.
7971                                                                  1 = DMB instructions mark prior relevant write-buffer entries for flush and wait for all
7972                                                                  the ACKs to return. */
7973         uint64_t tlbinopdis            : 1;  /**< [ 54: 54](R/W) Disable broadcast TLBI optimization.
7974 
7975                                                                  Address-based broadcast TLBI instructions that go to remote cores are converted
7976                                                                  from address-based TLBI instructions to context-based TLBI instructions. The
7977                                                                  actions on the local core generating the TLBI instruction are still precise.
7978 
7979                                                                  0 = The converted context-based TLBI instructions or original context-based
7980                                                                  TLBIs to remote cores (without intervening interruptions, such as a DSB) are
7981                                                                  coalesced into a single context-based TLBI. Converted and original ones do not
7982                                                                  coalesce.
7983 
7984                                                                  1 = The above-mentioned coalescing is suppressed and converted context-based
7985                                                                  remote TLBIs still go out as such. */
7986         uint64_t tlbiicflush           : 1;  /**< [ 53: 53](R/W) Some local TLBI instructions cause ICache flush.
7987                                                                  0 = Icache flush operation do not happen on the TLBI instructions listed below.
7988                                                                  1 = Icache is flushed on the TLBI instructions listed below:
7989                                                                    * TLBI ALLE2{IS}.
7990                                                                    * TLBI ALLE3{IS}.
7991                                                                    * TLBI VAE1{IS}.
7992                                                                    * TLBI VALE1{IS}.
7993                                                                    * TLBI VAAE1{IS}.
7994                                                                    * TLBI VAALE1{IS}.
7995                                                                    * TLBI VAE2{IS}.
7996                                                                    * TLBI VALE2{IS}.
7997                                                                    * TLBI VAE3{IS}.
7998                                                                    * TLBI VALE3{IS}.
7999                                                                    * TLBI IPAS2E1{IS}.
8000                                                                    * TLBI IPAS2LE1{IS}. */
8001         uint64_t gsyncto               : 5;  /**< [ 52: 48](R/W) GlobalSync timeout.
8002                                                                  timeout = 2^[GSYNCTO].
8003                                                                  0x0 = disable timeout. */
8004         uint64_t utlbfillbypdis        : 1;  /**< [ 47: 47](R/W) Disable uTLB fill bypass.
8005                                                                  0 = On a stage1-only translation, the uTLB is written along with the MTLB.
8006                                                                  1 = On a stage1-only translation, the uTLB is not written along with the MTLB causing a
8007                                                                  uTLB miss replay to complete the uTLB fill. */
8008         uint64_t tlbiall               : 1;  /**< [ 46: 46](R/W) Treat all TLBIs like TLBI ALL for a specific exception level. */
8009         uint64_t wbfdsbflushall        : 1;  /**< [ 45: 45](R/W) Any DSB instruction flushes the write buffer. */
8010         uint64_t wbfdmbflushnext       : 1;  /**< [ 44: 44](R/W) DMB instruction to !NSH flushes next ST to !NSH.  uTLB is not flushed with this value is
8011                                                                  changed. */
8012         uint64_t stexl2cforce          : 1;  /**< [ 43: 43](R/W) Send all store-exclusive instructions to L2 cache.  uTLB is not flushed with this value is
8013                                                                  changed. */
8014         uint64_t ioglobalforce         : 1;  /**< [ 42: 42](R/W) Reserved.
8015                                                                  Internal:
8016                                                                  Force global order for IO references. */
8017         uint64_t wcumissforce          : 1;  /**< [ 41: 41](R/W) Force all walker cache lookups to miss.  uTLB is not flushed with this value is changed. */
8018         uint64_t replayprefdis         : 1;  /**< [ 40: 40](R/W) Replay PREF disable. uTLB miss PREF instruction behavior (see chapter body).
8019                                                                  0 = PREF instructions do attempt a replay for MTLB to uTLB refill.
8020                                                                  1 = PREF instructions do not attempt a replay for MTLB to uTLB refill.
8021 
8022                                                                  uTLB is not flushed with this value is changed. */
8023         uint64_t zval2cdis             : 1;  /**< [ 39: 39](R/W) ZVA bypass L2C.
8024                                                                  0 = DC_ZVA instructions to L2C are STFIL1 (full block store operation allocating in
8025                                                                  requester L2, fill 0s, self-invalidate L1 cache).
8026                                                                  1 = DC_ZVA instructions to L2C are STTIL1 (full block store operation through to DRAM,
8027                                                                  bypass home and requester L2, fill 0s, self-invalidate L1 cache). */
8028         uint64_t ldil2cdis             : 1;  /**< [ 38: 38](R/W) LDI instruction L2C usage.
8029                                                                  0 = LDI instructions to L2C are LDI (don't allocate in L1, allocates L2 at requester).
8030                                                                  1 = LDI instructions to L2C are LDT (don't allocate in L2 or L1 at home or requester). */
8031         uint64_t dcva47                : 1;  /**< [ 37: 37](R/W) If MMU translations are disabled,
8032                                                                  apply memory attributes to physical addresses where bit\<47\>
8033                                                                  is zero and device attributes to physical address bit\<47\> is
8034                                                                  one. */
8035         uint64_t stprefdis             : 1;  /**< [ 36: 36](R/W) ST PREF instructions disable. */
8036         uint64_t ldprefdis             : 1;  /**< [ 35: 35](R/W) LD PREF instructions disable. */
8037         uint64_t wfildexdis            : 1;  /**< [ 34: 34](R/W) WFE release behavior for LD-exclusive.
8038                                                                  0 = L2C invalidates to global monitor cause SEV to local core.
8039                                                                  1 = L2C invalidates have no effect on global monitor (i.e. lock_register).
8040 
8041                                                                  This field should never be set to 1; setting to 1 does not
8042                                                                  conform to the ARMv8 specification. */
8043         uint64_t wfito                 : 3;  /**< [ 33: 31](R/W) Wait-for-interrupt timeout; timeout=2^(8+[WFITO]). */
8044         uint64_t rbfshortto            : 5;  /**< [ 30: 26](R/W) Read buffer short timeout; timeout = 2^[RBFSHORTTO].
8045                                                                  Must be \>=0x6. The L2C directs the core to use either RBFSHORTTO or RBFTO. The short
8046                                                                  timeout is used when an CCPI link goes down to expedite error indication. */
8047         uint64_t rbfto                 : 5;  /**< [ 25: 21](R/W) Read buffer timeout; timeout = 2^[RBFTO]. Must be \>= 0x6. */
8048         uint64_t wbfallbarrier         : 1;  /**< [ 20: 20](R/W) Write-buffer apply barrier to all ST instructions. */
8049         uint64_t wbfnomerge            : 1;  /**< [ 19: 19](R/W) Write-buffer merge disable. */
8050         uint64_t wbftonshena           : 1;  /**< [ 18: 18](R/W) Write-buffer timeout for NSH entries enable.
8051                                                                  0 = Write-buffer time out for NSH entries = 218 cycles.
8052                                                                  1 = Write-buffer time out for NSH entries = 2^[WBFTO] (see [WBFTO]). */
8053         uint64_t wbftomrgclrena        : 1;  /**< [ 17: 17](R/W) Write-buffer timeout clear-on-merge enable. */
8054         uint64_t wbfto                 : 5;  /**< [ 16: 12](R/W) Write-buffer timeout for non-NSH entries; timeout = 2^WBFTO. */
8055         uint64_t wbfthresh             : 5;  /**< [ 11:  7](R/W) Write-buffer threshold. The write-buffer starts flushing entries to the L2 cache once the
8056                                                                  number of valid write-buffer entries reaches this threshold value. */
8057         uint64_t utlbentriesm1         : 5;  /**< [  6:  2](R/W) Number of uTLB entries - 1.  uTLB is flushed when this value is changed. */
8058         uint64_t cclkforce             : 1;  /**< [  1:  1](R/W) Force CSR clock enable. When set, force CSR conditional clocking. */
8059         uint64_t mclkforce             : 1;  /**< [  0:  0](R/W) Force memory clock enable. When set, force memory conditional clocking. */
8060 #else /* Word 0 - Little Endian */
8061         uint64_t mclkforce             : 1;  /**< [  0:  0](R/W) Force memory clock enable. When set, force memory conditional clocking. */
8062         uint64_t cclkforce             : 1;  /**< [  1:  1](R/W) Force CSR clock enable. When set, force CSR conditional clocking. */
8063         uint64_t utlbentriesm1         : 5;  /**< [  6:  2](R/W) Number of uTLB entries - 1.  uTLB is flushed when this value is changed. */
8064         uint64_t wbfthresh             : 5;  /**< [ 11:  7](R/W) Write-buffer threshold. The write-buffer starts flushing entries to the L2 cache once the
8065                                                                  number of valid write-buffer entries reaches this threshold value. */
8066         uint64_t wbfto                 : 5;  /**< [ 16: 12](R/W) Write-buffer timeout for non-NSH entries; timeout = 2^WBFTO. */
8067         uint64_t wbftomrgclrena        : 1;  /**< [ 17: 17](R/W) Write-buffer timeout clear-on-merge enable. */
8068         uint64_t wbftonshena           : 1;  /**< [ 18: 18](R/W) Write-buffer timeout for NSH entries enable.
8069                                                                  0 = Write-buffer time out for NSH entries = 218 cycles.
8070                                                                  1 = Write-buffer time out for NSH entries = 2^[WBFTO] (see [WBFTO]). */
8071         uint64_t wbfnomerge            : 1;  /**< [ 19: 19](R/W) Write-buffer merge disable. */
8072         uint64_t wbfallbarrier         : 1;  /**< [ 20: 20](R/W) Write-buffer apply barrier to all ST instructions. */
8073         uint64_t rbfto                 : 5;  /**< [ 25: 21](R/W) Read buffer timeout; timeout = 2^[RBFTO]. Must be \>= 0x6. */
8074         uint64_t rbfshortto            : 5;  /**< [ 30: 26](R/W) Read buffer short timeout; timeout = 2^[RBFSHORTTO].
8075                                                                  Must be \>=0x6. The L2C directs the core to use either RBFSHORTTO or RBFTO. The short
8076                                                                  timeout is used when an CCPI link goes down to expedite error indication. */
8077         uint64_t wfito                 : 3;  /**< [ 33: 31](R/W) Wait-for-interrupt timeout; timeout=2^(8+[WFITO]). */
8078         uint64_t wfildexdis            : 1;  /**< [ 34: 34](R/W) WFE release behavior for LD-exclusive.
8079                                                                  0 = L2C invalidates to global monitor cause SEV to local core.
8080                                                                  1 = L2C invalidates have no effect on global monitor (i.e. lock_register).
8081 
8082                                                                  This field should never be set to 1; setting to 1 does not
8083                                                                  conform to the ARMv8 specification. */
8084         uint64_t ldprefdis             : 1;  /**< [ 35: 35](R/W) LD PREF instructions disable. */
8085         uint64_t stprefdis             : 1;  /**< [ 36: 36](R/W) ST PREF instructions disable. */
8086         uint64_t dcva47                : 1;  /**< [ 37: 37](R/W) If MMU translations are disabled,
8087                                                                  apply memory attributes to physical addresses where bit\<47\>
8088                                                                  is zero and device attributes to physical address bit\<47\> is
8089                                                                  one. */
8090         uint64_t ldil2cdis             : 1;  /**< [ 38: 38](R/W) LDI instruction L2C usage.
8091                                                                  0 = LDI instructions to L2C are LDI (don't allocate in L1, allocates L2 at requester).
8092                                                                  1 = LDI instructions to L2C are LDT (don't allocate in L2 or L1 at home or requester). */
8093         uint64_t zval2cdis             : 1;  /**< [ 39: 39](R/W) ZVA bypass L2C.
8094                                                                  0 = DC_ZVA instructions to L2C are STFIL1 (full block store operation allocating in
8095                                                                  requester L2, fill 0s, self-invalidate L1 cache).
8096                                                                  1 = DC_ZVA instructions to L2C are STTIL1 (full block store operation through to DRAM,
8097                                                                  bypass home and requester L2, fill 0s, self-invalidate L1 cache). */
8098         uint64_t replayprefdis         : 1;  /**< [ 40: 40](R/W) Replay PREF disable. uTLB miss PREF instruction behavior (see chapter body).
8099                                                                  0 = PREF instructions do attempt a replay for MTLB to uTLB refill.
8100                                                                  1 = PREF instructions do not attempt a replay for MTLB to uTLB refill.
8101 
8102                                                                  uTLB is not flushed with this value is changed. */
8103         uint64_t wcumissforce          : 1;  /**< [ 41: 41](R/W) Force all walker cache lookups to miss.  uTLB is not flushed with this value is changed. */
8104         uint64_t ioglobalforce         : 1;  /**< [ 42: 42](R/W) Reserved.
8105                                                                  Internal:
8106                                                                  Force global order for IO references. */
8107         uint64_t stexl2cforce          : 1;  /**< [ 43: 43](R/W) Send all store-exclusive instructions to L2 cache.  uTLB is not flushed with this value is
8108                                                                  changed. */
8109         uint64_t wbfdmbflushnext       : 1;  /**< [ 44: 44](R/W) DMB instruction to !NSH flushes next ST to !NSH.  uTLB is not flushed with this value is
8110                                                                  changed. */
8111         uint64_t wbfdsbflushall        : 1;  /**< [ 45: 45](R/W) Any DSB instruction flushes the write buffer. */
8112         uint64_t tlbiall               : 1;  /**< [ 46: 46](R/W) Treat all TLBIs like TLBI ALL for a specific exception level. */
8113         uint64_t utlbfillbypdis        : 1;  /**< [ 47: 47](R/W) Disable uTLB fill bypass.
8114                                                                  0 = On a stage1-only translation, the uTLB is written along with the MTLB.
8115                                                                  1 = On a stage1-only translation, the uTLB is not written along with the MTLB causing a
8116                                                                  uTLB miss replay to complete the uTLB fill. */
8117         uint64_t gsyncto               : 5;  /**< [ 52: 48](R/W) GlobalSync timeout.
8118                                                                  timeout = 2^[GSYNCTO].
8119                                                                  0x0 = disable timeout. */
8120         uint64_t tlbiicflush           : 1;  /**< [ 53: 53](R/W) Some local TLBI instructions cause ICache flush.
8121                                                                  0 = Icache flush operation do not happen on the TLBI instructions listed below.
8122                                                                  1 = Icache is flushed on the TLBI instructions listed below:
8123                                                                    * TLBI ALLE2{IS}.
8124                                                                    * TLBI ALLE3{IS}.
8125                                                                    * TLBI VAE1{IS}.
8126                                                                    * TLBI VALE1{IS}.
8127                                                                    * TLBI VAAE1{IS}.
8128                                                                    * TLBI VAALE1{IS}.
8129                                                                    * TLBI VAE2{IS}.
8130                                                                    * TLBI VALE2{IS}.
8131                                                                    * TLBI VAE3{IS}.
8132                                                                    * TLBI VALE3{IS}.
8133                                                                    * TLBI IPAS2E1{IS}.
8134                                                                    * TLBI IPAS2LE1{IS}. */
8135         uint64_t tlbinopdis            : 1;  /**< [ 54: 54](R/W) Disable broadcast TLBI optimization.
8136 
8137                                                                  Address-based broadcast TLBI instructions that go to remote cores are converted
8138                                                                  from address-based TLBI instructions to context-based TLBI instructions. The
8139                                                                  actions on the local core generating the TLBI instruction are still precise.
8140 
8141                                                                  0 = The converted context-based TLBI instructions or original context-based
8142                                                                  TLBIs to remote cores (without intervening interruptions, such as a DSB) are
8143                                                                  coalesced into a single context-based TLBI. Converted and original ones do not
8144                                                                  coalesce.
8145 
8146                                                                  1 = The above-mentioned coalescing is suppressed and converted context-based
8147                                                                  remote TLBIs still go out as such. */
8148         uint64_t dmbstallforce         : 1;  /**< [ 55: 55](R/W) Force DMB to wait for flushed write-buffer entries to be ACKed.
8149                                                                  0 = DMB instructions mark prior relevant write-buffer entries for flush, but do not wait
8150                                                                  for the ACKs to return.
8151                                                                  1 = DMB instructions mark prior relevant write-buffer entries for flush and wait for all
8152                                                                  the ACKs to return. */
8153         uint64_t stlstallforce         : 1;  /**< [ 56: 56](R/W) Force ST_release to wait for flushed write-buffer entries to be ACKed.
8154                                                                  0 = Store-release instructions mark prior relevant write-buffer entries for flush but do
8155                                                                  not wait for the ACKs to return.
8156                                                                  1 = Store-release instructions mark prior relevant write-buffer entries for flush and wait
8157                                                                  for all the ACKs to return. */
8158         uint64_t wfeldex1dis           : 1;  /**< [ 57: 57](R/W) WFE release behavior for LD-exclusive.
8159                                                                  0 = A global monitor transition from exclusive to open (lock flag transition
8160                                                                  from 1 to 0) causes SEV to local core.
8161                                                                  1 = A global monitor transition from exclusive to open (lock flag transition
8162                                                                  from 1 to 0) does not cause SEV to local core. */
8163         uint64_t stexfailcnt           : 3;  /**< [ 60: 58](RO) ST exclusive fail count. */
8164         uint64_t node                  : 2;  /**< [ 62: 61](RO) Local node ID. */
8165         uint64_t reserved_63           : 1;
8166 #endif /* Word 0 - End */
8167     } cn81xx;
8168     /* struct bdk_ap_cvmmemctl0_el1_cn81xx cn83xx; */
8169     /* struct bdk_ap_cvmmemctl0_el1_s cn88xxp2; */
8170 };
8171 typedef union bdk_ap_cvmmemctl0_el1 bdk_ap_cvmmemctl0_el1_t;
8172 
8173 #define BDK_AP_CVMMEMCTL0_EL1 BDK_AP_CVMMEMCTL0_EL1_FUNC()
8174 static inline uint64_t BDK_AP_CVMMEMCTL0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVMMEMCTL0_EL1_FUNC(void)8175 static inline uint64_t BDK_AP_CVMMEMCTL0_EL1_FUNC(void)
8176 {
8177     return 0x3000b000400ll;
8178 }
8179 
8180 #define typedef_BDK_AP_CVMMEMCTL0_EL1 bdk_ap_cvmmemctl0_el1_t
8181 #define bustype_BDK_AP_CVMMEMCTL0_EL1 BDK_CSR_TYPE_SYSREG
8182 #define basename_BDK_AP_CVMMEMCTL0_EL1 "AP_CVMMEMCTL0_EL1"
8183 #define busnum_BDK_AP_CVMMEMCTL0_EL1 0
8184 #define arguments_BDK_AP_CVMMEMCTL0_EL1 -1,-1,-1,-1
8185 
8186 /**
8187  * Register (SYSREG) ap_cvmmemctl1_el1
8188  *
8189  * AP Cavium Memory Control 1 Register
8190  * This register controls additional memory-unit features.
8191  * Internal:
8192  * Back-end, non-debug.
8193  */
8194 union bdk_ap_cvmmemctl1_el1
8195 {
8196     uint64_t u;
8197     struct bdk_ap_cvmmemctl1_el1_s
8198     {
8199 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8200         uint64_t rsvd_57_63            : 7;  /**< [ 63: 57](R/W) Reserved. */
8201         uint64_t ldictxchkena          : 1;  /**< [ 56: 56](R/W) LDI context consistency check enable. For diagnostic use only. */
8202         uint64_t rbfevictbyp3dis       : 1;  /**< [ 55: 55](R/W) MAF RBUF evict datapath 3-cycle bypass disable. For diagnostic use only. */
8203         uint64_t rbfevictbyp2dis       : 1;  /**< [ 54: 54](R/W) MAF RBUF evict datapath 2-cycle bypass disable. For diagnostic use only. */
8204         uint64_t xmcpriwbfdis          : 1;  /**< [ 53: 53](R/W) XMC priority disable for predicted unlock WBF eviction. For diagnostic use only. */
8205         uint64_t xmcpristdis           : 1;  /**< [ 52: 52](R/W) XMC priority disable for predicted unlock ST. For diagnostic use only. */
8206         uint64_t xmcpriswpdis          : 1;  /**< [ 51: 51](R/W) XMC priority disable for predicted unlock SWP. For diagnostic use only. */
8207         uint64_t xmcpricasdis          : 1;  /**< [ 50: 50](R/W) XMC priority disable for predicted unlock CAS. For diagnostic use only. */
8208         uint64_t iostmergedis          : 1;  /**< [ 49: 49](R/W) IO ST merging disable. */
8209         uint64_t ioldmergedis          : 1;  /**< [ 48: 48](R/W) IO LD merging disable. */
8210         uint64_t gclkforce             : 1;  /**< [ 47: 47](R/W) Force gated clocks to be on. For diagnostic use only. */
8211         uint64_t ldil3prefdis          : 1;  /**< [ 46: 46](R/W) LDIL3 PREF instructions disable. */
8212         uint64_t ldil2prefdis          : 1;  /**< [ 45: 45](R/W) LDIL2 PREF instructions disable. */
8213         uint64_t spare44               : 1;  /**< [ 44: 44](R/W) Reserved; spare. */
8214         uint64_t evatt_limited_size    : 1;  /**< [ 43: 43](R/W) 0 = do not limit ASIDMAP/VMIDMAP size
8215                                                                  1 = ASIDMAP has 7 entries, VMIDMAP has 7 entries */
8216         uint64_t evatt_periodic_flush  : 1;  /**< [ 42: 42](R/W) 0 = EVATT is not periodically flushed
8217                                                                  1 = EVATT is flushed every 2^14 cycles */
8218         uint64_t cvap_dis              : 1;  /**< [ 41: 41](R/W) If set, convert DC_CVAP into DC_CVAC.  For diagnostic use only. */
8219         uint64_t tlbinoadr             : 1;  /**< [ 40: 40](R/W) If set, convert broadcast TLBI address-based opcodes to context-based opcode. For
8220                                                                  diagnostic use only. */
8221         uint64_t utlbentriesm1_5       : 1;  /**< [ 39: 39](R/W) Bit\<5\> of [UTLBENTRIESM1], the number of uTLB entries minus one. The uTLB is flushed when this
8222                                                                  value is changed. */
8223         uint64_t tlbiremoteicflush     : 1;  /**< [ 38: 38](R/W) Force ICache flush when any remote TLBI is received.
8224                                                                  0 = Do nothing.
8225                                                                  1 = Flush the ICache. */
8226         uint64_t tlbilocalicflush      : 1;  /**< [ 37: 37](R/W) Force ICache flush when any local TLBI is issued.
8227                                                                  0 = Do nothing.
8228                                                                  1 = Flush the ICache. */
8229         uint64_t dprefbpmode           : 1;  /**< [ 36: 36](R/W) Data-stream hardware prefetcher backpressure mode select.
8230                                                                  0 = Single counter mode (combined hit and miss latency counter).
8231                                                                  1 = Dual counter mode (separate hit and miss latency counters). */
8232         uint64_t dprefbpctl            : 4;  /**< [ 35: 32](R/W) Data-stream hardware prefetcher backpressure control mask for dual counter mode.
8233                                                                  Internal:
8234                                                                  Backpressure is applied if:
8235                                                                  \<pre\>
8236                                                                    (   ([DPREFBPCTL]\<0\> && !hit_ctr_bp && !miss_ctr_bp)
8237                                                                     || ([DPREFBPCTL]\<1\> && !hit_ctr_bp &&  miss_ctr_bp)
8238                                                                     || ([DPREFBPCTL]\<2\> &&  hit_ctr_bp && !miss_ctr_bp)
8239                                                                     || ([DPREFBPCTL]\<3\> &&  hit_ctr_bp &&  miss_ctr_bp))
8240                                                                  \</pre\>
8241 
8242                                                                  Where hit_ctr_bp is the MSB of the 4-bit hit counter being set, and miss_ctr_bp
8243                                                                  is the MSB of the 4-bit miss counter being set. */
8244         uint64_t dprefbphitthresh      : 12; /**< [ 31: 20](R/W) Data-stream hardware prefetcher backpressure threshold for L2C hit latency. */
8245         uint64_t dprefbpmissthresh     : 12; /**< [ 19:  8](R/W) Data-stream hardware prefetcher backpressure threshold for L2C miss latency. */
8246         uint64_t spare                 : 1;  /**< [  7:  7](R/W) Reserved; spare. */
8247         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Reserved.
8248                                                                  Internal:
8249                                                                  83xx: Enable SSO switch-tag. */
8250         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Reserved.
8251                                                                  Internal:
8252                                                                  83xx: Trap any access to nonzero node id. */
8253         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Reserved.
8254                                                                  Internal:
8255                                                                  Enable I/O SSO and PKO address region. */
8256         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Reserved.
8257                                                                  Internal:
8258                                                                  83xx: Enable/disable LMTST(a). */
8259         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8260         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8261         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8262 #else /* Word 0 - Little Endian */
8263         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8264         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8265         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8266         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Reserved.
8267                                                                  Internal:
8268                                                                  83xx: Enable/disable LMTST(a). */
8269         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Reserved.
8270                                                                  Internal:
8271                                                                  Enable I/O SSO and PKO address region. */
8272         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Reserved.
8273                                                                  Internal:
8274                                                                  83xx: Trap any access to nonzero node id. */
8275         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Reserved.
8276                                                                  Internal:
8277                                                                  83xx: Enable SSO switch-tag. */
8278         uint64_t spare                 : 1;  /**< [  7:  7](R/W) Reserved; spare. */
8279         uint64_t dprefbpmissthresh     : 12; /**< [ 19:  8](R/W) Data-stream hardware prefetcher backpressure threshold for L2C miss latency. */
8280         uint64_t dprefbphitthresh      : 12; /**< [ 31: 20](R/W) Data-stream hardware prefetcher backpressure threshold for L2C hit latency. */
8281         uint64_t dprefbpctl            : 4;  /**< [ 35: 32](R/W) Data-stream hardware prefetcher backpressure control mask for dual counter mode.
8282                                                                  Internal:
8283                                                                  Backpressure is applied if:
8284                                                                  \<pre\>
8285                                                                    (   ([DPREFBPCTL]\<0\> && !hit_ctr_bp && !miss_ctr_bp)
8286                                                                     || ([DPREFBPCTL]\<1\> && !hit_ctr_bp &&  miss_ctr_bp)
8287                                                                     || ([DPREFBPCTL]\<2\> &&  hit_ctr_bp && !miss_ctr_bp)
8288                                                                     || ([DPREFBPCTL]\<3\> &&  hit_ctr_bp &&  miss_ctr_bp))
8289                                                                  \</pre\>
8290 
8291                                                                  Where hit_ctr_bp is the MSB of the 4-bit hit counter being set, and miss_ctr_bp
8292                                                                  is the MSB of the 4-bit miss counter being set. */
8293         uint64_t dprefbpmode           : 1;  /**< [ 36: 36](R/W) Data-stream hardware prefetcher backpressure mode select.
8294                                                                  0 = Single counter mode (combined hit and miss latency counter).
8295                                                                  1 = Dual counter mode (separate hit and miss latency counters). */
8296         uint64_t tlbilocalicflush      : 1;  /**< [ 37: 37](R/W) Force ICache flush when any local TLBI is issued.
8297                                                                  0 = Do nothing.
8298                                                                  1 = Flush the ICache. */
8299         uint64_t tlbiremoteicflush     : 1;  /**< [ 38: 38](R/W) Force ICache flush when any remote TLBI is received.
8300                                                                  0 = Do nothing.
8301                                                                  1 = Flush the ICache. */
8302         uint64_t utlbentriesm1_5       : 1;  /**< [ 39: 39](R/W) Bit\<5\> of [UTLBENTRIESM1], the number of uTLB entries minus one. The uTLB is flushed when this
8303                                                                  value is changed. */
8304         uint64_t tlbinoadr             : 1;  /**< [ 40: 40](R/W) If set, convert broadcast TLBI address-based opcodes to context-based opcode. For
8305                                                                  diagnostic use only. */
8306         uint64_t cvap_dis              : 1;  /**< [ 41: 41](R/W) If set, convert DC_CVAP into DC_CVAC.  For diagnostic use only. */
8307         uint64_t evatt_periodic_flush  : 1;  /**< [ 42: 42](R/W) 0 = EVATT is not periodically flushed
8308                                                                  1 = EVATT is flushed every 2^14 cycles */
8309         uint64_t evatt_limited_size    : 1;  /**< [ 43: 43](R/W) 0 = do not limit ASIDMAP/VMIDMAP size
8310                                                                  1 = ASIDMAP has 7 entries, VMIDMAP has 7 entries */
8311         uint64_t spare44               : 1;  /**< [ 44: 44](R/W) Reserved; spare. */
8312         uint64_t ldil2prefdis          : 1;  /**< [ 45: 45](R/W) LDIL2 PREF instructions disable. */
8313         uint64_t ldil3prefdis          : 1;  /**< [ 46: 46](R/W) LDIL3 PREF instructions disable. */
8314         uint64_t gclkforce             : 1;  /**< [ 47: 47](R/W) Force gated clocks to be on. For diagnostic use only. */
8315         uint64_t ioldmergedis          : 1;  /**< [ 48: 48](R/W) IO LD merging disable. */
8316         uint64_t iostmergedis          : 1;  /**< [ 49: 49](R/W) IO ST merging disable. */
8317         uint64_t xmcpricasdis          : 1;  /**< [ 50: 50](R/W) XMC priority disable for predicted unlock CAS. For diagnostic use only. */
8318         uint64_t xmcpriswpdis          : 1;  /**< [ 51: 51](R/W) XMC priority disable for predicted unlock SWP. For diagnostic use only. */
8319         uint64_t xmcpristdis           : 1;  /**< [ 52: 52](R/W) XMC priority disable for predicted unlock ST. For diagnostic use only. */
8320         uint64_t xmcpriwbfdis          : 1;  /**< [ 53: 53](R/W) XMC priority disable for predicted unlock WBF eviction. For diagnostic use only. */
8321         uint64_t rbfevictbyp2dis       : 1;  /**< [ 54: 54](R/W) MAF RBUF evict datapath 2-cycle bypass disable. For diagnostic use only. */
8322         uint64_t rbfevictbyp3dis       : 1;  /**< [ 55: 55](R/W) MAF RBUF evict datapath 3-cycle bypass disable. For diagnostic use only. */
8323         uint64_t ldictxchkena          : 1;  /**< [ 56: 56](R/W) LDI context consistency check enable. For diagnostic use only. */
8324         uint64_t rsvd_57_63            : 7;  /**< [ 63: 57](R/W) Reserved. */
8325 #endif /* Word 0 - End */
8326     } s;
8327     struct bdk_ap_cvmmemctl1_el1_cn9
8328     {
8329 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8330         uint64_t rsvd_57_63            : 7;  /**< [ 63: 57](R/W) Reserved. */
8331         uint64_t ldictxchkena          : 1;  /**< [ 56: 56](R/W) LDI context consistency check enable. For diagnostic use only. */
8332         uint64_t rbfevictbyp3dis       : 1;  /**< [ 55: 55](R/W) MAF RBUF evict datapath 3-cycle bypass disable. For diagnostic use only. */
8333         uint64_t rbfevictbyp2dis       : 1;  /**< [ 54: 54](R/W) MAF RBUF evict datapath 2-cycle bypass disable. For diagnostic use only. */
8334         uint64_t xmcpriwbfdis          : 1;  /**< [ 53: 53](R/W) XMC priority disable for predicted unlock WBF eviction. For diagnostic use only. */
8335         uint64_t xmcpristdis           : 1;  /**< [ 52: 52](R/W) XMC priority disable for predicted unlock ST. For diagnostic use only. */
8336         uint64_t xmcpriswpdis          : 1;  /**< [ 51: 51](R/W) XMC priority disable for predicted unlock SWP. For diagnostic use only. */
8337         uint64_t xmcpricasdis          : 1;  /**< [ 50: 50](R/W) XMC priority disable for predicted unlock CAS. For diagnostic use only. */
8338         uint64_t iostmergedis          : 1;  /**< [ 49: 49](R/W) IO ST merging disable. */
8339         uint64_t ioldmergedis          : 1;  /**< [ 48: 48](R/W) IO LD merging disable. */
8340         uint64_t gclkforce             : 1;  /**< [ 47: 47](R/W) Force gated clocks to be on. For diagnostic use only. */
8341         uint64_t ldil3prefdis          : 1;  /**< [ 46: 46](R/W) LDIL3 PREF instructions disable. */
8342         uint64_t ldil2prefdis          : 1;  /**< [ 45: 45](R/W) LDIL2 PREF instructions disable. */
8343         uint64_t spare44               : 1;  /**< [ 44: 44](R/W) Reserved; spare. */
8344         uint64_t evatt_limited_size    : 1;  /**< [ 43: 43](R/W) 0 = do not limit ASIDMAP/VMIDMAP size
8345                                                                  1 = ASIDMAP has 7 entries, VMIDMAP has 7 entries */
8346         uint64_t evatt_periodic_flush  : 1;  /**< [ 42: 42](R/W) 0 = EVATT is not periodically flushed
8347                                                                  1 = EVATT is flushed every 2^14 cycles */
8348         uint64_t cvap_dis              : 1;  /**< [ 41: 41](R/W) If set, convert DC_CVAP into DC_CVAC.  For diagnostic use only. */
8349         uint64_t tlbinoadr             : 1;  /**< [ 40: 40](R/W) If set, convert broadcast TLBI address-based opcodes to context-based opcode. For
8350                                                                  diagnostic use only. */
8351         uint64_t utlbentriesm1_5       : 1;  /**< [ 39: 39](R/W) Bit\<5\> of [UTLBENTRIESM1], the number of uTLB entries minus one. The uTLB is flushed when this
8352                                                                  value is changed. */
8353         uint64_t tlbiremoteicflush     : 1;  /**< [ 38: 38](R/W) Force ICache flush when any remote TLBI is received.
8354                                                                  0 = Do nothing.
8355                                                                  1 = Flush the ICache. */
8356         uint64_t tlbilocalicflush      : 1;  /**< [ 37: 37](R/W) Force ICache flush when any local TLBI is issued.
8357                                                                  0 = Do nothing.
8358                                                                  1 = Flush the ICache. */
8359         uint64_t dprefbpmode           : 1;  /**< [ 36: 36](R/W) Data-stream hardware prefetcher backpressure mode select.
8360                                                                  0 = Single counter mode (combined hit and miss latency counter).
8361                                                                  1 = Dual counter mode (separate hit and miss latency counters). */
8362         uint64_t dprefbpctl            : 4;  /**< [ 35: 32](R/W) Data-stream hardware prefetcher backpressure control mask for dual counter mode.
8363                                                                  Internal:
8364                                                                  Backpressure is applied if:
8365                                                                  \<pre\>
8366                                                                    (   ([DPREFBPCTL]\<0\> && !hit_ctr_bp && !miss_ctr_bp)
8367                                                                     || ([DPREFBPCTL]\<1\> && !hit_ctr_bp &&  miss_ctr_bp)
8368                                                                     || ([DPREFBPCTL]\<2\> &&  hit_ctr_bp && !miss_ctr_bp)
8369                                                                     || ([DPREFBPCTL]\<3\> &&  hit_ctr_bp &&  miss_ctr_bp))
8370                                                                  \</pre\>
8371 
8372                                                                  Where hit_ctr_bp is the MSB of the 4-bit hit counter being set, and miss_ctr_bp
8373                                                                  is the MSB of the 4-bit miss counter being set. */
8374         uint64_t dprefbphitthresh      : 12; /**< [ 31: 20](R/W) Data-stream hardware prefetcher backpressure threshold for L2C hit latency. */
8375         uint64_t dprefbpmissthresh     : 12; /**< [ 19:  8](R/W) Data-stream hardware prefetcher backpressure threshold for L2C miss latency. */
8376         uint64_t spare                 : 1;  /**< [  7:  7](R/W) Reserved; spare. */
8377         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Reserved.
8378                                                                  Internal:
8379                                                                  Enable SSO switch-tag. */
8380         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Trap any access to nonzero node id. This should be clear on multi-socket
8381                                                                  systems, and set on single-socket systems. */
8382         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Enable SSO and PKO address region.
8383                                                                  0 = Accesses described below will trap.
8384                                                                  1 = Allow \> 64-bit memory instructions, multi-register memory instructions, and
8385                                                                  atomic instructions to SSO and PKO I/O address regions. This must be set if SSO
8386                                                                  or PKO are to be used.
8387 
8388                                                                  Other address regions (e.g. SLI) are not affected by this setting. */
8389         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Enable LMTST. */
8390         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8391         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8392         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8393 #else /* Word 0 - Little Endian */
8394         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8395         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8396         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8397         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Enable LMTST. */
8398         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Enable SSO and PKO address region.
8399                                                                  0 = Accesses described below will trap.
8400                                                                  1 = Allow \> 64-bit memory instructions, multi-register memory instructions, and
8401                                                                  atomic instructions to SSO and PKO I/O address regions. This must be set if SSO
8402                                                                  or PKO are to be used.
8403 
8404                                                                  Other address regions (e.g. SLI) are not affected by this setting. */
8405         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Trap any access to nonzero node id. This should be clear on multi-socket
8406                                                                  systems, and set on single-socket systems. */
8407         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Reserved.
8408                                                                  Internal:
8409                                                                  Enable SSO switch-tag. */
8410         uint64_t spare                 : 1;  /**< [  7:  7](R/W) Reserved; spare. */
8411         uint64_t dprefbpmissthresh     : 12; /**< [ 19:  8](R/W) Data-stream hardware prefetcher backpressure threshold for L2C miss latency. */
8412         uint64_t dprefbphitthresh      : 12; /**< [ 31: 20](R/W) Data-stream hardware prefetcher backpressure threshold for L2C hit latency. */
8413         uint64_t dprefbpctl            : 4;  /**< [ 35: 32](R/W) Data-stream hardware prefetcher backpressure control mask for dual counter mode.
8414                                                                  Internal:
8415                                                                  Backpressure is applied if:
8416                                                                  \<pre\>
8417                                                                    (   ([DPREFBPCTL]\<0\> && !hit_ctr_bp && !miss_ctr_bp)
8418                                                                     || ([DPREFBPCTL]\<1\> && !hit_ctr_bp &&  miss_ctr_bp)
8419                                                                     || ([DPREFBPCTL]\<2\> &&  hit_ctr_bp && !miss_ctr_bp)
8420                                                                     || ([DPREFBPCTL]\<3\> &&  hit_ctr_bp &&  miss_ctr_bp))
8421                                                                  \</pre\>
8422 
8423                                                                  Where hit_ctr_bp is the MSB of the 4-bit hit counter being set, and miss_ctr_bp
8424                                                                  is the MSB of the 4-bit miss counter being set. */
8425         uint64_t dprefbpmode           : 1;  /**< [ 36: 36](R/W) Data-stream hardware prefetcher backpressure mode select.
8426                                                                  0 = Single counter mode (combined hit and miss latency counter).
8427                                                                  1 = Dual counter mode (separate hit and miss latency counters). */
8428         uint64_t tlbilocalicflush      : 1;  /**< [ 37: 37](R/W) Force ICache flush when any local TLBI is issued.
8429                                                                  0 = Do nothing.
8430                                                                  1 = Flush the ICache. */
8431         uint64_t tlbiremoteicflush     : 1;  /**< [ 38: 38](R/W) Force ICache flush when any remote TLBI is received.
8432                                                                  0 = Do nothing.
8433                                                                  1 = Flush the ICache. */
8434         uint64_t utlbentriesm1_5       : 1;  /**< [ 39: 39](R/W) Bit\<5\> of [UTLBENTRIESM1], the number of uTLB entries minus one. The uTLB is flushed when this
8435                                                                  value is changed. */
8436         uint64_t tlbinoadr             : 1;  /**< [ 40: 40](R/W) If set, convert broadcast TLBI address-based opcodes to context-based opcode. For
8437                                                                  diagnostic use only. */
8438         uint64_t cvap_dis              : 1;  /**< [ 41: 41](R/W) If set, convert DC_CVAP into DC_CVAC.  For diagnostic use only. */
8439         uint64_t evatt_periodic_flush  : 1;  /**< [ 42: 42](R/W) 0 = EVATT is not periodically flushed
8440                                                                  1 = EVATT is flushed every 2^14 cycles */
8441         uint64_t evatt_limited_size    : 1;  /**< [ 43: 43](R/W) 0 = do not limit ASIDMAP/VMIDMAP size
8442                                                                  1 = ASIDMAP has 7 entries, VMIDMAP has 7 entries */
8443         uint64_t spare44               : 1;  /**< [ 44: 44](R/W) Reserved; spare. */
8444         uint64_t ldil2prefdis          : 1;  /**< [ 45: 45](R/W) LDIL2 PREF instructions disable. */
8445         uint64_t ldil3prefdis          : 1;  /**< [ 46: 46](R/W) LDIL3 PREF instructions disable. */
8446         uint64_t gclkforce             : 1;  /**< [ 47: 47](R/W) Force gated clocks to be on. For diagnostic use only. */
8447         uint64_t ioldmergedis          : 1;  /**< [ 48: 48](R/W) IO LD merging disable. */
8448         uint64_t iostmergedis          : 1;  /**< [ 49: 49](R/W) IO ST merging disable. */
8449         uint64_t xmcpricasdis          : 1;  /**< [ 50: 50](R/W) XMC priority disable for predicted unlock CAS. For diagnostic use only. */
8450         uint64_t xmcpriswpdis          : 1;  /**< [ 51: 51](R/W) XMC priority disable for predicted unlock SWP. For diagnostic use only. */
8451         uint64_t xmcpristdis           : 1;  /**< [ 52: 52](R/W) XMC priority disable for predicted unlock ST. For diagnostic use only. */
8452         uint64_t xmcpriwbfdis          : 1;  /**< [ 53: 53](R/W) XMC priority disable for predicted unlock WBF eviction. For diagnostic use only. */
8453         uint64_t rbfevictbyp2dis       : 1;  /**< [ 54: 54](R/W) MAF RBUF evict datapath 2-cycle bypass disable. For diagnostic use only. */
8454         uint64_t rbfevictbyp3dis       : 1;  /**< [ 55: 55](R/W) MAF RBUF evict datapath 3-cycle bypass disable. For diagnostic use only. */
8455         uint64_t ldictxchkena          : 1;  /**< [ 56: 56](R/W) LDI context consistency check enable. For diagnostic use only. */
8456         uint64_t rsvd_57_63            : 7;  /**< [ 63: 57](R/W) Reserved. */
8457 #endif /* Word 0 - End */
8458     } cn9;
8459     struct bdk_ap_cvmmemctl1_el1_cn81xx
8460     {
8461 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8462         uint64_t reserved_39_63        : 25;
8463         uint64_t tlbiremoteicflush     : 1;  /**< [ 38: 38](R/W) Force ICache flush when any remote TLBI is received.
8464                                                                  0 = Do nothing.
8465                                                                  1 = Flush the ICache. */
8466         uint64_t tlbilocalicflush      : 1;  /**< [ 37: 37](R/W) Force ICache flush when any local TLBI is issued.
8467                                                                  0 = Do nothing.
8468                                                                  1 = Flush the ICache. */
8469         uint64_t dprefbpmode           : 1;  /**< [ 36: 36](R/W) Data-stream hardware prefetcher backpressure mode select.
8470                                                                  0 = Single counter mode (combined hit and miss latency counter).
8471                                                                  1 = Dual counter mode (separate hit and miss latency counters). */
8472         uint64_t dprefbpctl            : 4;  /**< [ 35: 32](R/W) Data-stream hardware prefetcher backpressure control mask for dual counter mode.
8473                                                                  Internal:
8474                                                                  Backpressure is applied if:
8475                                                                  \<pre\>
8476                                                                    (   ([DPREFBPCTL]\<0\> && !hit_ctr_bp && !miss_ctr_bp)
8477                                                                     || ([DPREFBPCTL]\<1\> && !hit_ctr_bp &&  miss_ctr_bp)
8478                                                                     || ([DPREFBPCTL]\<2\> &&  hit_ctr_bp && !miss_ctr_bp)
8479                                                                     || ([DPREFBPCTL]\<3\> &&  hit_ctr_bp &&  miss_ctr_bp))
8480                                                                  \</pre\>
8481 
8482                                                                  Where hit_ctr_bp is the MSB of the 4-bit hit counter being set, and miss_ctr_bp
8483                                                                  is the MSB of the 4-bit miss counter being set. */
8484         uint64_t dprefbphitthresh      : 12; /**< [ 31: 20](R/W) Data-stream hardware prefetcher backpressure threshold for L2C hit latency. */
8485         uint64_t dprefbpmissthresh     : 12; /**< [ 19:  8](R/W) Data-stream hardware prefetcher backpressure threshold for L2C miss latency. */
8486         uint64_t spare                 : 1;  /**< [  7:  7](R/W) Reserved; spare. */
8487         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Reserved.
8488                                                                  Internal:
8489                                                                  83xx: Enable SSO switch-tag. */
8490         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Reserved.
8491                                                                  Internal:
8492                                                                  83xx: Trap any access to nonzero node id. */
8493         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Reserved.
8494                                                                  Internal:
8495                                                                  Enable I/O SSO and PKO address region. */
8496         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Reserved.
8497                                                                  Internal:
8498                                                                  83xx: Enable/disable LMTST(a). */
8499         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8500         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8501         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8502 #else /* Word 0 - Little Endian */
8503         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8504         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8505         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8506         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Reserved.
8507                                                                  Internal:
8508                                                                  83xx: Enable/disable LMTST(a). */
8509         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Reserved.
8510                                                                  Internal:
8511                                                                  Enable I/O SSO and PKO address region. */
8512         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Reserved.
8513                                                                  Internal:
8514                                                                  83xx: Trap any access to nonzero node id. */
8515         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Reserved.
8516                                                                  Internal:
8517                                                                  83xx: Enable SSO switch-tag. */
8518         uint64_t spare                 : 1;  /**< [  7:  7](R/W) Reserved; spare. */
8519         uint64_t dprefbpmissthresh     : 12; /**< [ 19:  8](R/W) Data-stream hardware prefetcher backpressure threshold for L2C miss latency. */
8520         uint64_t dprefbphitthresh      : 12; /**< [ 31: 20](R/W) Data-stream hardware prefetcher backpressure threshold for L2C hit latency. */
8521         uint64_t dprefbpctl            : 4;  /**< [ 35: 32](R/W) Data-stream hardware prefetcher backpressure control mask for dual counter mode.
8522                                                                  Internal:
8523                                                                  Backpressure is applied if:
8524                                                                  \<pre\>
8525                                                                    (   ([DPREFBPCTL]\<0\> && !hit_ctr_bp && !miss_ctr_bp)
8526                                                                     || ([DPREFBPCTL]\<1\> && !hit_ctr_bp &&  miss_ctr_bp)
8527                                                                     || ([DPREFBPCTL]\<2\> &&  hit_ctr_bp && !miss_ctr_bp)
8528                                                                     || ([DPREFBPCTL]\<3\> &&  hit_ctr_bp &&  miss_ctr_bp))
8529                                                                  \</pre\>
8530 
8531                                                                  Where hit_ctr_bp is the MSB of the 4-bit hit counter being set, and miss_ctr_bp
8532                                                                  is the MSB of the 4-bit miss counter being set. */
8533         uint64_t dprefbpmode           : 1;  /**< [ 36: 36](R/W) Data-stream hardware prefetcher backpressure mode select.
8534                                                                  0 = Single counter mode (combined hit and miss latency counter).
8535                                                                  1 = Dual counter mode (separate hit and miss latency counters). */
8536         uint64_t tlbilocalicflush      : 1;  /**< [ 37: 37](R/W) Force ICache flush when any local TLBI is issued.
8537                                                                  0 = Do nothing.
8538                                                                  1 = Flush the ICache. */
8539         uint64_t tlbiremoteicflush     : 1;  /**< [ 38: 38](R/W) Force ICache flush when any remote TLBI is received.
8540                                                                  0 = Do nothing.
8541                                                                  1 = Flush the ICache. */
8542         uint64_t reserved_39_63        : 25;
8543 #endif /* Word 0 - End */
8544     } cn81xx;
8545     struct bdk_ap_cvmmemctl1_el1_cn88xx
8546     {
8547 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8548         uint64_t reserved_37_63        : 27;
8549         uint64_t reserved_8_36         : 29;
8550         uint64_t reserved_7            : 1;
8551         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Reserved.
8552                                                                  Internal:
8553                                                                  83xx: Enable SSO switch-tag. */
8554         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Reserved.
8555                                                                  Internal:
8556                                                                  83xx: Trap any access to nonzero node id. */
8557         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Reserved.
8558                                                                  Internal:
8559                                                                  Enable I/O SSO and PKO address region. */
8560         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Reserved.
8561                                                                  Internal:
8562                                                                  83xx: Enable/disable LMTST(a). */
8563         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8564         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8565         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8566 #else /* Word 0 - Little Endian */
8567         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8568         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8569         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8570         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Reserved.
8571                                                                  Internal:
8572                                                                  83xx: Enable/disable LMTST(a). */
8573         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Reserved.
8574                                                                  Internal:
8575                                                                  Enable I/O SSO and PKO address region. */
8576         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Reserved.
8577                                                                  Internal:
8578                                                                  83xx: Trap any access to nonzero node id. */
8579         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Reserved.
8580                                                                  Internal:
8581                                                                  83xx: Enable SSO switch-tag. */
8582         uint64_t reserved_7            : 1;
8583         uint64_t reserved_8_36         : 29;
8584         uint64_t reserved_37_63        : 27;
8585 #endif /* Word 0 - End */
8586     } cn88xx;
8587     struct bdk_ap_cvmmemctl1_el1_cn83xx
8588     {
8589 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8590         uint64_t reserved_39_63        : 25;
8591         uint64_t tlbiremoteicflush     : 1;  /**< [ 38: 38](R/W) Force ICache flush when any remote TLBI is received.
8592                                                                  0 = Do nothing.
8593                                                                  1 = Flush the ICache. */
8594         uint64_t tlbilocalicflush      : 1;  /**< [ 37: 37](R/W) Force ICache flush when any local TLBI is issued.
8595                                                                  0 = Do nothing.
8596                                                                  1 = Flush the ICache. */
8597         uint64_t dprefbpmode           : 1;  /**< [ 36: 36](R/W) Data-stream hardware prefetcher backpressure mode select.
8598                                                                  0 = Single counter mode (combined hit and miss latency counter).
8599                                                                  1 = Dual counter mode (separate hit and miss latency counters). */
8600         uint64_t dprefbpctl            : 4;  /**< [ 35: 32](R/W) Data-stream hardware prefetcher backpressure control mask for dual counter mode.
8601                                                                  Internal:
8602                                                                  Backpressure is applied if:
8603                                                                  \<pre\>
8604                                                                    (   ([DPREFBPCTL]\<0\> && !hit_ctr_bp && !miss_ctr_bp)
8605                                                                     || ([DPREFBPCTL]\<1\> && !hit_ctr_bp &&  miss_ctr_bp)
8606                                                                     || ([DPREFBPCTL]\<2\> &&  hit_ctr_bp && !miss_ctr_bp)
8607                                                                     || ([DPREFBPCTL]\<3\> &&  hit_ctr_bp &&  miss_ctr_bp))
8608                                                                  \</pre\>
8609 
8610                                                                  Where hit_ctr_bp is the MSB of the 4-bit hit counter being set, and miss_ctr_bp
8611                                                                  is the MSB of the 4-bit miss counter being set. */
8612         uint64_t dprefbphitthresh      : 12; /**< [ 31: 20](R/W) Data-stream hardware prefetcher backpressure threshold for L2C hit latency. */
8613         uint64_t dprefbpmissthresh     : 12; /**< [ 19:  8](R/W) Data-stream hardware prefetcher backpressure threshold for L2C miss latency. */
8614         uint64_t spare                 : 1;  /**< [  7:  7](R/W) Reserved; spare. */
8615         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Enable SSO switch-tag caching. The cache must be invalidated through e.g. use of
8616                                                                  SSO_WS_CFG[SSO_SAI_FLUSH] before clearing this bit. */
8617         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Trap any access to nonzero node id. */
8618         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Enable SSO and PKO address region.
8619                                                                  0 = Accesses described below will trap.
8620                                                                  1 = Allow \> 64-bit memory instructions, multi-register memory instructions, and
8621                                                                  atomic instructions to SSO and PKO I/O address regions. This must be set if SSO
8622                                                                  or PKO are to be used.
8623 
8624                                                                  Other address regions (e.g. SLI) are not affected by this setting. */
8625         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Enable LMTST. */
8626         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8627         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8628         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8629 #else /* Word 0 - Little Endian */
8630         uint64_t lodnshena             : 1;  /**< [  0:  0](R/W) LocalOrderDomain DMB/DSB_NSH{ST} enable. */
8631         uint64_t lodishena             : 1;  /**< [  1:  1](R/W) LocalOrderDomain DMB/DSB_ISH{ST} enable. */
8632         uint64_t lodignoresh           : 1;  /**< [  2:  2](R/W) LocalOrderDomain DMB/DSB_NSH{ST} ignores shareability (applies to both nsh and ish pages). */
8633         uint64_t lmtstena              : 1;  /**< [  3:  3](R/W) Enable LMTST. */
8634         uint64_t ioatomicena           : 1;  /**< [  4:  4](R/W) Enable SSO and PKO address region.
8635                                                                  0 = Accesses described below will trap.
8636                                                                  1 = Allow \> 64-bit memory instructions, multi-register memory instructions, and
8637                                                                  atomic instructions to SSO and PKO I/O address regions. This must be set if SSO
8638                                                                  or PKO are to be used.
8639 
8640                                                                  Other address regions (e.g. SLI) are not affected by this setting. */
8641         uint64_t node1trapena          : 1;  /**< [  5:  5](R/W) Trap any access to nonzero node id. */
8642         uint64_t switchtagena          : 1;  /**< [  6:  6](R/W) Enable SSO switch-tag caching. The cache must be invalidated through e.g. use of
8643                                                                  SSO_WS_CFG[SSO_SAI_FLUSH] before clearing this bit. */
8644         uint64_t spare                 : 1;  /**< [  7:  7](R/W) Reserved; spare. */
8645         uint64_t dprefbpmissthresh     : 12; /**< [ 19:  8](R/W) Data-stream hardware prefetcher backpressure threshold for L2C miss latency. */
8646         uint64_t dprefbphitthresh      : 12; /**< [ 31: 20](R/W) Data-stream hardware prefetcher backpressure threshold for L2C hit latency. */
8647         uint64_t dprefbpctl            : 4;  /**< [ 35: 32](R/W) Data-stream hardware prefetcher backpressure control mask for dual counter mode.
8648                                                                  Internal:
8649                                                                  Backpressure is applied if:
8650                                                                  \<pre\>
8651                                                                    (   ([DPREFBPCTL]\<0\> && !hit_ctr_bp && !miss_ctr_bp)
8652                                                                     || ([DPREFBPCTL]\<1\> && !hit_ctr_bp &&  miss_ctr_bp)
8653                                                                     || ([DPREFBPCTL]\<2\> &&  hit_ctr_bp && !miss_ctr_bp)
8654                                                                     || ([DPREFBPCTL]\<3\> &&  hit_ctr_bp &&  miss_ctr_bp))
8655                                                                  \</pre\>
8656 
8657                                                                  Where hit_ctr_bp is the MSB of the 4-bit hit counter being set, and miss_ctr_bp
8658                                                                  is the MSB of the 4-bit miss counter being set. */
8659         uint64_t dprefbpmode           : 1;  /**< [ 36: 36](R/W) Data-stream hardware prefetcher backpressure mode select.
8660                                                                  0 = Single counter mode (combined hit and miss latency counter).
8661                                                                  1 = Dual counter mode (separate hit and miss latency counters). */
8662         uint64_t tlbilocalicflush      : 1;  /**< [ 37: 37](R/W) Force ICache flush when any local TLBI is issued.
8663                                                                  0 = Do nothing.
8664                                                                  1 = Flush the ICache. */
8665         uint64_t tlbiremoteicflush     : 1;  /**< [ 38: 38](R/W) Force ICache flush when any remote TLBI is received.
8666                                                                  0 = Do nothing.
8667                                                                  1 = Flush the ICache. */
8668         uint64_t reserved_39_63        : 25;
8669 #endif /* Word 0 - End */
8670     } cn83xx;
8671 };
8672 typedef union bdk_ap_cvmmemctl1_el1 bdk_ap_cvmmemctl1_el1_t;
8673 
8674 #define BDK_AP_CVMMEMCTL1_EL1 BDK_AP_CVMMEMCTL1_EL1_FUNC()
8675 static inline uint64_t BDK_AP_CVMMEMCTL1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVMMEMCTL1_EL1_FUNC(void)8676 static inline uint64_t BDK_AP_CVMMEMCTL1_EL1_FUNC(void)
8677 {
8678     return 0x3000b000500ll;
8679 }
8680 
8681 #define typedef_BDK_AP_CVMMEMCTL1_EL1 bdk_ap_cvmmemctl1_el1_t
8682 #define bustype_BDK_AP_CVMMEMCTL1_EL1 BDK_CSR_TYPE_SYSREG
8683 #define basename_BDK_AP_CVMMEMCTL1_EL1 "AP_CVMMEMCTL1_EL1"
8684 #define busnum_BDK_AP_CVMMEMCTL1_EL1 0
8685 #define arguments_BDK_AP_CVMMEMCTL1_EL1 -1,-1,-1,-1
8686 
8687 /**
8688  * Register (SYSREG) ap_cvmmemctl2_el1
8689  *
8690  * AP Cavium Memory Control 2 Register
8691  * This register controls additional memory-unit features.
8692  * Internal:
8693  * Back-end, non-debug.
8694  */
8695 union bdk_ap_cvmmemctl2_el1
8696 {
8697     uint64_t u;
8698     struct bdk_ap_cvmmemctl2_el1_s
8699     {
8700 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8701         uint64_t rsvd_63_60            : 4;  /**< [ 63: 60](R/W) Reserved. */
8702         uint64_t tlbiremotegsyncall    : 1;  /**< [ 59: 59](R/W) Remote TLBI apply GSYNC semantics.  For diagnostic use only. */
8703         uint64_t tlbiremotemultidis    : 1;  /**< [ 58: 58](R/W) Remote TLBI multiple processing disable.  For diagnostic use only. */
8704         uint64_t tlbiremotebatchdis    : 1;  /**< [ 57: 57](R/W) Remote TLBI batch processing disable.  For diagnostic use only. */
8705         uint64_t l1dwaysm1             : 6;  /**< [ 56: 51](R/W) Number of L1D WAYS minus one. */
8706         uint64_t wbfentriesm1          : 5;  /**< [ 50: 46](R/W) Number of MAF WBUF entries minus one. */
8707         uint64_t rbfentriesm1          : 4;  /**< [ 45: 42](R/W) Number of MAF RBUF entries minus one. */
8708         uint64_t ptwspecdis            : 1;  /**< [ 41: 41](R/W) Disable page table walker access on speculative instructions. */
8709         uint64_t ptwprefudis           : 1;  /**< [ 40: 40](R/W) Disable page table walker access on PREFU instructions. */
8710         uint64_t ptwdhwprefdis         : 1;  /**< [ 39: 39](R/W) Disable page table walker access on dstream hardware prefetches. */
8711         uint64_t ptwdswprefdis         : 1;  /**< [ 38: 38](R/W) Disable page table walker access on dstream software prefetches. */
8712         uint64_t ptwihwprefdis         : 1;  /**< [ 37: 37](R/W) Disable page table walker access on istream hardware prefetches. */
8713         uint64_t ptwiswprefdis         : 1;  /**< [ 36: 36](R/W) Disable page table walker access on istream software prefetches. */
8714         uint64_t mtlbdhwprefdis        : 1;  /**< [ 35: 35](R/W) Disable MTLB access on dstream hardware prefetches. */
8715         uint64_t mtlbdswprefdis        : 1;  /**< [ 34: 34](R/W) Disable MTLB access on dstream software prefetches. */
8716         uint64_t mtlbihwprefdis        : 1;  /**< [ 33: 33](R/W) Disable MTLB access on istream hardware prefetches. */
8717         uint64_t mtlbiswprefdis        : 1;  /**< [ 32: 32](R/W) Disable MTLB access on istream software prefetches. */
8718         uint64_t rsvd_25_31            : 7;  /**< [ 31: 25](R/W) Reserved. */
8719         uint64_t tlbi_block_msk        : 9;  /**< [ 24: 16](R/W) Mask of block sizes that are precisely invalidated by TLBI instructions.
8720                                                                  For each bit {a} in this field:
8721                                                                  _ Mask\<{a}\>=0 = blocksize {a} is not precisely invalidated.
8722                                                                  _ Mask\<{a}\>=1 = blocksize {a} is     precisely invalidated.
8723 
8724                                                                  _ Mask\<0\> represents block size 2^12.
8725                                                                  _ Mask\<1\> represents block size 2^14.
8726                                                                  _ Mask\<2\> represents block size 2^16.
8727                                                                  _ Mask\<3\> represents block size 2^21.
8728                                                                  _ Mask\<4\> represents block size 2^25.
8729                                                                  _ Mask\<5\> represents block size 2^29.
8730                                                                  _ Mask\<6\> represents block size 2^30.
8731                                                                  _ Mask\<7\> represents block size 2^34.
8732                                                                  _ Mask\<8\> represents block size 2^42. */
8733         uint64_t rsvd_9_15             : 7;  /**< [ 15:  9](R/W) Reserved. */
8734         uint64_t mtlb0_block_msk       : 9;  /**< [  8:  0](R/W) Mask of block sizes that are allocated in MTLB0.
8735                                                                  For each bit {a} in this field:
8736                                                                  _ Mask\<{a}\>=0 = blocksize {a} allocated in MTLB1.
8737                                                                  _ Mask\<{a}\>=1 = blocksize {a} allocated in MTLB0.
8738 
8739                                                                  _ Mask\<0\> represents block size 2^12.
8740                                                                  _ Mask\<1\> represents block size 2^14.
8741                                                                  _ Mask\<2\> represents block size 2^16.
8742                                                                  _ Mask\<3\> represents block size 2^21.
8743                                                                  _ Mask\<4\> represents block size 2^25.
8744                                                                  _ Mask\<5\> represents block size 2^29.
8745                                                                  _ Mask\<6\> represents block size 2^30.
8746                                                                  _ Mask\<7\> represents block size 2^34.
8747                                                                  _ Mask\<8\> represents block size 2^42. */
8748 #else /* Word 0 - Little Endian */
8749         uint64_t mtlb0_block_msk       : 9;  /**< [  8:  0](R/W) Mask of block sizes that are allocated in MTLB0.
8750                                                                  For each bit {a} in this field:
8751                                                                  _ Mask\<{a}\>=0 = blocksize {a} allocated in MTLB1.
8752                                                                  _ Mask\<{a}\>=1 = blocksize {a} allocated in MTLB0.
8753 
8754                                                                  _ Mask\<0\> represents block size 2^12.
8755                                                                  _ Mask\<1\> represents block size 2^14.
8756                                                                  _ Mask\<2\> represents block size 2^16.
8757                                                                  _ Mask\<3\> represents block size 2^21.
8758                                                                  _ Mask\<4\> represents block size 2^25.
8759                                                                  _ Mask\<5\> represents block size 2^29.
8760                                                                  _ Mask\<6\> represents block size 2^30.
8761                                                                  _ Mask\<7\> represents block size 2^34.
8762                                                                  _ Mask\<8\> represents block size 2^42. */
8763         uint64_t rsvd_9_15             : 7;  /**< [ 15:  9](R/W) Reserved. */
8764         uint64_t tlbi_block_msk        : 9;  /**< [ 24: 16](R/W) Mask of block sizes that are precisely invalidated by TLBI instructions.
8765                                                                  For each bit {a} in this field:
8766                                                                  _ Mask\<{a}\>=0 = blocksize {a} is not precisely invalidated.
8767                                                                  _ Mask\<{a}\>=1 = blocksize {a} is     precisely invalidated.
8768 
8769                                                                  _ Mask\<0\> represents block size 2^12.
8770                                                                  _ Mask\<1\> represents block size 2^14.
8771                                                                  _ Mask\<2\> represents block size 2^16.
8772                                                                  _ Mask\<3\> represents block size 2^21.
8773                                                                  _ Mask\<4\> represents block size 2^25.
8774                                                                  _ Mask\<5\> represents block size 2^29.
8775                                                                  _ Mask\<6\> represents block size 2^30.
8776                                                                  _ Mask\<7\> represents block size 2^34.
8777                                                                  _ Mask\<8\> represents block size 2^42. */
8778         uint64_t rsvd_25_31            : 7;  /**< [ 31: 25](R/W) Reserved. */
8779         uint64_t mtlbiswprefdis        : 1;  /**< [ 32: 32](R/W) Disable MTLB access on istream software prefetches. */
8780         uint64_t mtlbihwprefdis        : 1;  /**< [ 33: 33](R/W) Disable MTLB access on istream hardware prefetches. */
8781         uint64_t mtlbdswprefdis        : 1;  /**< [ 34: 34](R/W) Disable MTLB access on dstream software prefetches. */
8782         uint64_t mtlbdhwprefdis        : 1;  /**< [ 35: 35](R/W) Disable MTLB access on dstream hardware prefetches. */
8783         uint64_t ptwiswprefdis         : 1;  /**< [ 36: 36](R/W) Disable page table walker access on istream software prefetches. */
8784         uint64_t ptwihwprefdis         : 1;  /**< [ 37: 37](R/W) Disable page table walker access on istream hardware prefetches. */
8785         uint64_t ptwdswprefdis         : 1;  /**< [ 38: 38](R/W) Disable page table walker access on dstream software prefetches. */
8786         uint64_t ptwdhwprefdis         : 1;  /**< [ 39: 39](R/W) Disable page table walker access on dstream hardware prefetches. */
8787         uint64_t ptwprefudis           : 1;  /**< [ 40: 40](R/W) Disable page table walker access on PREFU instructions. */
8788         uint64_t ptwspecdis            : 1;  /**< [ 41: 41](R/W) Disable page table walker access on speculative instructions. */
8789         uint64_t rbfentriesm1          : 4;  /**< [ 45: 42](R/W) Number of MAF RBUF entries minus one. */
8790         uint64_t wbfentriesm1          : 5;  /**< [ 50: 46](R/W) Number of MAF WBUF entries minus one. */
8791         uint64_t l1dwaysm1             : 6;  /**< [ 56: 51](R/W) Number of L1D WAYS minus one. */
8792         uint64_t tlbiremotebatchdis    : 1;  /**< [ 57: 57](R/W) Remote TLBI batch processing disable.  For diagnostic use only. */
8793         uint64_t tlbiremotemultidis    : 1;  /**< [ 58: 58](R/W) Remote TLBI multiple processing disable.  For diagnostic use only. */
8794         uint64_t tlbiremotegsyncall    : 1;  /**< [ 59: 59](R/W) Remote TLBI apply GSYNC semantics.  For diagnostic use only. */
8795         uint64_t rsvd_63_60            : 4;  /**< [ 63: 60](R/W) Reserved. */
8796 #endif /* Word 0 - End */
8797     } s;
8798     /* struct bdk_ap_cvmmemctl2_el1_s cn; */
8799 };
8800 typedef union bdk_ap_cvmmemctl2_el1 bdk_ap_cvmmemctl2_el1_t;
8801 
8802 #define BDK_AP_CVMMEMCTL2_EL1 BDK_AP_CVMMEMCTL2_EL1_FUNC()
8803 static inline uint64_t BDK_AP_CVMMEMCTL2_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVMMEMCTL2_EL1_FUNC(void)8804 static inline uint64_t BDK_AP_CVMMEMCTL2_EL1_FUNC(void)
8805 {
8806     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
8807         return 0x3000b000600ll;
8808     __bdk_csr_fatal("AP_CVMMEMCTL2_EL1", 0, 0, 0, 0, 0);
8809 }
8810 
8811 #define typedef_BDK_AP_CVMMEMCTL2_EL1 bdk_ap_cvmmemctl2_el1_t
8812 #define bustype_BDK_AP_CVMMEMCTL2_EL1 BDK_CSR_TYPE_SYSREG
8813 #define basename_BDK_AP_CVMMEMCTL2_EL1 "AP_CVMMEMCTL2_EL1"
8814 #define busnum_BDK_AP_CVMMEMCTL2_EL1 0
8815 #define arguments_BDK_AP_CVMMEMCTL2_EL1 -1,-1,-1,-1
8816 
8817 /**
8818  * Register (SYSREG) ap_cvmmemctl3_el1
8819  *
8820  * AP Cavium Memory Control 3 Register
8821  * This register controls additional memory-unit features.
8822  * Internal:
8823  * Back-end, non-debug.
8824  */
8825 union bdk_ap_cvmmemctl3_el1
8826 {
8827     uint64_t u;
8828     struct bdk_ap_cvmmemctl3_el1_s
8829     {
8830 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8831         uint64_t rsvd_63_12            : 52; /**< [ 63: 12](RAZ) Reserved. */
8832         uint64_t iopredclrfreq         : 4;  /**< [ 11:  8](R/W) IO predictor clear frequency. For diagnostic use only. */
8833         uint64_t unalignpredclrfreq    : 4;  /**< [  7:  4](R/W) Unaligned predictor clear frequency. For diagnostic use only. */
8834         uint64_t ldstpredclrfreq       : 4;  /**< [  3:  0](R/W) Load-store predictor clear frequency. For diagnostic use only. */
8835 #else /* Word 0 - Little Endian */
8836         uint64_t ldstpredclrfreq       : 4;  /**< [  3:  0](R/W) Load-store predictor clear frequency. For diagnostic use only. */
8837         uint64_t unalignpredclrfreq    : 4;  /**< [  7:  4](R/W) Unaligned predictor clear frequency. For diagnostic use only. */
8838         uint64_t iopredclrfreq         : 4;  /**< [ 11:  8](R/W) IO predictor clear frequency. For diagnostic use only. */
8839         uint64_t rsvd_63_12            : 52; /**< [ 63: 12](RAZ) Reserved. */
8840 #endif /* Word 0 - End */
8841     } s;
8842     /* struct bdk_ap_cvmmemctl3_el1_s cn; */
8843 };
8844 typedef union bdk_ap_cvmmemctl3_el1 bdk_ap_cvmmemctl3_el1_t;
8845 
8846 #define BDK_AP_CVMMEMCTL3_EL1 BDK_AP_CVMMEMCTL3_EL1_FUNC()
8847 static inline uint64_t BDK_AP_CVMMEMCTL3_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_CVMMEMCTL3_EL1_FUNC(void)8848 static inline uint64_t BDK_AP_CVMMEMCTL3_EL1_FUNC(void)
8849 {
8850     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
8851         return 0x3000b000700ll;
8852     __bdk_csr_fatal("AP_CVMMEMCTL3_EL1", 0, 0, 0, 0, 0);
8853 }
8854 
8855 #define typedef_BDK_AP_CVMMEMCTL3_EL1 bdk_ap_cvmmemctl3_el1_t
8856 #define bustype_BDK_AP_CVMMEMCTL3_EL1 BDK_CSR_TYPE_SYSREG
8857 #define basename_BDK_AP_CVMMEMCTL3_EL1 "AP_CVMMEMCTL3_EL1"
8858 #define busnum_BDK_AP_CVMMEMCTL3_EL1 0
8859 #define arguments_BDK_AP_CVMMEMCTL3_EL1 -1,-1,-1,-1
8860 
8861 /**
8862  * Register (SYSREG) ap_dacr32_el2
8863  *
8864  * AP Domain Access Control Register
8865  * Allows access to the AArch32 DACR register from AArch64 state
8866  *     only. Its value has no effect on execution in AArch64 state.
8867  */
8868 union bdk_ap_dacr32_el2
8869 {
8870     uint32_t u;
8871     struct bdk_ap_dacr32_el2_s
8872     {
8873 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8874         uint32_t reserved_0_31         : 32;
8875 #else /* Word 0 - Little Endian */
8876         uint32_t reserved_0_31         : 32;
8877 #endif /* Word 0 - End */
8878     } s;
8879     /* struct bdk_ap_dacr32_el2_s cn; */
8880 };
8881 typedef union bdk_ap_dacr32_el2 bdk_ap_dacr32_el2_t;
8882 
8883 #define BDK_AP_DACR32_EL2 BDK_AP_DACR32_EL2_FUNC()
8884 static inline uint64_t BDK_AP_DACR32_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DACR32_EL2_FUNC(void)8885 static inline uint64_t BDK_AP_DACR32_EL2_FUNC(void)
8886 {
8887     return 0x30403000000ll;
8888 }
8889 
8890 #define typedef_BDK_AP_DACR32_EL2 bdk_ap_dacr32_el2_t
8891 #define bustype_BDK_AP_DACR32_EL2 BDK_CSR_TYPE_SYSREG
8892 #define basename_BDK_AP_DACR32_EL2 "AP_DACR32_EL2"
8893 #define busnum_BDK_AP_DACR32_EL2 0
8894 #define arguments_BDK_AP_DACR32_EL2 -1,-1,-1,-1
8895 
8896 /**
8897  * Register (SYSREG) ap_daif
8898  *
8899  * AP Interrupt Mask Bits Register
8900  * Allows access to the interrupt mask bits.
8901  */
8902 union bdk_ap_daif
8903 {
8904     uint32_t u;
8905     struct bdk_ap_daif_s
8906     {
8907 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8908         uint32_t reserved_10_31        : 22;
8909         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Process state D mask.
8910                                                                  When the target Exception level of the debug exception is not
8911                                                                      than the current Exception level, the exception is not masked
8912                                                                      by this bit.
8913                                                                  0 = Debug exceptions from Watchpoint, Breakpoint, and Software
8914                                                                      step debug events targeted at the current Exception level are
8915                                                                      not masked.
8916                                                                  1 = Debug exceptions from Watchpoint, Breakpoint, and Software
8917                                                                      step debug events targeted at the current Exception level are
8918                                                                      masked. */
8919         uint32_t aa                    : 1;  /**< [  8:  8](R/W) SError (System Error) mask bit.
8920                                                                  0 = Exception not masked.
8921                                                                  1 = Exception masked. */
8922         uint32_t i                     : 1;  /**< [  7:  7](R/W) IRQ mask bit.
8923                                                                  0 = Exception not masked.
8924                                                                  1 = Exception masked. */
8925         uint32_t f                     : 1;  /**< [  6:  6](R/W) FIQ mask bit.
8926                                                                  0 = Exception not masked.
8927                                                                  1 = Exception masked. */
8928         uint32_t reserved_0_5          : 6;
8929 #else /* Word 0 - Little Endian */
8930         uint32_t reserved_0_5          : 6;
8931         uint32_t f                     : 1;  /**< [  6:  6](R/W) FIQ mask bit.
8932                                                                  0 = Exception not masked.
8933                                                                  1 = Exception masked. */
8934         uint32_t i                     : 1;  /**< [  7:  7](R/W) IRQ mask bit.
8935                                                                  0 = Exception not masked.
8936                                                                  1 = Exception masked. */
8937         uint32_t aa                    : 1;  /**< [  8:  8](R/W) SError (System Error) mask bit.
8938                                                                  0 = Exception not masked.
8939                                                                  1 = Exception masked. */
8940         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Process state D mask.
8941                                                                  When the target Exception level of the debug exception is not
8942                                                                      than the current Exception level, the exception is not masked
8943                                                                      by this bit.
8944                                                                  0 = Debug exceptions from Watchpoint, Breakpoint, and Software
8945                                                                      step debug events targeted at the current Exception level are
8946                                                                      not masked.
8947                                                                  1 = Debug exceptions from Watchpoint, Breakpoint, and Software
8948                                                                      step debug events targeted at the current Exception level are
8949                                                                      masked. */
8950         uint32_t reserved_10_31        : 22;
8951 #endif /* Word 0 - End */
8952     } s;
8953     /* struct bdk_ap_daif_s cn; */
8954 };
8955 typedef union bdk_ap_daif bdk_ap_daif_t;
8956 
8957 #define BDK_AP_DAIF BDK_AP_DAIF_FUNC()
8958 static inline uint64_t BDK_AP_DAIF_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DAIF_FUNC(void)8959 static inline uint64_t BDK_AP_DAIF_FUNC(void)
8960 {
8961     return 0x30304020100ll;
8962 }
8963 
8964 #define typedef_BDK_AP_DAIF bdk_ap_daif_t
8965 #define bustype_BDK_AP_DAIF BDK_CSR_TYPE_SYSREG
8966 #define basename_BDK_AP_DAIF "AP_DAIF"
8967 #define busnum_BDK_AP_DAIF 0
8968 #define arguments_BDK_AP_DAIF -1,-1,-1,-1
8969 
8970 /**
8971  * Register (SYSREG) ap_dbgauthstatus_el1
8972  *
8973  * AP Debug Authentication Status Register
8974  * Provides information about the state of the implementation
8975  *     defined authentication interface for debug.
8976  */
8977 union bdk_ap_dbgauthstatus_el1
8978 {
8979     uint32_t u;
8980     struct bdk_ap_dbgauthstatus_el1_s
8981     {
8982 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8983         uint32_t reserved_8_31         : 24;
8984         uint32_t snid                  : 2;  /**< [  7:  6](RO) Secure non-invasive debug.
8985                                                                  0x0 = Not implemented. EL3 is not implemented and the processor is
8986                                                                      nonsecure.
8987                                                                  0x2 = Implemented and disabled.
8988                                                                  0x3 = Implemented and enabled. */
8989         uint32_t sid                   : 2;  /**< [  5:  4](RO) Secure invasive debug.
8990                                                                  0x0 = Not implemented. EL3 is not implemented and the processor is
8991                                                                      nonsecure.
8992                                                                  0x2 = Implemented and disabled.
8993                                                                  0x3 = Implemented and enabled. */
8994         uint32_t nsnid                 : 2;  /**< [  3:  2](RO) Nonsecure non-invasive debug.
8995                                                                  0x0 = Not implemented. EL3 is not implemented and the processor is
8996                                                                      Secure.
8997                                                                  0x2 = Implemented and disabled.
8998                                                                  0x3 = Implemented and enabled. */
8999         uint32_t nsid                  : 2;  /**< [  1:  0](RO) Nonsecure invasive debug.
9000                                                                  0x0 = Not implemented. EL3 is not implemented and the processor is
9001                                                                  0x2 = Implemented and disabled.
9002                                                                  0x3 = Implemented and enabled. */
9003 #else /* Word 0 - Little Endian */
9004         uint32_t nsid                  : 2;  /**< [  1:  0](RO) Nonsecure invasive debug.
9005                                                                  0x0 = Not implemented. EL3 is not implemented and the processor is
9006                                                                  0x2 = Implemented and disabled.
9007                                                                  0x3 = Implemented and enabled. */
9008         uint32_t nsnid                 : 2;  /**< [  3:  2](RO) Nonsecure non-invasive debug.
9009                                                                  0x0 = Not implemented. EL3 is not implemented and the processor is
9010                                                                      Secure.
9011                                                                  0x2 = Implemented and disabled.
9012                                                                  0x3 = Implemented and enabled. */
9013         uint32_t sid                   : 2;  /**< [  5:  4](RO) Secure invasive debug.
9014                                                                  0x0 = Not implemented. EL3 is not implemented and the processor is
9015                                                                      nonsecure.
9016                                                                  0x2 = Implemented and disabled.
9017                                                                  0x3 = Implemented and enabled. */
9018         uint32_t snid                  : 2;  /**< [  7:  6](RO) Secure non-invasive debug.
9019                                                                  0x0 = Not implemented. EL3 is not implemented and the processor is
9020                                                                      nonsecure.
9021                                                                  0x2 = Implemented and disabled.
9022                                                                  0x3 = Implemented and enabled. */
9023         uint32_t reserved_8_31         : 24;
9024 #endif /* Word 0 - End */
9025     } s;
9026     /* struct bdk_ap_dbgauthstatus_el1_s cn; */
9027 };
9028 typedef union bdk_ap_dbgauthstatus_el1 bdk_ap_dbgauthstatus_el1_t;
9029 
9030 #define BDK_AP_DBGAUTHSTATUS_EL1 BDK_AP_DBGAUTHSTATUS_EL1_FUNC()
9031 static inline uint64_t BDK_AP_DBGAUTHSTATUS_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DBGAUTHSTATUS_EL1_FUNC(void)9032 static inline uint64_t BDK_AP_DBGAUTHSTATUS_EL1_FUNC(void)
9033 {
9034     return 0x200070e0600ll;
9035 }
9036 
9037 #define typedef_BDK_AP_DBGAUTHSTATUS_EL1 bdk_ap_dbgauthstatus_el1_t
9038 #define bustype_BDK_AP_DBGAUTHSTATUS_EL1 BDK_CSR_TYPE_SYSREG
9039 #define basename_BDK_AP_DBGAUTHSTATUS_EL1 "AP_DBGAUTHSTATUS_EL1"
9040 #define busnum_BDK_AP_DBGAUTHSTATUS_EL1 0
9041 #define arguments_BDK_AP_DBGAUTHSTATUS_EL1 -1,-1,-1,-1
9042 
9043 /**
9044  * Register (SYSREG) ap_dbgbcr#_el1
9045  *
9046  * AP Debug Breakpoint Control Registers
9047  * Holds control information for a breakpoint. Forms breakpoint n
9048  *     together with value register DBGBVR\<n\>_EL1, where n is 0 to
9049  *     15.
9050  */
9051 union bdk_ap_dbgbcrx_el1
9052 {
9053     uint32_t u;
9054     struct bdk_ap_dbgbcrx_el1_s
9055     {
9056 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9057         uint32_t reserved_24_31        : 8;
9058         uint32_t bt                    : 4;  /**< [ 23: 20](R/W) Breakpoint Type.
9059                                                                  The field breaks down as follows:
9060                                                                   BT[3:1]: Base type.- 0b000: Match address. DBGBVR\<n\>_EL1 is
9061                                                                      the address of an     instruction. - 0b010: Mismatch address.
9062                                                                      Behaves as type0b000 DBGBVR\<n\>_EL1     is the address of an
9063                                                                      instruction to be stepped. - 0b001: Match context ID.
9064                                                                      DBGBVR\<n\>_EL1[31:0] is a context     ID. - 0b100: Match VMID.
9065                                                                      DBGBVR\<n\>_EL1[39:32] is a VMID. - 0b101: Match VMID and
9066                                                                      context ID. DBGBVR\<n\>_EL1[31:0] is a     context ID, and
9067                                                                      DBGBVR\<n\>_EL1[39:32] is a VMID.
9068                                                                   BT[0]: Enable linking.
9069 
9070                                                                  If the breakpoint is not context-aware, BT[3] and BT[1] are
9071                                                                      RES0. If EL2 is not implemented, BT[3] is RES0. If EL1 using
9072                                                                      AArch32 is not implemented, BT[2] is RES0.
9073 
9074                                                                  0x0 = Unlinked address match.
9075                                                                  0x1 = Linked address match.
9076                                                                  0x2 = Unlinked context ID match.
9077                                                                  0x3 = Linked context ID match
9078                                                                  0x4 = Unlinked address mismatch.
9079                                                                  0x5 = Linked address mismatch.
9080                                                                  0x8 = Unlinked VMID match.
9081                                                                  0x9 = Linked VMID match.
9082                                                                  0xA = Unlinked VMID and context ID match.
9083                                                                  0xB = Linked VMID and context ID match. */
9084         uint32_t lbn                   : 4;  /**< [ 19: 16](R/W) Linked breakpoint number. For Linked address matching
9085                                                                      breakpoints, this specifies the index of the Context-matching
9086                                                                      breakpoint linked to. */
9087         uint32_t ssc                   : 2;  /**< [ 15: 14](R/W) Security state control. Determines the Security states under
9088                                                                      which a breakpoint debug event for breakpoint n is generated.
9089                                                                      This field must be interpreted along with the HMC and PMC
9090                                                                      fields. */
9091         uint32_t hmc                   : 1;  /**< [ 13: 13](R/W) Higher mode control. Determines the debug perspective for
9092                                                                      deciding when a breakpoint debug event for breakpoint n is
9093                                                                      generated. This field must be interpreted along with the SSC
9094                                                                      and PMC fields. */
9095         uint32_t reserved_9_12         : 4;
9096         uint32_t rsvd_5_8              : 4;  /**< [  8:  5](RO) Byte address select. Defines which half-words an address-
9097                                                                      matching breakpoint matches, regardless of the instruction set
9098                                                                      and Execution state. In an AArch64-only implementation, this
9099                                                                      field is reserved, RES1. Otherwise:
9100 
9101                                                                   BAS[2] and BAS[0] are read/write.
9102 
9103                                                                   BAS[3] and BAS[1] are read-only copies of BAS[2] and BAS[0]
9104                                                                      respectively.
9105 
9106                                                                  The permitted values depend on the breakpoint type.
9107 
9108                                                                  For Address match breakpoints in either AArch32 or AArch64
9109                                                                      state:
9110                                                                  BAS Match instruction at    Constraint for debuggers
9111                                                                  0b0011       DBGBVR\<n\>_EL1  Use for T32 instructions.
9112                                                                  0b1100       DBGBVR\<n\>_EL1+2        Use for T32 instructions.
9113                                                                  0b1111       DBGBVR\<n\>_EL1  Use for A64 and A32 instructions.
9114                                                                  0b0000
9115 
9116                                                                  For Address mismatch breakpoints in an AArch32 stage 1
9117                                                                      translation regime:
9118                                                                  BAS Step instruction at     Constraint for debuggers
9119                                                                  0b0000      -       Use for a match anywhere breakpoint.
9120                                                                  0b0011       DBGBVR\<n\>_EL1  Use for stepping T32 instructions.
9121                                                                  0b1100       DBGBVR\<n\>_EL1+2        Use for stepping T32 instructions.
9122                                                                  0b1111       DBGBVR\<n\>_EL1  Use for stepping A32 instructions.
9123 
9124                                                                  For Context matching breakpoints, this field is RES1 and
9125                                                                      ignored. */
9126         uint32_t reserved_3_4          : 2;
9127         uint32_t pmc                   : 2;  /**< [  2:  1](R/W) Privilege mode control. Determines the Exception level or
9128                                                                      levels at which a breakpoint debug event for breakpoint n is
9129                                                                      generated. This field must be interpreted along with the SSC
9130                                                                      and HMC fields. */
9131         uint32_t ee                    : 1;  /**< [  0:  0](R/W) Enable breakpoint DBGBVR\<n\>_EL1.
9132                                                                  0 = Breakpoint disabled.
9133                                                                  1 = Breakpoint enabled. */
9134 #else /* Word 0 - Little Endian */
9135         uint32_t ee                    : 1;  /**< [  0:  0](R/W) Enable breakpoint DBGBVR\<n\>_EL1.
9136                                                                  0 = Breakpoint disabled.
9137                                                                  1 = Breakpoint enabled. */
9138         uint32_t pmc                   : 2;  /**< [  2:  1](R/W) Privilege mode control. Determines the Exception level or
9139                                                                      levels at which a breakpoint debug event for breakpoint n is
9140                                                                      generated. This field must be interpreted along with the SSC
9141                                                                      and HMC fields. */
9142         uint32_t reserved_3_4          : 2;
9143         uint32_t rsvd_5_8              : 4;  /**< [  8:  5](RO) Byte address select. Defines which half-words an address-
9144                                                                      matching breakpoint matches, regardless of the instruction set
9145                                                                      and Execution state. In an AArch64-only implementation, this
9146                                                                      field is reserved, RES1. Otherwise:
9147 
9148                                                                   BAS[2] and BAS[0] are read/write.
9149 
9150                                                                   BAS[3] and BAS[1] are read-only copies of BAS[2] and BAS[0]
9151                                                                      respectively.
9152 
9153                                                                  The permitted values depend on the breakpoint type.
9154 
9155                                                                  For Address match breakpoints in either AArch32 or AArch64
9156                                                                      state:
9157                                                                  BAS Match instruction at    Constraint for debuggers
9158                                                                  0b0011       DBGBVR\<n\>_EL1  Use for T32 instructions.
9159                                                                  0b1100       DBGBVR\<n\>_EL1+2        Use for T32 instructions.
9160                                                                  0b1111       DBGBVR\<n\>_EL1  Use for A64 and A32 instructions.
9161                                                                  0b0000
9162 
9163                                                                  For Address mismatch breakpoints in an AArch32 stage 1
9164                                                                      translation regime:
9165                                                                  BAS Step instruction at     Constraint for debuggers
9166                                                                  0b0000      -       Use for a match anywhere breakpoint.
9167                                                                  0b0011       DBGBVR\<n\>_EL1  Use for stepping T32 instructions.
9168                                                                  0b1100       DBGBVR\<n\>_EL1+2        Use for stepping T32 instructions.
9169                                                                  0b1111       DBGBVR\<n\>_EL1  Use for stepping A32 instructions.
9170 
9171                                                                  For Context matching breakpoints, this field is RES1 and
9172                                                                      ignored. */
9173         uint32_t reserved_9_12         : 4;
9174         uint32_t hmc                   : 1;  /**< [ 13: 13](R/W) Higher mode control. Determines the debug perspective for
9175                                                                      deciding when a breakpoint debug event for breakpoint n is
9176                                                                      generated. This field must be interpreted along with the SSC
9177                                                                      and PMC fields. */
9178         uint32_t ssc                   : 2;  /**< [ 15: 14](R/W) Security state control. Determines the Security states under
9179                                                                      which a breakpoint debug event for breakpoint n is generated.
9180                                                                      This field must be interpreted along with the HMC and PMC
9181                                                                      fields. */
9182         uint32_t lbn                   : 4;  /**< [ 19: 16](R/W) Linked breakpoint number. For Linked address matching
9183                                                                      breakpoints, this specifies the index of the Context-matching
9184                                                                      breakpoint linked to. */
9185         uint32_t bt                    : 4;  /**< [ 23: 20](R/W) Breakpoint Type.
9186                                                                  The field breaks down as follows:
9187                                                                   BT[3:1]: Base type.- 0b000: Match address. DBGBVR\<n\>_EL1 is
9188                                                                      the address of an     instruction. - 0b010: Mismatch address.
9189                                                                      Behaves as type0b000 DBGBVR\<n\>_EL1     is the address of an
9190                                                                      instruction to be stepped. - 0b001: Match context ID.
9191                                                                      DBGBVR\<n\>_EL1[31:0] is a context     ID. - 0b100: Match VMID.
9192                                                                      DBGBVR\<n\>_EL1[39:32] is a VMID. - 0b101: Match VMID and
9193                                                                      context ID. DBGBVR\<n\>_EL1[31:0] is a     context ID, and
9194                                                                      DBGBVR\<n\>_EL1[39:32] is a VMID.
9195                                                                   BT[0]: Enable linking.
9196 
9197                                                                  If the breakpoint is not context-aware, BT[3] and BT[1] are
9198                                                                      RES0. If EL2 is not implemented, BT[3] is RES0. If EL1 using
9199                                                                      AArch32 is not implemented, BT[2] is RES0.
9200 
9201                                                                  0x0 = Unlinked address match.
9202                                                                  0x1 = Linked address match.
9203                                                                  0x2 = Unlinked context ID match.
9204                                                                  0x3 = Linked context ID match
9205                                                                  0x4 = Unlinked address mismatch.
9206                                                                  0x5 = Linked address mismatch.
9207                                                                  0x8 = Unlinked VMID match.
9208                                                                  0x9 = Linked VMID match.
9209                                                                  0xA = Unlinked VMID and context ID match.
9210                                                                  0xB = Linked VMID and context ID match. */
9211         uint32_t reserved_24_31        : 8;
9212 #endif /* Word 0 - End */
9213     } s;
9214     /* struct bdk_ap_dbgbcrx_el1_s cn; */
9215 };
9216 typedef union bdk_ap_dbgbcrx_el1 bdk_ap_dbgbcrx_el1_t;
9217 
9218 static inline uint64_t BDK_AP_DBGBCRX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_DBGBCRX_EL1(unsigned long a)9219 static inline uint64_t BDK_AP_DBGBCRX_EL1(unsigned long a)
9220 {
9221     if (a<=15)
9222         return 0x20000000500ll + 0x10000ll * ((a) & 0xf);
9223     __bdk_csr_fatal("AP_DBGBCRX_EL1", 1, a, 0, 0, 0);
9224 }
9225 
9226 #define typedef_BDK_AP_DBGBCRX_EL1(a) bdk_ap_dbgbcrx_el1_t
9227 #define bustype_BDK_AP_DBGBCRX_EL1(a) BDK_CSR_TYPE_SYSREG
9228 #define basename_BDK_AP_DBGBCRX_EL1(a) "AP_DBGBCRX_EL1"
9229 #define busnum_BDK_AP_DBGBCRX_EL1(a) (a)
9230 #define arguments_BDK_AP_DBGBCRX_EL1(a) (a),-1,-1,-1
9231 
9232 /**
9233  * Register (SYSREG) ap_dbgbvr#_el1
9234  *
9235  * AP Debug Breakpoint Value Registers
9236  * Holds a virtual address, or a VMID and/or a context ID, for
9237  *     use in breakpoint matching. Forms breakpoint n together with
9238  *     control register DBGBCR\<n\>_EL1, where n is 0 to 15.
9239  */
9240 union bdk_ap_dbgbvrx_el1
9241 {
9242     uint64_t u;
9243     struct bdk_ap_dbgbvrx_el1_s
9244     {
9245 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9246         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data for breakpoint value. This doesn't match ARM docs as
9247                                                                  they have many encoding of the same register.
9248                                                                  Reserved, Sign extended. Hardwired to the value of the sign
9249                                                                      bit, bit [48]. Hardware and software must treat this field as
9250                                                                      RES0 if bit[48] is 0, and as RES1 if bit[48] is 1. */
9251 #else /* Word 0 - Little Endian */
9252         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data for breakpoint value. This doesn't match ARM docs as
9253                                                                  they have many encoding of the same register.
9254                                                                  Reserved, Sign extended. Hardwired to the value of the sign
9255                                                                      bit, bit [48]. Hardware and software must treat this field as
9256                                                                      RES0 if bit[48] is 0, and as RES1 if bit[48] is 1. */
9257 #endif /* Word 0 - End */
9258     } s;
9259     /* struct bdk_ap_dbgbvrx_el1_s cn; */
9260 };
9261 typedef union bdk_ap_dbgbvrx_el1 bdk_ap_dbgbvrx_el1_t;
9262 
9263 static inline uint64_t BDK_AP_DBGBVRX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_DBGBVRX_EL1(unsigned long a)9264 static inline uint64_t BDK_AP_DBGBVRX_EL1(unsigned long a)
9265 {
9266     if (a<=15)
9267         return 0x20000000400ll + 0x10000ll * ((a) & 0xf);
9268     __bdk_csr_fatal("AP_DBGBVRX_EL1", 1, a, 0, 0, 0);
9269 }
9270 
9271 #define typedef_BDK_AP_DBGBVRX_EL1(a) bdk_ap_dbgbvrx_el1_t
9272 #define bustype_BDK_AP_DBGBVRX_EL1(a) BDK_CSR_TYPE_SYSREG
9273 #define basename_BDK_AP_DBGBVRX_EL1(a) "AP_DBGBVRX_EL1"
9274 #define busnum_BDK_AP_DBGBVRX_EL1(a) (a)
9275 #define arguments_BDK_AP_DBGBVRX_EL1(a) (a),-1,-1,-1
9276 
9277 /**
9278  * Register (SYSREG) ap_dbgclaimclr_el1
9279  *
9280  * AP Debug Claim Tag Clear Register
9281  * Used by software to read the values of the CLAIM bits, and to
9282  *     clear these bits to 0.
9283  */
9284 union bdk_ap_dbgclaimclr_el1
9285 {
9286     uint32_t u;
9287     struct bdk_ap_dbgclaimclr_el1_s
9288     {
9289 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9290         uint32_t reserved_8_31         : 24;
9291         uint32_t claim                 : 8;  /**< [  7:  0](R/W) Claim clear bits. Reading this field returns the current value
9292                                                                      of the CLAIM bits.
9293                                                                  Writing a 1 to one of these bits clears the corresponding
9294                                                                      CLAIM bit to 0. This is an indirect write to the CLAIM bits.
9295                                                                  A single write operation can clear multiple bits to 0. Writing
9296                                                                      0 to one of these bits has no effect. */
9297 #else /* Word 0 - Little Endian */
9298         uint32_t claim                 : 8;  /**< [  7:  0](R/W) Claim clear bits. Reading this field returns the current value
9299                                                                      of the CLAIM bits.
9300                                                                  Writing a 1 to one of these bits clears the corresponding
9301                                                                      CLAIM bit to 0. This is an indirect write to the CLAIM bits.
9302                                                                  A single write operation can clear multiple bits to 0. Writing
9303                                                                      0 to one of these bits has no effect. */
9304         uint32_t reserved_8_31         : 24;
9305 #endif /* Word 0 - End */
9306     } s;
9307     /* struct bdk_ap_dbgclaimclr_el1_s cn; */
9308 };
9309 typedef union bdk_ap_dbgclaimclr_el1 bdk_ap_dbgclaimclr_el1_t;
9310 
9311 #define BDK_AP_DBGCLAIMCLR_EL1 BDK_AP_DBGCLAIMCLR_EL1_FUNC()
9312 static inline uint64_t BDK_AP_DBGCLAIMCLR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DBGCLAIMCLR_EL1_FUNC(void)9313 static inline uint64_t BDK_AP_DBGCLAIMCLR_EL1_FUNC(void)
9314 {
9315     return 0x20007090600ll;
9316 }
9317 
9318 #define typedef_BDK_AP_DBGCLAIMCLR_EL1 bdk_ap_dbgclaimclr_el1_t
9319 #define bustype_BDK_AP_DBGCLAIMCLR_EL1 BDK_CSR_TYPE_SYSREG
9320 #define basename_BDK_AP_DBGCLAIMCLR_EL1 "AP_DBGCLAIMCLR_EL1"
9321 #define busnum_BDK_AP_DBGCLAIMCLR_EL1 0
9322 #define arguments_BDK_AP_DBGCLAIMCLR_EL1 -1,-1,-1,-1
9323 
9324 /**
9325  * Register (SYSREG) ap_dbgclaimset_el1
9326  *
9327  * AP Debug Claim Tag Set Register
9328  * Used by software to set CLAIM bits to 1.
9329  */
9330 union bdk_ap_dbgclaimset_el1
9331 {
9332     uint32_t u;
9333     struct bdk_ap_dbgclaimset_el1_s
9334     {
9335 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9336         uint32_t reserved_8_31         : 24;
9337         uint32_t claim                 : 8;  /**< [  7:  0](R/W) Claim set bits. RAO.
9338                                                                  Writing a 1 to one of these bits sets the corresponding CLAIM
9339                                                                      bit to 1. This is an indirect write to the CLAIM bits.
9340                                                                  A single write operation can set multiple bits to 1. Writing 0
9341                                                                      to one of these bits has no effect. */
9342 #else /* Word 0 - Little Endian */
9343         uint32_t claim                 : 8;  /**< [  7:  0](R/W) Claim set bits. RAO.
9344                                                                  Writing a 1 to one of these bits sets the corresponding CLAIM
9345                                                                      bit to 1. This is an indirect write to the CLAIM bits.
9346                                                                  A single write operation can set multiple bits to 1. Writing 0
9347                                                                      to one of these bits has no effect. */
9348         uint32_t reserved_8_31         : 24;
9349 #endif /* Word 0 - End */
9350     } s;
9351     /* struct bdk_ap_dbgclaimset_el1_s cn; */
9352 };
9353 typedef union bdk_ap_dbgclaimset_el1 bdk_ap_dbgclaimset_el1_t;
9354 
9355 #define BDK_AP_DBGCLAIMSET_EL1 BDK_AP_DBGCLAIMSET_EL1_FUNC()
9356 static inline uint64_t BDK_AP_DBGCLAIMSET_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DBGCLAIMSET_EL1_FUNC(void)9357 static inline uint64_t BDK_AP_DBGCLAIMSET_EL1_FUNC(void)
9358 {
9359     return 0x20007080600ll;
9360 }
9361 
9362 #define typedef_BDK_AP_DBGCLAIMSET_EL1 bdk_ap_dbgclaimset_el1_t
9363 #define bustype_BDK_AP_DBGCLAIMSET_EL1 BDK_CSR_TYPE_SYSREG
9364 #define basename_BDK_AP_DBGCLAIMSET_EL1 "AP_DBGCLAIMSET_EL1"
9365 #define busnum_BDK_AP_DBGCLAIMSET_EL1 0
9366 #define arguments_BDK_AP_DBGCLAIMSET_EL1 -1,-1,-1,-1
9367 
9368 /**
9369  * Register (SYSREG) ap_dbgdtr_el0
9370  *
9371  * AP Debug Data Transfer Half-Duplex Register
9372  * Transfers 64 bits of data between the processor and an
9373  *     external host. Can transfer both ways using only a single
9374  *     register.
9375  */
9376 union bdk_ap_dbgdtr_el0
9377 {
9378     uint64_t u;
9379     struct bdk_ap_dbgdtr_el0_s
9380     {
9381 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9382         uint64_t highword              : 32; /**< [ 63: 32](R/W) Writes to this register set DTRRX to the value in this field.
9383                                                                      Reads from this register return the value of DTRTX. */
9384         uint64_t lowword               : 32; /**< [ 31:  0](R/W) Writes to this register set DTRTX to the value in this field.
9385                                                                      Reads from this register return the value of DTRRX. */
9386 #else /* Word 0 - Little Endian */
9387         uint64_t lowword               : 32; /**< [ 31:  0](R/W) Writes to this register set DTRTX to the value in this field.
9388                                                                      Reads from this register return the value of DTRRX. */
9389         uint64_t highword              : 32; /**< [ 63: 32](R/W) Writes to this register set DTRRX to the value in this field.
9390                                                                      Reads from this register return the value of DTRTX. */
9391 #endif /* Word 0 - End */
9392     } s;
9393     /* struct bdk_ap_dbgdtr_el0_s cn; */
9394 };
9395 typedef union bdk_ap_dbgdtr_el0 bdk_ap_dbgdtr_el0_t;
9396 
9397 #define BDK_AP_DBGDTR_EL0 BDK_AP_DBGDTR_EL0_FUNC()
9398 static inline uint64_t BDK_AP_DBGDTR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DBGDTR_EL0_FUNC(void)9399 static inline uint64_t BDK_AP_DBGDTR_EL0_FUNC(void)
9400 {
9401     return 0x20300040000ll;
9402 }
9403 
9404 #define typedef_BDK_AP_DBGDTR_EL0 bdk_ap_dbgdtr_el0_t
9405 #define bustype_BDK_AP_DBGDTR_EL0 BDK_CSR_TYPE_SYSREG
9406 #define basename_BDK_AP_DBGDTR_EL0 "AP_DBGDTR_EL0"
9407 #define busnum_BDK_AP_DBGDTR_EL0 0
9408 #define arguments_BDK_AP_DBGDTR_EL0 -1,-1,-1,-1
9409 
9410 /**
9411  * Register (SYSREG) ap_dbgdtrrx_el0
9412  *
9413  * AP Debug Data Transfer Receive Register
9414  * Transfers 32 bits of data from an external host to the
9415  *     processor.
9416  *
9417  * This register is at the same select as AP_DBGDTRTX_EL0.
9418  */
9419 union bdk_ap_dbgdtrrx_el0
9420 {
9421     uint32_t u;
9422     struct bdk_ap_dbgdtrrx_el0_s
9423     {
9424 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9425         uint32_t data                  : 32; /**< [ 31:  0](RO) Host to target data
9426                                                                  Host to target data. One word of data for transfer from the
9427                                                                      debug host to the debug target.
9428                                                                  For the full behavior of the Debug Communications Channel, see
9429                                                                      section 9 (The Debug Communications Channel and Instruction
9430                                                                      Transfer Register) in document PRD03-PRDC-010486. */
9431 #else /* Word 0 - Little Endian */
9432         uint32_t data                  : 32; /**< [ 31:  0](RO) Host to target data
9433                                                                  Host to target data. One word of data for transfer from the
9434                                                                      debug host to the debug target.
9435                                                                  For the full behavior of the Debug Communications Channel, see
9436                                                                      section 9 (The Debug Communications Channel and Instruction
9437                                                                      Transfer Register) in document PRD03-PRDC-010486. */
9438 #endif /* Word 0 - End */
9439     } s;
9440     /* struct bdk_ap_dbgdtrrx_el0_s cn; */
9441 };
9442 typedef union bdk_ap_dbgdtrrx_el0 bdk_ap_dbgdtrrx_el0_t;
9443 
9444 #define BDK_AP_DBGDTRRX_EL0 BDK_AP_DBGDTRRX_EL0_FUNC()
9445 static inline uint64_t BDK_AP_DBGDTRRX_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DBGDTRRX_EL0_FUNC(void)9446 static inline uint64_t BDK_AP_DBGDTRRX_EL0_FUNC(void)
9447 {
9448     return 0x20300050000ll;
9449 }
9450 
9451 #define typedef_BDK_AP_DBGDTRRX_EL0 bdk_ap_dbgdtrrx_el0_t
9452 #define bustype_BDK_AP_DBGDTRRX_EL0 BDK_CSR_TYPE_SYSREG
9453 #define basename_BDK_AP_DBGDTRRX_EL0 "AP_DBGDTRRX_EL0"
9454 #define busnum_BDK_AP_DBGDTRRX_EL0 0
9455 #define arguments_BDK_AP_DBGDTRRX_EL0 -1,-1,-1,-1
9456 
9457 /**
9458  * Register (SYSREG) ap_dbgdtrtx_el0
9459  *
9460  * AP Debug Data Transfer Transmit Register
9461  * Transfers 32 bits of data from the processor to an external
9462  *     host.
9463  *
9464  * This register is at the same select as AP_DBGDTRRX_EL0.
9465  */
9466 union bdk_ap_dbgdtrtx_el0
9467 {
9468     uint32_t u;
9469     struct bdk_ap_dbgdtrtx_el0_s
9470     {
9471 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9472         uint32_t data                  : 32; /**< [ 31:  0](RO) Target to host data. One word of data for transfer from the
9473                                                                      debug target to the debug host.
9474                                                                  For the full behavior of the Debug Communications Channel, see
9475                                                                      section 9 (The Debug Communications Channel and Instruction
9476                                                                      Transfer Register) in document PRD03-PRDC-010486. */
9477 #else /* Word 0 - Little Endian */
9478         uint32_t data                  : 32; /**< [ 31:  0](RO) Target to host data. One word of data for transfer from the
9479                                                                      debug target to the debug host.
9480                                                                  For the full behavior of the Debug Communications Channel, see
9481                                                                      section 9 (The Debug Communications Channel and Instruction
9482                                                                      Transfer Register) in document PRD03-PRDC-010486. */
9483 #endif /* Word 0 - End */
9484     } s;
9485     /* struct bdk_ap_dbgdtrtx_el0_s cn8; */
9486     struct bdk_ap_dbgdtrtx_el0_cn9
9487     {
9488 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9489         uint32_t data                  : 32; /**< [ 31:  0](WO) Target to host data. One word of data for transfer from the
9490                                                                      debug target to the debug host.
9491                                                                  For the full behavior of the Debug Communications Channel, see
9492                                                                      section 9 (The Debug Communications Channel and Instruction
9493                                                                      Transfer Register) in document PRD03-PRDC-010486. */
9494 #else /* Word 0 - Little Endian */
9495         uint32_t data                  : 32; /**< [ 31:  0](WO) Target to host data. One word of data for transfer from the
9496                                                                      debug target to the debug host.
9497                                                                  For the full behavior of the Debug Communications Channel, see
9498                                                                      section 9 (The Debug Communications Channel and Instruction
9499                                                                      Transfer Register) in document PRD03-PRDC-010486. */
9500 #endif /* Word 0 - End */
9501     } cn9;
9502 };
9503 typedef union bdk_ap_dbgdtrtx_el0 bdk_ap_dbgdtrtx_el0_t;
9504 
9505 #define BDK_AP_DBGDTRTX_EL0 BDK_AP_DBGDTRTX_EL0_FUNC()
9506 static inline uint64_t BDK_AP_DBGDTRTX_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DBGDTRTX_EL0_FUNC(void)9507 static inline uint64_t BDK_AP_DBGDTRTX_EL0_FUNC(void)
9508 {
9509     return 0x20300050010ll;
9510 }
9511 
9512 #define typedef_BDK_AP_DBGDTRTX_EL0 bdk_ap_dbgdtrtx_el0_t
9513 #define bustype_BDK_AP_DBGDTRTX_EL0 BDK_CSR_TYPE_SYSREG
9514 #define basename_BDK_AP_DBGDTRTX_EL0 "AP_DBGDTRTX_EL0"
9515 #define busnum_BDK_AP_DBGDTRTX_EL0 0
9516 #define arguments_BDK_AP_DBGDTRTX_EL0 -1,-1,-1,-1
9517 
9518 /**
9519  * Register (SYSREG) ap_dbgprcr_el1
9520  *
9521  * AP Debug Power Control Register
9522  * Controls behavior of processor on power-down request.
9523  */
9524 union bdk_ap_dbgprcr_el1
9525 {
9526     uint32_t u;
9527     struct bdk_ap_dbgprcr_el1_s
9528     {
9529 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9530         uint32_t reserved_1_31         : 31;
9531         uint32_t corenpdrq             : 1;  /**< [  0:  0](R/W) Core no powerdown request. Requests emulation of powerdown.
9532 
9533                                                                  0 = On a powerdown request, the system powers down the Core power
9534                                                                      domain.
9535                                                                  1 = On a powerdown request, the system emulates powerdown of the
9536                                                                      Core power domain. In this emulation mode the Core power
9537                                                                      domain is not actually powered down. */
9538 #else /* Word 0 - Little Endian */
9539         uint32_t corenpdrq             : 1;  /**< [  0:  0](R/W) Core no powerdown request. Requests emulation of powerdown.
9540 
9541                                                                  0 = On a powerdown request, the system powers down the Core power
9542                                                                      domain.
9543                                                                  1 = On a powerdown request, the system emulates powerdown of the
9544                                                                      Core power domain. In this emulation mode the Core power
9545                                                                      domain is not actually powered down. */
9546         uint32_t reserved_1_31         : 31;
9547 #endif /* Word 0 - End */
9548     } s;
9549     /* struct bdk_ap_dbgprcr_el1_s cn; */
9550 };
9551 typedef union bdk_ap_dbgprcr_el1 bdk_ap_dbgprcr_el1_t;
9552 
9553 #define BDK_AP_DBGPRCR_EL1 BDK_AP_DBGPRCR_EL1_FUNC()
9554 static inline uint64_t BDK_AP_DBGPRCR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DBGPRCR_EL1_FUNC(void)9555 static inline uint64_t BDK_AP_DBGPRCR_EL1_FUNC(void)
9556 {
9557     return 0x20001040400ll;
9558 }
9559 
9560 #define typedef_BDK_AP_DBGPRCR_EL1 bdk_ap_dbgprcr_el1_t
9561 #define bustype_BDK_AP_DBGPRCR_EL1 BDK_CSR_TYPE_SYSREG
9562 #define basename_BDK_AP_DBGPRCR_EL1 "AP_DBGPRCR_EL1"
9563 #define busnum_BDK_AP_DBGPRCR_EL1 0
9564 #define arguments_BDK_AP_DBGPRCR_EL1 -1,-1,-1,-1
9565 
9566 /**
9567  * Register (SYSREG) ap_dbgvcr32_el2
9568  *
9569  * AP Debug Vector Catch Register
9570  * Allows access to the AArch32 register DBGVCR from AArch64
9571  *     state only. Its value has no effect on execution in AArch64
9572  *     state.
9573  */
9574 union bdk_ap_dbgvcr32_el2
9575 {
9576     uint32_t u;
9577     struct bdk_ap_dbgvcr32_el2_s
9578     {
9579 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9580         uint32_t nsf                   : 1;  /**< [ 31: 31](R/W) FIQ vector catch enable in nonsecure state.
9581                                                                  The exception vector offset is 0x1C. */
9582         uint32_t nsi                   : 1;  /**< [ 30: 30](R/W) IRQ vector catch enable in nonsecure state.
9583                                                                  The exception vector offset is 0x18. */
9584         uint32_t reserved_29           : 1;
9585         uint32_t nsd                   : 1;  /**< [ 28: 28](R/W) Data Abort vector catch enable in nonsecure state.
9586                                                                  The exception vector offset is 0x10. */
9587         uint32_t nsp                   : 1;  /**< [ 27: 27](R/W) Prefetch Abort vector catch enable in nonsecure state.
9588                                                                  The exception vector offset is 0x0C. */
9589         uint32_t nss                   : 1;  /**< [ 26: 26](R/W) Supervisor Call (SVC) vector catch enable in nonsecure state.
9590                                                                  The exception vector offset is 0x08. */
9591         uint32_t nsu                   : 1;  /**< [ 25: 25](R/W) Undefined Instruction vector catch enable in nonsecure state.
9592                                                                  The exception vector offset is 0x04. */
9593         uint32_t reserved_8_24         : 17;
9594         uint32_t sf                    : 1;  /**< [  7:  7](R/W) FIQ vector catch enable in Secure state.
9595                                                                  The exception vector offset is 0x1C. */
9596         uint32_t si                    : 1;  /**< [  6:  6](R/W) IRQ vector catch enable in Secure state.
9597                                                                  The exception vector offset is 0x18. */
9598         uint32_t reserved_5            : 1;
9599         uint32_t sd                    : 1;  /**< [  4:  4](R/W) Data Abort vector catch enable in Secure state.
9600                                                                  The exception vector offset is 0x10. */
9601         uint32_t sp                    : 1;  /**< [  3:  3](R/W) Prefetch Abort vector catch enable in Secure state.
9602                                                                  The exception vector offset is 0x0C. */
9603         uint32_t ss                    : 1;  /**< [  2:  2](R/W) Supervisor Call (SVC) vector catch enable in Secure state.
9604                                                                  The exception vector offset is 0x08. */
9605         uint32_t su                    : 1;  /**< [  1:  1](R/W) Undefined Instruction vector catch enable in Secure state.
9606                                                                  The exception vector offset is 0x04. */
9607         uint32_t reserved_0            : 1;
9608 #else /* Word 0 - Little Endian */
9609         uint32_t reserved_0            : 1;
9610         uint32_t su                    : 1;  /**< [  1:  1](R/W) Undefined Instruction vector catch enable in Secure state.
9611                                                                  The exception vector offset is 0x04. */
9612         uint32_t ss                    : 1;  /**< [  2:  2](R/W) Supervisor Call (SVC) vector catch enable in Secure state.
9613                                                                  The exception vector offset is 0x08. */
9614         uint32_t sp                    : 1;  /**< [  3:  3](R/W) Prefetch Abort vector catch enable in Secure state.
9615                                                                  The exception vector offset is 0x0C. */
9616         uint32_t sd                    : 1;  /**< [  4:  4](R/W) Data Abort vector catch enable in Secure state.
9617                                                                  The exception vector offset is 0x10. */
9618         uint32_t reserved_5            : 1;
9619         uint32_t si                    : 1;  /**< [  6:  6](R/W) IRQ vector catch enable in Secure state.
9620                                                                  The exception vector offset is 0x18. */
9621         uint32_t sf                    : 1;  /**< [  7:  7](R/W) FIQ vector catch enable in Secure state.
9622                                                                  The exception vector offset is 0x1C. */
9623         uint32_t reserved_8_24         : 17;
9624         uint32_t nsu                   : 1;  /**< [ 25: 25](R/W) Undefined Instruction vector catch enable in nonsecure state.
9625                                                                  The exception vector offset is 0x04. */
9626         uint32_t nss                   : 1;  /**< [ 26: 26](R/W) Supervisor Call (SVC) vector catch enable in nonsecure state.
9627                                                                  The exception vector offset is 0x08. */
9628         uint32_t nsp                   : 1;  /**< [ 27: 27](R/W) Prefetch Abort vector catch enable in nonsecure state.
9629                                                                  The exception vector offset is 0x0C. */
9630         uint32_t nsd                   : 1;  /**< [ 28: 28](R/W) Data Abort vector catch enable in nonsecure state.
9631                                                                  The exception vector offset is 0x10. */
9632         uint32_t reserved_29           : 1;
9633         uint32_t nsi                   : 1;  /**< [ 30: 30](R/W) IRQ vector catch enable in nonsecure state.
9634                                                                  The exception vector offset is 0x18. */
9635         uint32_t nsf                   : 1;  /**< [ 31: 31](R/W) FIQ vector catch enable in nonsecure state.
9636                                                                  The exception vector offset is 0x1C. */
9637 #endif /* Word 0 - End */
9638     } s;
9639     /* struct bdk_ap_dbgvcr32_el2_s cn8; */
9640     struct bdk_ap_dbgvcr32_el2_cn9
9641     {
9642 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9643         uint32_t nsf                   : 1;  /**< [ 31: 31](RAZ) FIQ vector catch enable in nonsecure state.
9644                                                                  The exception vector offset is 0x1C. */
9645         uint32_t nsi                   : 1;  /**< [ 30: 30](RAZ) IRQ vector catch enable in nonsecure state.
9646                                                                  The exception vector offset is 0x18. */
9647         uint32_t reserved_29           : 1;
9648         uint32_t nsd                   : 1;  /**< [ 28: 28](RAZ) Data Abort vector catch enable in nonsecure state.
9649                                                                  The exception vector offset is 0x10. */
9650         uint32_t nsp                   : 1;  /**< [ 27: 27](RAZ) Prefetch Abort vector catch enable in nonsecure state.
9651                                                                  The exception vector offset is 0x0C. */
9652         uint32_t nss                   : 1;  /**< [ 26: 26](RAZ) Supervisor Call (SVC) vector catch enable in nonsecure state.
9653                                                                  The exception vector offset is 0x08. */
9654         uint32_t nsu                   : 1;  /**< [ 25: 25](RAZ) Undefined Instruction vector catch enable in nonsecure state.
9655                                                                  The exception vector offset is 0x04. */
9656         uint32_t reserved_8_24         : 17;
9657         uint32_t sf                    : 1;  /**< [  7:  7](RAZ) FIQ vector catch enable in Secure state.
9658                                                                  The exception vector offset is 0x1C. */
9659         uint32_t si                    : 1;  /**< [  6:  6](RAZ) IRQ vector catch enable in Secure state.
9660                                                                  The exception vector offset is 0x18. */
9661         uint32_t reserved_5            : 1;
9662         uint32_t sd                    : 1;  /**< [  4:  4](RAZ) Data Abort vector catch enable in Secure state.
9663                                                                  The exception vector offset is 0x10. */
9664         uint32_t sp                    : 1;  /**< [  3:  3](RAZ) Prefetch Abort vector catch enable in Secure state.
9665                                                                  The exception vector offset is 0x0C. */
9666         uint32_t ss                    : 1;  /**< [  2:  2](RAZ) Supervisor Call (SVC) vector catch enable in Secure state.
9667                                                                  The exception vector offset is 0x08. */
9668         uint32_t su                    : 1;  /**< [  1:  1](RAZ) Undefined Instruction vector catch enable in Secure state.
9669                                                                  The exception vector offset is 0x04. */
9670         uint32_t reserved_0            : 1;
9671 #else /* Word 0 - Little Endian */
9672         uint32_t reserved_0            : 1;
9673         uint32_t su                    : 1;  /**< [  1:  1](RAZ) Undefined Instruction vector catch enable in Secure state.
9674                                                                  The exception vector offset is 0x04. */
9675         uint32_t ss                    : 1;  /**< [  2:  2](RAZ) Supervisor Call (SVC) vector catch enable in Secure state.
9676                                                                  The exception vector offset is 0x08. */
9677         uint32_t sp                    : 1;  /**< [  3:  3](RAZ) Prefetch Abort vector catch enable in Secure state.
9678                                                                  The exception vector offset is 0x0C. */
9679         uint32_t sd                    : 1;  /**< [  4:  4](RAZ) Data Abort vector catch enable in Secure state.
9680                                                                  The exception vector offset is 0x10. */
9681         uint32_t reserved_5            : 1;
9682         uint32_t si                    : 1;  /**< [  6:  6](RAZ) IRQ vector catch enable in Secure state.
9683                                                                  The exception vector offset is 0x18. */
9684         uint32_t sf                    : 1;  /**< [  7:  7](RAZ) FIQ vector catch enable in Secure state.
9685                                                                  The exception vector offset is 0x1C. */
9686         uint32_t reserved_8_24         : 17;
9687         uint32_t nsu                   : 1;  /**< [ 25: 25](RAZ) Undefined Instruction vector catch enable in nonsecure state.
9688                                                                  The exception vector offset is 0x04. */
9689         uint32_t nss                   : 1;  /**< [ 26: 26](RAZ) Supervisor Call (SVC) vector catch enable in nonsecure state.
9690                                                                  The exception vector offset is 0x08. */
9691         uint32_t nsp                   : 1;  /**< [ 27: 27](RAZ) Prefetch Abort vector catch enable in nonsecure state.
9692                                                                  The exception vector offset is 0x0C. */
9693         uint32_t nsd                   : 1;  /**< [ 28: 28](RAZ) Data Abort vector catch enable in nonsecure state.
9694                                                                  The exception vector offset is 0x10. */
9695         uint32_t reserved_29           : 1;
9696         uint32_t nsi                   : 1;  /**< [ 30: 30](RAZ) IRQ vector catch enable in nonsecure state.
9697                                                                  The exception vector offset is 0x18. */
9698         uint32_t nsf                   : 1;  /**< [ 31: 31](RAZ) FIQ vector catch enable in nonsecure state.
9699                                                                  The exception vector offset is 0x1C. */
9700 #endif /* Word 0 - End */
9701     } cn9;
9702 };
9703 typedef union bdk_ap_dbgvcr32_el2 bdk_ap_dbgvcr32_el2_t;
9704 
9705 #define BDK_AP_DBGVCR32_EL2 BDK_AP_DBGVCR32_EL2_FUNC()
9706 static inline uint64_t BDK_AP_DBGVCR32_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DBGVCR32_EL2_FUNC(void)9707 static inline uint64_t BDK_AP_DBGVCR32_EL2_FUNC(void)
9708 {
9709     return 0x20400070000ll;
9710 }
9711 
9712 #define typedef_BDK_AP_DBGVCR32_EL2 bdk_ap_dbgvcr32_el2_t
9713 #define bustype_BDK_AP_DBGVCR32_EL2 BDK_CSR_TYPE_SYSREG
9714 #define basename_BDK_AP_DBGVCR32_EL2 "AP_DBGVCR32_EL2"
9715 #define busnum_BDK_AP_DBGVCR32_EL2 0
9716 #define arguments_BDK_AP_DBGVCR32_EL2 -1,-1,-1,-1
9717 
9718 /**
9719  * Register (SYSREG) ap_dbgwcr#_el1
9720  *
9721  * AP Debug Watchpoint Control Registers
9722  * Holds control information for a watchpoint. Forms watchpoint n
9723  *     together with value register DBGWVR\<n\>_EL1, where n is 0 to
9724  *     15.
9725  */
9726 union bdk_ap_dbgwcrx_el1
9727 {
9728     uint32_t u;
9729     struct bdk_ap_dbgwcrx_el1_s
9730     {
9731 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9732         uint32_t reserved_29_31        : 3;
9733         uint32_t mask                  : 5;  /**< [ 28: 24](R/W) Address mask. Only objects up to 2GB can be watched using a
9734                                                                      single mask.
9735                                                                  Other values mask the corresponding number of address bits.
9736 
9737                                                                  0x0 = No mask.
9738                                                                  0x1 = Reserved.
9739                                                                  0x2 = Reserved. */
9740         uint32_t reserved_21_23        : 3;
9741         uint32_t wt                    : 1;  /**< [ 20: 20](R/W) Watchpoint type.
9742                                                                  0 = Unlinked data address match.
9743                                                                  1 = Linked data address match. */
9744         uint32_t lbn                   : 4;  /**< [ 19: 16](R/W) Linked breakpoint number. For Linked data address watchpoints,
9745                                                                      this specifies the index of the Context-matching breakpoint
9746                                                                      linked to. */
9747         uint32_t ssc                   : 2;  /**< [ 15: 14](R/W) Security state control. Determines the Security states under
9748                                                                      which a watchpoint debug event for watchpoint n is generated.
9749                                                                      This field must be interpreted along with the HMC and PAC
9750                                                                      fields. */
9751         uint32_t hmc                   : 1;  /**< [ 13: 13](R/W) Higher mode control. Determines the debug perspective for
9752                                                                      deciding when a watchpoint debug event for watchpoint n is
9753                                                                      generated. This field must be interpreted along with the SSC
9754                                                                      and PAC fields. */
9755         uint32_t bas                   : 8;  /**< [ 12:  5](R/W) Byte address select. Each bit of this field selects whether a
9756                                                                      byte from within the word or double-word addressed by
9757                                                                      DBGWVR\<n\>_EL1 is being watched.
9758 
9759                                                                  xxxxxxx1    Match byte at DBGWVR\<n\>_EL1
9760                                                                  xxxxxx1x    Match byte at DBGWVR\<n\>_EL1+1
9761                                                                  xxxxx1xx    Match byte at DBGWVR\<n\>_EL1+2
9762                                                                  xxxx1xxx    Match byte at DBGWVR\<n\>_EL1+3
9763 
9764                                                                  In cases where DBGWVR\<n\>_EL1 addresses a double-word:
9765                                                                  BAS Description, if DBGWVR\<n\>_EL1[2] == 0
9766 
9767                                                                  xxx1xxxx    Match byte at DBGWVR\<n\>_EL1+4
9768                                                                  xx1xxxxx    Match byte at DBGWVR\<n\>_EL1+5
9769                                                                  x1xxxxxx    Match byte at DBGWVR\<n\>_EL1+6
9770                                                                  1xxxxxxx    Match byte at DBGWVR\<n\>_EL1+7
9771 
9772                                                                  If DBGWVR\<n\>_EL1[2] == 1, only BAS[3:0] is used. ARM
9773                                                                      deprecates setting DBGWVR\<n\>_EL1 == 1.
9774                                                                  If BAS is zero, no bytes are watched by this watchpoint.
9775                                                                  Ignored if E is 0. */
9776         uint32_t lsc                   : 2;  /**< [  4:  3](R/W) Load/store control. This field enables watchpoint matching on
9777                                                                      the type of access being made.
9778                                                                  All other values are reserved, but must behave as if the
9779                                                                      watchpoint is disabled. Software must not rely on this
9780                                                                      property as the behavior of reserved values might change in a
9781                                                                      future revision of the architecture.
9782                                                                  Ignored if E is 0.
9783                                                                  0x1 = Match instructions that load from a watchpointed address.
9784                                                                  0x2 = Match instructions that store to a watchpointed address.
9785                                                                  0x3 = Match instructions that load from or store to a watchpointed
9786                                                                      address. */
9787         uint32_t pac                   : 2;  /**< [  2:  1](R/W) Privilege of access control. Determines the Exception level or
9788                                                                      levels at which a watchpoint debug event for watchpoint n is
9789                                                                      generated. This field must be interpreted along with the SSC
9790                                                                      and HMC fields. */
9791         uint32_t ee                    : 1;  /**< [  0:  0](R/W) Enable watchpoint n.
9792                                                                  0 = Watchpoint disabled.
9793                                                                  1 = Watchpoint enabled. */
9794 #else /* Word 0 - Little Endian */
9795         uint32_t ee                    : 1;  /**< [  0:  0](R/W) Enable watchpoint n.
9796                                                                  0 = Watchpoint disabled.
9797                                                                  1 = Watchpoint enabled. */
9798         uint32_t pac                   : 2;  /**< [  2:  1](R/W) Privilege of access control. Determines the Exception level or
9799                                                                      levels at which a watchpoint debug event for watchpoint n is
9800                                                                      generated. This field must be interpreted along with the SSC
9801                                                                      and HMC fields. */
9802         uint32_t lsc                   : 2;  /**< [  4:  3](R/W) Load/store control. This field enables watchpoint matching on
9803                                                                      the type of access being made.
9804                                                                  All other values are reserved, but must behave as if the
9805                                                                      watchpoint is disabled. Software must not rely on this
9806                                                                      property as the behavior of reserved values might change in a
9807                                                                      future revision of the architecture.
9808                                                                  Ignored if E is 0.
9809                                                                  0x1 = Match instructions that load from a watchpointed address.
9810                                                                  0x2 = Match instructions that store to a watchpointed address.
9811                                                                  0x3 = Match instructions that load from or store to a watchpointed
9812                                                                      address. */
9813         uint32_t bas                   : 8;  /**< [ 12:  5](R/W) Byte address select. Each bit of this field selects whether a
9814                                                                      byte from within the word or double-word addressed by
9815                                                                      DBGWVR\<n\>_EL1 is being watched.
9816 
9817                                                                  xxxxxxx1    Match byte at DBGWVR\<n\>_EL1
9818                                                                  xxxxxx1x    Match byte at DBGWVR\<n\>_EL1+1
9819                                                                  xxxxx1xx    Match byte at DBGWVR\<n\>_EL1+2
9820                                                                  xxxx1xxx    Match byte at DBGWVR\<n\>_EL1+3
9821 
9822                                                                  In cases where DBGWVR\<n\>_EL1 addresses a double-word:
9823                                                                  BAS Description, if DBGWVR\<n\>_EL1[2] == 0
9824 
9825                                                                  xxx1xxxx    Match byte at DBGWVR\<n\>_EL1+4
9826                                                                  xx1xxxxx    Match byte at DBGWVR\<n\>_EL1+5
9827                                                                  x1xxxxxx    Match byte at DBGWVR\<n\>_EL1+6
9828                                                                  1xxxxxxx    Match byte at DBGWVR\<n\>_EL1+7
9829 
9830                                                                  If DBGWVR\<n\>_EL1[2] == 1, only BAS[3:0] is used. ARM
9831                                                                      deprecates setting DBGWVR\<n\>_EL1 == 1.
9832                                                                  If BAS is zero, no bytes are watched by this watchpoint.
9833                                                                  Ignored if E is 0. */
9834         uint32_t hmc                   : 1;  /**< [ 13: 13](R/W) Higher mode control. Determines the debug perspective for
9835                                                                      deciding when a watchpoint debug event for watchpoint n is
9836                                                                      generated. This field must be interpreted along with the SSC
9837                                                                      and PAC fields. */
9838         uint32_t ssc                   : 2;  /**< [ 15: 14](R/W) Security state control. Determines the Security states under
9839                                                                      which a watchpoint debug event for watchpoint n is generated.
9840                                                                      This field must be interpreted along with the HMC and PAC
9841                                                                      fields. */
9842         uint32_t lbn                   : 4;  /**< [ 19: 16](R/W) Linked breakpoint number. For Linked data address watchpoints,
9843                                                                      this specifies the index of the Context-matching breakpoint
9844                                                                      linked to. */
9845         uint32_t wt                    : 1;  /**< [ 20: 20](R/W) Watchpoint type.
9846                                                                  0 = Unlinked data address match.
9847                                                                  1 = Linked data address match. */
9848         uint32_t reserved_21_23        : 3;
9849         uint32_t mask                  : 5;  /**< [ 28: 24](R/W) Address mask. Only objects up to 2GB can be watched using a
9850                                                                      single mask.
9851                                                                  Other values mask the corresponding number of address bits.
9852 
9853                                                                  0x0 = No mask.
9854                                                                  0x1 = Reserved.
9855                                                                  0x2 = Reserved. */
9856         uint32_t reserved_29_31        : 3;
9857 #endif /* Word 0 - End */
9858     } s;
9859     /* struct bdk_ap_dbgwcrx_el1_s cn; */
9860 };
9861 typedef union bdk_ap_dbgwcrx_el1 bdk_ap_dbgwcrx_el1_t;
9862 
9863 static inline uint64_t BDK_AP_DBGWCRX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_DBGWCRX_EL1(unsigned long a)9864 static inline uint64_t BDK_AP_DBGWCRX_EL1(unsigned long a)
9865 {
9866     if (a<=15)
9867         return 0x20000000700ll + 0x10000ll * ((a) & 0xf);
9868     __bdk_csr_fatal("AP_DBGWCRX_EL1", 1, a, 0, 0, 0);
9869 }
9870 
9871 #define typedef_BDK_AP_DBGWCRX_EL1(a) bdk_ap_dbgwcrx_el1_t
9872 #define bustype_BDK_AP_DBGWCRX_EL1(a) BDK_CSR_TYPE_SYSREG
9873 #define basename_BDK_AP_DBGWCRX_EL1(a) "AP_DBGWCRX_EL1"
9874 #define busnum_BDK_AP_DBGWCRX_EL1(a) (a)
9875 #define arguments_BDK_AP_DBGWCRX_EL1(a) (a),-1,-1,-1
9876 
9877 /**
9878  * Register (SYSREG) ap_dbgwvr#_el1
9879  *
9880  * AP Debug Watchpoint Value Registers
9881  * Holds a data address value for use in watchpoint matching.
9882  *     Forms watchpoint n together with control register
9883  *     DBGWCR\<n\>_EL1, where n is 0 to 15.
9884  */
9885 union bdk_ap_dbgwvrx_el1
9886 {
9887     uint64_t u;
9888     struct bdk_ap_dbgwvrx_el1_s
9889     {
9890 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9891         uint64_t reserved_0_63         : 64;
9892 #else /* Word 0 - Little Endian */
9893         uint64_t reserved_0_63         : 64;
9894 #endif /* Word 0 - End */
9895     } s;
9896     struct bdk_ap_dbgwvrx_el1_cn8
9897     {
9898 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9899         uint64_t ress                  : 15; /**< [ 63: 49](R/W) Reserved, Sign extended. Hardwired to the value of the sign
9900                                                                      bit, bit [48]. Hardware and software must treat this field as
9901                                                                      RES0 if bit[48] is 0, and as RES1 if bit[48] is 1. */
9902         uint64_t va                    : 47; /**< [ 48:  2](R/W) Bits[48:2] of the address value for comparison.
9903                                                                  ARM deprecates setting DBGWVR\<n\>_EL1[2] == 1. */
9904         uint64_t reserved_0_1          : 2;
9905 #else /* Word 0 - Little Endian */
9906         uint64_t reserved_0_1          : 2;
9907         uint64_t va                    : 47; /**< [ 48:  2](R/W) Bits[48:2] of the address value for comparison.
9908                                                                  ARM deprecates setting DBGWVR\<n\>_EL1[2] == 1. */
9909         uint64_t ress                  : 15; /**< [ 63: 49](R/W) Reserved, Sign extended. Hardwired to the value of the sign
9910                                                                      bit, bit [48]. Hardware and software must treat this field as
9911                                                                      RES0 if bit[48] is 0, and as RES1 if bit[48] is 1. */
9912 #endif /* Word 0 - End */
9913     } cn8;
9914     struct bdk_ap_dbgwvrx_el1_cn9
9915     {
9916 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9917         uint64_t ress                  : 11; /**< [ 63: 53](R/W) Reserved, Sign extended. Hardwired to the value of the sign
9918                                                                      bit, bit [52]. Hardware and software must treat this field as
9919                                                                      RES0 if bit[52] is 0, and as RES1 if bit[52] is 1. */
9920         uint64_t va                    : 51; /**< [ 52:  2](R/W) Bits[52:2] of the address value for comparison.
9921                                                                  ARM deprecates setting DBGWVR\<n\>_EL1[2] == 1. */
9922         uint64_t reserved_0_1          : 2;
9923 #else /* Word 0 - Little Endian */
9924         uint64_t reserved_0_1          : 2;
9925         uint64_t va                    : 51; /**< [ 52:  2](R/W) Bits[52:2] of the address value for comparison.
9926                                                                  ARM deprecates setting DBGWVR\<n\>_EL1[2] == 1. */
9927         uint64_t ress                  : 11; /**< [ 63: 53](R/W) Reserved, Sign extended. Hardwired to the value of the sign
9928                                                                      bit, bit [52]. Hardware and software must treat this field as
9929                                                                      RES0 if bit[52] is 0, and as RES1 if bit[52] is 1. */
9930 #endif /* Word 0 - End */
9931     } cn9;
9932 };
9933 typedef union bdk_ap_dbgwvrx_el1 bdk_ap_dbgwvrx_el1_t;
9934 
9935 static inline uint64_t BDK_AP_DBGWVRX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_DBGWVRX_EL1(unsigned long a)9936 static inline uint64_t BDK_AP_DBGWVRX_EL1(unsigned long a)
9937 {
9938     if (a<=15)
9939         return 0x20000000600ll + 0x10000ll * ((a) & 0xf);
9940     __bdk_csr_fatal("AP_DBGWVRX_EL1", 1, a, 0, 0, 0);
9941 }
9942 
9943 #define typedef_BDK_AP_DBGWVRX_EL1(a) bdk_ap_dbgwvrx_el1_t
9944 #define bustype_BDK_AP_DBGWVRX_EL1(a) BDK_CSR_TYPE_SYSREG
9945 #define basename_BDK_AP_DBGWVRX_EL1(a) "AP_DBGWVRX_EL1"
9946 #define busnum_BDK_AP_DBGWVRX_EL1(a) (a)
9947 #define arguments_BDK_AP_DBGWVRX_EL1(a) (a),-1,-1,-1
9948 
9949 /**
9950  * Register (SYSREG) ap_dczid_el0
9951  *
9952  * AP Data Cache Zero ID Register
9953  * This register indicates the block size that is written with byte values of 0 by the
9954  * DC ZVA (Data Cache Zero by Address) system instruction.
9955  */
9956 union bdk_ap_dczid_el0
9957 {
9958     uint32_t u;
9959     struct bdk_ap_dczid_el0_s
9960     {
9961 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9962         uint32_t reserved_5_31         : 27;
9963         uint32_t dzp                   : 1;  /**< [  4:  4](RO) Data Zero prohibited.
9964                                                                  The value read from this field is governed by the access state
9965                                                                      and the values of the AP_HCR_EL2[TDZ] and AP_SCTLR_EL1[DZE] bits.
9966                                                                  0 =  DC ZVA instruction is permitted.
9967                                                                  1 =  DC ZVA instruction is prohibited. */
9968         uint32_t bs                    : 4;  /**< [  3:  0](RO) Log2 of the block size in words. The maximum size supported is 2KB (value == 9).
9969 
9970                                                                  In CNXXXX, 128 bytes. */
9971 #else /* Word 0 - Little Endian */
9972         uint32_t bs                    : 4;  /**< [  3:  0](RO) Log2 of the block size in words. The maximum size supported is 2KB (value == 9).
9973 
9974                                                                  In CNXXXX, 128 bytes. */
9975         uint32_t dzp                   : 1;  /**< [  4:  4](RO) Data Zero prohibited.
9976                                                                  The value read from this field is governed by the access state
9977                                                                      and the values of the AP_HCR_EL2[TDZ] and AP_SCTLR_EL1[DZE] bits.
9978                                                                  0 =  DC ZVA instruction is permitted.
9979                                                                  1 =  DC ZVA instruction is prohibited. */
9980         uint32_t reserved_5_31         : 27;
9981 #endif /* Word 0 - End */
9982     } s;
9983     /* struct bdk_ap_dczid_el0_s cn; */
9984 };
9985 typedef union bdk_ap_dczid_el0 bdk_ap_dczid_el0_t;
9986 
9987 #define BDK_AP_DCZID_EL0 BDK_AP_DCZID_EL0_FUNC()
9988 static inline uint64_t BDK_AP_DCZID_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DCZID_EL0_FUNC(void)9989 static inline uint64_t BDK_AP_DCZID_EL0_FUNC(void)
9990 {
9991     return 0x30300000700ll;
9992 }
9993 
9994 #define typedef_BDK_AP_DCZID_EL0 bdk_ap_dczid_el0_t
9995 #define bustype_BDK_AP_DCZID_EL0 BDK_CSR_TYPE_SYSREG
9996 #define basename_BDK_AP_DCZID_EL0 "AP_DCZID_EL0"
9997 #define busnum_BDK_AP_DCZID_EL0 0
9998 #define arguments_BDK_AP_DCZID_EL0 -1,-1,-1,-1
9999 
10000 /**
10001  * Register (SYSREG) ap_disr_el1
10002  *
10003  * AP Deferred Interrupt Status Register
10004  * Records that an SError interrupt has been consumed by an ESB instruction.
10005  *
10006  * Usage constraints:
10007  *   DISR_EL1 is UNDEFINED at EL0.
10008  *   Direct reads and writes of DISR_EL1:
10009  *     - If EL2 is implemented and HCR_EL2.AMO is set to 1 access VDISR_EL2 at Non-secure EL1.
10010  *     - If EL3 is implemented and SCR_EL3.EA == 1, are RAZ/WI at EL2, Secure EL1, and, if they
10011  * do not access VDISR_EL2, Non-secure EL1.
10012  *   An indirect write to DISR_EL1 made by an ESB instruction does not require an explicit
10013  * synchronization operation for the value written to be observed by a direct read of DISR_EL1
10014  * occurring in program order after the ESB.
10015  */
10016 union bdk_ap_disr_el1
10017 {
10018     uint64_t u;
10019     struct bdk_ap_disr_el1_s
10020     {
10021 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10022         uint64_t reserved_32_63        : 32;
10023         uint64_t aa                    : 1;  /**< [ 31: 31](R/W) Set to 1 when ESB defers an asynchronous SError interrupt. If the implementation does not
10024                                                                  include any synchronizable sources of SError interrupt, this bit is RES0. */
10025         uint64_t reserved_25_30        : 6;
10026         uint64_t ids                   : 1;  /**< [ 24: 24](R/W) Indicates whether the deferred SError interrupt was of an implementation defined type.
10027                                                                    0 = Deferred error uses architecturally-defined format.
10028                                                                    1 = Deferred error uses implementation defined format.  ISS, bits [23:0], when
10029                                                                    IDS = 1 contain an implementation defined SError interrupt syndrome. See the
10030                                                                    description of ESR_ELx[23:0] for an SError interrupt. */
10031         uint64_t reserved_13_23        : 11;
10032         uint64_t aet                   : 3;  /**< [ 12: 10](R/W) Asynchronous error type. See the description of ESR_ELx.AET for an SError interrupt. */
10033         uint64_t ea                    : 1;  /**< [  9:  9](R/W) External abort type. See the description of ESR_ELx.EA for an SError interrupt. */
10034         uint64_t reserved_6_8          : 3;
10035         uint64_t dfsc                  : 6;  /**< [  5:  0](R/W) Fault status code. See the description of ESR_ELx.DFSC for an SError interrupt. */
10036 #else /* Word 0 - Little Endian */
10037         uint64_t dfsc                  : 6;  /**< [  5:  0](R/W) Fault status code. See the description of ESR_ELx.DFSC for an SError interrupt. */
10038         uint64_t reserved_6_8          : 3;
10039         uint64_t ea                    : 1;  /**< [  9:  9](R/W) External abort type. See the description of ESR_ELx.EA for an SError interrupt. */
10040         uint64_t aet                   : 3;  /**< [ 12: 10](R/W) Asynchronous error type. See the description of ESR_ELx.AET for an SError interrupt. */
10041         uint64_t reserved_13_23        : 11;
10042         uint64_t ids                   : 1;  /**< [ 24: 24](R/W) Indicates whether the deferred SError interrupt was of an implementation defined type.
10043                                                                    0 = Deferred error uses architecturally-defined format.
10044                                                                    1 = Deferred error uses implementation defined format.  ISS, bits [23:0], when
10045                                                                    IDS = 1 contain an implementation defined SError interrupt syndrome. See the
10046                                                                    description of ESR_ELx[23:0] for an SError interrupt. */
10047         uint64_t reserved_25_30        : 6;
10048         uint64_t aa                    : 1;  /**< [ 31: 31](R/W) Set to 1 when ESB defers an asynchronous SError interrupt. If the implementation does not
10049                                                                  include any synchronizable sources of SError interrupt, this bit is RES0. */
10050         uint64_t reserved_32_63        : 32;
10051 #endif /* Word 0 - End */
10052     } s;
10053     /* struct bdk_ap_disr_el1_s cn; */
10054 };
10055 typedef union bdk_ap_disr_el1 bdk_ap_disr_el1_t;
10056 
10057 #define BDK_AP_DISR_EL1 BDK_AP_DISR_EL1_FUNC()
10058 static inline uint64_t BDK_AP_DISR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DISR_EL1_FUNC(void)10059 static inline uint64_t BDK_AP_DISR_EL1_FUNC(void)
10060 {
10061     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
10062         return 0x3000c010100ll;
10063     __bdk_csr_fatal("AP_DISR_EL1", 0, 0, 0, 0, 0);
10064 }
10065 
10066 #define typedef_BDK_AP_DISR_EL1 bdk_ap_disr_el1_t
10067 #define bustype_BDK_AP_DISR_EL1 BDK_CSR_TYPE_SYSREG
10068 #define basename_BDK_AP_DISR_EL1 "AP_DISR_EL1"
10069 #define busnum_BDK_AP_DISR_EL1 0
10070 #define arguments_BDK_AP_DISR_EL1 -1,-1,-1,-1
10071 
10072 /**
10073  * Register (SYSREG) ap_dlr_el0
10074  *
10075  * AP Debug Link Register
10076  * In Debug state, holds the address to restart from.
10077  */
10078 union bdk_ap_dlr_el0
10079 {
10080     uint64_t u;
10081     struct bdk_ap_dlr_el0_s
10082     {
10083 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10084         uint64_t data                  : 64; /**< [ 63:  0](R/W) Restart address. */
10085 #else /* Word 0 - Little Endian */
10086         uint64_t data                  : 64; /**< [ 63:  0](R/W) Restart address. */
10087 #endif /* Word 0 - End */
10088     } s;
10089     /* struct bdk_ap_dlr_el0_s cn; */
10090 };
10091 typedef union bdk_ap_dlr_el0 bdk_ap_dlr_el0_t;
10092 
10093 #define BDK_AP_DLR_EL0 BDK_AP_DLR_EL0_FUNC()
10094 static inline uint64_t BDK_AP_DLR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DLR_EL0_FUNC(void)10095 static inline uint64_t BDK_AP_DLR_EL0_FUNC(void)
10096 {
10097     return 0x30304050100ll;
10098 }
10099 
10100 #define typedef_BDK_AP_DLR_EL0 bdk_ap_dlr_el0_t
10101 #define bustype_BDK_AP_DLR_EL0 BDK_CSR_TYPE_SYSREG
10102 #define basename_BDK_AP_DLR_EL0 "AP_DLR_EL0"
10103 #define busnum_BDK_AP_DLR_EL0 0
10104 #define arguments_BDK_AP_DLR_EL0 -1,-1,-1,-1
10105 
10106 /**
10107  * Register (SYSREG) ap_dspsr_el0
10108  *
10109  * AP Debug Saved Program Status Register
10110  * Holds the saved processor state on entry to debug state.
10111  */
10112 union bdk_ap_dspsr_el0
10113 {
10114     uint32_t u;
10115     struct bdk_ap_dspsr_el0_s
10116     {
10117 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10118         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Set to the value of CPSR[N] on entering Debug state, and copied
10119                                                                      to CPSR[N] on exiting Debug state. */
10120         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Set to the value of CPSR[Z] on entering Debug state, and copied
10121                                                                      to CPSR[Z] on exiting Debug state. */
10122         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Set to the value of CPSR[C] on entering Debug state, and copied
10123                                                                      to CPSR[C] on exiting Debug state. */
10124         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Set to the value of CPSR[V] on entering Debug state, and copied
10125                                                                      to CPSR[V] on exiting Debug state. */
10126         uint32_t reserved_24_27        : 4;
10127         uint32_t uao                   : 1;  /**< [ 23: 23](R/W) User access override. */
10128         uint32_t reserved_22           : 1;
10129         uint32_t ss                    : 1;  /**< [ 21: 21](R/W) Software step. Indicates whether software step was enabled when
10130                                                                  Debug state was entered. */
10131         uint32_t il                    : 1;  /**< [ 20: 20](R/W) Illegal Execution State bit. Shows the value of PSTATE[IL]
10132                                                                      immediately before Debug state was entered. */
10133         uint32_t reserved_10_19        : 10;
10134         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Interrupt masks - can also be accessed as PSTATE.[D,A,I,F] */
10135         uint32_t aa                    : 1;  /**< [  8:  8](R/W) Asynchronous data abort mask bit.
10136                                                                  0 = Exception not masked.
10137                                                                  1 = Exception masked. */
10138         uint32_t i                     : 1;  /**< [  7:  7](R/W) IRQ mask bit.
10139                                                                  0 = Exception not masked.
10140                                                                  1 = Exception masked. */
10141         uint32_t f                     : 1;  /**< [  6:  6](R/W) FIQ mask bit.
10142                                                                  0 = Exception not masked.
10143                                                                  1 = Exception masked. */
10144         uint32_t reserved_5            : 1;
10145         uint32_t nrw                   : 1;  /**< [  4:  4](R/W) Current register width:  0 = AArch64, 1 = AArch32. */
10146         uint32_t el                    : 2;  /**< [  3:  2](R/W) Current exception level: 0x0 = EL0, 0x1 = EL1, 0x2 = EL2, 0x3 = EL3. */
10147         uint32_t reserved_1            : 1;
10148         uint32_t sp                    : 1;  /**< [  0:  0](R/W) AArch64 only - Stack Pointer selection - 0 - SP0, 1 - SPx. */
10149 #else /* Word 0 - Little Endian */
10150         uint32_t sp                    : 1;  /**< [  0:  0](R/W) AArch64 only - Stack Pointer selection - 0 - SP0, 1 - SPx. */
10151         uint32_t reserved_1            : 1;
10152         uint32_t el                    : 2;  /**< [  3:  2](R/W) Current exception level: 0x0 = EL0, 0x1 = EL1, 0x2 = EL2, 0x3 = EL3. */
10153         uint32_t nrw                   : 1;  /**< [  4:  4](R/W) Current register width:  0 = AArch64, 1 = AArch32. */
10154         uint32_t reserved_5            : 1;
10155         uint32_t f                     : 1;  /**< [  6:  6](R/W) FIQ mask bit.
10156                                                                  0 = Exception not masked.
10157                                                                  1 = Exception masked. */
10158         uint32_t i                     : 1;  /**< [  7:  7](R/W) IRQ mask bit.
10159                                                                  0 = Exception not masked.
10160                                                                  1 = Exception masked. */
10161         uint32_t aa                    : 1;  /**< [  8:  8](R/W) Asynchronous data abort mask bit.
10162                                                                  0 = Exception not masked.
10163                                                                  1 = Exception masked. */
10164         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Interrupt masks - can also be accessed as PSTATE.[D,A,I,F] */
10165         uint32_t reserved_10_19        : 10;
10166         uint32_t il                    : 1;  /**< [ 20: 20](R/W) Illegal Execution State bit. Shows the value of PSTATE[IL]
10167                                                                      immediately before Debug state was entered. */
10168         uint32_t ss                    : 1;  /**< [ 21: 21](R/W) Software step. Indicates whether software step was enabled when
10169                                                                  Debug state was entered. */
10170         uint32_t reserved_22           : 1;
10171         uint32_t uao                   : 1;  /**< [ 23: 23](R/W) User access override. */
10172         uint32_t reserved_24_27        : 4;
10173         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Set to the value of CPSR[V] on entering Debug state, and copied
10174                                                                      to CPSR[V] on exiting Debug state. */
10175         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Set to the value of CPSR[C] on entering Debug state, and copied
10176                                                                      to CPSR[C] on exiting Debug state. */
10177         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Set to the value of CPSR[Z] on entering Debug state, and copied
10178                                                                      to CPSR[Z] on exiting Debug state. */
10179         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Set to the value of CPSR[N] on entering Debug state, and copied
10180                                                                      to CPSR[N] on exiting Debug state. */
10181 #endif /* Word 0 - End */
10182     } s;
10183     struct bdk_ap_dspsr_el0_cn8
10184     {
10185 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10186         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Set to the value of CPSR[N] on entering Debug state, and copied
10187                                                                      to CPSR[N] on exiting Debug state. */
10188         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Set to the value of CPSR[Z] on entering Debug state, and copied
10189                                                                      to CPSR[Z] on exiting Debug state. */
10190         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Set to the value of CPSR[C] on entering Debug state, and copied
10191                                                                      to CPSR[C] on exiting Debug state. */
10192         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Set to the value of CPSR[V] on entering Debug state, and copied
10193                                                                      to CPSR[V] on exiting Debug state. */
10194         uint32_t reserved_22_27        : 6;
10195         uint32_t ss                    : 1;  /**< [ 21: 21](R/W) Software step. Indicates whether software step was enabled when
10196                                                                  Debug state was entered. */
10197         uint32_t il                    : 1;  /**< [ 20: 20](R/W) Illegal Execution State bit. Shows the value of PSTATE[IL]
10198                                                                      immediately before Debug state was entered. */
10199         uint32_t reserved_10_19        : 10;
10200         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Interrupt masks - can also be accessed as PSTATE.[D,A,I,F] */
10201         uint32_t aa                    : 1;  /**< [  8:  8](R/W) Asynchronous data abort mask bit.
10202                                                                  0 = Exception not masked.
10203                                                                  1 = Exception masked. */
10204         uint32_t i                     : 1;  /**< [  7:  7](R/W) IRQ mask bit.
10205                                                                  0 = Exception not masked.
10206                                                                  1 = Exception masked. */
10207         uint32_t f                     : 1;  /**< [  6:  6](R/W) FIQ mask bit.
10208                                                                  0 = Exception not masked.
10209                                                                  1 = Exception masked. */
10210         uint32_t reserved_5            : 1;
10211         uint32_t nrw                   : 1;  /**< [  4:  4](R/W) Current register width:  0 = AArch64, 1 = AArch32. */
10212         uint32_t el                    : 2;  /**< [  3:  2](R/W) Current exception level: 0x0 = EL0, 0x1 = EL1, 0x2 = EL2, 0x3 = EL3. */
10213         uint32_t reserved_1            : 1;
10214         uint32_t sp                    : 1;  /**< [  0:  0](R/W) AArch64 only - Stack Pointer selection - 0 - SP0, 1 - SPx. */
10215 #else /* Word 0 - Little Endian */
10216         uint32_t sp                    : 1;  /**< [  0:  0](R/W) AArch64 only - Stack Pointer selection - 0 - SP0, 1 - SPx. */
10217         uint32_t reserved_1            : 1;
10218         uint32_t el                    : 2;  /**< [  3:  2](R/W) Current exception level: 0x0 = EL0, 0x1 = EL1, 0x2 = EL2, 0x3 = EL3. */
10219         uint32_t nrw                   : 1;  /**< [  4:  4](R/W) Current register width:  0 = AArch64, 1 = AArch32. */
10220         uint32_t reserved_5            : 1;
10221         uint32_t f                     : 1;  /**< [  6:  6](R/W) FIQ mask bit.
10222                                                                  0 = Exception not masked.
10223                                                                  1 = Exception masked. */
10224         uint32_t i                     : 1;  /**< [  7:  7](R/W) IRQ mask bit.
10225                                                                  0 = Exception not masked.
10226                                                                  1 = Exception masked. */
10227         uint32_t aa                    : 1;  /**< [  8:  8](R/W) Asynchronous data abort mask bit.
10228                                                                  0 = Exception not masked.
10229                                                                  1 = Exception masked. */
10230         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Interrupt masks - can also be accessed as PSTATE.[D,A,I,F] */
10231         uint32_t reserved_10_19        : 10;
10232         uint32_t il                    : 1;  /**< [ 20: 20](R/W) Illegal Execution State bit. Shows the value of PSTATE[IL]
10233                                                                      immediately before Debug state was entered. */
10234         uint32_t ss                    : 1;  /**< [ 21: 21](R/W) Software step. Indicates whether software step was enabled when
10235                                                                  Debug state was entered. */
10236         uint32_t reserved_22_27        : 6;
10237         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Set to the value of CPSR[V] on entering Debug state, and copied
10238                                                                      to CPSR[V] on exiting Debug state. */
10239         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Set to the value of CPSR[C] on entering Debug state, and copied
10240                                                                      to CPSR[C] on exiting Debug state. */
10241         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Set to the value of CPSR[Z] on entering Debug state, and copied
10242                                                                      to CPSR[Z] on exiting Debug state. */
10243         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Set to the value of CPSR[N] on entering Debug state, and copied
10244                                                                      to CPSR[N] on exiting Debug state. */
10245 #endif /* Word 0 - End */
10246     } cn8;
10247     /* struct bdk_ap_dspsr_el0_s cn9; */
10248 };
10249 typedef union bdk_ap_dspsr_el0 bdk_ap_dspsr_el0_t;
10250 
10251 #define BDK_AP_DSPSR_EL0 BDK_AP_DSPSR_EL0_FUNC()
10252 static inline uint64_t BDK_AP_DSPSR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_DSPSR_EL0_FUNC(void)10253 static inline uint64_t BDK_AP_DSPSR_EL0_FUNC(void)
10254 {
10255     return 0x30304050000ll;
10256 }
10257 
10258 #define typedef_BDK_AP_DSPSR_EL0 bdk_ap_dspsr_el0_t
10259 #define bustype_BDK_AP_DSPSR_EL0 BDK_CSR_TYPE_SYSREG
10260 #define basename_BDK_AP_DSPSR_EL0 "AP_DSPSR_EL0"
10261 #define busnum_BDK_AP_DSPSR_EL0 0
10262 #define arguments_BDK_AP_DSPSR_EL0 -1,-1,-1,-1
10263 
10264 /**
10265  * Register (SYSREG) ap_elr_el#
10266  *
10267  * AP Exception Link Register
10268  * Return address for exception
10269  */
10270 union bdk_ap_elr_elx
10271 {
10272     uint64_t u;
10273     struct bdk_ap_elr_elx_s
10274     {
10275 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10276         uint64_t address               : 64; /**< [ 63:  0](R/W) Return address for exception. */
10277 #else /* Word 0 - Little Endian */
10278         uint64_t address               : 64; /**< [ 63:  0](R/W) Return address for exception. */
10279 #endif /* Word 0 - End */
10280     } s;
10281     /* struct bdk_ap_elr_elx_s cn; */
10282 };
10283 typedef union bdk_ap_elr_elx bdk_ap_elr_elx_t;
10284 
10285 static inline uint64_t BDK_AP_ELR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ELR_ELX(unsigned long a)10286 static inline uint64_t BDK_AP_ELR_ELX(unsigned long a)
10287 {
10288     if ((a>=1)&&(a<=3))
10289         return 0x30004000100ll + 0ll * ((a) & 0x3);
10290     __bdk_csr_fatal("AP_ELR_ELX", 1, a, 0, 0, 0);
10291 }
10292 
10293 #define typedef_BDK_AP_ELR_ELX(a) bdk_ap_elr_elx_t
10294 #define bustype_BDK_AP_ELR_ELX(a) BDK_CSR_TYPE_SYSREG
10295 #define basename_BDK_AP_ELR_ELX(a) "AP_ELR_ELX"
10296 #define busnum_BDK_AP_ELR_ELX(a) (a)
10297 #define arguments_BDK_AP_ELR_ELX(a) (a),-1,-1,-1
10298 
10299 /**
10300  * Register (SYSREG) ap_elr_el12
10301  *
10302  * AP Exception Link EL2/3 Alias Register
10303  * Alias to allow EL2/3 access to ELR_EL1 when AP_HCR_EL2[E2H]==1.
10304  */
10305 union bdk_ap_elr_el12
10306 {
10307     uint64_t u;
10308     struct bdk_ap_elr_el12_s
10309     {
10310 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10311         uint64_t address               : 64; /**< [ 63:  0](R/W) Return address for exception. */
10312 #else /* Word 0 - Little Endian */
10313         uint64_t address               : 64; /**< [ 63:  0](R/W) Return address for exception. */
10314 #endif /* Word 0 - End */
10315     } s;
10316     /* struct bdk_ap_elr_el12_s cn; */
10317 };
10318 typedef union bdk_ap_elr_el12 bdk_ap_elr_el12_t;
10319 
10320 #define BDK_AP_ELR_EL12 BDK_AP_ELR_EL12_FUNC()
10321 static inline uint64_t BDK_AP_ELR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ELR_EL12_FUNC(void)10322 static inline uint64_t BDK_AP_ELR_EL12_FUNC(void)
10323 {
10324     return 0x30504000100ll;
10325 }
10326 
10327 #define typedef_BDK_AP_ELR_EL12 bdk_ap_elr_el12_t
10328 #define bustype_BDK_AP_ELR_EL12 BDK_CSR_TYPE_SYSREG
10329 #define basename_BDK_AP_ELR_EL12 "AP_ELR_EL12"
10330 #define busnum_BDK_AP_ELR_EL12 0
10331 #define arguments_BDK_AP_ELR_EL12 -1,-1,-1,-1
10332 
10333 /**
10334  * Register (SYSREG) ap_erridr_el1
10335  *
10336  * AP Error Record ID Register
10337  * Defines the number of error records that can be accessed through the Error Record system
10338  * registers.
10339  *
10340  * Usage constraints:
10341  *   AP_ERRIDR_EL1 is UNDEFINED at EL0.
10342  *   If EL2 is implemented and AP_HCR_EL2[TERR] == 1, then direct reads of AP_ERRIDR_EL1 at
10343  * nonsecure
10344  * EL1 generate a Trap exception to EL2.
10345  *   If EL3 is implemented and AP_SCR_EL3[TERR] == 1, then direct reads of AP_ERRIDR_EL1 at EL1
10346  * and EL2
10347  * generate a Trap exception to EL3.
10348  */
10349 union bdk_ap_erridr_el1
10350 {
10351     uint64_t u;
10352     struct bdk_ap_erridr_el1_s
10353     {
10354 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10355         uint64_t reserved_16_63        : 48;
10356         uint64_t num                   : 16; /**< [ 15:  0](RO) Number of records that can be accessed through the error record system registers. Each
10357                                                                  record is notionally owned by a node. A node might own multiple records. */
10358 #else /* Word 0 - Little Endian */
10359         uint64_t num                   : 16; /**< [ 15:  0](RO) Number of records that can be accessed through the error record system registers. Each
10360                                                                  record is notionally owned by a node. A node might own multiple records. */
10361         uint64_t reserved_16_63        : 48;
10362 #endif /* Word 0 - End */
10363     } s;
10364     /* struct bdk_ap_erridr_el1_s cn; */
10365 };
10366 typedef union bdk_ap_erridr_el1 bdk_ap_erridr_el1_t;
10367 
10368 #define BDK_AP_ERRIDR_EL1 BDK_AP_ERRIDR_EL1_FUNC()
10369 static inline uint64_t BDK_AP_ERRIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ERRIDR_EL1_FUNC(void)10370 static inline uint64_t BDK_AP_ERRIDR_EL1_FUNC(void)
10371 {
10372     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
10373         return 0x30005030000ll;
10374     __bdk_csr_fatal("AP_ERRIDR_EL1", 0, 0, 0, 0, 0);
10375 }
10376 
10377 #define typedef_BDK_AP_ERRIDR_EL1 bdk_ap_erridr_el1_t
10378 #define bustype_BDK_AP_ERRIDR_EL1 BDK_CSR_TYPE_SYSREG
10379 #define basename_BDK_AP_ERRIDR_EL1 "AP_ERRIDR_EL1"
10380 #define busnum_BDK_AP_ERRIDR_EL1 0
10381 #define arguments_BDK_AP_ERRIDR_EL1 -1,-1,-1,-1
10382 
10383 /**
10384  * Register (SYSREG) ap_errselr_el1
10385  *
10386  * AP Error Record Select Register
10387  * ERRSELR_EL1 is UNDEFINED at EL0.
10388  * If EL2 is implemented and HCR_EL2.TERR == 1, then direct reads and writes of ERRSELR_EL1 at
10389  * Non-secure EL1 generate a Trap exception to EL2.
10390  * If EL3 is implemented and SCR_EL3.TERR == 1, then direct reads and writes of ERRSELR_EL1 at
10391  * EL1 and EL2 generate a Trap exception to EL3.
10392  * If ERRIDR_EL1 indicates that zero records are implemented, ERRSELR_EL1 might be UNDEFINED or
10393  * RES0.
10394  */
10395 union bdk_ap_errselr_el1
10396 {
10397     uint64_t u;
10398     struct bdk_ap_errselr_el1_s
10399     {
10400 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10401         uint64_t reserved_16_63        : 48;
10402         uint64_t sel                   : 16; /**< [ 15:  0](R/W) Selects the record accessed through the ERX registers.
10403                                                                  For example, if AP_ERRSELR_EL1[SEL] is set to 4, then reads and writes of AP_ERXSTATUS_EL1
10404                                                                  access
10405                                                                  ERR4STATUS.
10406                                                                  If AP_ERRSELR_EL1[SEL] is set to a value greater than or equal to AP_ERRIDR_EL1[NUM] then:
10407                                                                    - The value read back from AP_ERRSELR_EL1[SEL] is UNKNOWN.
10408                                                                    - One of:
10409                                                                        - An UNKNOWN record is selected.
10410                                                                        - The ERX* registers are RAZ/WI.
10411                                                                        - ERX* register reads and writes are NOPs.
10412                                                                        - ERX* register reads and writes are UNDEFINED.
10413                                                                      Note: The ARM preferred behavior if one or more records are implemented is:
10414                                                                        - SEL is implemented as an N-bit field, where N is the smallest value such that
10415                                                                  ERRIDR_EL1.NUM . 2N.
10416                                                                        - If the value written to SEL modulo 2N is greater than or equal to ERRIDR_EL1.NUM,
10417                                                                  a dummy RAZ/WI record is selected.
10418                                                                      If zero records are implemented, the ARM preferred behavior is for ERRSELR_EL1 and
10419                                                                  ERX* to be undefined. */
10420 #else /* Word 0 - Little Endian */
10421         uint64_t sel                   : 16; /**< [ 15:  0](R/W) Selects the record accessed through the ERX registers.
10422                                                                  For example, if AP_ERRSELR_EL1[SEL] is set to 4, then reads and writes of AP_ERXSTATUS_EL1
10423                                                                  access
10424                                                                  ERR4STATUS.
10425                                                                  If AP_ERRSELR_EL1[SEL] is set to a value greater than or equal to AP_ERRIDR_EL1[NUM] then:
10426                                                                    - The value read back from AP_ERRSELR_EL1[SEL] is UNKNOWN.
10427                                                                    - One of:
10428                                                                        - An UNKNOWN record is selected.
10429                                                                        - The ERX* registers are RAZ/WI.
10430                                                                        - ERX* register reads and writes are NOPs.
10431                                                                        - ERX* register reads and writes are UNDEFINED.
10432                                                                      Note: The ARM preferred behavior if one or more records are implemented is:
10433                                                                        - SEL is implemented as an N-bit field, where N is the smallest value such that
10434                                                                  ERRIDR_EL1.NUM . 2N.
10435                                                                        - If the value written to SEL modulo 2N is greater than or equal to ERRIDR_EL1.NUM,
10436                                                                  a dummy RAZ/WI record is selected.
10437                                                                      If zero records are implemented, the ARM preferred behavior is for ERRSELR_EL1 and
10438                                                                  ERX* to be undefined. */
10439         uint64_t reserved_16_63        : 48;
10440 #endif /* Word 0 - End */
10441     } s;
10442     /* struct bdk_ap_errselr_el1_s cn; */
10443 };
10444 typedef union bdk_ap_errselr_el1 bdk_ap_errselr_el1_t;
10445 
10446 #define BDK_AP_ERRSELR_EL1 BDK_AP_ERRSELR_EL1_FUNC()
10447 static inline uint64_t BDK_AP_ERRSELR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ERRSELR_EL1_FUNC(void)10448 static inline uint64_t BDK_AP_ERRSELR_EL1_FUNC(void)
10449 {
10450     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
10451         return 0x30005030100ll;
10452     __bdk_csr_fatal("AP_ERRSELR_EL1", 0, 0, 0, 0, 0);
10453 }
10454 
10455 #define typedef_BDK_AP_ERRSELR_EL1 bdk_ap_errselr_el1_t
10456 #define bustype_BDK_AP_ERRSELR_EL1 BDK_CSR_TYPE_SYSREG
10457 #define basename_BDK_AP_ERRSELR_EL1 "AP_ERRSELR_EL1"
10458 #define busnum_BDK_AP_ERRSELR_EL1 0
10459 #define arguments_BDK_AP_ERRSELR_EL1 -1,-1,-1,-1
10460 
10461 /**
10462  * Register (SYSREG) ap_erxaddr_el1
10463  *
10464  * AP Selected Error Record Address Register
10465  * Accesses the ERR\<n\>ADDR address register for the error record selected by ERRSELR_EL1.SEL.
10466  *
10467  * Usage constraints as described in AP_ERXFR_EL1.
10468  */
10469 union bdk_ap_erxaddr_el1
10470 {
10471     uint64_t u;
10472     struct bdk_ap_erxaddr_el1_s
10473     {
10474 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10475         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10476 #else /* Word 0 - Little Endian */
10477         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10478 #endif /* Word 0 - End */
10479     } s;
10480     /* struct bdk_ap_erxaddr_el1_s cn; */
10481 };
10482 typedef union bdk_ap_erxaddr_el1 bdk_ap_erxaddr_el1_t;
10483 
10484 #define BDK_AP_ERXADDR_EL1 BDK_AP_ERXADDR_EL1_FUNC()
10485 static inline uint64_t BDK_AP_ERXADDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ERXADDR_EL1_FUNC(void)10486 static inline uint64_t BDK_AP_ERXADDR_EL1_FUNC(void)
10487 {
10488     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
10489         return 0x30005040300ll;
10490     __bdk_csr_fatal("AP_ERXADDR_EL1", 0, 0, 0, 0, 0);
10491 }
10492 
10493 #define typedef_BDK_AP_ERXADDR_EL1 bdk_ap_erxaddr_el1_t
10494 #define bustype_BDK_AP_ERXADDR_EL1 BDK_CSR_TYPE_SYSREG
10495 #define basename_BDK_AP_ERXADDR_EL1 "AP_ERXADDR_EL1"
10496 #define busnum_BDK_AP_ERXADDR_EL1 0
10497 #define arguments_BDK_AP_ERXADDR_EL1 -1,-1,-1,-1
10498 
10499 /**
10500  * Register (SYSREG) ap_erxctlr_el1
10501  *
10502  * AP Selected Error Record Control Register
10503  * Accesses the ERR\<n\>CTLR control register for the error record selected by AP_ERRSELR_EL1[SEL].
10504  *
10505  * Usage constraints as described in AP_ERXFR_EL1.
10506  */
10507 union bdk_ap_erxctlr_el1
10508 {
10509     uint64_t u;
10510     struct bdk_ap_erxctlr_el1_s
10511     {
10512 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10513         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10514 #else /* Word 0 - Little Endian */
10515         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10516 #endif /* Word 0 - End */
10517     } s;
10518     /* struct bdk_ap_erxctlr_el1_s cn; */
10519 };
10520 typedef union bdk_ap_erxctlr_el1 bdk_ap_erxctlr_el1_t;
10521 
10522 #define BDK_AP_ERXCTLR_EL1 BDK_AP_ERXCTLR_EL1_FUNC()
10523 static inline uint64_t BDK_AP_ERXCTLR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ERXCTLR_EL1_FUNC(void)10524 static inline uint64_t BDK_AP_ERXCTLR_EL1_FUNC(void)
10525 {
10526     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
10527         return 0x30005040100ll;
10528     __bdk_csr_fatal("AP_ERXCTLR_EL1", 0, 0, 0, 0, 0);
10529 }
10530 
10531 #define typedef_BDK_AP_ERXCTLR_EL1 bdk_ap_erxctlr_el1_t
10532 #define bustype_BDK_AP_ERXCTLR_EL1 BDK_CSR_TYPE_SYSREG
10533 #define basename_BDK_AP_ERXCTLR_EL1 "AP_ERXCTLR_EL1"
10534 #define busnum_BDK_AP_ERXCTLR_EL1 0
10535 #define arguments_BDK_AP_ERXCTLR_EL1 -1,-1,-1,-1
10536 
10537 /**
10538  * Register (SYSREG) ap_erxfr_el1
10539  *
10540  * AP Selected Error Record Feature Register
10541  * Accesses the ERR\<n\>FR feature register for the error record selected by AP_ERRSELR_EL1[SEL].
10542  *
10543  * Usage constraints:
10544  *   AP_ERXFR_EL1 is UNDEFINED at EL0.
10545  *   If EL2 is implemented and AP_HCR_EL2[TERR] == 1, then direct reads of AP_ERXFR_EL1 at Non-
10546  * secure
10547  * EL1 generate a Trap exception to EL2.
10548  *   If EL3 is implemented and AP_SCR_EL3[TERR] == 1, then direct reads of AP_ERXFR_EL1 at EL1
10549  * and EL2
10550  * generate a Trap exception to EL3.
10551  *   If AP_ERRIDR_EL1[NUM] == 0 or AP_ERRSELR_EL1[SEL] is set to a value greater than or equal to
10552  *   AP_ERRIDR_EL1[NUM] then one of:
10553  *     - An UNKNOWN record is selected.
10554  *     - AP_ERXFR_EL1 is RAZ/WI.
10555  *     - Direct reads of AP_ERXFR_EL1 are NOPs.
10556  *     - Direct reads of AP_ERXFR_EL1 are undefined.
10557  */
10558 union bdk_ap_erxfr_el1
10559 {
10560     uint64_t u;
10561     struct bdk_ap_erxfr_el1_s
10562     {
10563 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10564         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10565 #else /* Word 0 - Little Endian */
10566         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10567 #endif /* Word 0 - End */
10568     } s;
10569     /* struct bdk_ap_erxfr_el1_s cn; */
10570 };
10571 typedef union bdk_ap_erxfr_el1 bdk_ap_erxfr_el1_t;
10572 
10573 #define BDK_AP_ERXFR_EL1 BDK_AP_ERXFR_EL1_FUNC()
10574 static inline uint64_t BDK_AP_ERXFR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ERXFR_EL1_FUNC(void)10575 static inline uint64_t BDK_AP_ERXFR_EL1_FUNC(void)
10576 {
10577     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
10578         return 0x30005040000ll;
10579     __bdk_csr_fatal("AP_ERXFR_EL1", 0, 0, 0, 0, 0);
10580 }
10581 
10582 #define typedef_BDK_AP_ERXFR_EL1 bdk_ap_erxfr_el1_t
10583 #define bustype_BDK_AP_ERXFR_EL1 BDK_CSR_TYPE_SYSREG
10584 #define basename_BDK_AP_ERXFR_EL1 "AP_ERXFR_EL1"
10585 #define busnum_BDK_AP_ERXFR_EL1 0
10586 #define arguments_BDK_AP_ERXFR_EL1 -1,-1,-1,-1
10587 
10588 /**
10589  * Register (SYSREG) ap_erxmisc0_el1
10590  *
10591  * AP Selected Error Record Miscellaneous Register 0
10592  * Accesses the ERR\<n\>MISC0 miscellaneous register 0 for the error record selected by
10593  * ERRSELR_EL1.SEL.
10594  *
10595  * Usage constraints as described in AP_ERXFR_EL1.
10596  */
10597 union bdk_ap_erxmisc0_el1
10598 {
10599     uint64_t u;
10600     struct bdk_ap_erxmisc0_el1_s
10601     {
10602 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10603         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10604 #else /* Word 0 - Little Endian */
10605         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10606 #endif /* Word 0 - End */
10607     } s;
10608     /* struct bdk_ap_erxmisc0_el1_s cn; */
10609 };
10610 typedef union bdk_ap_erxmisc0_el1 bdk_ap_erxmisc0_el1_t;
10611 
10612 #define BDK_AP_ERXMISC0_EL1 BDK_AP_ERXMISC0_EL1_FUNC()
10613 static inline uint64_t BDK_AP_ERXMISC0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ERXMISC0_EL1_FUNC(void)10614 static inline uint64_t BDK_AP_ERXMISC0_EL1_FUNC(void)
10615 {
10616     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
10617         return 0x30005050000ll;
10618     __bdk_csr_fatal("AP_ERXMISC0_EL1", 0, 0, 0, 0, 0);
10619 }
10620 
10621 #define typedef_BDK_AP_ERXMISC0_EL1 bdk_ap_erxmisc0_el1_t
10622 #define bustype_BDK_AP_ERXMISC0_EL1 BDK_CSR_TYPE_SYSREG
10623 #define basename_BDK_AP_ERXMISC0_EL1 "AP_ERXMISC0_EL1"
10624 #define busnum_BDK_AP_ERXMISC0_EL1 0
10625 #define arguments_BDK_AP_ERXMISC0_EL1 -1,-1,-1,-1
10626 
10627 /**
10628  * Register (SYSREG) ap_erxmisc1_el1
10629  *
10630  * AP Selected Error Record Miscellaneous Register 1
10631  * Accesses the ERR\<n\>MISC1 miscellaneous register 1 for the error record selected by
10632  * ERRSELR_EL1.SEL.
10633  *
10634  * Usage constraints as described in AP_ERXFR_EL1.
10635  */
10636 union bdk_ap_erxmisc1_el1
10637 {
10638     uint64_t u;
10639     struct bdk_ap_erxmisc1_el1_s
10640     {
10641 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10642         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10643 #else /* Word 0 - Little Endian */
10644         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10645 #endif /* Word 0 - End */
10646     } s;
10647     /* struct bdk_ap_erxmisc1_el1_s cn; */
10648 };
10649 typedef union bdk_ap_erxmisc1_el1 bdk_ap_erxmisc1_el1_t;
10650 
10651 #define BDK_AP_ERXMISC1_EL1 BDK_AP_ERXMISC1_EL1_FUNC()
10652 static inline uint64_t BDK_AP_ERXMISC1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ERXMISC1_EL1_FUNC(void)10653 static inline uint64_t BDK_AP_ERXMISC1_EL1_FUNC(void)
10654 {
10655     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
10656         return 0x30005050100ll;
10657     __bdk_csr_fatal("AP_ERXMISC1_EL1", 0, 0, 0, 0, 0);
10658 }
10659 
10660 #define typedef_BDK_AP_ERXMISC1_EL1 bdk_ap_erxmisc1_el1_t
10661 #define bustype_BDK_AP_ERXMISC1_EL1 BDK_CSR_TYPE_SYSREG
10662 #define basename_BDK_AP_ERXMISC1_EL1 "AP_ERXMISC1_EL1"
10663 #define busnum_BDK_AP_ERXMISC1_EL1 0
10664 #define arguments_BDK_AP_ERXMISC1_EL1 -1,-1,-1,-1
10665 
10666 /**
10667  * Register (SYSREG) ap_erxstatus_el1
10668  *
10669  * AP Selected Error Record Primary Status Register
10670  * Accesses the ERR\<n\>STATUS primary status register for the error record selected by
10671  * ERRSELR_EL1.SEL.
10672  *
10673  * Usage constraints as described in AP_ERXFR_EL1.
10674  */
10675 union bdk_ap_erxstatus_el1
10676 {
10677     uint64_t u;
10678     struct bdk_ap_erxstatus_el1_s
10679     {
10680 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10681         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10682 #else /* Word 0 - Little Endian */
10683         uint64_t data                  : 64; /**< [ 63:  0](R/W) Data. */
10684 #endif /* Word 0 - End */
10685     } s;
10686     /* struct bdk_ap_erxstatus_el1_s cn; */
10687 };
10688 typedef union bdk_ap_erxstatus_el1 bdk_ap_erxstatus_el1_t;
10689 
10690 #define BDK_AP_ERXSTATUS_EL1 BDK_AP_ERXSTATUS_EL1_FUNC()
10691 static inline uint64_t BDK_AP_ERXSTATUS_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ERXSTATUS_EL1_FUNC(void)10692 static inline uint64_t BDK_AP_ERXSTATUS_EL1_FUNC(void)
10693 {
10694     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
10695         return 0x30005040200ll;
10696     __bdk_csr_fatal("AP_ERXSTATUS_EL1", 0, 0, 0, 0, 0);
10697 }
10698 
10699 #define typedef_BDK_AP_ERXSTATUS_EL1 bdk_ap_erxstatus_el1_t
10700 #define bustype_BDK_AP_ERXSTATUS_EL1 BDK_CSR_TYPE_SYSREG
10701 #define basename_BDK_AP_ERXSTATUS_EL1 "AP_ERXSTATUS_EL1"
10702 #define busnum_BDK_AP_ERXSTATUS_EL1 0
10703 #define arguments_BDK_AP_ERXSTATUS_EL1 -1,-1,-1,-1
10704 
10705 /**
10706  * Register (SYSREG) ap_esr_el#
10707  *
10708  * AP Exception Syndrome Register
10709  * Holds syndrome information for an exception taken to EL*.
10710  */
10711 union bdk_ap_esr_elx
10712 {
10713     uint32_t u;
10714     struct bdk_ap_esr_elx_s
10715     {
10716 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10717         uint32_t ec                    : 6;  /**< [ 31: 26](R/W) Exception Class. Indicates the reason for the exception that
10718                                                                      this register holds information about.
10719 
10720                                                                  0x0 = Unknown or Uncategorized Reason - generally used for
10721                                                                      exceptions as a result of erroneous execution.
10722                                                                  0x1 = Exceptions from WFE/WFI from either AArch32 or AArch64 as a
10723                                                                      result of configurable traps, enables, or disables.
10724 
10725                                                                  Conditional WFE and WFI instructions that fail their condition
10726                                                                      code check do not cause an exception.
10727 
10728                                                                  0x3 = Exceptions from MCR/MRC to CP15 from AArch32 as a result of
10729                                                                      configurable traps, enables, or disables that do not use
10730                                                                      code 0x0.
10731                                                                  0x4 = Exceptions from MCRR/MRRC to CP15 from AArch32 as a result of
10732                                                                      configurable traps, enables, or disables that do not use
10733                                                                      code 0x0.
10734                                                                  0x5 = Exceptions from MCR/MRC to CP14 from AArch32 as a result of
10735                                                                      configurable traps, enables, or disables that do not use
10736                                                                      code 0x0.
10737                                                                  0x6 = Exceptions from LDC/STC to CP14 from AArch32 as a result of
10738                                                                      configurable traps, enables, or disables. The only architected
10739                                                                      uses of these instructions to access CP14 are:
10740                                                                   An STC to write to AP_DBGDTRRX_EL0 or DBGDTRRXint.
10741                                                                   An LDC to read from AP_DBGDTRTX_EL0 or DBGDTRTXint.
10742 
10743                                                                  0x7 = Exceptions from access to Advanced SIMD or Floating Point as a
10744                                                                      result of configurable traps, enables, or disables.
10745                                                                  0xC = Exceptions from MCRR/MRRC to CP14 from AArch32 as a result of
10746                                                                      configurable traps, enables, or disables.
10747                                                                  0xE = Exceptions that occur because the value of PSTATE[IL] is 1.
10748                                                                  0x13 =SMC that is not disabled executed in AArch32.
10749                                                                  0x15 = SVC executed in AArch64.
10750                                                                  0x16 = HVC that is not disabled executed in AArch64.
10751                                                                  0x17 = SMC that is not disabled executed in AArch64.
10752                                                                  0x18 = Exceptions as a result of MSR, MRS, or System AArch64
10753                                                                      instructions as a result of configurable traps, enables, or
10754                                                                      disables, except those using codes0b0000000b0000010b000111
10755                                                                  0x20 = Instruction Abort that caused entry from a lower Exception
10756                                                                      level (AArch32 or AArch64). Used for instruction access
10757                                                                      generated MMU faults and synchronous external aborts,
10758                                                                      including synchronous parity errors. Not used for debug
10759                                                                      related exceptions.
10760                                                                  0x21 = Instruction Abort that caused entry from a current Exception
10761                                                                      level (AArch64). Used for instruction access generated MMU
10762                                                                      faults and synchronous external aborts, including synchronous
10763                                                                      parity errors. Not used for debug related exceptions.
10764                                                                  0x22 = PC Alignment Exception.
10765                                                                  0x24 = Data Abort that caused entry from a lower Exception level
10766                                                                      (AArch32 or AArch64). Used for data access generated MMU
10767                                                                      faults, alignment faults other than those caused by the Stack
10768                                                                      Pointer misalignment, and synchronous external aborts,
10769                                                                      including synchronous parity errors. Not used for debug
10770                                                                      related exceptions.
10771                                                                  0x25 = Data Abort that caused entry from a current Exception level
10772                                                                      (AArch64). Used for data access generated MMU faults,
10773                                                                      alignment faults other than those caused by the Stack Pointer
10774                                                                      misalignment, and synchronous external aborts, including
10775                                                                      synchronous parity errors. Not used for debug related
10776                                                                      exceptions.
10777                                                                  0x26 = Stack Pointer Alignment Exception.
10778                                                                  0x2C = Exceptions as a result of Floating-point exception (optional
10779                                                                      feature) from AArch64.
10780                                                                  0x2F = SError Interrupt.
10781                                                                  0x3C = BRK instruction executed in AArch64 state. */
10782         uint32_t il                    : 1;  /**< [ 25: 25](R/W) Instruction Length for synchronous exceptions.
10783                                                                  0 = 16-bit instruction trapped.
10784                                                                  1 = 32-bit instruction trapped. This value is also used when the
10785                                                                      exception is one of the following:
10786                                                                   * An SError interrupt.
10787                                                                   * An Instruction Abort exception.
10788                                                                   * A Misaligned PC exception.
10789                                                                   * A Misaligned Stack Pointer exception.
10790                                                                   * A Data Abort exception for which the value of the ISV bit is 0.
10791                                                                   * An Illegal Execution State exception.
10792                                                                   * Any debug exception except for Software Breakpoint
10793                                                                      Instruction exceptions. For Software Breakpoint Instruction
10794                                                                      exceptions, this bit has its standard meaning:- 0: 16-bit T32
10795                                                                      BKPT instruction. - 1: 32-bit A32 BKPT instruction or A64 BRK
10796                                                                      instruction.
10797                                                                   * An exception reported using EC value 0b000000. */
10798         uint32_t iss                   : 25; /**< [ 24:  0](R/W) Instruction Specific Syndrome. Architecturally, this field can
10799                                                                      be defined independently for each defined Exception class.
10800                                                                      However, in practice, some ISS encodings are used for more
10801                                                                      than one Exception class.
10802 
10803                                                                  Typically, an ISS encoding has a number of subfields. When an
10804                                                                      ISS subfield holds a register number, the value returned in
10805                                                                      that field is the AArch64 view of the register number, even if
10806                                                                      the reported exception was taken from AArch32 state. If the
10807                                                                      register number is AArch32 register R15, then:
10808 
10809                                                                   If the instruction that generated the exception was not
10810                                                                      UNPREDICTABLE, the field takes the value 0b11111.
10811 
10812                                                                   If the instruction that generated the exception was
10813                                                                      UNPREDICTABLE, the field takes an UNKNOWN value that must be
10814                                                                      either: The AArch64 view of the register number of a register
10815                                                                      that     might have been used at the Exception level from
10816                                                                      which the     exception was taken.  The value 0b11111.
10817 
10818                                                                  When the EC field is0b000000 RES0. */
10819 #else /* Word 0 - Little Endian */
10820         uint32_t iss                   : 25; /**< [ 24:  0](R/W) Instruction Specific Syndrome. Architecturally, this field can
10821                                                                      be defined independently for each defined Exception class.
10822                                                                      However, in practice, some ISS encodings are used for more
10823                                                                      than one Exception class.
10824 
10825                                                                  Typically, an ISS encoding has a number of subfields. When an
10826                                                                      ISS subfield holds a register number, the value returned in
10827                                                                      that field is the AArch64 view of the register number, even if
10828                                                                      the reported exception was taken from AArch32 state. If the
10829                                                                      register number is AArch32 register R15, then:
10830 
10831                                                                   If the instruction that generated the exception was not
10832                                                                      UNPREDICTABLE, the field takes the value 0b11111.
10833 
10834                                                                   If the instruction that generated the exception was
10835                                                                      UNPREDICTABLE, the field takes an UNKNOWN value that must be
10836                                                                      either: The AArch64 view of the register number of a register
10837                                                                      that     might have been used at the Exception level from
10838                                                                      which the     exception was taken.  The value 0b11111.
10839 
10840                                                                  When the EC field is0b000000 RES0. */
10841         uint32_t il                    : 1;  /**< [ 25: 25](R/W) Instruction Length for synchronous exceptions.
10842                                                                  0 = 16-bit instruction trapped.
10843                                                                  1 = 32-bit instruction trapped. This value is also used when the
10844                                                                      exception is one of the following:
10845                                                                   * An SError interrupt.
10846                                                                   * An Instruction Abort exception.
10847                                                                   * A Misaligned PC exception.
10848                                                                   * A Misaligned Stack Pointer exception.
10849                                                                   * A Data Abort exception for which the value of the ISV bit is 0.
10850                                                                   * An Illegal Execution State exception.
10851                                                                   * Any debug exception except for Software Breakpoint
10852                                                                      Instruction exceptions. For Software Breakpoint Instruction
10853                                                                      exceptions, this bit has its standard meaning:- 0: 16-bit T32
10854                                                                      BKPT instruction. - 1: 32-bit A32 BKPT instruction or A64 BRK
10855                                                                      instruction.
10856                                                                   * An exception reported using EC value 0b000000. */
10857         uint32_t ec                    : 6;  /**< [ 31: 26](R/W) Exception Class. Indicates the reason for the exception that
10858                                                                      this register holds information about.
10859 
10860                                                                  0x0 = Unknown or Uncategorized Reason - generally used for
10861                                                                      exceptions as a result of erroneous execution.
10862                                                                  0x1 = Exceptions from WFE/WFI from either AArch32 or AArch64 as a
10863                                                                      result of configurable traps, enables, or disables.
10864 
10865                                                                  Conditional WFE and WFI instructions that fail their condition
10866                                                                      code check do not cause an exception.
10867 
10868                                                                  0x3 = Exceptions from MCR/MRC to CP15 from AArch32 as a result of
10869                                                                      configurable traps, enables, or disables that do not use
10870                                                                      code 0x0.
10871                                                                  0x4 = Exceptions from MCRR/MRRC to CP15 from AArch32 as a result of
10872                                                                      configurable traps, enables, or disables that do not use
10873                                                                      code 0x0.
10874                                                                  0x5 = Exceptions from MCR/MRC to CP14 from AArch32 as a result of
10875                                                                      configurable traps, enables, or disables that do not use
10876                                                                      code 0x0.
10877                                                                  0x6 = Exceptions from LDC/STC to CP14 from AArch32 as a result of
10878                                                                      configurable traps, enables, or disables. The only architected
10879                                                                      uses of these instructions to access CP14 are:
10880                                                                   An STC to write to AP_DBGDTRRX_EL0 or DBGDTRRXint.
10881                                                                   An LDC to read from AP_DBGDTRTX_EL0 or DBGDTRTXint.
10882 
10883                                                                  0x7 = Exceptions from access to Advanced SIMD or Floating Point as a
10884                                                                      result of configurable traps, enables, or disables.
10885                                                                  0xC = Exceptions from MCRR/MRRC to CP14 from AArch32 as a result of
10886                                                                      configurable traps, enables, or disables.
10887                                                                  0xE = Exceptions that occur because the value of PSTATE[IL] is 1.
10888                                                                  0x13 =SMC that is not disabled executed in AArch32.
10889                                                                  0x15 = SVC executed in AArch64.
10890                                                                  0x16 = HVC that is not disabled executed in AArch64.
10891                                                                  0x17 = SMC that is not disabled executed in AArch64.
10892                                                                  0x18 = Exceptions as a result of MSR, MRS, or System AArch64
10893                                                                      instructions as a result of configurable traps, enables, or
10894                                                                      disables, except those using codes0b0000000b0000010b000111
10895                                                                  0x20 = Instruction Abort that caused entry from a lower Exception
10896                                                                      level (AArch32 or AArch64). Used for instruction access
10897                                                                      generated MMU faults and synchronous external aborts,
10898                                                                      including synchronous parity errors. Not used for debug
10899                                                                      related exceptions.
10900                                                                  0x21 = Instruction Abort that caused entry from a current Exception
10901                                                                      level (AArch64). Used for instruction access generated MMU
10902                                                                      faults and synchronous external aborts, including synchronous
10903                                                                      parity errors. Not used for debug related exceptions.
10904                                                                  0x22 = PC Alignment Exception.
10905                                                                  0x24 = Data Abort that caused entry from a lower Exception level
10906                                                                      (AArch32 or AArch64). Used for data access generated MMU
10907                                                                      faults, alignment faults other than those caused by the Stack
10908                                                                      Pointer misalignment, and synchronous external aborts,
10909                                                                      including synchronous parity errors. Not used for debug
10910                                                                      related exceptions.
10911                                                                  0x25 = Data Abort that caused entry from a current Exception level
10912                                                                      (AArch64). Used for data access generated MMU faults,
10913                                                                      alignment faults other than those caused by the Stack Pointer
10914                                                                      misalignment, and synchronous external aborts, including
10915                                                                      synchronous parity errors. Not used for debug related
10916                                                                      exceptions.
10917                                                                  0x26 = Stack Pointer Alignment Exception.
10918                                                                  0x2C = Exceptions as a result of Floating-point exception (optional
10919                                                                      feature) from AArch64.
10920                                                                  0x2F = SError Interrupt.
10921                                                                  0x3C = BRK instruction executed in AArch64 state. */
10922 #endif /* Word 0 - End */
10923     } s;
10924     /* struct bdk_ap_esr_elx_s cn; */
10925 };
10926 typedef union bdk_ap_esr_elx bdk_ap_esr_elx_t;
10927 
10928 static inline uint64_t BDK_AP_ESR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ESR_ELX(unsigned long a)10929 static inline uint64_t BDK_AP_ESR_ELX(unsigned long a)
10930 {
10931     if ((a>=1)&&(a<=3))
10932         return 0x30005020000ll + 0ll * ((a) & 0x3);
10933     __bdk_csr_fatal("AP_ESR_ELX", 1, a, 0, 0, 0);
10934 }
10935 
10936 #define typedef_BDK_AP_ESR_ELX(a) bdk_ap_esr_elx_t
10937 #define bustype_BDK_AP_ESR_ELX(a) BDK_CSR_TYPE_SYSREG
10938 #define basename_BDK_AP_ESR_ELX(a) "AP_ESR_ELX"
10939 #define busnum_BDK_AP_ESR_ELX(a) (a)
10940 #define arguments_BDK_AP_ESR_ELX(a) (a),-1,-1,-1
10941 
10942 /**
10943  * Register (SYSREG) ap_esr_el12
10944  *
10945  * AP Exception Syndrome Register
10946  * Alias of ESR_EL1 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
10947  */
10948 union bdk_ap_esr_el12
10949 {
10950     uint32_t u;
10951     struct bdk_ap_esr_el12_s
10952     {
10953 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10954         uint32_t reserved_0_31         : 32;
10955 #else /* Word 0 - Little Endian */
10956         uint32_t reserved_0_31         : 32;
10957 #endif /* Word 0 - End */
10958     } s;
10959     /* struct bdk_ap_esr_el12_s cn; */
10960 };
10961 typedef union bdk_ap_esr_el12 bdk_ap_esr_el12_t;
10962 
10963 #define BDK_AP_ESR_EL12 BDK_AP_ESR_EL12_FUNC()
10964 static inline uint64_t BDK_AP_ESR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ESR_EL12_FUNC(void)10965 static inline uint64_t BDK_AP_ESR_EL12_FUNC(void)
10966 {
10967     return 0x30505020000ll;
10968 }
10969 
10970 #define typedef_BDK_AP_ESR_EL12 bdk_ap_esr_el12_t
10971 #define bustype_BDK_AP_ESR_EL12 BDK_CSR_TYPE_SYSREG
10972 #define basename_BDK_AP_ESR_EL12 "AP_ESR_EL12"
10973 #define busnum_BDK_AP_ESR_EL12 0
10974 #define arguments_BDK_AP_ESR_EL12 -1,-1,-1,-1
10975 
10976 /**
10977  * Register (SYSREG) ap_far_el#
10978  *
10979  * AP Fault Address Register
10980  * Holds the faulting Virtual Address for all synchronous
10981  *     instruction or data aborts, or exceptions from a misaligned
10982  *     PC, taken to EL*.
10983  */
10984 union bdk_ap_far_elx
10985 {
10986     uint64_t u;
10987     struct bdk_ap_far_elx_s
10988     {
10989 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10990         uint64_t data                  : 64; /**< [ 63:  0](R/W) Faulting Virtual Address for exceptions taken to EL*.
10991                                                                      Exceptions that set the FAR_EL* are all synchronous
10992                                                                      instruction aborts or data aborts, or an exception from a
10993                                                                      misaligned PC.
10994                                                                  If a memory fault that sets FAR_EL* is generated from one of
10995                                                                      the data cache instructions, this field holds the address
10996                                                                      specified in the register argument of the instruction. */
10997 #else /* Word 0 - Little Endian */
10998         uint64_t data                  : 64; /**< [ 63:  0](R/W) Faulting Virtual Address for exceptions taken to EL*.
10999                                                                      Exceptions that set the FAR_EL* are all synchronous
11000                                                                      instruction aborts or data aborts, or an exception from a
11001                                                                      misaligned PC.
11002                                                                  If a memory fault that sets FAR_EL* is generated from one of
11003                                                                      the data cache instructions, this field holds the address
11004                                                                      specified in the register argument of the instruction. */
11005 #endif /* Word 0 - End */
11006     } s;
11007     /* struct bdk_ap_far_elx_s cn; */
11008 };
11009 typedef union bdk_ap_far_elx bdk_ap_far_elx_t;
11010 
11011 static inline uint64_t BDK_AP_FAR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_FAR_ELX(unsigned long a)11012 static inline uint64_t BDK_AP_FAR_ELX(unsigned long a)
11013 {
11014     if ((a>=1)&&(a<=3))
11015         return 0x30006000000ll + 0ll * ((a) & 0x3);
11016     __bdk_csr_fatal("AP_FAR_ELX", 1, a, 0, 0, 0);
11017 }
11018 
11019 #define typedef_BDK_AP_FAR_ELX(a) bdk_ap_far_elx_t
11020 #define bustype_BDK_AP_FAR_ELX(a) BDK_CSR_TYPE_SYSREG
11021 #define basename_BDK_AP_FAR_ELX(a) "AP_FAR_ELX"
11022 #define busnum_BDK_AP_FAR_ELX(a) (a)
11023 #define arguments_BDK_AP_FAR_ELX(a) (a),-1,-1,-1
11024 
11025 /**
11026  * Register (SYSREG) ap_far_el12
11027  *
11028  * AP Fault Address Register
11029  * Alias of ESR_EL1 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
11030  */
11031 union bdk_ap_far_el12
11032 {
11033     uint64_t u;
11034     struct bdk_ap_far_el12_s
11035     {
11036 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11037         uint64_t reserved_0_63         : 64;
11038 #else /* Word 0 - Little Endian */
11039         uint64_t reserved_0_63         : 64;
11040 #endif /* Word 0 - End */
11041     } s;
11042     /* struct bdk_ap_far_el12_s cn; */
11043 };
11044 typedef union bdk_ap_far_el12 bdk_ap_far_el12_t;
11045 
11046 #define BDK_AP_FAR_EL12 BDK_AP_FAR_EL12_FUNC()
11047 static inline uint64_t BDK_AP_FAR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_FAR_EL12_FUNC(void)11048 static inline uint64_t BDK_AP_FAR_EL12_FUNC(void)
11049 {
11050     return 0x30506000000ll;
11051 }
11052 
11053 #define typedef_BDK_AP_FAR_EL12 bdk_ap_far_el12_t
11054 #define bustype_BDK_AP_FAR_EL12 BDK_CSR_TYPE_SYSREG
11055 #define basename_BDK_AP_FAR_EL12 "AP_FAR_EL12"
11056 #define busnum_BDK_AP_FAR_EL12 0
11057 #define arguments_BDK_AP_FAR_EL12 -1,-1,-1,-1
11058 
11059 /**
11060  * Register (SYSREG) ap_fpcr
11061  *
11062  * AP Floating-point Control Register
11063  * Controls floating-point extension behavior.
11064  */
11065 union bdk_ap_fpcr
11066 {
11067     uint32_t u;
11068     struct bdk_ap_fpcr_s
11069     {
11070 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11071         uint32_t reserved_27_31        : 5;
11072         uint32_t ahp                   : 1;  /**< [ 26: 26](R/W) Alternative half-precision control bit:
11073                                                                  0 = IEEE half-precision format selected.
11074                                                                  1 = Alternative half-precision format selected. */
11075         uint32_t dn                    : 1;  /**< [ 25: 25](R/W) Default NaN mode control bit:
11076                                                                  The value of this bit controls both scalar and Advanced SIMD
11077                                                                      floating-point arithmetic.
11078                                                                  0 = NaN operands propagate through to the output of a floating-
11079                                                                      point operation.
11080                                                                  1 = Any operation involving one or more NaNs returns the Default
11081                                                                      NaN. */
11082         uint32_t fz                    : 1;  /**< [ 24: 24](R/W) Flush-to-zero mode control bit:
11083                                                                  The value of this bit controls both scalar and Advanced SIMD
11084                                                                      floating-point arithmetic.
11085                                                                  0 = Flush-to-zero mode disabled. Behavior of the floating-point
11086                                                                      system is fully compliant with the IEEE 754 standard.
11087                                                                  1 = Flush-to-zero mode enabled. */
11088         uint32_t rmode                 : 2;  /**< [ 23: 22](R/W) Rounding Mode control field. The encoding of this field is:
11089                                                                  The specified rounding mode is used by both scalar and
11090                                                                      Advanced SIMD floating-point instructions.
11091                                                                  0x0 = Round to Nearest (RN) mode.
11092                                                                  0x1 = Round towards Plus Infinity (RP) mode.
11093                                                                  0x2 = Round towards Minus Infinity (RM) mode.
11094                                                                  0x3 = Round towards Zero (RZ) mode. */
11095         uint32_t reserved_0_21         : 22;
11096 #else /* Word 0 - Little Endian */
11097         uint32_t reserved_0_21         : 22;
11098         uint32_t rmode                 : 2;  /**< [ 23: 22](R/W) Rounding Mode control field. The encoding of this field is:
11099                                                                  The specified rounding mode is used by both scalar and
11100                                                                      Advanced SIMD floating-point instructions.
11101                                                                  0x0 = Round to Nearest (RN) mode.
11102                                                                  0x1 = Round towards Plus Infinity (RP) mode.
11103                                                                  0x2 = Round towards Minus Infinity (RM) mode.
11104                                                                  0x3 = Round towards Zero (RZ) mode. */
11105         uint32_t fz                    : 1;  /**< [ 24: 24](R/W) Flush-to-zero mode control bit:
11106                                                                  The value of this bit controls both scalar and Advanced SIMD
11107                                                                      floating-point arithmetic.
11108                                                                  0 = Flush-to-zero mode disabled. Behavior of the floating-point
11109                                                                      system is fully compliant with the IEEE 754 standard.
11110                                                                  1 = Flush-to-zero mode enabled. */
11111         uint32_t dn                    : 1;  /**< [ 25: 25](R/W) Default NaN mode control bit:
11112                                                                  The value of this bit controls both scalar and Advanced SIMD
11113                                                                      floating-point arithmetic.
11114                                                                  0 = NaN operands propagate through to the output of a floating-
11115                                                                      point operation.
11116                                                                  1 = Any operation involving one or more NaNs returns the Default
11117                                                                      NaN. */
11118         uint32_t ahp                   : 1;  /**< [ 26: 26](R/W) Alternative half-precision control bit:
11119                                                                  0 = IEEE half-precision format selected.
11120                                                                  1 = Alternative half-precision format selected. */
11121         uint32_t reserved_27_31        : 5;
11122 #endif /* Word 0 - End */
11123     } s;
11124     struct bdk_ap_fpcr_cn
11125     {
11126 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11127         uint32_t reserved_27_31        : 5;
11128         uint32_t ahp                   : 1;  /**< [ 26: 26](R/W) Alternative half-precision control bit:
11129                                                                  0 = IEEE half-precision format selected.
11130                                                                  1 = Alternative half-precision format selected. */
11131         uint32_t dn                    : 1;  /**< [ 25: 25](R/W) Default NaN mode control bit:
11132                                                                  The value of this bit controls both scalar and Advanced SIMD
11133                                                                      floating-point arithmetic.
11134                                                                  0 = NaN operands propagate through to the output of a floating-
11135                                                                      point operation.
11136                                                                  1 = Any operation involving one or more NaNs returns the Default
11137                                                                      NaN. */
11138         uint32_t fz                    : 1;  /**< [ 24: 24](R/W) Flush-to-zero mode control bit:
11139                                                                  The value of this bit controls both scalar and Advanced SIMD
11140                                                                      floating-point arithmetic.
11141                                                                  0 = Flush-to-zero mode disabled. Behavior of the floating-point
11142                                                                      system is fully compliant with the IEEE 754 standard.
11143                                                                  1 = Flush-to-zero mode enabled. */
11144         uint32_t rmode                 : 2;  /**< [ 23: 22](R/W) Rounding Mode control field. The encoding of this field is:
11145                                                                  The specified rounding mode is used by both scalar and
11146                                                                      Advanced SIMD floating-point instructions.
11147                                                                  0x0 = Round to Nearest (RN) mode.
11148                                                                  0x1 = Round towards Plus Infinity (RP) mode.
11149                                                                  0x2 = Round towards Minus Infinity (RM) mode.
11150                                                                  0x3 = Round towards Zero (RZ) mode. */
11151         uint32_t reserved_20_21        : 2;
11152         uint32_t reserved_19           : 1;
11153         uint32_t reserved_16_18        : 3;
11154         uint32_t reserved_15           : 1;
11155         uint32_t reserved_13_14        : 2;
11156         uint32_t reserved_12           : 1;
11157         uint32_t reserved_11           : 1;
11158         uint32_t reserved_10           : 1;
11159         uint32_t reserved_9            : 1;
11160         uint32_t reserved_8            : 1;
11161         uint32_t reserved_0_7          : 8;
11162 #else /* Word 0 - Little Endian */
11163         uint32_t reserved_0_7          : 8;
11164         uint32_t reserved_8            : 1;
11165         uint32_t reserved_9            : 1;
11166         uint32_t reserved_10           : 1;
11167         uint32_t reserved_11           : 1;
11168         uint32_t reserved_12           : 1;
11169         uint32_t reserved_13_14        : 2;
11170         uint32_t reserved_15           : 1;
11171         uint32_t reserved_16_18        : 3;
11172         uint32_t reserved_19           : 1;
11173         uint32_t reserved_20_21        : 2;
11174         uint32_t rmode                 : 2;  /**< [ 23: 22](R/W) Rounding Mode control field. The encoding of this field is:
11175                                                                  The specified rounding mode is used by both scalar and
11176                                                                      Advanced SIMD floating-point instructions.
11177                                                                  0x0 = Round to Nearest (RN) mode.
11178                                                                  0x1 = Round towards Plus Infinity (RP) mode.
11179                                                                  0x2 = Round towards Minus Infinity (RM) mode.
11180                                                                  0x3 = Round towards Zero (RZ) mode. */
11181         uint32_t fz                    : 1;  /**< [ 24: 24](R/W) Flush-to-zero mode control bit:
11182                                                                  The value of this bit controls both scalar and Advanced SIMD
11183                                                                      floating-point arithmetic.
11184                                                                  0 = Flush-to-zero mode disabled. Behavior of the floating-point
11185                                                                      system is fully compliant with the IEEE 754 standard.
11186                                                                  1 = Flush-to-zero mode enabled. */
11187         uint32_t dn                    : 1;  /**< [ 25: 25](R/W) Default NaN mode control bit:
11188                                                                  The value of this bit controls both scalar and Advanced SIMD
11189                                                                      floating-point arithmetic.
11190                                                                  0 = NaN operands propagate through to the output of a floating-
11191                                                                      point operation.
11192                                                                  1 = Any operation involving one or more NaNs returns the Default
11193                                                                      NaN. */
11194         uint32_t ahp                   : 1;  /**< [ 26: 26](R/W) Alternative half-precision control bit:
11195                                                                  0 = IEEE half-precision format selected.
11196                                                                  1 = Alternative half-precision format selected. */
11197         uint32_t reserved_27_31        : 5;
11198 #endif /* Word 0 - End */
11199     } cn;
11200 };
11201 typedef union bdk_ap_fpcr bdk_ap_fpcr_t;
11202 
11203 #define BDK_AP_FPCR BDK_AP_FPCR_FUNC()
11204 static inline uint64_t BDK_AP_FPCR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_FPCR_FUNC(void)11205 static inline uint64_t BDK_AP_FPCR_FUNC(void)
11206 {
11207     return 0x30304040000ll;
11208 }
11209 
11210 #define typedef_BDK_AP_FPCR bdk_ap_fpcr_t
11211 #define bustype_BDK_AP_FPCR BDK_CSR_TYPE_SYSREG
11212 #define basename_BDK_AP_FPCR "AP_FPCR"
11213 #define busnum_BDK_AP_FPCR 0
11214 #define arguments_BDK_AP_FPCR -1,-1,-1,-1
11215 
11216 /**
11217  * Register (SYSREG) ap_fpexc32_el2
11218  *
11219  * AP Floating-point Exception Control Register
11220  * Allows access to the AArch32 register FPEXC from AArch64 state
11221  *     only. Its value has no effect on execution in AArch64 state.
11222  */
11223 union bdk_ap_fpexc32_el2
11224 {
11225     uint32_t u;
11226     struct bdk_ap_fpexc32_el2_s
11227     {
11228 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11229         uint32_t reserved_0_31         : 32;
11230 #else /* Word 0 - Little Endian */
11231         uint32_t reserved_0_31         : 32;
11232 #endif /* Word 0 - End */
11233     } s;
11234     /* struct bdk_ap_fpexc32_el2_s cn; */
11235 };
11236 typedef union bdk_ap_fpexc32_el2 bdk_ap_fpexc32_el2_t;
11237 
11238 #define BDK_AP_FPEXC32_EL2 BDK_AP_FPEXC32_EL2_FUNC()
11239 static inline uint64_t BDK_AP_FPEXC32_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_FPEXC32_EL2_FUNC(void)11240 static inline uint64_t BDK_AP_FPEXC32_EL2_FUNC(void)
11241 {
11242     return 0x30405030000ll;
11243 }
11244 
11245 #define typedef_BDK_AP_FPEXC32_EL2 bdk_ap_fpexc32_el2_t
11246 #define bustype_BDK_AP_FPEXC32_EL2 BDK_CSR_TYPE_SYSREG
11247 #define basename_BDK_AP_FPEXC32_EL2 "AP_FPEXC32_EL2"
11248 #define busnum_BDK_AP_FPEXC32_EL2 0
11249 #define arguments_BDK_AP_FPEXC32_EL2 -1,-1,-1,-1
11250 
11251 /**
11252  * Register (SYSREG) ap_fpsr
11253  *
11254  * AP Floating-point Status Register
11255  * Provides floating-point system status information.
11256  */
11257 union bdk_ap_fpsr
11258 {
11259     uint32_t u;
11260     struct bdk_ap_fpsr_s
11261     {
11262 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11263         uint32_t reserved_28_31        : 4;
11264         uint32_t qc                    : 1;  /**< [ 27: 27](R/W) Cumulative saturation bit, Advanced SIMD only. This bit is set
11265                                                                      to 1 to indicate that an Advanced SIMD integer operation has
11266                                                                      saturated since 0 was last written to this bit. */
11267         uint32_t reserved_8_26         : 19;
11268         uint32_t idc                   : 1;  /**< [  7:  7](R/W) Input Denormal cumulative exception bit. This bit is set to 1
11269                                                                      to indicate that the Input Denormal exception has occurred
11270                                                                      since 0 was last written to this bit.
11271 
11272                                                                  How scalar and Advanced SIMD floating-point instructions
11273                                                                      update this bit depends on the value of the AP_FPCR[IDE] bit. This
11274                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IDE] is
11275                                                                      0, or if trapping software sets it. */
11276         uint32_t reserved_5_6          : 2;
11277         uint32_t ixc                   : 1;  /**< [  4:  4](R/W) Inexact cumulative exception bit. This bit is set to 1 to
11278                                                                      indicate that the Inexact exception has occurred since 0 was
11279                                                                      last written to this bit.
11280 
11281                                                                  How scalar and Advanced SIMD floating-point instructions
11282                                                                      update this bit depends on the value of the AP_FPCR[IXE] bit. This
11283                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IXE] is
11284                                                                      0, or if trapping software sets it. */
11285         uint32_t ufc                   : 1;  /**< [  3:  3](R/W) Underflow cumulative exception bit. This bit is set to 1 to
11286                                                                      indicate that the Underflow exception has occurred since 0 was
11287                                                                      last written to this bit.
11288 
11289                                                                  How scalar and Advanced SIMD floating-point instructions
11290                                                                      update this bit depends on the value of the AP_FPCR[UFE] bit. This
11291                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[UFE] is
11292                                                                      0, or if trapping software sets it. */
11293         uint32_t ofc                   : 1;  /**< [  2:  2](R/W) Overflow cumulative exception bit. This bit is set to 1 to
11294                                                                      indicate that the Overflow exception has occurred since 0 was
11295                                                                      last written to this bit.
11296 
11297                                                                  How scalar and Advanced SIMD floating-point instructions
11298                                                                      update this bit depends on the value of the AP_FPCR[OFE] bit. This
11299                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[OFE] is
11300                                                                      0, or if trapping software sets it. */
11301         uint32_t dzc                   : 1;  /**< [  1:  1](R/W) Division by Zero cumulative exception bit. This bit is set to
11302                                                                      1 to indicate that the Division by Zero exception has occurred
11303                                                                      since 0 was last written to this bit.
11304 
11305                                                                  How scalar and Advanced SIMD floating-point instructions
11306                                                                      update this bit depends on the value of the AP_FPCR[DZE] bit. This
11307                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[DZE] is
11308                                                                      0, or if trapping software sets it. */
11309         uint32_t ioc                   : 1;  /**< [  0:  0](R/W) Invalid Operation cumulative exception bit. This bit is set to
11310                                                                      1 to indicate that the Invalid Operation exception has
11311                                                                      occurred since 0 was last written to this bit.
11312 
11313                                                                  How scalar and Advanced SIMD floating-point instructions
11314                                                                      update this bit depends on the value of the AP_FPCR[IOE] bit. This
11315                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IOE] is
11316                                                                      0, or if trapping software sets it. */
11317 #else /* Word 0 - Little Endian */
11318         uint32_t ioc                   : 1;  /**< [  0:  0](R/W) Invalid Operation cumulative exception bit. This bit is set to
11319                                                                      1 to indicate that the Invalid Operation exception has
11320                                                                      occurred since 0 was last written to this bit.
11321 
11322                                                                  How scalar and Advanced SIMD floating-point instructions
11323                                                                      update this bit depends on the value of the AP_FPCR[IOE] bit. This
11324                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IOE] is
11325                                                                      0, or if trapping software sets it. */
11326         uint32_t dzc                   : 1;  /**< [  1:  1](R/W) Division by Zero cumulative exception bit. This bit is set to
11327                                                                      1 to indicate that the Division by Zero exception has occurred
11328                                                                      since 0 was last written to this bit.
11329 
11330                                                                  How scalar and Advanced SIMD floating-point instructions
11331                                                                      update this bit depends on the value of the AP_FPCR[DZE] bit. This
11332                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[DZE] is
11333                                                                      0, or if trapping software sets it. */
11334         uint32_t ofc                   : 1;  /**< [  2:  2](R/W) Overflow cumulative exception bit. This bit is set to 1 to
11335                                                                      indicate that the Overflow exception has occurred since 0 was
11336                                                                      last written to this bit.
11337 
11338                                                                  How scalar and Advanced SIMD floating-point instructions
11339                                                                      update this bit depends on the value of the AP_FPCR[OFE] bit. This
11340                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[OFE] is
11341                                                                      0, or if trapping software sets it. */
11342         uint32_t ufc                   : 1;  /**< [  3:  3](R/W) Underflow cumulative exception bit. This bit is set to 1 to
11343                                                                      indicate that the Underflow exception has occurred since 0 was
11344                                                                      last written to this bit.
11345 
11346                                                                  How scalar and Advanced SIMD floating-point instructions
11347                                                                      update this bit depends on the value of the AP_FPCR[UFE] bit. This
11348                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[UFE] is
11349                                                                      0, or if trapping software sets it. */
11350         uint32_t ixc                   : 1;  /**< [  4:  4](R/W) Inexact cumulative exception bit. This bit is set to 1 to
11351                                                                      indicate that the Inexact exception has occurred since 0 was
11352                                                                      last written to this bit.
11353 
11354                                                                  How scalar and Advanced SIMD floating-point instructions
11355                                                                      update this bit depends on the value of the AP_FPCR[IXE] bit. This
11356                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IXE] is
11357                                                                      0, or if trapping software sets it. */
11358         uint32_t reserved_5_6          : 2;
11359         uint32_t idc                   : 1;  /**< [  7:  7](R/W) Input Denormal cumulative exception bit. This bit is set to 1
11360                                                                      to indicate that the Input Denormal exception has occurred
11361                                                                      since 0 was last written to this bit.
11362 
11363                                                                  How scalar and Advanced SIMD floating-point instructions
11364                                                                      update this bit depends on the value of the AP_FPCR[IDE] bit. This
11365                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IDE] is
11366                                                                      0, or if trapping software sets it. */
11367         uint32_t reserved_8_26         : 19;
11368         uint32_t qc                    : 1;  /**< [ 27: 27](R/W) Cumulative saturation bit, Advanced SIMD only. This bit is set
11369                                                                      to 1 to indicate that an Advanced SIMD integer operation has
11370                                                                      saturated since 0 was last written to this bit. */
11371         uint32_t reserved_28_31        : 4;
11372 #endif /* Word 0 - End */
11373     } s;
11374     struct bdk_ap_fpsr_cn
11375     {
11376 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11377         uint32_t reserved_31           : 1;
11378         uint32_t reserved_30           : 1;
11379         uint32_t reserved_29           : 1;
11380         uint32_t reserved_28           : 1;
11381         uint32_t qc                    : 1;  /**< [ 27: 27](R/W) Cumulative saturation bit, Advanced SIMD only. This bit is set
11382                                                                      to 1 to indicate that an Advanced SIMD integer operation has
11383                                                                      saturated since 0 was last written to this bit. */
11384         uint32_t reserved_8_26         : 19;
11385         uint32_t idc                   : 1;  /**< [  7:  7](R/W) Input Denormal cumulative exception bit. This bit is set to 1
11386                                                                      to indicate that the Input Denormal exception has occurred
11387                                                                      since 0 was last written to this bit.
11388 
11389                                                                  How scalar and Advanced SIMD floating-point instructions
11390                                                                      update this bit depends on the value of the AP_FPCR[IDE] bit. This
11391                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IDE] is
11392                                                                      0, or if trapping software sets it. */
11393         uint32_t reserved_5_6          : 2;
11394         uint32_t ixc                   : 1;  /**< [  4:  4](R/W) Inexact cumulative exception bit. This bit is set to 1 to
11395                                                                      indicate that the Inexact exception has occurred since 0 was
11396                                                                      last written to this bit.
11397 
11398                                                                  How scalar and Advanced SIMD floating-point instructions
11399                                                                      update this bit depends on the value of the AP_FPCR[IXE] bit. This
11400                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IXE] is
11401                                                                      0, or if trapping software sets it. */
11402         uint32_t ufc                   : 1;  /**< [  3:  3](R/W) Underflow cumulative exception bit. This bit is set to 1 to
11403                                                                      indicate that the Underflow exception has occurred since 0 was
11404                                                                      last written to this bit.
11405 
11406                                                                  How scalar and Advanced SIMD floating-point instructions
11407                                                                      update this bit depends on the value of the AP_FPCR[UFE] bit. This
11408                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[UFE] is
11409                                                                      0, or if trapping software sets it. */
11410         uint32_t ofc                   : 1;  /**< [  2:  2](R/W) Overflow cumulative exception bit. This bit is set to 1 to
11411                                                                      indicate that the Overflow exception has occurred since 0 was
11412                                                                      last written to this bit.
11413 
11414                                                                  How scalar and Advanced SIMD floating-point instructions
11415                                                                      update this bit depends on the value of the AP_FPCR[OFE] bit. This
11416                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[OFE] is
11417                                                                      0, or if trapping software sets it. */
11418         uint32_t dzc                   : 1;  /**< [  1:  1](R/W) Division by Zero cumulative exception bit. This bit is set to
11419                                                                      1 to indicate that the Division by Zero exception has occurred
11420                                                                      since 0 was last written to this bit.
11421 
11422                                                                  How scalar and Advanced SIMD floating-point instructions
11423                                                                      update this bit depends on the value of the AP_FPCR[DZE] bit. This
11424                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[DZE] is
11425                                                                      0, or if trapping software sets it. */
11426         uint32_t ioc                   : 1;  /**< [  0:  0](R/W) Invalid Operation cumulative exception bit. This bit is set to
11427                                                                      1 to indicate that the Invalid Operation exception has
11428                                                                      occurred since 0 was last written to this bit.
11429 
11430                                                                  How scalar and Advanced SIMD floating-point instructions
11431                                                                      update this bit depends on the value of the AP_FPCR[IOE] bit. This
11432                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IOE] is
11433                                                                      0, or if trapping software sets it. */
11434 #else /* Word 0 - Little Endian */
11435         uint32_t ioc                   : 1;  /**< [  0:  0](R/W) Invalid Operation cumulative exception bit. This bit is set to
11436                                                                      1 to indicate that the Invalid Operation exception has
11437                                                                      occurred since 0 was last written to this bit.
11438 
11439                                                                  How scalar and Advanced SIMD floating-point instructions
11440                                                                      update this bit depends on the value of the AP_FPCR[IOE] bit. This
11441                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IOE] is
11442                                                                      0, or if trapping software sets it. */
11443         uint32_t dzc                   : 1;  /**< [  1:  1](R/W) Division by Zero cumulative exception bit. This bit is set to
11444                                                                      1 to indicate that the Division by Zero exception has occurred
11445                                                                      since 0 was last written to this bit.
11446 
11447                                                                  How scalar and Advanced SIMD floating-point instructions
11448                                                                      update this bit depends on the value of the AP_FPCR[DZE] bit. This
11449                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[DZE] is
11450                                                                      0, or if trapping software sets it. */
11451         uint32_t ofc                   : 1;  /**< [  2:  2](R/W) Overflow cumulative exception bit. This bit is set to 1 to
11452                                                                      indicate that the Overflow exception has occurred since 0 was
11453                                                                      last written to this bit.
11454 
11455                                                                  How scalar and Advanced SIMD floating-point instructions
11456                                                                      update this bit depends on the value of the AP_FPCR[OFE] bit. This
11457                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[OFE] is
11458                                                                      0, or if trapping software sets it. */
11459         uint32_t ufc                   : 1;  /**< [  3:  3](R/W) Underflow cumulative exception bit. This bit is set to 1 to
11460                                                                      indicate that the Underflow exception has occurred since 0 was
11461                                                                      last written to this bit.
11462 
11463                                                                  How scalar and Advanced SIMD floating-point instructions
11464                                                                      update this bit depends on the value of the AP_FPCR[UFE] bit. This
11465                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[UFE] is
11466                                                                      0, or if trapping software sets it. */
11467         uint32_t ixc                   : 1;  /**< [  4:  4](R/W) Inexact cumulative exception bit. This bit is set to 1 to
11468                                                                      indicate that the Inexact exception has occurred since 0 was
11469                                                                      last written to this bit.
11470 
11471                                                                  How scalar and Advanced SIMD floating-point instructions
11472                                                                      update this bit depends on the value of the AP_FPCR[IXE] bit. This
11473                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IXE] is
11474                                                                      0, or if trapping software sets it. */
11475         uint32_t reserved_5_6          : 2;
11476         uint32_t idc                   : 1;  /**< [  7:  7](R/W) Input Denormal cumulative exception bit. This bit is set to 1
11477                                                                      to indicate that the Input Denormal exception has occurred
11478                                                                      since 0 was last written to this bit.
11479 
11480                                                                  How scalar and Advanced SIMD floating-point instructions
11481                                                                      update this bit depends on the value of the AP_FPCR[IDE] bit. This
11482                                                                      bit is only set to 1 to indicate an exception if AP_FPCR[IDE] is
11483                                                                      0, or if trapping software sets it. */
11484         uint32_t reserved_8_26         : 19;
11485         uint32_t qc                    : 1;  /**< [ 27: 27](R/W) Cumulative saturation bit, Advanced SIMD only. This bit is set
11486                                                                      to 1 to indicate that an Advanced SIMD integer operation has
11487                                                                      saturated since 0 was last written to this bit. */
11488         uint32_t reserved_28           : 1;
11489         uint32_t reserved_29           : 1;
11490         uint32_t reserved_30           : 1;
11491         uint32_t reserved_31           : 1;
11492 #endif /* Word 0 - End */
11493     } cn;
11494 };
11495 typedef union bdk_ap_fpsr bdk_ap_fpsr_t;
11496 
11497 #define BDK_AP_FPSR BDK_AP_FPSR_FUNC()
11498 static inline uint64_t BDK_AP_FPSR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_FPSR_FUNC(void)11499 static inline uint64_t BDK_AP_FPSR_FUNC(void)
11500 {
11501     return 0x30304040100ll;
11502 }
11503 
11504 #define typedef_BDK_AP_FPSR bdk_ap_fpsr_t
11505 #define bustype_BDK_AP_FPSR BDK_CSR_TYPE_SYSREG
11506 #define basename_BDK_AP_FPSR "AP_FPSR"
11507 #define busnum_BDK_AP_FPSR 0
11508 #define arguments_BDK_AP_FPSR -1,-1,-1,-1
11509 
11510 /**
11511  * Register (SYSREG) ap_hacr_el2
11512  *
11513  * AP Hypervisor Auxiliary Control Register
11514  * Controls trapping to EL2 of implementation defined aspects of
11515  *     nonsecure EL1 or EL0 operation.
11516  */
11517 union bdk_ap_hacr_el2
11518 {
11519     uint32_t u;
11520     struct bdk_ap_hacr_el2_s
11521     {
11522 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11523         uint32_t reserved_0_31         : 32;
11524 #else /* Word 0 - Little Endian */
11525         uint32_t reserved_0_31         : 32;
11526 #endif /* Word 0 - End */
11527     } s;
11528     /* struct bdk_ap_hacr_el2_s cn; */
11529 };
11530 typedef union bdk_ap_hacr_el2 bdk_ap_hacr_el2_t;
11531 
11532 #define BDK_AP_HACR_EL2 BDK_AP_HACR_EL2_FUNC()
11533 static inline uint64_t BDK_AP_HACR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_HACR_EL2_FUNC(void)11534 static inline uint64_t BDK_AP_HACR_EL2_FUNC(void)
11535 {
11536     return 0x30401010700ll;
11537 }
11538 
11539 #define typedef_BDK_AP_HACR_EL2 bdk_ap_hacr_el2_t
11540 #define bustype_BDK_AP_HACR_EL2 BDK_CSR_TYPE_SYSREG
11541 #define basename_BDK_AP_HACR_EL2 "AP_HACR_EL2"
11542 #define busnum_BDK_AP_HACR_EL2 0
11543 #define arguments_BDK_AP_HACR_EL2 -1,-1,-1,-1
11544 
11545 /**
11546  * Register (SYSREG) ap_hcr_el2
11547  *
11548  * AP Hypervisor Configuration Register
11549  * Provides configuration controls for virtualization, including
11550  *     defining whether various nonsecure operations are trapped to
11551  *     EL2.
11552  */
11553 union bdk_ap_hcr_el2
11554 {
11555     uint64_t u;
11556     struct bdk_ap_hcr_el2_s
11557     {
11558 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11559         uint64_t reserved_38_63        : 26;
11560         uint64_t tea                   : 1;  /**< [ 37: 37](R/W) RAS: Route synchronous external aborts to EL2.
11561                                                                    0 = Do not route synchronous external aborts from Non-secure EL0 and EL1 to EL2.
11562                                                                    1 = Route synchronous external aborts from Non-secure EL0 and EL1 to EL2, if not routed
11563                                                                  to EL3. */
11564         uint64_t terr                  : 1;  /**< [ 36: 36](R/W) RAS: Trap Error record accesses.
11565                                                                    0 = Do not trap accesses to error record registers from Non-secure EL1 to EL2.
11566                                                                    1 = Accesses to the ER* registers from Non-secure EL1 generate a Trap exception to EL2. */
11567         uint64_t tlor                  : 1;  /**< [ 35: 35](R/W) v8.1: Trap access to the LOR Registers from nonsecure EL1 to EL2.
11568                                                                  0 = Nonsecure EL1 accesses to the LOR Registers are not trapped to EL2.
11569                                                                  1 = Nonsecure EL1 accesses to the LOR Registers are trapped to EL2. */
11570         uint64_t e2h                   : 1;  /**< [ 34: 34](R/W) V8.1: Enable EL2 host. */
11571         uint64_t id                    : 1;  /**< [ 33: 33](R/W) Stage 2 Instruction cache disable. When AP_HCR_EL2[VM]==1, this
11572                                                                      forces all stage 2 translations for instruction accesses to
11573                                                                      Normal memory to be Non-cacheable for the EL1&0 translation
11574                                                                      regime.
11575                                                                  This bit has no effect on the EL2 or EL3 translation regimes.
11576                                                                  0 = No effect on the stage 2 of the EL1&0 translation regime for
11577                                                                      instruction accesses.
11578                                                                  1 = Forces all stage 2 translations for instruction accesses to
11579                                                                      Normal memory to be Non-cacheable for the EL1&0 translation
11580                                                                      regime. */
11581         uint64_t cd                    : 1;  /**< [ 32: 32](R/W) Stage 2 Data cache disable. When AP_HCR_EL2[VM]==1, this forces
11582                                                                      all stage 2 translations for data accesses and translation
11583                                                                      table walks to Normal memory to be Non-cacheable for the EL1&0
11584                                                                      translation regime.
11585                                                                  This bit has no effect on the EL2 or EL3 translation regimes.
11586                                                                  0 = No effect on the stage 2 of the EL1&0 translation regime for
11587                                                                      data accesses and translation table walks.
11588                                                                  1 = Forces all stage 2 translations for data accesses and
11589                                                                      translation table walks to Normal memory to be Non-cacheable
11590                                                                      for the EL1&0 translation regime. */
11591         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) rw - Register Width control for lower exception levels:
11592                                                                  When AP_SCR_EL3[NS]==0, this bit behaves as if it has the same
11593                                                                      value as the AP_SCR_EL3[RW] bit except for the value read back.
11594                                                                  The RW bit is permitted to be cached in a TLB.
11595                                                                  0 = Lower levels are all AArch32.
11596                                                                  1 = EL1 is AArch64. EL0 is determined by the Execution state
11597                                                                      described in the current process state when executing at EL0. */
11598         uint64_t trvm                  : 1;  /**< [ 30: 30](R/W) Trap Read of Virtual Memory controls. When this bit is set to
11599                                                                      1, this causes Reads to the EL1 virtual memory control
11600                                                                      registers from EL1 to be trapped to EL2. This covers the
11601                                                                      following registers:
11602 
11603                                                                  AArch32: SCTLR, TTBR0, TTBR1, TTBCR, DACR, DFSR, IFSR, DFAR,
11604                                                                      IFAR, ADFSR, AIFSR, PRRR/ MAIR0, NMRR/ MAIR1, AMAIR0, AMAIR1,
11605                                                                      CONTEXTIDR.
11606 
11607                                                                  AArch64: AP_SCTLR_EL1, AP_TTBR0_EL1, AP_TTBR1_EL1, AP_TCR_EL1, ESR_EL1,
11608                                                                      FAR_EL1, AFSR0_EL1, AFSR1_EL1, MAIR_EL1, AMAIR_EL1,
11609                                                                      AP_CONTEXTIDR_EL1. */
11610         uint64_t reserved_29           : 1;
11611         uint64_t tdz                   : 1;  /**< [ 28: 28](R/W) Trap DC ZVA instruction:
11612                                                                  This bit also has an effect on the value read from the
11613                                                                      AP_DCZID_EL0 register. If this bit is 1, then reading
11614                                                                      AP_DCZID_EL0[DZP] from nonsecure EL1 or EL0 will return 1 to
11615                                                                      indicate that DC ZVA is prohibited.
11616                                                                  0 = The instruction is not trapped.
11617                                                                  1 = The instruction is trapped to EL2 when executed in nonsecure
11618                                                                      EL1 or EL0. */
11619         uint64_t tge                   : 1;  /**< [ 27: 27](R/W) Trap General Exceptions. If this bit is set to 1, and
11620                                                                      AP_SCR_EL3[NS] is set to 1, then:
11621 
11622                                                                   All exceptions that would be routed to EL1 are routed to EL2.
11623 
11624                                                                   The AP_SCTLR_EL1[M] bit is treated as being 0 regardless of its
11625                                                                      actual state (for EL1 using AArch32 or AArch64) other than for
11626                                                                      the purpose of reading the bit.
11627 
11628                                                                   The AP_HCR_EL2[FMO], IMO and AMO bits are treated as being 1
11629                                                                      regardless of their actual state other than for the purpose of
11630                                                                      reading the bits.
11631 
11632                                                                   All virtual interrupts are disabled.
11633 
11634                                                                   Any implementation defined mechanisms for signalling virtual
11635                                                                      interrupts are disabled.
11636 
11637                                                                   An exception return to EL1 is treated as an illegal exception
11638                                                                      return.
11639 
11640                                                                  Additionally, if AP_HCR_EL2[TGE] == 1, the
11641                                                                      AP_MDCR_EL2.{TDRA,TDOSA,TDA} bits are ignored and the processor
11642                                                                      behaves as if they are set to 1, other than for the value read
11643                                                                      back from AP_MDCR_EL2. */
11644         uint64_t tvm                   : 1;  /**< [ 26: 26](R/W) Trap Virtual Memory controls. When this bit is set to 1, this
11645                                                                      causes Writes to the EL1 virtual memory control registers from
11646                                                                      EL1 to be trapped to EL2. This covers the following registers:
11647 
11648                                                                  AArch32: SCTLR, TTBR0, TTBR1, TTBCR, DACR, DFSR, IFSR, DFAR,
11649                                                                      IFAR, ADFSR, AIFSR, PRRR/ MAIR0, NMRR/ MAIR1, AMAIR0, AMAIR1,
11650                                                                      CONTEXTIDR.
11651 
11652                                                                  AArch64: AP_SCTLR_EL1, AP_TTBR0_EL1, AP_TTBR1_EL1, AP_TCR_EL1, ESR_EL1,
11653                                                                      FAR_EL1, AFSR0_EL1, AFSR1_EL1, MAIR_EL1, AMAIR_EL1,
11654                                                                      AP_CONTEXTIDR_EL1 */
11655         uint64_t ttlb                  : 1;  /**< [ 25: 25](R/W) Trap TLB maintenance instructions. When this bit is set to 1,
11656                                                                      this causes TLB maintenance instructions executed from EL1
11657                                                                      which are not UNdefined to be trapped to EL2. This covers the
11658                                                                      following instructions:
11659 
11660                                                                  AArch32: TLBIALLIS, TLBIMVAIS, TLBIASIDIS, TLBIMVAAIS,
11661                                                                      TLBIALL, TLBIMVA, TLBIASID, DTLBIALL, DTLBIMVA, DTLBIASID,
11662                                                                      ITLBIALL, ITLBIMVA, ITLBIASID, TLBIMVAA, TLBIMVALIS,
11663                                                                      TLBIMVAALIS, TLBIMVAL, TLBIMVAAL
11664 
11665                                                                  AArch64: TLBI VMALLE1, TLBI VAE1, TLBI ASIDE1, TLBI VAAE1,
11666                                                                      TLBI VALE1, TLBI VAALE1, TLBI VMALLE1IS, TLBI VAE1IS, TLBI
11667                                                                      ASIDE1IS, TLBI VAAE1IS, TLBI VALE1IS, TLBI VAALE1IS */
11668         uint64_t tpu                   : 1;  /**< [ 24: 24](R/W) Trap Cache maintenance instructions to Point of Unification.
11669                                                                      When this bit is set to 1, this causes Cache maintenance
11670                                                                      instructions to the point of unification executed from EL1 or
11671                                                                      EL0 which are not UNdefined to be trapped to EL2. This covers
11672                                                                      the following instructions:
11673 
11674                                                                  AArch32: ICIMVAU, ICIALLU, ICIALLUIS, DCCMVAU.
11675 
11676                                                                  AArch64: IC IVAU, IC IALLU, IC IALLUIS, DC CVAU. */
11677         uint64_t tpc                   : 1;  /**< [ 23: 23](R/W) Trap Data/Unified Cache maintenance operations to Point of
11678                                                                      Coherency. When this bit is set to 1, this causes Data or
11679                                                                      Unified Cache maintenance instructions by address to the point
11680                                                                      of coherency executed from EL1 or EL0 which are not UNdefined
11681                                                                      to be trapped to EL2. This covers the following instructions:
11682 
11683                                                                  AArch32: DCIMVAC, DCCIMVAC, DCCMVAC.
11684 
11685                                                                  AArch64: DC IVAC, DC CIVAC, DC CVAC. */
11686         uint64_t tsw                   : 1;  /**< [ 22: 22](R/W) Trap Data/Unified Cache maintenance operations by Set/Way.
11687                                                                      When this bit is set to 1, this causes Data or Unified Cache
11688                                                                      maintenance instructions by set/way executed from EL1 which
11689                                                                      are not UNdefined to be trapped to EL2. This covers the
11690                                                                      following instructions:
11691 
11692                                                                  AArch32: DCISW, DCCSW, DCCISW.
11693 
11694                                                                  AArch64: DC ISW, DC CSW, DC CISW. */
11695         uint64_t tacr                  : 1;  /**< [ 21: 21](R/W) Trap Auxiliary Control Register. When this bit is set to 1,
11696                                                                      this causes accesses to the following registers executed from
11697                                                                      EL1 to be trapped to EL2:
11698 
11699                                                                  AArch32: ACTLR.
11700 
11701                                                                  AArch64: ACTLR_EL1. */
11702         uint64_t tidcp                 : 1;  /**< [ 20: 20](R/W) Trap Implementation Dependent functionality. When this bit is
11703                                                                      set to 1, this causes accesses to the following instruction
11704                                                                      set space executed from EL1 to be trapped to EL2.
11705 
11706                                                                  AArch32: MCR and MRC instructions as follows:
11707 
11708                                                                   All CP15, CRn==9,  Opcode1 = {0-7}, CRm == {c0-c2, c5-c8},
11709                                                                      opcode2 == {0-7}.
11710 
11711                                                                   All CP15, CRn==10, Opcode1 =={0-7}, CRm == {c0, c1, c4, c8},
11712                                                                      opcode2 == {0-7}.
11713 
11714                                                                   All CP15, CRn==11, Opcode1=={0-7}, CRm == {c0-c8, c15},
11715                                                                      opcode2 == {0-7}.
11716 
11717                                                                  AArch64: All encoding space reserved for implementation
11718                                                                      defined system operations ( S1_\<op1\>_\<Cn\>_\<Cm\>_\<op2\>) and
11719                                                                      system registers ( S3_\<op1\>_\<Cn\>_\<Cm\>_\<op2\>).
11720 
11721                                                                  It is implementation defined whether any of this functionality
11722                                                                      accessed from EL0 is trapped to EL2 when the AP_HCR_EL2[TIDCP] bit
11723                                                                      is set. If it is not trapped to EL2, it results in an
11724                                                                      Undefined exception taken to EL1. */
11725         uint64_t tsc                   : 1;  /**< [ 19: 19](R/W) Trap SMC. When this bit is set to 1, this causes the following
11726                                                                      instructions executed from EL1 to be trapped to EL2:
11727 
11728                                                                  AArch32: SMC.
11729 
11730                                                                  AArch64: SMC.
11731 
11732                                                                  If EL3 is not implemented, this bit is RES0. */
11733         uint64_t tid3                  : 1;  /**< [ 18: 18](R/W) Trap ID Group 3. When this bit is set to 1, this causes reads
11734                                                                      to the following registers executed from EL1 to be trapped to
11735                                                                      EL2:
11736 
11737                                                                  AArch32: ID_PFR0, ID_PFR1, ID_DFR0, ID_AFR0, ID_MMFR0,
11738                                                                      ID_MMFR1, ID_MMFR2, ID_MMFR3, ID_ISAR0, ID_ISAR1, ID_ISAR2,
11739                                                                      ID_ISAR3, ID_ISAR4, ID_ISAR5, MVFR0, MVFR1, MVFR2. Also MRC to
11740                                                                      any of the following encodings:
11741 
11742                                                                   CP15, CRn == 0, Opc1 == 0, CRm == {3-7}, Opc2 == {0,1}.
11743 
11744                                                                   CP15, CRn == 0, Opc1 == 0, CRm == 3, Opc2 == 2.
11745 
11746                                                                   CP15, CRn == 0, Opc1 == 0, CRm == 5, Opc2 == {4,5}.
11747 
11748                                                                  AArch64: AP_ID_PFR0_EL1, AP_ID_PFR1_EL1, AP_ID_DFR0_EL1, AP_ID_AFR0_EL1,
11749                                                                      ID_MMFR0_EL1, ID_MMFR1_EL1, ID_MMFR2_EL1, ID_MMFR3_EL1,
11750                                                                      ID_ISAR0_EL1, ID_ISAR1_EL1, ID_ISAR2_EL1, ID_ISAR3_EL1,
11751                                                                      ID_ISAR4_EL1, ID_ISAR5_EL1, MVFR0_EL1, MVFR1_EL1, MVFR2_EL1,
11752                                                                      AP_ID_AA64PFR0_EL1, AP_ID_AA64PFR1_EL1, AP_ID_AA64DFR0_EL1,
11753                                                                      AP_ID_AA64DFR1_EL1, AP_ID_AA64ISAR0_EL1, AP_ID_AA64ISAR1_EL1,
11754                                                                      AP_ID_AA64MMFR0_EL1, AP_ID_AA64MMFR1_EL1, AP_ID_AA64AFR0_EL1,
11755                                                                      AP_ID_AA64AFR1_EL1. */
11756         uint64_t tid2                  : 1;  /**< [ 17: 17](R/W) Trap ID Group 2. When this bit is set to 1, this causes reads
11757                                                                      (or writes to CSSELR/ AP_CSSELR_EL1) to the following registers
11758                                                                      executed from EL1 or EL0 if not UNdefined to be trapped to
11759                                                                      EL2:
11760 
11761                                                                  AArch32: CTR, CCSIDR, CLIDR, CSSELR.
11762 
11763                                                                  AArch64: AP_CTR_EL0, AP_CCSIDR_EL1, AP_CLIDR_EL1, AP_CSSELR_EL1. */
11764         uint64_t tid1                  : 1;  /**< [ 16: 16](R/W) Trap ID Group 1. When this bit is set to 1, this causes reads
11765                                                                      to the following registers executed from EL1 to be trapped to
11766                                                                      EL2:
11767 
11768                                                                  AArch32: TCMTR, TLBTR, AIDR, REVIDR.
11769 
11770                                                                  AArch64: AP_AIDR_EL1, AP_REVIDR_EL1. */
11771         uint64_t tid0                  : 1;  /**< [ 15: 15](R/W) Trap ID Group 0. When this bit is set to 1, this causes reads
11772                                                                      to the following registers executed from EL1 or EL0 if not
11773                                                                      UNdefined to be trapped to EL2:
11774 
11775                                                                  AArch32: FPSID, JIDR.
11776 
11777                                                                  AArch64: None. */
11778         uint64_t twe                   : 1;  /**< [ 14: 14](R/W) Trap WFE. When this bit is set to 1, this causes the following
11779                                                                      instructions executed from EL1 or EL0 to be trapped to EL2 if
11780                                                                      the instruction would otherwise cause suspension of execution
11781                                                                      (i.e. if the event register is not set):
11782 
11783                                                                  AArch32: WFE.
11784 
11785                                                                  AArch64: WFE.
11786 
11787                                                                  Conditional WFE instructions that fail their condition are not
11788                                                                      trapped if this bit is set to 1. */
11789         uint64_t twi                   : 1;  /**< [ 13: 13](R/W) Trap WFI. When this bit is set to 1, this causes the following
11790                                                                      instructions executed from EL1 or EL0 to be trapped to EL2 if
11791                                                                      the instruction would otherwise cause suspension of execution
11792                                                                      (i.e. if there is not a pending WFI wakeup event):
11793 
11794                                                                  AArch32: WFI.
11795 
11796                                                                  AArch64: WFI.
11797 
11798                                                                  Conditional WFI instructions that fail their condition are not
11799                                                                      trapped if this bit is set to 1. */
11800         uint64_t dc                    : 1;  /**< [ 12: 12](R/W) Default Cacheable. When this bit is set to 1, this causes:
11801 
11802                                                                  * The AP_SCTLR_EL1[M] bit to behave as 0 when in the nonsecure
11803                                                                      state for all purposes other than reading the value of the
11804                                                                      bit.
11805 
11806                                                                  * The AP_HCR_EL2[VM] bit to behave as 1 when in the nonsecure
11807                                                                      state for all purposes other than reading the value of the
11808                                                                      bit.
11809 
11810                                                                  The memory type produced by the first stage of translation
11811                                                                      used by EL1 and EL0 is Normal Non-Shareable, Inner WriteBack
11812                                                                      Read-WriteAllocate, Outer WriteBack Read-WriteAllocate.
11813 
11814                                                                  When this bit is 0 and the stage 1 MMU is disabled, the
11815                                                                      default memory attribute for Data accesses is Device-nGnRnE.
11816 
11817                                                                  This bit is permitted to be cached in a TLB. */
11818         uint64_t bsu                   : 2;  /**< [ 11: 10](R/W) Barrier Shareability upgrade. The value in this field
11819                                                                      determines the minimum shareability domain that is applied to
11820                                                                      any barrier executed from EL1 or EL0.
11821 
11822                                                                  This value is combined with the specified level of the barrier
11823                                                                      held in its instruction, using the same principles as
11824                                                                      combining the shareability attributes from two stages of
11825                                                                      address translation.
11826 
11827                                                                  0x0 = No effect.
11828                                                                  0x1 = Inner Shareable.
11829                                                                  0x2 = Outer Shareable.
11830                                                                  0x3 = Full system. */
11831         uint64_t fb                    : 1;  /**< [  9:  9](R/W) Force broadcast. When this bit is set to 1, this causes the
11832                                                                      following instructions to be broadcast within the Inner
11833                                                                      Shareable domain when executed from nonsecure EL1:
11834 
11835                                                                  AArch32: BPIALL, TLBIALL, TLBIMVA, TLBIASID, DTLBIALL,
11836                                                                      DTLBIMVA, DTLBIASID, ITLBIALL, ITLBIMVA, ITLBIASID, TLBIMVAA,
11837                                                                      ICIALLU, TLBIMVAL, TLBIMVAAL.
11838 
11839                                                                  AArch64: TLBI VMALLE1, TLBI VAE1, TLBI ASIDE1, TLBI VAAE1,
11840                                                                      TLBI VALE1, TLBI VAALE1, IC IALLU. */
11841         uint64_t vse                   : 1;  /**< [  8:  8](R/W) Virtual System Error/Asynchronous Abort.
11842                                                                  The virtual System Error/Asynchronous Abort is only enabled
11843                                                                      when the AP_HCR_EL2[AMO] bit is set.
11844                                                                  0 = Virtual System Error/Asynchronous Abort is not pending by this
11845                                                                      mechanism.
11846                                                                  1 = Virtual System Error/Asynchronous Abort is pending by this
11847                                                                      mechanism. */
11848         uint64_t vi                    : 1;  /**< [  7:  7](R/W) Virtual IRQ Interrupt.
11849                                                                  The virtual IRQ is only enabled when the AP_HCR_EL2[IMO] bit is
11850                                                                      set.
11851                                                                  0 = Virtual IRQ is not pending by this mechanism.
11852                                                                  1 = Virtual IRQ is pending by this mechanism. */
11853         uint64_t vf                    : 1;  /**< [  6:  6](R/W) Virtual FIQ Interrupt.
11854                                                                  The virtual FIQ is only enabled when the AP_HCR_EL2[FMO] bit is
11855                                                                      set.
11856                                                                  0 = Virtual FIQ is not pending by this mechanism.
11857                                                                  1 = Virtual FIQ is pending by this mechanism. */
11858         uint64_t amo                   : 1;  /**< [  5:  5](R/W) Asynchronous abort and error interrupt routing.
11859                                                                  0 = Asynchronous External Aborts and SError Interrupts while
11860                                                                      executing at exception levels lower than EL2 are not taken in
11861                                                                      EL2. Virtual System Error/Asynchronous Abort is disabled.
11862                                                                  1 = Asynchronous External Aborts and SError Interrupts while
11863                                                                      executing at EL2 or lower are taken in EL2 unless routed by
11864                                                                      the AP_SCR_EL3[EA] bit to EL3. Virtual System Error/Asynchronous
11865                                                                      Abort is enabled. */
11866         uint64_t imo                   : 1;  /**< [  4:  4](R/W) Physical IRQ Routing.
11867                                                                  0 = Physical IRQ while executing at exception levels lower than
11868                                                                      EL2 are not taken in EL2. Virtual IRQ Interrupt is disabled.
11869                                                                  1 = Physical IRQ while executing at EL2 or lower are taken in EL2
11870                                                                      unless routed by the AP_SCR_EL3[IRQ] bit to EL3. Virtual IRQ
11871                                                                      Interrupt is enabled. */
11872         uint64_t fmo                   : 1;  /**< [  3:  3](R/W) Physical FIQ Routing.
11873                                                                  0 = Physical FIQ while executing at exception levels lower than
11874                                                                      EL2 are not taken in EL2. Virtual FIQ Interrupt is disabled.
11875                                                                  1 = Physical FIQ while executing at EL2 or lower are taken in EL2
11876                                                                      unless routed by the AP_SCR_EL3[FIQ] bit to EL3. Virtual FIQ
11877                                                                      Interrupt is enabled. */
11878         uint64_t ptw                   : 1;  /**< [  2:  2](R/W) Protected Table Walk. When this bit is set to 1, if the stage
11879                                                                      2 translation of a translation table access made as part of a
11880                                                                      stage 1 translation table walk at EL0 or EL1 maps that
11881                                                                      translation table access to Strongly-ordered or Device memory,
11882                                                                      the access is faulted as a stage 2 Permission fault.
11883                                                                  This bit is permitted to be cached in a TLB. */
11884         uint64_t swio                  : 1;  /**< [  1:  1](R/W) Set/Way Invalidation Override. When this bit is set to 1, this
11885                                                                      causes EL1 execution of the data cache invalidate by set/way
11886                                                                      instruction to be treated as data cache clean and invalidate
11887                                                                      by set/way. That is:
11888 
11889                                                                  AArch32: DCISW is executed as DCCISW.
11890 
11891                                                                  AArch64: DC ISW is executed as DC CISW.
11892 
11893                                                                  As a result of changes to the behavior of DCISW, this bit is
11894                                                                      redundant in ARMv8. It is permissible that an implementation
11895                                                                      makes this bit RES1. */
11896         uint64_t vm                    : 1;  /**< [  0:  0](R/W) Virtualization MMU enable for EL1 and EL0 stage 2 address
11897                                                                      translation.
11898                                                                  This bit is permitted to be cached in a TLB.
11899                                                                  0 = EL1 and EL0 stage 2 address translation disabled.
11900                                                                  1 = EL1 and EL0 stage 2 address translation enabled. */
11901 #else /* Word 0 - Little Endian */
11902         uint64_t vm                    : 1;  /**< [  0:  0](R/W) Virtualization MMU enable for EL1 and EL0 stage 2 address
11903                                                                      translation.
11904                                                                  This bit is permitted to be cached in a TLB.
11905                                                                  0 = EL1 and EL0 stage 2 address translation disabled.
11906                                                                  1 = EL1 and EL0 stage 2 address translation enabled. */
11907         uint64_t swio                  : 1;  /**< [  1:  1](R/W) Set/Way Invalidation Override. When this bit is set to 1, this
11908                                                                      causes EL1 execution of the data cache invalidate by set/way
11909                                                                      instruction to be treated as data cache clean and invalidate
11910                                                                      by set/way. That is:
11911 
11912                                                                  AArch32: DCISW is executed as DCCISW.
11913 
11914                                                                  AArch64: DC ISW is executed as DC CISW.
11915 
11916                                                                  As a result of changes to the behavior of DCISW, this bit is
11917                                                                      redundant in ARMv8. It is permissible that an implementation
11918                                                                      makes this bit RES1. */
11919         uint64_t ptw                   : 1;  /**< [  2:  2](R/W) Protected Table Walk. When this bit is set to 1, if the stage
11920                                                                      2 translation of a translation table access made as part of a
11921                                                                      stage 1 translation table walk at EL0 or EL1 maps that
11922                                                                      translation table access to Strongly-ordered or Device memory,
11923                                                                      the access is faulted as a stage 2 Permission fault.
11924                                                                  This bit is permitted to be cached in a TLB. */
11925         uint64_t fmo                   : 1;  /**< [  3:  3](R/W) Physical FIQ Routing.
11926                                                                  0 = Physical FIQ while executing at exception levels lower than
11927                                                                      EL2 are not taken in EL2. Virtual FIQ Interrupt is disabled.
11928                                                                  1 = Physical FIQ while executing at EL2 or lower are taken in EL2
11929                                                                      unless routed by the AP_SCR_EL3[FIQ] bit to EL3. Virtual FIQ
11930                                                                      Interrupt is enabled. */
11931         uint64_t imo                   : 1;  /**< [  4:  4](R/W) Physical IRQ Routing.
11932                                                                  0 = Physical IRQ while executing at exception levels lower than
11933                                                                      EL2 are not taken in EL2. Virtual IRQ Interrupt is disabled.
11934                                                                  1 = Physical IRQ while executing at EL2 or lower are taken in EL2
11935                                                                      unless routed by the AP_SCR_EL3[IRQ] bit to EL3. Virtual IRQ
11936                                                                      Interrupt is enabled. */
11937         uint64_t amo                   : 1;  /**< [  5:  5](R/W) Asynchronous abort and error interrupt routing.
11938                                                                  0 = Asynchronous External Aborts and SError Interrupts while
11939                                                                      executing at exception levels lower than EL2 are not taken in
11940                                                                      EL2. Virtual System Error/Asynchronous Abort is disabled.
11941                                                                  1 = Asynchronous External Aborts and SError Interrupts while
11942                                                                      executing at EL2 or lower are taken in EL2 unless routed by
11943                                                                      the AP_SCR_EL3[EA] bit to EL3. Virtual System Error/Asynchronous
11944                                                                      Abort is enabled. */
11945         uint64_t vf                    : 1;  /**< [  6:  6](R/W) Virtual FIQ Interrupt.
11946                                                                  The virtual FIQ is only enabled when the AP_HCR_EL2[FMO] bit is
11947                                                                      set.
11948                                                                  0 = Virtual FIQ is not pending by this mechanism.
11949                                                                  1 = Virtual FIQ is pending by this mechanism. */
11950         uint64_t vi                    : 1;  /**< [  7:  7](R/W) Virtual IRQ Interrupt.
11951                                                                  The virtual IRQ is only enabled when the AP_HCR_EL2[IMO] bit is
11952                                                                      set.
11953                                                                  0 = Virtual IRQ is not pending by this mechanism.
11954                                                                  1 = Virtual IRQ is pending by this mechanism. */
11955         uint64_t vse                   : 1;  /**< [  8:  8](R/W) Virtual System Error/Asynchronous Abort.
11956                                                                  The virtual System Error/Asynchronous Abort is only enabled
11957                                                                      when the AP_HCR_EL2[AMO] bit is set.
11958                                                                  0 = Virtual System Error/Asynchronous Abort is not pending by this
11959                                                                      mechanism.
11960                                                                  1 = Virtual System Error/Asynchronous Abort is pending by this
11961                                                                      mechanism. */
11962         uint64_t fb                    : 1;  /**< [  9:  9](R/W) Force broadcast. When this bit is set to 1, this causes the
11963                                                                      following instructions to be broadcast within the Inner
11964                                                                      Shareable domain when executed from nonsecure EL1:
11965 
11966                                                                  AArch32: BPIALL, TLBIALL, TLBIMVA, TLBIASID, DTLBIALL,
11967                                                                      DTLBIMVA, DTLBIASID, ITLBIALL, ITLBIMVA, ITLBIASID, TLBIMVAA,
11968                                                                      ICIALLU, TLBIMVAL, TLBIMVAAL.
11969 
11970                                                                  AArch64: TLBI VMALLE1, TLBI VAE1, TLBI ASIDE1, TLBI VAAE1,
11971                                                                      TLBI VALE1, TLBI VAALE1, IC IALLU. */
11972         uint64_t bsu                   : 2;  /**< [ 11: 10](R/W) Barrier Shareability upgrade. The value in this field
11973                                                                      determines the minimum shareability domain that is applied to
11974                                                                      any barrier executed from EL1 or EL0.
11975 
11976                                                                  This value is combined with the specified level of the barrier
11977                                                                      held in its instruction, using the same principles as
11978                                                                      combining the shareability attributes from two stages of
11979                                                                      address translation.
11980 
11981                                                                  0x0 = No effect.
11982                                                                  0x1 = Inner Shareable.
11983                                                                  0x2 = Outer Shareable.
11984                                                                  0x3 = Full system. */
11985         uint64_t dc                    : 1;  /**< [ 12: 12](R/W) Default Cacheable. When this bit is set to 1, this causes:
11986 
11987                                                                  * The AP_SCTLR_EL1[M] bit to behave as 0 when in the nonsecure
11988                                                                      state for all purposes other than reading the value of the
11989                                                                      bit.
11990 
11991                                                                  * The AP_HCR_EL2[VM] bit to behave as 1 when in the nonsecure
11992                                                                      state for all purposes other than reading the value of the
11993                                                                      bit.
11994 
11995                                                                  The memory type produced by the first stage of translation
11996                                                                      used by EL1 and EL0 is Normal Non-Shareable, Inner WriteBack
11997                                                                      Read-WriteAllocate, Outer WriteBack Read-WriteAllocate.
11998 
11999                                                                  When this bit is 0 and the stage 1 MMU is disabled, the
12000                                                                      default memory attribute for Data accesses is Device-nGnRnE.
12001 
12002                                                                  This bit is permitted to be cached in a TLB. */
12003         uint64_t twi                   : 1;  /**< [ 13: 13](R/W) Trap WFI. When this bit is set to 1, this causes the following
12004                                                                      instructions executed from EL1 or EL0 to be trapped to EL2 if
12005                                                                      the instruction would otherwise cause suspension of execution
12006                                                                      (i.e. if there is not a pending WFI wakeup event):
12007 
12008                                                                  AArch32: WFI.
12009 
12010                                                                  AArch64: WFI.
12011 
12012                                                                  Conditional WFI instructions that fail their condition are not
12013                                                                      trapped if this bit is set to 1. */
12014         uint64_t twe                   : 1;  /**< [ 14: 14](R/W) Trap WFE. When this bit is set to 1, this causes the following
12015                                                                      instructions executed from EL1 or EL0 to be trapped to EL2 if
12016                                                                      the instruction would otherwise cause suspension of execution
12017                                                                      (i.e. if the event register is not set):
12018 
12019                                                                  AArch32: WFE.
12020 
12021                                                                  AArch64: WFE.
12022 
12023                                                                  Conditional WFE instructions that fail their condition are not
12024                                                                      trapped if this bit is set to 1. */
12025         uint64_t tid0                  : 1;  /**< [ 15: 15](R/W) Trap ID Group 0. When this bit is set to 1, this causes reads
12026                                                                      to the following registers executed from EL1 or EL0 if not
12027                                                                      UNdefined to be trapped to EL2:
12028 
12029                                                                  AArch32: FPSID, JIDR.
12030 
12031                                                                  AArch64: None. */
12032         uint64_t tid1                  : 1;  /**< [ 16: 16](R/W) Trap ID Group 1. When this bit is set to 1, this causes reads
12033                                                                      to the following registers executed from EL1 to be trapped to
12034                                                                      EL2:
12035 
12036                                                                  AArch32: TCMTR, TLBTR, AIDR, REVIDR.
12037 
12038                                                                  AArch64: AP_AIDR_EL1, AP_REVIDR_EL1. */
12039         uint64_t tid2                  : 1;  /**< [ 17: 17](R/W) Trap ID Group 2. When this bit is set to 1, this causes reads
12040                                                                      (or writes to CSSELR/ AP_CSSELR_EL1) to the following registers
12041                                                                      executed from EL1 or EL0 if not UNdefined to be trapped to
12042                                                                      EL2:
12043 
12044                                                                  AArch32: CTR, CCSIDR, CLIDR, CSSELR.
12045 
12046                                                                  AArch64: AP_CTR_EL0, AP_CCSIDR_EL1, AP_CLIDR_EL1, AP_CSSELR_EL1. */
12047         uint64_t tid3                  : 1;  /**< [ 18: 18](R/W) Trap ID Group 3. When this bit is set to 1, this causes reads
12048                                                                      to the following registers executed from EL1 to be trapped to
12049                                                                      EL2:
12050 
12051                                                                  AArch32: ID_PFR0, ID_PFR1, ID_DFR0, ID_AFR0, ID_MMFR0,
12052                                                                      ID_MMFR1, ID_MMFR2, ID_MMFR3, ID_ISAR0, ID_ISAR1, ID_ISAR2,
12053                                                                      ID_ISAR3, ID_ISAR4, ID_ISAR5, MVFR0, MVFR1, MVFR2. Also MRC to
12054                                                                      any of the following encodings:
12055 
12056                                                                   CP15, CRn == 0, Opc1 == 0, CRm == {3-7}, Opc2 == {0,1}.
12057 
12058                                                                   CP15, CRn == 0, Opc1 == 0, CRm == 3, Opc2 == 2.
12059 
12060                                                                   CP15, CRn == 0, Opc1 == 0, CRm == 5, Opc2 == {4,5}.
12061 
12062                                                                  AArch64: AP_ID_PFR0_EL1, AP_ID_PFR1_EL1, AP_ID_DFR0_EL1, AP_ID_AFR0_EL1,
12063                                                                      ID_MMFR0_EL1, ID_MMFR1_EL1, ID_MMFR2_EL1, ID_MMFR3_EL1,
12064                                                                      ID_ISAR0_EL1, ID_ISAR1_EL1, ID_ISAR2_EL1, ID_ISAR3_EL1,
12065                                                                      ID_ISAR4_EL1, ID_ISAR5_EL1, MVFR0_EL1, MVFR1_EL1, MVFR2_EL1,
12066                                                                      AP_ID_AA64PFR0_EL1, AP_ID_AA64PFR1_EL1, AP_ID_AA64DFR0_EL1,
12067                                                                      AP_ID_AA64DFR1_EL1, AP_ID_AA64ISAR0_EL1, AP_ID_AA64ISAR1_EL1,
12068                                                                      AP_ID_AA64MMFR0_EL1, AP_ID_AA64MMFR1_EL1, AP_ID_AA64AFR0_EL1,
12069                                                                      AP_ID_AA64AFR1_EL1. */
12070         uint64_t tsc                   : 1;  /**< [ 19: 19](R/W) Trap SMC. When this bit is set to 1, this causes the following
12071                                                                      instructions executed from EL1 to be trapped to EL2:
12072 
12073                                                                  AArch32: SMC.
12074 
12075                                                                  AArch64: SMC.
12076 
12077                                                                  If EL3 is not implemented, this bit is RES0. */
12078         uint64_t tidcp                 : 1;  /**< [ 20: 20](R/W) Trap Implementation Dependent functionality. When this bit is
12079                                                                      set to 1, this causes accesses to the following instruction
12080                                                                      set space executed from EL1 to be trapped to EL2.
12081 
12082                                                                  AArch32: MCR and MRC instructions as follows:
12083 
12084                                                                   All CP15, CRn==9,  Opcode1 = {0-7}, CRm == {c0-c2, c5-c8},
12085                                                                      opcode2 == {0-7}.
12086 
12087                                                                   All CP15, CRn==10, Opcode1 =={0-7}, CRm == {c0, c1, c4, c8},
12088                                                                      opcode2 == {0-7}.
12089 
12090                                                                   All CP15, CRn==11, Opcode1=={0-7}, CRm == {c0-c8, c15},
12091                                                                      opcode2 == {0-7}.
12092 
12093                                                                  AArch64: All encoding space reserved for implementation
12094                                                                      defined system operations ( S1_\<op1\>_\<Cn\>_\<Cm\>_\<op2\>) and
12095                                                                      system registers ( S3_\<op1\>_\<Cn\>_\<Cm\>_\<op2\>).
12096 
12097                                                                  It is implementation defined whether any of this functionality
12098                                                                      accessed from EL0 is trapped to EL2 when the AP_HCR_EL2[TIDCP] bit
12099                                                                      is set. If it is not trapped to EL2, it results in an
12100                                                                      Undefined exception taken to EL1. */
12101         uint64_t tacr                  : 1;  /**< [ 21: 21](R/W) Trap Auxiliary Control Register. When this bit is set to 1,
12102                                                                      this causes accesses to the following registers executed from
12103                                                                      EL1 to be trapped to EL2:
12104 
12105                                                                  AArch32: ACTLR.
12106 
12107                                                                  AArch64: ACTLR_EL1. */
12108         uint64_t tsw                   : 1;  /**< [ 22: 22](R/W) Trap Data/Unified Cache maintenance operations by Set/Way.
12109                                                                      When this bit is set to 1, this causes Data or Unified Cache
12110                                                                      maintenance instructions by set/way executed from EL1 which
12111                                                                      are not UNdefined to be trapped to EL2. This covers the
12112                                                                      following instructions:
12113 
12114                                                                  AArch32: DCISW, DCCSW, DCCISW.
12115 
12116                                                                  AArch64: DC ISW, DC CSW, DC CISW. */
12117         uint64_t tpc                   : 1;  /**< [ 23: 23](R/W) Trap Data/Unified Cache maintenance operations to Point of
12118                                                                      Coherency. When this bit is set to 1, this causes Data or
12119                                                                      Unified Cache maintenance instructions by address to the point
12120                                                                      of coherency executed from EL1 or EL0 which are not UNdefined
12121                                                                      to be trapped to EL2. This covers the following instructions:
12122 
12123                                                                  AArch32: DCIMVAC, DCCIMVAC, DCCMVAC.
12124 
12125                                                                  AArch64: DC IVAC, DC CIVAC, DC CVAC. */
12126         uint64_t tpu                   : 1;  /**< [ 24: 24](R/W) Trap Cache maintenance instructions to Point of Unification.
12127                                                                      When this bit is set to 1, this causes Cache maintenance
12128                                                                      instructions to the point of unification executed from EL1 or
12129                                                                      EL0 which are not UNdefined to be trapped to EL2. This covers
12130                                                                      the following instructions:
12131 
12132                                                                  AArch32: ICIMVAU, ICIALLU, ICIALLUIS, DCCMVAU.
12133 
12134                                                                  AArch64: IC IVAU, IC IALLU, IC IALLUIS, DC CVAU. */
12135         uint64_t ttlb                  : 1;  /**< [ 25: 25](R/W) Trap TLB maintenance instructions. When this bit is set to 1,
12136                                                                      this causes TLB maintenance instructions executed from EL1
12137                                                                      which are not UNdefined to be trapped to EL2. This covers the
12138                                                                      following instructions:
12139 
12140                                                                  AArch32: TLBIALLIS, TLBIMVAIS, TLBIASIDIS, TLBIMVAAIS,
12141                                                                      TLBIALL, TLBIMVA, TLBIASID, DTLBIALL, DTLBIMVA, DTLBIASID,
12142                                                                      ITLBIALL, ITLBIMVA, ITLBIASID, TLBIMVAA, TLBIMVALIS,
12143                                                                      TLBIMVAALIS, TLBIMVAL, TLBIMVAAL
12144 
12145                                                                  AArch64: TLBI VMALLE1, TLBI VAE1, TLBI ASIDE1, TLBI VAAE1,
12146                                                                      TLBI VALE1, TLBI VAALE1, TLBI VMALLE1IS, TLBI VAE1IS, TLBI
12147                                                                      ASIDE1IS, TLBI VAAE1IS, TLBI VALE1IS, TLBI VAALE1IS */
12148         uint64_t tvm                   : 1;  /**< [ 26: 26](R/W) Trap Virtual Memory controls. When this bit is set to 1, this
12149                                                                      causes Writes to the EL1 virtual memory control registers from
12150                                                                      EL1 to be trapped to EL2. This covers the following registers:
12151 
12152                                                                  AArch32: SCTLR, TTBR0, TTBR1, TTBCR, DACR, DFSR, IFSR, DFAR,
12153                                                                      IFAR, ADFSR, AIFSR, PRRR/ MAIR0, NMRR/ MAIR1, AMAIR0, AMAIR1,
12154                                                                      CONTEXTIDR.
12155 
12156                                                                  AArch64: AP_SCTLR_EL1, AP_TTBR0_EL1, AP_TTBR1_EL1, AP_TCR_EL1, ESR_EL1,
12157                                                                      FAR_EL1, AFSR0_EL1, AFSR1_EL1, MAIR_EL1, AMAIR_EL1,
12158                                                                      AP_CONTEXTIDR_EL1 */
12159         uint64_t tge                   : 1;  /**< [ 27: 27](R/W) Trap General Exceptions. If this bit is set to 1, and
12160                                                                      AP_SCR_EL3[NS] is set to 1, then:
12161 
12162                                                                   All exceptions that would be routed to EL1 are routed to EL2.
12163 
12164                                                                   The AP_SCTLR_EL1[M] bit is treated as being 0 regardless of its
12165                                                                      actual state (for EL1 using AArch32 or AArch64) other than for
12166                                                                      the purpose of reading the bit.
12167 
12168                                                                   The AP_HCR_EL2[FMO], IMO and AMO bits are treated as being 1
12169                                                                      regardless of their actual state other than for the purpose of
12170                                                                      reading the bits.
12171 
12172                                                                   All virtual interrupts are disabled.
12173 
12174                                                                   Any implementation defined mechanisms for signalling virtual
12175                                                                      interrupts are disabled.
12176 
12177                                                                   An exception return to EL1 is treated as an illegal exception
12178                                                                      return.
12179 
12180                                                                  Additionally, if AP_HCR_EL2[TGE] == 1, the
12181                                                                      AP_MDCR_EL2.{TDRA,TDOSA,TDA} bits are ignored and the processor
12182                                                                      behaves as if they are set to 1, other than for the value read
12183                                                                      back from AP_MDCR_EL2. */
12184         uint64_t tdz                   : 1;  /**< [ 28: 28](R/W) Trap DC ZVA instruction:
12185                                                                  This bit also has an effect on the value read from the
12186                                                                      AP_DCZID_EL0 register. If this bit is 1, then reading
12187                                                                      AP_DCZID_EL0[DZP] from nonsecure EL1 or EL0 will return 1 to
12188                                                                      indicate that DC ZVA is prohibited.
12189                                                                  0 = The instruction is not trapped.
12190                                                                  1 = The instruction is trapped to EL2 when executed in nonsecure
12191                                                                      EL1 or EL0. */
12192         uint64_t reserved_29           : 1;
12193         uint64_t trvm                  : 1;  /**< [ 30: 30](R/W) Trap Read of Virtual Memory controls. When this bit is set to
12194                                                                      1, this causes Reads to the EL1 virtual memory control
12195                                                                      registers from EL1 to be trapped to EL2. This covers the
12196                                                                      following registers:
12197 
12198                                                                  AArch32: SCTLR, TTBR0, TTBR1, TTBCR, DACR, DFSR, IFSR, DFAR,
12199                                                                      IFAR, ADFSR, AIFSR, PRRR/ MAIR0, NMRR/ MAIR1, AMAIR0, AMAIR1,
12200                                                                      CONTEXTIDR.
12201 
12202                                                                  AArch64: AP_SCTLR_EL1, AP_TTBR0_EL1, AP_TTBR1_EL1, AP_TCR_EL1, ESR_EL1,
12203                                                                      FAR_EL1, AFSR0_EL1, AFSR1_EL1, MAIR_EL1, AMAIR_EL1,
12204                                                                      AP_CONTEXTIDR_EL1. */
12205         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) rw - Register Width control for lower exception levels:
12206                                                                  When AP_SCR_EL3[NS]==0, this bit behaves as if it has the same
12207                                                                      value as the AP_SCR_EL3[RW] bit except for the value read back.
12208                                                                  The RW bit is permitted to be cached in a TLB.
12209                                                                  0 = Lower levels are all AArch32.
12210                                                                  1 = EL1 is AArch64. EL0 is determined by the Execution state
12211                                                                      described in the current process state when executing at EL0. */
12212         uint64_t cd                    : 1;  /**< [ 32: 32](R/W) Stage 2 Data cache disable. When AP_HCR_EL2[VM]==1, this forces
12213                                                                      all stage 2 translations for data accesses and translation
12214                                                                      table walks to Normal memory to be Non-cacheable for the EL1&0
12215                                                                      translation regime.
12216                                                                  This bit has no effect on the EL2 or EL3 translation regimes.
12217                                                                  0 = No effect on the stage 2 of the EL1&0 translation regime for
12218                                                                      data accesses and translation table walks.
12219                                                                  1 = Forces all stage 2 translations for data accesses and
12220                                                                      translation table walks to Normal memory to be Non-cacheable
12221                                                                      for the EL1&0 translation regime. */
12222         uint64_t id                    : 1;  /**< [ 33: 33](R/W) Stage 2 Instruction cache disable. When AP_HCR_EL2[VM]==1, this
12223                                                                      forces all stage 2 translations for instruction accesses to
12224                                                                      Normal memory to be Non-cacheable for the EL1&0 translation
12225                                                                      regime.
12226                                                                  This bit has no effect on the EL2 or EL3 translation regimes.
12227                                                                  0 = No effect on the stage 2 of the EL1&0 translation regime for
12228                                                                      instruction accesses.
12229                                                                  1 = Forces all stage 2 translations for instruction accesses to
12230                                                                      Normal memory to be Non-cacheable for the EL1&0 translation
12231                                                                      regime. */
12232         uint64_t e2h                   : 1;  /**< [ 34: 34](R/W) V8.1: Enable EL2 host. */
12233         uint64_t tlor                  : 1;  /**< [ 35: 35](R/W) v8.1: Trap access to the LOR Registers from nonsecure EL1 to EL2.
12234                                                                  0 = Nonsecure EL1 accesses to the LOR Registers are not trapped to EL2.
12235                                                                  1 = Nonsecure EL1 accesses to the LOR Registers are trapped to EL2. */
12236         uint64_t terr                  : 1;  /**< [ 36: 36](R/W) RAS: Trap Error record accesses.
12237                                                                    0 = Do not trap accesses to error record registers from Non-secure EL1 to EL2.
12238                                                                    1 = Accesses to the ER* registers from Non-secure EL1 generate a Trap exception to EL2. */
12239         uint64_t tea                   : 1;  /**< [ 37: 37](R/W) RAS: Route synchronous external aborts to EL2.
12240                                                                    0 = Do not route synchronous external aborts from Non-secure EL0 and EL1 to EL2.
12241                                                                    1 = Route synchronous external aborts from Non-secure EL0 and EL1 to EL2, if not routed
12242                                                                  to EL3. */
12243         uint64_t reserved_38_63        : 26;
12244 #endif /* Word 0 - End */
12245     } s;
12246     struct bdk_ap_hcr_el2_cn8
12247     {
12248 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12249         uint64_t reserved_36_63        : 28;
12250         uint64_t tlor                  : 1;  /**< [ 35: 35](R/W) v8.1: Trap access to the LOR Registers from nonsecure EL1 to EL2.
12251                                                                  0 = Nonsecure EL1 accesses to the LOR Registers are not trapped to EL2.
12252                                                                  1 = Nonsecure EL1 accesses to the LOR Registers are trapped to EL2. */
12253         uint64_t e2h                   : 1;  /**< [ 34: 34](R/W) V8.1: Enable EL2 host. */
12254         uint64_t id                    : 1;  /**< [ 33: 33](R/W) Stage 2 Instruction cache disable. When AP_HCR_EL2[VM]==1, this
12255                                                                      forces all stage 2 translations for instruction accesses to
12256                                                                      Normal memory to be Non-cacheable for the EL1&0 translation
12257                                                                      regime.
12258                                                                  This bit has no effect on the EL2 or EL3 translation regimes.
12259                                                                  0 = No effect on the stage 2 of the EL1&0 translation regime for
12260                                                                      instruction accesses.
12261                                                                  1 = Forces all stage 2 translations for instruction accesses to
12262                                                                      Normal memory to be Non-cacheable for the EL1&0 translation
12263                                                                      regime. */
12264         uint64_t cd                    : 1;  /**< [ 32: 32](R/W) Stage 2 Data cache disable. When AP_HCR_EL2[VM]==1, this forces
12265                                                                      all stage 2 translations for data accesses and translation
12266                                                                      table walks to Normal memory to be Non-cacheable for the EL1&0
12267                                                                      translation regime.
12268                                                                  This bit has no effect on the EL2 or EL3 translation regimes.
12269                                                                  0 = No effect on the stage 2 of the EL1&0 translation regime for
12270                                                                      data accesses and translation table walks.
12271                                                                  1 = Forces all stage 2 translations for data accesses and
12272                                                                      translation table walks to Normal memory to be Non-cacheable
12273                                                                      for the EL1&0 translation regime. */
12274         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) rw - Register Width control for lower exception levels:
12275                                                                  When AP_SCR_EL3[NS]==0, this bit behaves as if it has the same
12276                                                                      value as the AP_SCR_EL3[RW] bit except for the value read back.
12277                                                                  The RW bit is permitted to be cached in a TLB.
12278                                                                  0 = Lower levels are all AArch32.
12279                                                                  1 = EL1 is AArch64. EL0 is determined by the Execution state
12280                                                                      described in the current process state when executing at EL0. */
12281         uint64_t trvm                  : 1;  /**< [ 30: 30](R/W) Trap Read of Virtual Memory controls. When this bit is set to
12282                                                                      1, this causes Reads to the EL1 virtual memory control
12283                                                                      registers from EL1 to be trapped to EL2. This covers the
12284                                                                      following registers:
12285 
12286                                                                  AArch32: SCTLR, TTBR0, TTBR1, TTBCR, DACR, DFSR, IFSR, DFAR,
12287                                                                      IFAR, ADFSR, AIFSR, PRRR/ MAIR0, NMRR/ MAIR1, AMAIR0, AMAIR1,
12288                                                                      CONTEXTIDR.
12289 
12290                                                                  AArch64: AP_SCTLR_EL1, AP_TTBR0_EL1, AP_TTBR1_EL1, AP_TCR_EL1, ESR_EL1,
12291                                                                      FAR_EL1, AFSR0_EL1, AFSR1_EL1, MAIR_EL1, AMAIR_EL1,
12292                                                                      AP_CONTEXTIDR_EL1. */
12293         uint64_t reserved_29           : 1;
12294         uint64_t tdz                   : 1;  /**< [ 28: 28](R/W) Trap DC ZVA instruction:
12295                                                                  This bit also has an effect on the value read from the
12296                                                                      AP_DCZID_EL0 register. If this bit is 1, then reading
12297                                                                      AP_DCZID_EL0[DZP] from nonsecure EL1 or EL0 will return 1 to
12298                                                                      indicate that DC ZVA is prohibited.
12299                                                                  0 = The instruction is not trapped.
12300                                                                  1 = The instruction is trapped to EL2 when executed in nonsecure
12301                                                                      EL1 or EL0. */
12302         uint64_t tge                   : 1;  /**< [ 27: 27](R/W) Trap General Exceptions. If this bit is set to 1, and
12303                                                                      AP_SCR_EL3[NS] is set to 1, then:
12304 
12305                                                                   All exceptions that would be routed to EL1 are routed to EL2.
12306 
12307                                                                   The AP_SCTLR_EL1[M] bit is treated as being 0 regardless of its
12308                                                                      actual state (for EL1 using AArch32 or AArch64) other than for
12309                                                                      the purpose of reading the bit.
12310 
12311                                                                   The AP_HCR_EL2[FMO], IMO and AMO bits are treated as being 1
12312                                                                      regardless of their actual state other than for the purpose of
12313                                                                      reading the bits.
12314 
12315                                                                   All virtual interrupts are disabled.
12316 
12317                                                                   Any implementation defined mechanisms for signalling virtual
12318                                                                      interrupts are disabled.
12319 
12320                                                                   An exception return to EL1 is treated as an illegal exception
12321                                                                      return.
12322 
12323                                                                  Additionally, if AP_HCR_EL2[TGE] == 1, the
12324                                                                      AP_MDCR_EL2.{TDRA,TDOSA,TDA} bits are ignored and the processor
12325                                                                      behaves as if they are set to 1, other than for the value read
12326                                                                      back from AP_MDCR_EL2. */
12327         uint64_t tvm                   : 1;  /**< [ 26: 26](R/W) Trap Virtual Memory controls. When this bit is set to 1, this
12328                                                                      causes Writes to the EL1 virtual memory control registers from
12329                                                                      EL1 to be trapped to EL2. This covers the following registers:
12330 
12331                                                                  AArch32: SCTLR, TTBR0, TTBR1, TTBCR, DACR, DFSR, IFSR, DFAR,
12332                                                                      IFAR, ADFSR, AIFSR, PRRR/ MAIR0, NMRR/ MAIR1, AMAIR0, AMAIR1,
12333                                                                      CONTEXTIDR.
12334 
12335                                                                  AArch64: AP_SCTLR_EL1, AP_TTBR0_EL1, AP_TTBR1_EL1, AP_TCR_EL1, ESR_EL1,
12336                                                                      FAR_EL1, AFSR0_EL1, AFSR1_EL1, MAIR_EL1, AMAIR_EL1,
12337                                                                      AP_CONTEXTIDR_EL1 */
12338         uint64_t ttlb                  : 1;  /**< [ 25: 25](R/W) Trap TLB maintenance instructions. When this bit is set to 1,
12339                                                                      this causes TLB maintenance instructions executed from EL1
12340                                                                      which are not UNdefined to be trapped to EL2. This covers the
12341                                                                      following instructions:
12342 
12343                                                                  AArch32: TLBIALLIS, TLBIMVAIS, TLBIASIDIS, TLBIMVAAIS,
12344                                                                      TLBIALL, TLBIMVA, TLBIASID, DTLBIALL, DTLBIMVA, DTLBIASID,
12345                                                                      ITLBIALL, ITLBIMVA, ITLBIASID, TLBIMVAA, TLBIMVALIS,
12346                                                                      TLBIMVAALIS, TLBIMVAL, TLBIMVAAL
12347 
12348                                                                  AArch64: TLBI VMALLE1, TLBI VAE1, TLBI ASIDE1, TLBI VAAE1,
12349                                                                      TLBI VALE1, TLBI VAALE1, TLBI VMALLE1IS, TLBI VAE1IS, TLBI
12350                                                                      ASIDE1IS, TLBI VAAE1IS, TLBI VALE1IS, TLBI VAALE1IS */
12351         uint64_t tpu                   : 1;  /**< [ 24: 24](R/W) Trap Cache maintenance instructions to Point of Unification.
12352                                                                      When this bit is set to 1, this causes Cache maintenance
12353                                                                      instructions to the point of unification executed from EL1 or
12354                                                                      EL0 which are not UNdefined to be trapped to EL2. This covers
12355                                                                      the following instructions:
12356 
12357                                                                  AArch32: ICIMVAU, ICIALLU, ICIALLUIS, DCCMVAU.
12358 
12359                                                                  AArch64: IC IVAU, IC IALLU, IC IALLUIS, DC CVAU. */
12360         uint64_t tpc                   : 1;  /**< [ 23: 23](R/W) Trap Data/Unified Cache maintenance operations to Point of
12361                                                                      Coherency. When this bit is set to 1, this causes Data or
12362                                                                      Unified Cache maintenance instructions by address to the point
12363                                                                      of coherency executed from EL1 or EL0 which are not UNdefined
12364                                                                      to be trapped to EL2. This covers the following instructions:
12365 
12366                                                                  AArch32: DCIMVAC, DCCIMVAC, DCCMVAC.
12367 
12368                                                                  AArch64: DC IVAC, DC CIVAC, DC CVAC. */
12369         uint64_t tsw                   : 1;  /**< [ 22: 22](R/W) Trap Data/Unified Cache maintenance operations by Set/Way.
12370                                                                      When this bit is set to 1, this causes Data or Unified Cache
12371                                                                      maintenance instructions by set/way executed from EL1 which
12372                                                                      are not UNdefined to be trapped to EL2. This covers the
12373                                                                      following instructions:
12374 
12375                                                                  AArch32: DCISW, DCCSW, DCCISW.
12376 
12377                                                                  AArch64: DC ISW, DC CSW, DC CISW. */
12378         uint64_t tacr                  : 1;  /**< [ 21: 21](R/W) Trap Auxiliary Control Register. When this bit is set to 1,
12379                                                                      this causes accesses to the following registers executed from
12380                                                                      EL1 to be trapped to EL2:
12381 
12382                                                                  AArch32: ACTLR.
12383 
12384                                                                  AArch64: ACTLR_EL1. */
12385         uint64_t tidcp                 : 1;  /**< [ 20: 20](R/W) Trap Implementation Dependent functionality. When this bit is
12386                                                                      set to 1, this causes accesses to the following instruction
12387                                                                      set space executed from EL1 to be trapped to EL2.
12388 
12389                                                                  AArch32: MCR and MRC instructions as follows:
12390 
12391                                                                   All CP15, CRn==9,  Opcode1 = {0-7}, CRm == {c0-c2, c5-c8},
12392                                                                      opcode2 == {0-7}.
12393 
12394                                                                   All CP15, CRn==10, Opcode1 =={0-7}, CRm == {c0, c1, c4, c8},
12395                                                                      opcode2 == {0-7}.
12396 
12397                                                                   All CP15, CRn==11, Opcode1=={0-7}, CRm == {c0-c8, c15},
12398                                                                      opcode2 == {0-7}.
12399 
12400                                                                  AArch64: All encoding space reserved for implementation
12401                                                                      defined system operations ( S1_\<op1\>_\<Cn\>_\<Cm\>_\<op2\>) and
12402                                                                      system registers ( S3_\<op1\>_\<Cn\>_\<Cm\>_\<op2\>).
12403 
12404                                                                  It is implementation defined whether any of this functionality
12405                                                                      accessed from EL0 is trapped to EL2 when the AP_HCR_EL2[TIDCP] bit
12406                                                                      is set. If it is not trapped to EL2, it results in an
12407                                                                      Undefined exception taken to EL1. */
12408         uint64_t tsc                   : 1;  /**< [ 19: 19](R/W) Trap SMC. When this bit is set to 1, this causes the following
12409                                                                      instructions executed from EL1 to be trapped to EL2:
12410 
12411                                                                  AArch32: SMC.
12412 
12413                                                                  AArch64: SMC.
12414 
12415                                                                  If EL3 is not implemented, this bit is RES0. */
12416         uint64_t tid3                  : 1;  /**< [ 18: 18](R/W) Trap ID Group 3. When this bit is set to 1, this causes reads
12417                                                                      to the following registers executed from EL1 to be trapped to
12418                                                                      EL2:
12419 
12420                                                                  AArch32: ID_PFR0, ID_PFR1, ID_DFR0, ID_AFR0, ID_MMFR0,
12421                                                                      ID_MMFR1, ID_MMFR2, ID_MMFR3, ID_ISAR0, ID_ISAR1, ID_ISAR2,
12422                                                                      ID_ISAR3, ID_ISAR4, ID_ISAR5, MVFR0, MVFR1, MVFR2. Also MRC to
12423                                                                      any of the following encodings:
12424 
12425                                                                   CP15, CRn == 0, Opc1 == 0, CRm == {3-7}, Opc2 == {0,1}.
12426 
12427                                                                   CP15, CRn == 0, Opc1 == 0, CRm == 3, Opc2 == 2.
12428 
12429                                                                   CP15, CRn == 0, Opc1 == 0, CRm == 5, Opc2 == {4,5}.
12430 
12431                                                                  AArch64: AP_ID_PFR0_EL1, AP_ID_PFR1_EL1, AP_ID_DFR0_EL1, AP_ID_AFR0_EL1,
12432                                                                      ID_MMFR0_EL1, ID_MMFR1_EL1, ID_MMFR2_EL1, ID_MMFR3_EL1,
12433                                                                      ID_ISAR0_EL1, ID_ISAR1_EL1, ID_ISAR2_EL1, ID_ISAR3_EL1,
12434                                                                      ID_ISAR4_EL1, ID_ISAR5_EL1, MVFR0_EL1, MVFR1_EL1, MVFR2_EL1,
12435                                                                      AP_ID_AA64PFR0_EL1, AP_ID_AA64PFR1_EL1, AP_ID_AA64DFR0_EL1,
12436                                                                      AP_ID_AA64DFR1_EL1, AP_ID_AA64ISAR0_EL1, AP_ID_AA64ISAR1_EL1,
12437                                                                      AP_ID_AA64MMFR0_EL1, AP_ID_AA64MMFR1_EL1, AP_ID_AA64AFR0_EL1,
12438                                                                      AP_ID_AA64AFR1_EL1. */
12439         uint64_t tid2                  : 1;  /**< [ 17: 17](R/W) Trap ID Group 2. When this bit is set to 1, this causes reads
12440                                                                      (or writes to CSSELR/ AP_CSSELR_EL1) to the following registers
12441                                                                      executed from EL1 or EL0 if not UNdefined to be trapped to
12442                                                                      EL2:
12443 
12444                                                                  AArch32: CTR, CCSIDR, CLIDR, CSSELR.
12445 
12446                                                                  AArch64: AP_CTR_EL0, AP_CCSIDR_EL1, AP_CLIDR_EL1, AP_CSSELR_EL1. */
12447         uint64_t tid1                  : 1;  /**< [ 16: 16](R/W) Trap ID Group 1. When this bit is set to 1, this causes reads
12448                                                                      to the following registers executed from EL1 to be trapped to
12449                                                                      EL2:
12450 
12451                                                                  AArch32: TCMTR, TLBTR, AIDR, REVIDR.
12452 
12453                                                                  AArch64: AP_AIDR_EL1, AP_REVIDR_EL1. */
12454         uint64_t tid0                  : 1;  /**< [ 15: 15](R/W) Trap ID Group 0. When this bit is set to 1, this causes reads
12455                                                                      to the following registers executed from EL1 or EL0 if not
12456                                                                      UNdefined to be trapped to EL2:
12457 
12458                                                                  AArch32: FPSID, JIDR.
12459 
12460                                                                  AArch64: None. */
12461         uint64_t twe                   : 1;  /**< [ 14: 14](R/W) Trap WFE. When this bit is set to 1, this causes the following
12462                                                                      instructions executed from EL1 or EL0 to be trapped to EL2 if
12463                                                                      the instruction would otherwise cause suspension of execution
12464                                                                      (i.e. if the event register is not set):
12465 
12466                                                                  AArch32: WFE.
12467 
12468                                                                  AArch64: WFE.
12469 
12470                                                                  Conditional WFE instructions that fail their condition are not
12471                                                                      trapped if this bit is set to 1. */
12472         uint64_t twi                   : 1;  /**< [ 13: 13](R/W) Trap WFI. When this bit is set to 1, this causes the following
12473                                                                      instructions executed from EL1 or EL0 to be trapped to EL2 if
12474                                                                      the instruction would otherwise cause suspension of execution
12475                                                                      (i.e. if there is not a pending WFI wakeup event):
12476 
12477                                                                  AArch32: WFI.
12478 
12479                                                                  AArch64: WFI.
12480 
12481                                                                  Conditional WFI instructions that fail their condition are not
12482                                                                      trapped if this bit is set to 1. */
12483         uint64_t dc                    : 1;  /**< [ 12: 12](R/W) Default Cacheable. When this bit is set to 1, this causes:
12484 
12485                                                                  * The AP_SCTLR_EL1[M] bit to behave as 0 when in the nonsecure
12486                                                                      state for all purposes other than reading the value of the
12487                                                                      bit.
12488 
12489                                                                  * The AP_HCR_EL2[VM] bit to behave as 1 when in the nonsecure
12490                                                                      state for all purposes other than reading the value of the
12491                                                                      bit.
12492 
12493                                                                  The memory type produced by the first stage of translation
12494                                                                      used by EL1 and EL0 is Normal Non-Shareable, Inner WriteBack
12495                                                                      Read-WriteAllocate, Outer WriteBack Read-WriteAllocate.
12496 
12497                                                                  When this bit is 0 and the stage 1 MMU is disabled, the
12498                                                                      default memory attribute for Data accesses is Device-nGnRnE.
12499 
12500                                                                  This bit is permitted to be cached in a TLB. */
12501         uint64_t bsu                   : 2;  /**< [ 11: 10](R/W) Barrier Shareability upgrade. The value in this field
12502                                                                      determines the minimum shareability domain that is applied to
12503                                                                      any barrier executed from EL1 or EL0.
12504 
12505                                                                  This value is combined with the specified level of the barrier
12506                                                                      held in its instruction, using the same principles as
12507                                                                      combining the shareability attributes from two stages of
12508                                                                      address translation.
12509 
12510                                                                  0x0 = No effect.
12511                                                                  0x1 = Inner Shareable.
12512                                                                  0x2 = Outer Shareable.
12513                                                                  0x3 = Full system. */
12514         uint64_t fb                    : 1;  /**< [  9:  9](R/W) Force broadcast. When this bit is set to 1, this causes the
12515                                                                      following instructions to be broadcast within the Inner
12516                                                                      Shareable domain when executed from nonsecure EL1:
12517 
12518                                                                  AArch32: BPIALL, TLBIALL, TLBIMVA, TLBIASID, DTLBIALL,
12519                                                                      DTLBIMVA, DTLBIASID, ITLBIALL, ITLBIMVA, ITLBIASID, TLBIMVAA,
12520                                                                      ICIALLU, TLBIMVAL, TLBIMVAAL.
12521 
12522                                                                  AArch64: TLBI VMALLE1, TLBI VAE1, TLBI ASIDE1, TLBI VAAE1,
12523                                                                      TLBI VALE1, TLBI VAALE1, IC IALLU. */
12524         uint64_t vse                   : 1;  /**< [  8:  8](R/W) Virtual System Error/Asynchronous Abort.
12525                                                                  The virtual System Error/Asynchronous Abort is only enabled
12526                                                                      when the AP_HCR_EL2[AMO] bit is set.
12527                                                                  0 = Virtual System Error/Asynchronous Abort is not pending by this
12528                                                                      mechanism.
12529                                                                  1 = Virtual System Error/Asynchronous Abort is pending by this
12530                                                                      mechanism. */
12531         uint64_t vi                    : 1;  /**< [  7:  7](R/W) Virtual IRQ Interrupt.
12532                                                                  The virtual IRQ is only enabled when the AP_HCR_EL2[IMO] bit is
12533                                                                      set.
12534                                                                  0 = Virtual IRQ is not pending by this mechanism.
12535                                                                  1 = Virtual IRQ is pending by this mechanism. */
12536         uint64_t vf                    : 1;  /**< [  6:  6](R/W) Virtual FIQ Interrupt.
12537                                                                  The virtual FIQ is only enabled when the AP_HCR_EL2[FMO] bit is
12538                                                                      set.
12539                                                                  0 = Virtual FIQ is not pending by this mechanism.
12540                                                                  1 = Virtual FIQ is pending by this mechanism. */
12541         uint64_t amo                   : 1;  /**< [  5:  5](R/W) Asynchronous abort and error interrupt routing.
12542                                                                  0 = Asynchronous External Aborts and SError Interrupts while
12543                                                                      executing at exception levels lower than EL2 are not taken in
12544                                                                      EL2. Virtual System Error/Asynchronous Abort is disabled.
12545                                                                  1 = Asynchronous External Aborts and SError Interrupts while
12546                                                                      executing at EL2 or lower are taken in EL2 unless routed by
12547                                                                      the AP_SCR_EL3[EA] bit to EL3. Virtual System Error/Asynchronous
12548                                                                      Abort is enabled. */
12549         uint64_t imo                   : 1;  /**< [  4:  4](R/W) Physical IRQ Routing.
12550                                                                  0 = Physical IRQ while executing at exception levels lower than
12551                                                                      EL2 are not taken in EL2. Virtual IRQ Interrupt is disabled.
12552                                                                  1 = Physical IRQ while executing at EL2 or lower are taken in EL2
12553                                                                      unless routed by the AP_SCR_EL3[IRQ] bit to EL3. Virtual IRQ
12554                                                                      Interrupt is enabled. */
12555         uint64_t fmo                   : 1;  /**< [  3:  3](R/W) Physical FIQ Routing.
12556                                                                  0 = Physical FIQ while executing at exception levels lower than
12557                                                                      EL2 are not taken in EL2. Virtual FIQ Interrupt is disabled.
12558                                                                  1 = Physical FIQ while executing at EL2 or lower are taken in EL2
12559                                                                      unless routed by the AP_SCR_EL3[FIQ] bit to EL3. Virtual FIQ
12560                                                                      Interrupt is enabled. */
12561         uint64_t ptw                   : 1;  /**< [  2:  2](R/W) Protected Table Walk. When this bit is set to 1, if the stage
12562                                                                      2 translation of a translation table access made as part of a
12563                                                                      stage 1 translation table walk at EL0 or EL1 maps that
12564                                                                      translation table access to Strongly-ordered or Device memory,
12565                                                                      the access is faulted as a stage 2 Permission fault.
12566                                                                  This bit is permitted to be cached in a TLB. */
12567         uint64_t swio                  : 1;  /**< [  1:  1](R/W) Set/Way Invalidation Override. When this bit is set to 1, this
12568                                                                      causes EL1 execution of the data cache invalidate by set/way
12569                                                                      instruction to be treated as data cache clean and invalidate
12570                                                                      by set/way. That is:
12571 
12572                                                                  AArch32: DCISW is executed as DCCISW.
12573 
12574                                                                  AArch64: DC ISW is executed as DC CISW.
12575 
12576                                                                  As a result of changes to the behavior of DCISW, this bit is
12577                                                                      redundant in ARMv8. It is permissible that an implementation
12578                                                                      makes this bit RES1. */
12579         uint64_t vm                    : 1;  /**< [  0:  0](R/W) Virtualization MMU enable for EL1 and EL0 stage 2 address
12580                                                                      translation.
12581                                                                  This bit is permitted to be cached in a TLB.
12582                                                                  0 = EL1 and EL0 stage 2 address translation disabled.
12583                                                                  1 = EL1 and EL0 stage 2 address translation enabled. */
12584 #else /* Word 0 - Little Endian */
12585         uint64_t vm                    : 1;  /**< [  0:  0](R/W) Virtualization MMU enable for EL1 and EL0 stage 2 address
12586                                                                      translation.
12587                                                                  This bit is permitted to be cached in a TLB.
12588                                                                  0 = EL1 and EL0 stage 2 address translation disabled.
12589                                                                  1 = EL1 and EL0 stage 2 address translation enabled. */
12590         uint64_t swio                  : 1;  /**< [  1:  1](R/W) Set/Way Invalidation Override. When this bit is set to 1, this
12591                                                                      causes EL1 execution of the data cache invalidate by set/way
12592                                                                      instruction to be treated as data cache clean and invalidate
12593                                                                      by set/way. That is:
12594 
12595                                                                  AArch32: DCISW is executed as DCCISW.
12596 
12597                                                                  AArch64: DC ISW is executed as DC CISW.
12598 
12599                                                                  As a result of changes to the behavior of DCISW, this bit is
12600                                                                      redundant in ARMv8. It is permissible that an implementation
12601                                                                      makes this bit RES1. */
12602         uint64_t ptw                   : 1;  /**< [  2:  2](R/W) Protected Table Walk. When this bit is set to 1, if the stage
12603                                                                      2 translation of a translation table access made as part of a
12604                                                                      stage 1 translation table walk at EL0 or EL1 maps that
12605                                                                      translation table access to Strongly-ordered or Device memory,
12606                                                                      the access is faulted as a stage 2 Permission fault.
12607                                                                  This bit is permitted to be cached in a TLB. */
12608         uint64_t fmo                   : 1;  /**< [  3:  3](R/W) Physical FIQ Routing.
12609                                                                  0 = Physical FIQ while executing at exception levels lower than
12610                                                                      EL2 are not taken in EL2. Virtual FIQ Interrupt is disabled.
12611                                                                  1 = Physical FIQ while executing at EL2 or lower are taken in EL2
12612                                                                      unless routed by the AP_SCR_EL3[FIQ] bit to EL3. Virtual FIQ
12613                                                                      Interrupt is enabled. */
12614         uint64_t imo                   : 1;  /**< [  4:  4](R/W) Physical IRQ Routing.
12615                                                                  0 = Physical IRQ while executing at exception levels lower than
12616                                                                      EL2 are not taken in EL2. Virtual IRQ Interrupt is disabled.
12617                                                                  1 = Physical IRQ while executing at EL2 or lower are taken in EL2
12618                                                                      unless routed by the AP_SCR_EL3[IRQ] bit to EL3. Virtual IRQ
12619                                                                      Interrupt is enabled. */
12620         uint64_t amo                   : 1;  /**< [  5:  5](R/W) Asynchronous abort and error interrupt routing.
12621                                                                  0 = Asynchronous External Aborts and SError Interrupts while
12622                                                                      executing at exception levels lower than EL2 are not taken in
12623                                                                      EL2. Virtual System Error/Asynchronous Abort is disabled.
12624                                                                  1 = Asynchronous External Aborts and SError Interrupts while
12625                                                                      executing at EL2 or lower are taken in EL2 unless routed by
12626                                                                      the AP_SCR_EL3[EA] bit to EL3. Virtual System Error/Asynchronous
12627                                                                      Abort is enabled. */
12628         uint64_t vf                    : 1;  /**< [  6:  6](R/W) Virtual FIQ Interrupt.
12629                                                                  The virtual FIQ is only enabled when the AP_HCR_EL2[FMO] bit is
12630                                                                      set.
12631                                                                  0 = Virtual FIQ is not pending by this mechanism.
12632                                                                  1 = Virtual FIQ is pending by this mechanism. */
12633         uint64_t vi                    : 1;  /**< [  7:  7](R/W) Virtual IRQ Interrupt.
12634                                                                  The virtual IRQ is only enabled when the AP_HCR_EL2[IMO] bit is
12635                                                                      set.
12636                                                                  0 = Virtual IRQ is not pending by this mechanism.
12637                                                                  1 = Virtual IRQ is pending by this mechanism. */
12638         uint64_t vse                   : 1;  /**< [  8:  8](R/W) Virtual System Error/Asynchronous Abort.
12639                                                                  The virtual System Error/Asynchronous Abort is only enabled
12640                                                                      when the AP_HCR_EL2[AMO] bit is set.
12641                                                                  0 = Virtual System Error/Asynchronous Abort is not pending by this
12642                                                                      mechanism.
12643                                                                  1 = Virtual System Error/Asynchronous Abort is pending by this
12644                                                                      mechanism. */
12645         uint64_t fb                    : 1;  /**< [  9:  9](R/W) Force broadcast. When this bit is set to 1, this causes the
12646                                                                      following instructions to be broadcast within the Inner
12647                                                                      Shareable domain when executed from nonsecure EL1:
12648 
12649                                                                  AArch32: BPIALL, TLBIALL, TLBIMVA, TLBIASID, DTLBIALL,
12650                                                                      DTLBIMVA, DTLBIASID, ITLBIALL, ITLBIMVA, ITLBIASID, TLBIMVAA,
12651                                                                      ICIALLU, TLBIMVAL, TLBIMVAAL.
12652 
12653                                                                  AArch64: TLBI VMALLE1, TLBI VAE1, TLBI ASIDE1, TLBI VAAE1,
12654                                                                      TLBI VALE1, TLBI VAALE1, IC IALLU. */
12655         uint64_t bsu                   : 2;  /**< [ 11: 10](R/W) Barrier Shareability upgrade. The value in this field
12656                                                                      determines the minimum shareability domain that is applied to
12657                                                                      any barrier executed from EL1 or EL0.
12658 
12659                                                                  This value is combined with the specified level of the barrier
12660                                                                      held in its instruction, using the same principles as
12661                                                                      combining the shareability attributes from two stages of
12662                                                                      address translation.
12663 
12664                                                                  0x0 = No effect.
12665                                                                  0x1 = Inner Shareable.
12666                                                                  0x2 = Outer Shareable.
12667                                                                  0x3 = Full system. */
12668         uint64_t dc                    : 1;  /**< [ 12: 12](R/W) Default Cacheable. When this bit is set to 1, this causes:
12669 
12670                                                                  * The AP_SCTLR_EL1[M] bit to behave as 0 when in the nonsecure
12671                                                                      state for all purposes other than reading the value of the
12672                                                                      bit.
12673 
12674                                                                  * The AP_HCR_EL2[VM] bit to behave as 1 when in the nonsecure
12675                                                                      state for all purposes other than reading the value of the
12676                                                                      bit.
12677 
12678                                                                  The memory type produced by the first stage of translation
12679                                                                      used by EL1 and EL0 is Normal Non-Shareable, Inner WriteBack
12680                                                                      Read-WriteAllocate, Outer WriteBack Read-WriteAllocate.
12681 
12682                                                                  When this bit is 0 and the stage 1 MMU is disabled, the
12683                                                                      default memory attribute for Data accesses is Device-nGnRnE.
12684 
12685                                                                  This bit is permitted to be cached in a TLB. */
12686         uint64_t twi                   : 1;  /**< [ 13: 13](R/W) Trap WFI. When this bit is set to 1, this causes the following
12687                                                                      instructions executed from EL1 or EL0 to be trapped to EL2 if
12688                                                                      the instruction would otherwise cause suspension of execution
12689                                                                      (i.e. if there is not a pending WFI wakeup event):
12690 
12691                                                                  AArch32: WFI.
12692 
12693                                                                  AArch64: WFI.
12694 
12695                                                                  Conditional WFI instructions that fail their condition are not
12696                                                                      trapped if this bit is set to 1. */
12697         uint64_t twe                   : 1;  /**< [ 14: 14](R/W) Trap WFE. When this bit is set to 1, this causes the following
12698                                                                      instructions executed from EL1 or EL0 to be trapped to EL2 if
12699                                                                      the instruction would otherwise cause suspension of execution
12700                                                                      (i.e. if the event register is not set):
12701 
12702                                                                  AArch32: WFE.
12703 
12704                                                                  AArch64: WFE.
12705 
12706                                                                  Conditional WFE instructions that fail their condition are not
12707                                                                      trapped if this bit is set to 1. */
12708         uint64_t tid0                  : 1;  /**< [ 15: 15](R/W) Trap ID Group 0. When this bit is set to 1, this causes reads
12709                                                                      to the following registers executed from EL1 or EL0 if not
12710                                                                      UNdefined to be trapped to EL2:
12711 
12712                                                                  AArch32: FPSID, JIDR.
12713 
12714                                                                  AArch64: None. */
12715         uint64_t tid1                  : 1;  /**< [ 16: 16](R/W) Trap ID Group 1. When this bit is set to 1, this causes reads
12716                                                                      to the following registers executed from EL1 to be trapped to
12717                                                                      EL2:
12718 
12719                                                                  AArch32: TCMTR, TLBTR, AIDR, REVIDR.
12720 
12721                                                                  AArch64: AP_AIDR_EL1, AP_REVIDR_EL1. */
12722         uint64_t tid2                  : 1;  /**< [ 17: 17](R/W) Trap ID Group 2. When this bit is set to 1, this causes reads
12723                                                                      (or writes to CSSELR/ AP_CSSELR_EL1) to the following registers
12724                                                                      executed from EL1 or EL0 if not UNdefined to be trapped to
12725                                                                      EL2:
12726 
12727                                                                  AArch32: CTR, CCSIDR, CLIDR, CSSELR.
12728 
12729                                                                  AArch64: AP_CTR_EL0, AP_CCSIDR_EL1, AP_CLIDR_EL1, AP_CSSELR_EL1. */
12730         uint64_t tid3                  : 1;  /**< [ 18: 18](R/W) Trap ID Group 3. When this bit is set to 1, this causes reads
12731                                                                      to the following registers executed from EL1 to be trapped to
12732                                                                      EL2:
12733 
12734                                                                  AArch32: ID_PFR0, ID_PFR1, ID_DFR0, ID_AFR0, ID_MMFR0,
12735                                                                      ID_MMFR1, ID_MMFR2, ID_MMFR3, ID_ISAR0, ID_ISAR1, ID_ISAR2,
12736                                                                      ID_ISAR3, ID_ISAR4, ID_ISAR5, MVFR0, MVFR1, MVFR2. Also MRC to
12737                                                                      any of the following encodings:
12738 
12739                                                                   CP15, CRn == 0, Opc1 == 0, CRm == {3-7}, Opc2 == {0,1}.
12740 
12741                                                                   CP15, CRn == 0, Opc1 == 0, CRm == 3, Opc2 == 2.
12742 
12743                                                                   CP15, CRn == 0, Opc1 == 0, CRm == 5, Opc2 == {4,5}.
12744 
12745                                                                  AArch64: AP_ID_PFR0_EL1, AP_ID_PFR1_EL1, AP_ID_DFR0_EL1, AP_ID_AFR0_EL1,
12746                                                                      ID_MMFR0_EL1, ID_MMFR1_EL1, ID_MMFR2_EL1, ID_MMFR3_EL1,
12747                                                                      ID_ISAR0_EL1, ID_ISAR1_EL1, ID_ISAR2_EL1, ID_ISAR3_EL1,
12748                                                                      ID_ISAR4_EL1, ID_ISAR5_EL1, MVFR0_EL1, MVFR1_EL1, MVFR2_EL1,
12749                                                                      AP_ID_AA64PFR0_EL1, AP_ID_AA64PFR1_EL1, AP_ID_AA64DFR0_EL1,
12750                                                                      AP_ID_AA64DFR1_EL1, AP_ID_AA64ISAR0_EL1, AP_ID_AA64ISAR1_EL1,
12751                                                                      AP_ID_AA64MMFR0_EL1, AP_ID_AA64MMFR1_EL1, AP_ID_AA64AFR0_EL1,
12752                                                                      AP_ID_AA64AFR1_EL1. */
12753         uint64_t tsc                   : 1;  /**< [ 19: 19](R/W) Trap SMC. When this bit is set to 1, this causes the following
12754                                                                      instructions executed from EL1 to be trapped to EL2:
12755 
12756                                                                  AArch32: SMC.
12757 
12758                                                                  AArch64: SMC.
12759 
12760                                                                  If EL3 is not implemented, this bit is RES0. */
12761         uint64_t tidcp                 : 1;  /**< [ 20: 20](R/W) Trap Implementation Dependent functionality. When this bit is
12762                                                                      set to 1, this causes accesses to the following instruction
12763                                                                      set space executed from EL1 to be trapped to EL2.
12764 
12765                                                                  AArch32: MCR and MRC instructions as follows:
12766 
12767                                                                   All CP15, CRn==9,  Opcode1 = {0-7}, CRm == {c0-c2, c5-c8},
12768                                                                      opcode2 == {0-7}.
12769 
12770                                                                   All CP15, CRn==10, Opcode1 =={0-7}, CRm == {c0, c1, c4, c8},
12771                                                                      opcode2 == {0-7}.
12772 
12773                                                                   All CP15, CRn==11, Opcode1=={0-7}, CRm == {c0-c8, c15},
12774                                                                      opcode2 == {0-7}.
12775 
12776                                                                  AArch64: All encoding space reserved for implementation
12777                                                                      defined system operations ( S1_\<op1\>_\<Cn\>_\<Cm\>_\<op2\>) and
12778                                                                      system registers ( S3_\<op1\>_\<Cn\>_\<Cm\>_\<op2\>).
12779 
12780                                                                  It is implementation defined whether any of this functionality
12781                                                                      accessed from EL0 is trapped to EL2 when the AP_HCR_EL2[TIDCP] bit
12782                                                                      is set. If it is not trapped to EL2, it results in an
12783                                                                      Undefined exception taken to EL1. */
12784         uint64_t tacr                  : 1;  /**< [ 21: 21](R/W) Trap Auxiliary Control Register. When this bit is set to 1,
12785                                                                      this causes accesses to the following registers executed from
12786                                                                      EL1 to be trapped to EL2:
12787 
12788                                                                  AArch32: ACTLR.
12789 
12790                                                                  AArch64: ACTLR_EL1. */
12791         uint64_t tsw                   : 1;  /**< [ 22: 22](R/W) Trap Data/Unified Cache maintenance operations by Set/Way.
12792                                                                      When this bit is set to 1, this causes Data or Unified Cache
12793                                                                      maintenance instructions by set/way executed from EL1 which
12794                                                                      are not UNdefined to be trapped to EL2. This covers the
12795                                                                      following instructions:
12796 
12797                                                                  AArch32: DCISW, DCCSW, DCCISW.
12798 
12799                                                                  AArch64: DC ISW, DC CSW, DC CISW. */
12800         uint64_t tpc                   : 1;  /**< [ 23: 23](R/W) Trap Data/Unified Cache maintenance operations to Point of
12801                                                                      Coherency. When this bit is set to 1, this causes Data or
12802                                                                      Unified Cache maintenance instructions by address to the point
12803                                                                      of coherency executed from EL1 or EL0 which are not UNdefined
12804                                                                      to be trapped to EL2. This covers the following instructions:
12805 
12806                                                                  AArch32: DCIMVAC, DCCIMVAC, DCCMVAC.
12807 
12808                                                                  AArch64: DC IVAC, DC CIVAC, DC CVAC. */
12809         uint64_t tpu                   : 1;  /**< [ 24: 24](R/W) Trap Cache maintenance instructions to Point of Unification.
12810                                                                      When this bit is set to 1, this causes Cache maintenance
12811                                                                      instructions to the point of unification executed from EL1 or
12812                                                                      EL0 which are not UNdefined to be trapped to EL2. This covers
12813                                                                      the following instructions:
12814 
12815                                                                  AArch32: ICIMVAU, ICIALLU, ICIALLUIS, DCCMVAU.
12816 
12817                                                                  AArch64: IC IVAU, IC IALLU, IC IALLUIS, DC CVAU. */
12818         uint64_t ttlb                  : 1;  /**< [ 25: 25](R/W) Trap TLB maintenance instructions. When this bit is set to 1,
12819                                                                      this causes TLB maintenance instructions executed from EL1
12820                                                                      which are not UNdefined to be trapped to EL2. This covers the
12821                                                                      following instructions:
12822 
12823                                                                  AArch32: TLBIALLIS, TLBIMVAIS, TLBIASIDIS, TLBIMVAAIS,
12824                                                                      TLBIALL, TLBIMVA, TLBIASID, DTLBIALL, DTLBIMVA, DTLBIASID,
12825                                                                      ITLBIALL, ITLBIMVA, ITLBIASID, TLBIMVAA, TLBIMVALIS,
12826                                                                      TLBIMVAALIS, TLBIMVAL, TLBIMVAAL
12827 
12828                                                                  AArch64: TLBI VMALLE1, TLBI VAE1, TLBI ASIDE1, TLBI VAAE1,
12829                                                                      TLBI VALE1, TLBI VAALE1, TLBI VMALLE1IS, TLBI VAE1IS, TLBI
12830                                                                      ASIDE1IS, TLBI VAAE1IS, TLBI VALE1IS, TLBI VAALE1IS */
12831         uint64_t tvm                   : 1;  /**< [ 26: 26](R/W) Trap Virtual Memory controls. When this bit is set to 1, this
12832                                                                      causes Writes to the EL1 virtual memory control registers from
12833                                                                      EL1 to be trapped to EL2. This covers the following registers:
12834 
12835                                                                  AArch32: SCTLR, TTBR0, TTBR1, TTBCR, DACR, DFSR, IFSR, DFAR,
12836                                                                      IFAR, ADFSR, AIFSR, PRRR/ MAIR0, NMRR/ MAIR1, AMAIR0, AMAIR1,
12837                                                                      CONTEXTIDR.
12838 
12839                                                                  AArch64: AP_SCTLR_EL1, AP_TTBR0_EL1, AP_TTBR1_EL1, AP_TCR_EL1, ESR_EL1,
12840                                                                      FAR_EL1, AFSR0_EL1, AFSR1_EL1, MAIR_EL1, AMAIR_EL1,
12841                                                                      AP_CONTEXTIDR_EL1 */
12842         uint64_t tge                   : 1;  /**< [ 27: 27](R/W) Trap General Exceptions. If this bit is set to 1, and
12843                                                                      AP_SCR_EL3[NS] is set to 1, then:
12844 
12845                                                                   All exceptions that would be routed to EL1 are routed to EL2.
12846 
12847                                                                   The AP_SCTLR_EL1[M] bit is treated as being 0 regardless of its
12848                                                                      actual state (for EL1 using AArch32 or AArch64) other than for
12849                                                                      the purpose of reading the bit.
12850 
12851                                                                   The AP_HCR_EL2[FMO], IMO and AMO bits are treated as being 1
12852                                                                      regardless of their actual state other than for the purpose of
12853                                                                      reading the bits.
12854 
12855                                                                   All virtual interrupts are disabled.
12856 
12857                                                                   Any implementation defined mechanisms for signalling virtual
12858                                                                      interrupts are disabled.
12859 
12860                                                                   An exception return to EL1 is treated as an illegal exception
12861                                                                      return.
12862 
12863                                                                  Additionally, if AP_HCR_EL2[TGE] == 1, the
12864                                                                      AP_MDCR_EL2.{TDRA,TDOSA,TDA} bits are ignored and the processor
12865                                                                      behaves as if they are set to 1, other than for the value read
12866                                                                      back from AP_MDCR_EL2. */
12867         uint64_t tdz                   : 1;  /**< [ 28: 28](R/W) Trap DC ZVA instruction:
12868                                                                  This bit also has an effect on the value read from the
12869                                                                      AP_DCZID_EL0 register. If this bit is 1, then reading
12870                                                                      AP_DCZID_EL0[DZP] from nonsecure EL1 or EL0 will return 1 to
12871                                                                      indicate that DC ZVA is prohibited.
12872                                                                  0 = The instruction is not trapped.
12873                                                                  1 = The instruction is trapped to EL2 when executed in nonsecure
12874                                                                      EL1 or EL0. */
12875         uint64_t reserved_29           : 1;
12876         uint64_t trvm                  : 1;  /**< [ 30: 30](R/W) Trap Read of Virtual Memory controls. When this bit is set to
12877                                                                      1, this causes Reads to the EL1 virtual memory control
12878                                                                      registers from EL1 to be trapped to EL2. This covers the
12879                                                                      following registers:
12880 
12881                                                                  AArch32: SCTLR, TTBR0, TTBR1, TTBCR, DACR, DFSR, IFSR, DFAR,
12882                                                                      IFAR, ADFSR, AIFSR, PRRR/ MAIR0, NMRR/ MAIR1, AMAIR0, AMAIR1,
12883                                                                      CONTEXTIDR.
12884 
12885                                                                  AArch64: AP_SCTLR_EL1, AP_TTBR0_EL1, AP_TTBR1_EL1, AP_TCR_EL1, ESR_EL1,
12886                                                                      FAR_EL1, AFSR0_EL1, AFSR1_EL1, MAIR_EL1, AMAIR_EL1,
12887                                                                      AP_CONTEXTIDR_EL1. */
12888         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) rw - Register Width control for lower exception levels:
12889                                                                  When AP_SCR_EL3[NS]==0, this bit behaves as if it has the same
12890                                                                      value as the AP_SCR_EL3[RW] bit except for the value read back.
12891                                                                  The RW bit is permitted to be cached in a TLB.
12892                                                                  0 = Lower levels are all AArch32.
12893                                                                  1 = EL1 is AArch64. EL0 is determined by the Execution state
12894                                                                      described in the current process state when executing at EL0. */
12895         uint64_t cd                    : 1;  /**< [ 32: 32](R/W) Stage 2 Data cache disable. When AP_HCR_EL2[VM]==1, this forces
12896                                                                      all stage 2 translations for data accesses and translation
12897                                                                      table walks to Normal memory to be Non-cacheable for the EL1&0
12898                                                                      translation regime.
12899                                                                  This bit has no effect on the EL2 or EL3 translation regimes.
12900                                                                  0 = No effect on the stage 2 of the EL1&0 translation regime for
12901                                                                      data accesses and translation table walks.
12902                                                                  1 = Forces all stage 2 translations for data accesses and
12903                                                                      translation table walks to Normal memory to be Non-cacheable
12904                                                                      for the EL1&0 translation regime. */
12905         uint64_t id                    : 1;  /**< [ 33: 33](R/W) Stage 2 Instruction cache disable. When AP_HCR_EL2[VM]==1, this
12906                                                                      forces all stage 2 translations for instruction accesses to
12907                                                                      Normal memory to be Non-cacheable for the EL1&0 translation
12908                                                                      regime.
12909                                                                  This bit has no effect on the EL2 or EL3 translation regimes.
12910                                                                  0 = No effect on the stage 2 of the EL1&0 translation regime for
12911                                                                      instruction accesses.
12912                                                                  1 = Forces all stage 2 translations for instruction accesses to
12913                                                                      Normal memory to be Non-cacheable for the EL1&0 translation
12914                                                                      regime. */
12915         uint64_t e2h                   : 1;  /**< [ 34: 34](R/W) V8.1: Enable EL2 host. */
12916         uint64_t tlor                  : 1;  /**< [ 35: 35](R/W) v8.1: Trap access to the LOR Registers from nonsecure EL1 to EL2.
12917                                                                  0 = Nonsecure EL1 accesses to the LOR Registers are not trapped to EL2.
12918                                                                  1 = Nonsecure EL1 accesses to the LOR Registers are trapped to EL2. */
12919         uint64_t reserved_36_63        : 28;
12920 #endif /* Word 0 - End */
12921     } cn8;
12922     /* struct bdk_ap_hcr_el2_s cn9; */
12923 };
12924 typedef union bdk_ap_hcr_el2 bdk_ap_hcr_el2_t;
12925 
12926 #define BDK_AP_HCR_EL2 BDK_AP_HCR_EL2_FUNC()
12927 static inline uint64_t BDK_AP_HCR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_HCR_EL2_FUNC(void)12928 static inline uint64_t BDK_AP_HCR_EL2_FUNC(void)
12929 {
12930     return 0x30401010000ll;
12931 }
12932 
12933 #define typedef_BDK_AP_HCR_EL2 bdk_ap_hcr_el2_t
12934 #define bustype_BDK_AP_HCR_EL2 BDK_CSR_TYPE_SYSREG
12935 #define basename_BDK_AP_HCR_EL2 "AP_HCR_EL2"
12936 #define busnum_BDK_AP_HCR_EL2 0
12937 #define arguments_BDK_AP_HCR_EL2 -1,-1,-1,-1
12938 
12939 /**
12940  * Register (SYSREG) ap_hpfar_el2
12941  *
12942  * AP Hypervisor IPA Fault Address Register
12943  * Holds the faulting IPA for some aborts on a stage 2
12944  *     translation taken to EL2.
12945  */
12946 union bdk_ap_hpfar_el2
12947 {
12948     uint64_t u;
12949     struct bdk_ap_hpfar_el2_s
12950     {
12951 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12952         uint64_t reserved_45_63        : 19;
12953         uint64_t fipa                  : 41; /**< [ 44:  4](R/W) Bits \<47:12\> of the faulting intermediate physical address.
12954                                                                      For implementations with fewer than 48 physical address bits,
12955                                                                      the equivalent upper bits in this field are RES0. */
12956         uint64_t reserved_0_3          : 4;
12957 #else /* Word 0 - Little Endian */
12958         uint64_t reserved_0_3          : 4;
12959         uint64_t fipa                  : 41; /**< [ 44:  4](R/W) Bits \<47:12\> of the faulting intermediate physical address.
12960                                                                      For implementations with fewer than 48 physical address bits,
12961                                                                      the equivalent upper bits in this field are RES0. */
12962         uint64_t reserved_45_63        : 19;
12963 #endif /* Word 0 - End */
12964     } s;
12965     struct bdk_ap_hpfar_el2_cn8
12966     {
12967 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12968         uint64_t reserved_40_63        : 24;
12969         uint64_t fipa                  : 36; /**< [ 39:  4](R/W) Bits \<47:12\> of the faulting intermediate physical address.
12970                                                                      For implementations with fewer than 48 physical address bits,
12971                                                                      the equivalent upper bits in this field are RES0. */
12972         uint64_t reserved_0_3          : 4;
12973 #else /* Word 0 - Little Endian */
12974         uint64_t reserved_0_3          : 4;
12975         uint64_t fipa                  : 36; /**< [ 39:  4](R/W) Bits \<47:12\> of the faulting intermediate physical address.
12976                                                                      For implementations with fewer than 48 physical address bits,
12977                                                                      the equivalent upper bits in this field are RES0. */
12978         uint64_t reserved_40_63        : 24;
12979 #endif /* Word 0 - End */
12980     } cn8;
12981     struct bdk_ap_hpfar_el2_cn9
12982     {
12983 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12984         uint64_t reserved_45_63        : 19;
12985         uint64_t fipa                  : 41; /**< [ 44:  4](R/W) Bits \<51:12\> of the faulting intermediate physical address.
12986                                                                  For implementations that don't support as large an IPA, or when
12987                                                                  using a translation granule, the upper in this field are RES0. */
12988         uint64_t reserved_0_3          : 4;
12989 #else /* Word 0 - Little Endian */
12990         uint64_t reserved_0_3          : 4;
12991         uint64_t fipa                  : 41; /**< [ 44:  4](R/W) Bits \<51:12\> of the faulting intermediate physical address.
12992                                                                  For implementations that don't support as large an IPA, or when
12993                                                                  using a translation granule, the upper in this field are RES0. */
12994         uint64_t reserved_45_63        : 19;
12995 #endif /* Word 0 - End */
12996     } cn9;
12997 };
12998 typedef union bdk_ap_hpfar_el2 bdk_ap_hpfar_el2_t;
12999 
13000 #define BDK_AP_HPFAR_EL2 BDK_AP_HPFAR_EL2_FUNC()
13001 static inline uint64_t BDK_AP_HPFAR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_HPFAR_EL2_FUNC(void)13002 static inline uint64_t BDK_AP_HPFAR_EL2_FUNC(void)
13003 {
13004     return 0x30406000400ll;
13005 }
13006 
13007 #define typedef_BDK_AP_HPFAR_EL2 bdk_ap_hpfar_el2_t
13008 #define bustype_BDK_AP_HPFAR_EL2 BDK_CSR_TYPE_SYSREG
13009 #define basename_BDK_AP_HPFAR_EL2 "AP_HPFAR_EL2"
13010 #define busnum_BDK_AP_HPFAR_EL2 0
13011 #define arguments_BDK_AP_HPFAR_EL2 -1,-1,-1,-1
13012 
13013 /**
13014  * Register (SYSREG) ap_hstr_el2
13015  *
13016  * AP Hypervisor System Trap Register
13017  * Controls access to coprocessor registers at lower Exception
13018  *     levels in AArch32.
13019  */
13020 union bdk_ap_hstr_el2
13021 {
13022     uint32_t u;
13023     struct bdk_ap_hstr_el2_s
13024     {
13025 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13026         uint32_t reserved_0_31         : 32;
13027 #else /* Word 0 - Little Endian */
13028         uint32_t reserved_0_31         : 32;
13029 #endif /* Word 0 - End */
13030     } s;
13031     /* struct bdk_ap_hstr_el2_s cn; */
13032 };
13033 typedef union bdk_ap_hstr_el2 bdk_ap_hstr_el2_t;
13034 
13035 #define BDK_AP_HSTR_EL2 BDK_AP_HSTR_EL2_FUNC()
13036 static inline uint64_t BDK_AP_HSTR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_HSTR_EL2_FUNC(void)13037 static inline uint64_t BDK_AP_HSTR_EL2_FUNC(void)
13038 {
13039     return 0x30401010300ll;
13040 }
13041 
13042 #define typedef_BDK_AP_HSTR_EL2 bdk_ap_hstr_el2_t
13043 #define bustype_BDK_AP_HSTR_EL2 BDK_CSR_TYPE_SYSREG
13044 #define basename_BDK_AP_HSTR_EL2 "AP_HSTR_EL2"
13045 #define busnum_BDK_AP_HSTR_EL2 0
13046 #define arguments_BDK_AP_HSTR_EL2 -1,-1,-1,-1
13047 
13048 /**
13049  * Register (SYSREG) ap_icc_ap0r#_el1
13050  *
13051  * AP Interrupt Controller Active Priorities Group 0 (1,3) Register
13052  * Provides information about the active priorities for the
13053  *     current interrupt regime.
13054  */
13055 union bdk_ap_icc_ap0rx_el1
13056 {
13057     uint32_t u;
13058     struct bdk_ap_icc_ap0rx_el1_s
13059     {
13060 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13061         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
13062                                                                      following relationship:
13063                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
13064                                                                      minus 1, where U is the number of unimplemented bits of
13065                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRI]bits).
13066                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRI]bits == 0b100:
13067 
13068                                                                   There are 5 bits of implemented priority.
13069 
13070                                                                   This means there are 3 bits of unimplemented priority, which
13071                                                                      are always at the least significant end (bits [2:0] are RES0).
13072 
13073                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
13074                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
13075 
13076                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
13077                                                                      provide information about those priorities.
13078 
13079                                                                  Accesses to these registers from an interrupt regime give a
13080                                                                      view of the active priorities that is appropriate for that
13081                                                                      interrupt regime, to allow save and restore of the appropriate
13082                                                                      state.
13083 
13084                                                                  Interrupt regime and the number of Security states supported
13085                                                                      by the Distributor affect the view as follows. Unless
13086                                                                      otherwise stated, when a bit is successfully set to one, this
13087                                                                      clears any other active priorities corresponding to that bit.
13088 
13089                                                                  Exception level     AP0Rn access
13090 
13091                                                                  (Secure) EL3        Permitted. Accesses Group 0 Secure active priorities.
13092 
13093                                                                  Secure EL1  Permitted. Accesses Group 0 Secure active priorities.
13094 
13095                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP0Rn_EL2
13096 
13097                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
13098                                                                  0) Permitted. Accesses Group 0 Secure active priorities.
13099 
13100                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
13101                                                                  1)  Permitted. Accesses Group 0 active priorities.
13102 
13103                                                                  A Virtual interrupt in this case means that the interrupt
13104                                                                      group associated with the register has been virtualized. */
13105 #else /* Word 0 - Little Endian */
13106         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
13107                                                                      following relationship:
13108                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
13109                                                                      minus 1, where U is the number of unimplemented bits of
13110                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRI]bits).
13111                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRI]bits == 0b100:
13112 
13113                                                                   There are 5 bits of implemented priority.
13114 
13115                                                                   This means there are 3 bits of unimplemented priority, which
13116                                                                      are always at the least significant end (bits [2:0] are RES0).
13117 
13118                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
13119                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
13120 
13121                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
13122                                                                      provide information about those priorities.
13123 
13124                                                                  Accesses to these registers from an interrupt regime give a
13125                                                                      view of the active priorities that is appropriate for that
13126                                                                      interrupt regime, to allow save and restore of the appropriate
13127                                                                      state.
13128 
13129                                                                  Interrupt regime and the number of Security states supported
13130                                                                      by the Distributor affect the view as follows. Unless
13131                                                                      otherwise stated, when a bit is successfully set to one, this
13132                                                                      clears any other active priorities corresponding to that bit.
13133 
13134                                                                  Exception level     AP0Rn access
13135 
13136                                                                  (Secure) EL3        Permitted. Accesses Group 0 Secure active priorities.
13137 
13138                                                                  Secure EL1  Permitted. Accesses Group 0 Secure active priorities.
13139 
13140                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP0Rn_EL2
13141 
13142                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
13143                                                                  0) Permitted. Accesses Group 0 Secure active priorities.
13144 
13145                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
13146                                                                  1)  Permitted. Accesses Group 0 active priorities.
13147 
13148                                                                  A Virtual interrupt in this case means that the interrupt
13149                                                                      group associated with the register has been virtualized. */
13150 #endif /* Word 0 - End */
13151     } s;
13152     /* struct bdk_ap_icc_ap0rx_el1_s cn; */
13153 };
13154 typedef union bdk_ap_icc_ap0rx_el1 bdk_ap_icc_ap0rx_el1_t;
13155 
13156 static inline uint64_t BDK_AP_ICC_AP0RX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ICC_AP0RX_EL1(unsigned long a)13157 static inline uint64_t BDK_AP_ICC_AP0RX_EL1(unsigned long a)
13158 {
13159     if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX) && (a<=3))
13160         return 0x3000c080400ll + 0x100ll * ((a) & 0x3);
13161     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a>=1)&&(a<=3)))
13162         return 0x3000c080400ll + 0x100ll * ((a) & 0x3);
13163     __bdk_csr_fatal("AP_ICC_AP0RX_EL1", 1, a, 0, 0, 0);
13164 }
13165 
13166 #define typedef_BDK_AP_ICC_AP0RX_EL1(a) bdk_ap_icc_ap0rx_el1_t
13167 #define bustype_BDK_AP_ICC_AP0RX_EL1(a) BDK_CSR_TYPE_SYSREG
13168 #define basename_BDK_AP_ICC_AP0RX_EL1(a) "AP_ICC_AP0RX_EL1"
13169 #define busnum_BDK_AP_ICC_AP0RX_EL1(a) (a)
13170 #define arguments_BDK_AP_ICC_AP0RX_EL1(a) (a),-1,-1,-1
13171 
13172 /**
13173  * Register (SYSREG) ap_icc_ap0r0_el1
13174  *
13175  * AP Interrupt Controller Active Priorities Group 0 (0,0) Register
13176  * Provides information about the active priorities for the
13177  *     current interrupt regime.
13178  */
13179 union bdk_ap_icc_ap0r0_el1
13180 {
13181     uint32_t u;
13182     struct bdk_ap_icc_ap0r0_el1_s
13183     {
13184 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13185         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
13186                                                                      following relationship:
13187                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
13188                                                                      minus 1, where U is the number of unimplemented bits of
13189                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRI]bits).
13190                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRI]bits == 0b100:
13191 
13192                                                                   There are 5 bits of implemented priority.
13193 
13194                                                                   This means there are 3 bits of unimplemented priority, which
13195                                                                      are always at the least significant end (bits [2:0] are RES0).
13196 
13197                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
13198                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
13199 
13200                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
13201                                                                      provide information about those priorities.
13202 
13203                                                                  Accesses to these registers from an interrupt regime give a
13204                                                                      view of the active priorities that is appropriate for that
13205                                                                      interrupt regime, to allow save and restore of the appropriate
13206                                                                      state.
13207 
13208                                                                  Interrupt regime and the number of Security states supported
13209                                                                      by the Distributor affect the view as follows. Unless
13210                                                                      otherwise stated, when a bit is successfully set to one, this
13211                                                                      clears any other active priorities corresponding to that bit.
13212 
13213                                                                  Exception level     AP0Rn access
13214 
13215                                                                  (Secure) EL3        Permitted. Accesses Group 0 Secure active priorities.
13216 
13217                                                                  Secure EL1  Permitted. Accesses Group 0 Secure active priorities.
13218 
13219                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP0Rn_EL2
13220 
13221                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
13222                                                                  0) Permitted. Accesses Group 0 Secure active priorities.
13223 
13224                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
13225                                                                  1)  Permitted. Accesses Group 0 active priorities.
13226 
13227                                                                  A Virtual interrupt in this case means that the interrupt
13228                                                                      group associated with the register has been virtualized. */
13229 #else /* Word 0 - Little Endian */
13230         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
13231                                                                      following relationship:
13232                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
13233                                                                      minus 1, where U is the number of unimplemented bits of
13234                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRI]bits).
13235                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRI]bits == 0b100:
13236 
13237                                                                   There are 5 bits of implemented priority.
13238 
13239                                                                   This means there are 3 bits of unimplemented priority, which
13240                                                                      are always at the least significant end (bits [2:0] are RES0).
13241 
13242                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
13243                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
13244 
13245                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
13246                                                                      provide information about those priorities.
13247 
13248                                                                  Accesses to these registers from an interrupt regime give a
13249                                                                      view of the active priorities that is appropriate for that
13250                                                                      interrupt regime, to allow save and restore of the appropriate
13251                                                                      state.
13252 
13253                                                                  Interrupt regime and the number of Security states supported
13254                                                                      by the Distributor affect the view as follows. Unless
13255                                                                      otherwise stated, when a bit is successfully set to one, this
13256                                                                      clears any other active priorities corresponding to that bit.
13257 
13258                                                                  Exception level     AP0Rn access
13259 
13260                                                                  (Secure) EL3        Permitted. Accesses Group 0 Secure active priorities.
13261 
13262                                                                  Secure EL1  Permitted. Accesses Group 0 Secure active priorities.
13263 
13264                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP0Rn_EL2
13265 
13266                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
13267                                                                  0) Permitted. Accesses Group 0 Secure active priorities.
13268 
13269                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
13270                                                                  1)  Permitted. Accesses Group 0 active priorities.
13271 
13272                                                                  A Virtual interrupt in this case means that the interrupt
13273                                                                      group associated with the register has been virtualized. */
13274 #endif /* Word 0 - End */
13275     } s;
13276     /* struct bdk_ap_icc_ap0r0_el1_s cn; */
13277 };
13278 typedef union bdk_ap_icc_ap0r0_el1 bdk_ap_icc_ap0r0_el1_t;
13279 
13280 #define BDK_AP_ICC_AP0R0_EL1 BDK_AP_ICC_AP0R0_EL1_FUNC()
13281 static inline uint64_t BDK_AP_ICC_AP0R0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_AP0R0_EL1_FUNC(void)13282 static inline uint64_t BDK_AP_ICC_AP0R0_EL1_FUNC(void)
13283 {
13284     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
13285         return 0x3000c080400ll;
13286     __bdk_csr_fatal("AP_ICC_AP0R0_EL1", 0, 0, 0, 0, 0);
13287 }
13288 
13289 #define typedef_BDK_AP_ICC_AP0R0_EL1 bdk_ap_icc_ap0r0_el1_t
13290 #define bustype_BDK_AP_ICC_AP0R0_EL1 BDK_CSR_TYPE_SYSREG
13291 #define basename_BDK_AP_ICC_AP0R0_EL1 "AP_ICC_AP0R0_EL1"
13292 #define busnum_BDK_AP_ICC_AP0R0_EL1 0
13293 #define arguments_BDK_AP_ICC_AP0R0_EL1 -1,-1,-1,-1
13294 
13295 /**
13296  * Register (SYSREG) ap_icc_ap1r#_el1
13297  *
13298  * AP Interrupt Controller Active Priorities Group 1(1,3) Register
13299  * Provides information about the active priorities for the
13300  *     current interrupt regime.
13301  */
13302 union bdk_ap_icc_ap1rx_el1
13303 {
13304     uint32_t u;
13305     struct bdk_ap_icc_ap1rx_el1_s
13306     {
13307 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13308         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
13309                                                                      following relationship:
13310 
13311                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
13312                                                                      minus 1, where U is the number of unimplemented bits of
13313                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRI]bits).
13314 
13315                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRI]bits ==0b100
13316 
13317                                                                   There are 5 bits of implemented priority.
13318 
13319                                                                   This means there are 3 bits of unimplemented priority, which
13320                                                                      are always at the least significant end (bits [2:0] are RES0).
13321 
13322                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
13323                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
13324 
13325                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
13326                                                                      provide information about those priorities.
13327 
13328                                                                  Accesses to these registers from an interrupt regime give a
13329                                                                      view of the active priorities that is appropriate for that
13330                                                                      interrupt regime, to allow save and restore of the appropriate
13331                                                                      state.
13332 
13333                                                                  Interrupt regime and the number of Security states supported
13334                                                                      by the Distributor affect the view as follows. Unless
13335                                                                      otherwise stated, when a bit is successfully set to one, this
13336                                                                      clears any other active priorities corresponding to that bit.
13337 
13338                                                                  Current Exception level and Security state  AP1Rn access
13339 
13340                                                                  (Secure) EL3        Permitted. When AP_SCR_EL3[NS] is 0, accesses Group 1 Secure active
13341                                                                  priorities. When AP_SCR_EL3[NS] is 1, accesses Group 1 nonsecure active priorities
13342                                                                  (unshifted). When a bit is written, the bit is only updated if the corresponding Group 0
13343                                                                  and Group 1 Secure active priority is zero.
13344 
13345                                                                  Secure EL1  Permitted. Accesses Group 1 Secure active priorities (unshifted). When a bit
13346                                                                  is written, the bit is only updated if the corresponding Group 0 Secure active priority is
13347                                                                  zero.
13348 
13349                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP1Rn_EL2
13350 
13351                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
13352                                                                  0) Permitted. Accesses Group 1 Nonsecure active priorities (shifted). When a bit is
13353                                                                  written, the bit is only updated if the corresponding Group 0 and Group 1 Secure active
13354                                                                  priority is zero.
13355 
13356                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
13357                                                                  1)  Permitted. Accesses Group 1 Nonsecure active priorities (unshifted). When a bit is
13358                                                                  written, the bit is only updated if the Group 0 active priority is zero.
13359 
13360                                                                  A Virtual interrupt in this case means that the interrupt
13361                                                                      group associated with the register has been virtualized. */
13362 #else /* Word 0 - Little Endian */
13363         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
13364                                                                      following relationship:
13365 
13366                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
13367                                                                      minus 1, where U is the number of unimplemented bits of
13368                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRI]bits).
13369 
13370                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRI]bits ==0b100
13371 
13372                                                                   There are 5 bits of implemented priority.
13373 
13374                                                                   This means there are 3 bits of unimplemented priority, which
13375                                                                      are always at the least significant end (bits [2:0] are RES0).
13376 
13377                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
13378                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
13379 
13380                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
13381                                                                      provide information about those priorities.
13382 
13383                                                                  Accesses to these registers from an interrupt regime give a
13384                                                                      view of the active priorities that is appropriate for that
13385                                                                      interrupt regime, to allow save and restore of the appropriate
13386                                                                      state.
13387 
13388                                                                  Interrupt regime and the number of Security states supported
13389                                                                      by the Distributor affect the view as follows. Unless
13390                                                                      otherwise stated, when a bit is successfully set to one, this
13391                                                                      clears any other active priorities corresponding to that bit.
13392 
13393                                                                  Current Exception level and Security state  AP1Rn access
13394 
13395                                                                  (Secure) EL3        Permitted. When AP_SCR_EL3[NS] is 0, accesses Group 1 Secure active
13396                                                                  priorities. When AP_SCR_EL3[NS] is 1, accesses Group 1 nonsecure active priorities
13397                                                                  (unshifted). When a bit is written, the bit is only updated if the corresponding Group 0
13398                                                                  and Group 1 Secure active priority is zero.
13399 
13400                                                                  Secure EL1  Permitted. Accesses Group 1 Secure active priorities (unshifted). When a bit
13401                                                                  is written, the bit is only updated if the corresponding Group 0 Secure active priority is
13402                                                                  zero.
13403 
13404                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP1Rn_EL2
13405 
13406                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
13407                                                                  0) Permitted. Accesses Group 1 Nonsecure active priorities (shifted). When a bit is
13408                                                                  written, the bit is only updated if the corresponding Group 0 and Group 1 Secure active
13409                                                                  priority is zero.
13410 
13411                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
13412                                                                  1)  Permitted. Accesses Group 1 Nonsecure active priorities (unshifted). When a bit is
13413                                                                  written, the bit is only updated if the Group 0 active priority is zero.
13414 
13415                                                                  A Virtual interrupt in this case means that the interrupt
13416                                                                      group associated with the register has been virtualized. */
13417 #endif /* Word 0 - End */
13418     } s;
13419     /* struct bdk_ap_icc_ap1rx_el1_s cn; */
13420 };
13421 typedef union bdk_ap_icc_ap1rx_el1 bdk_ap_icc_ap1rx_el1_t;
13422 
13423 static inline uint64_t BDK_AP_ICC_AP1RX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ICC_AP1RX_EL1(unsigned long a)13424 static inline uint64_t BDK_AP_ICC_AP1RX_EL1(unsigned long a)
13425 {
13426     if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX) && (a<=3))
13427         return 0x3000c090000ll + 0x100ll * ((a) & 0x3);
13428     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a>=1)&&(a<=3)))
13429         return 0x3000c090000ll + 0x100ll * ((a) & 0x3);
13430     __bdk_csr_fatal("AP_ICC_AP1RX_EL1", 1, a, 0, 0, 0);
13431 }
13432 
13433 #define typedef_BDK_AP_ICC_AP1RX_EL1(a) bdk_ap_icc_ap1rx_el1_t
13434 #define bustype_BDK_AP_ICC_AP1RX_EL1(a) BDK_CSR_TYPE_SYSREG
13435 #define basename_BDK_AP_ICC_AP1RX_EL1(a) "AP_ICC_AP1RX_EL1"
13436 #define busnum_BDK_AP_ICC_AP1RX_EL1(a) (a)
13437 #define arguments_BDK_AP_ICC_AP1RX_EL1(a) (a),-1,-1,-1
13438 
13439 /**
13440  * Register (SYSREG) ap_icc_ap1r0_el1
13441  *
13442  * AP Interrupt Controller Active Priorities Group 1 (0,0) Register
13443  * Provides information about the active priorities for the
13444  *     current interrupt regime.
13445  */
13446 union bdk_ap_icc_ap1r0_el1
13447 {
13448     uint32_t u;
13449     struct bdk_ap_icc_ap1r0_el1_s
13450     {
13451 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13452         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
13453                                                                      following relationship:
13454 
13455                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
13456                                                                      minus 1, where U is the number of unimplemented bits of
13457                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRI]bits).
13458 
13459                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRI]bits ==0b100
13460 
13461                                                                   There are 5 bits of implemented priority.
13462 
13463                                                                   This means there are 3 bits of unimplemented priority, which
13464                                                                      are always at the least significant end (bits [2:0] are RES0).
13465 
13466                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
13467                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
13468 
13469                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
13470                                                                      provide information about those priorities.
13471 
13472                                                                  Accesses to these registers from an interrupt regime give a
13473                                                                      view of the active priorities that is appropriate for that
13474                                                                      interrupt regime, to allow save and restore of the appropriate
13475                                                                      state.
13476 
13477                                                                  Interrupt regime and the number of Security states supported
13478                                                                      by the Distributor affect the view as follows. Unless
13479                                                                      otherwise stated, when a bit is successfully set to one, this
13480                                                                      clears any other active priorities corresponding to that bit.
13481 
13482                                                                  Current Exception level and Security state  AP1Rn access
13483 
13484                                                                  (Secure) EL3        Permitted. When AP_SCR_EL3[NS] is 0, accesses Group 1 Secure active
13485                                                                  priorities. When AP_SCR_EL3[NS] is 1, accesses Group 1 nonsecure active priorities
13486                                                                  (unshifted). When a bit is written, the bit is only updated if the corresponding Group 0
13487                                                                  and Group 1 Secure active priority is zero.
13488 
13489                                                                  Secure EL1  Permitted. Accesses Group 1 Secure active priorities (unshifted). When a bit
13490                                                                  is written, the bit is only updated if the corresponding Group 0 Secure active priority is
13491                                                                  zero.
13492 
13493                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP1Rn_EL2
13494 
13495                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
13496                                                                  0) Permitted. Accesses Group 1 Nonsecure active priorities (shifted). When a bit is
13497                                                                  written, the bit is only updated if the corresponding Group 0 and Group 1 Secure active
13498                                                                  priority is zero.
13499 
13500                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
13501                                                                  1)  Permitted. Accesses Group 1 Nonsecure active priorities (unshifted). When a bit is
13502                                                                  written, the bit is only updated if the Group 0 active priority is zero.
13503 
13504                                                                  A Virtual interrupt in this case means that the interrupt
13505                                                                      group associated with the register has been virtualized. */
13506 #else /* Word 0 - Little Endian */
13507         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
13508                                                                      following relationship:
13509 
13510                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
13511                                                                      minus 1, where U is the number of unimplemented bits of
13512                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRI]bits).
13513 
13514                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRI]bits ==0b100
13515 
13516                                                                   There are 5 bits of implemented priority.
13517 
13518                                                                   This means there are 3 bits of unimplemented priority, which
13519                                                                      are always at the least significant end (bits [2:0] are RES0).
13520 
13521                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
13522                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
13523 
13524                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
13525                                                                      provide information about those priorities.
13526 
13527                                                                  Accesses to these registers from an interrupt regime give a
13528                                                                      view of the active priorities that is appropriate for that
13529                                                                      interrupt regime, to allow save and restore of the appropriate
13530                                                                      state.
13531 
13532                                                                  Interrupt regime and the number of Security states supported
13533                                                                      by the Distributor affect the view as follows. Unless
13534                                                                      otherwise stated, when a bit is successfully set to one, this
13535                                                                      clears any other active priorities corresponding to that bit.
13536 
13537                                                                  Current Exception level and Security state  AP1Rn access
13538 
13539                                                                  (Secure) EL3        Permitted. When AP_SCR_EL3[NS] is 0, accesses Group 1 Secure active
13540                                                                  priorities. When AP_SCR_EL3[NS] is 1, accesses Group 1 nonsecure active priorities
13541                                                                  (unshifted). When a bit is written, the bit is only updated if the corresponding Group 0
13542                                                                  and Group 1 Secure active priority is zero.
13543 
13544                                                                  Secure EL1  Permitted. Accesses Group 1 Secure active priorities (unshifted). When a bit
13545                                                                  is written, the bit is only updated if the corresponding Group 0 Secure active priority is
13546                                                                  zero.
13547 
13548                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP1Rn_EL2
13549 
13550                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
13551                                                                  0) Permitted. Accesses Group 1 Nonsecure active priorities (shifted). When a bit is
13552                                                                  written, the bit is only updated if the corresponding Group 0 and Group 1 Secure active
13553                                                                  priority is zero.
13554 
13555                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
13556                                                                  1)  Permitted. Accesses Group 1 Nonsecure active priorities (unshifted). When a bit is
13557                                                                  written, the bit is only updated if the Group 0 active priority is zero.
13558 
13559                                                                  A Virtual interrupt in this case means that the interrupt
13560                                                                      group associated with the register has been virtualized. */
13561 #endif /* Word 0 - End */
13562     } s;
13563     /* struct bdk_ap_icc_ap1r0_el1_s cn; */
13564 };
13565 typedef union bdk_ap_icc_ap1r0_el1 bdk_ap_icc_ap1r0_el1_t;
13566 
13567 #define BDK_AP_ICC_AP1R0_EL1 BDK_AP_ICC_AP1R0_EL1_FUNC()
13568 static inline uint64_t BDK_AP_ICC_AP1R0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_AP1R0_EL1_FUNC(void)13569 static inline uint64_t BDK_AP_ICC_AP1R0_EL1_FUNC(void)
13570 {
13571     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
13572         return 0x3000c090000ll;
13573     __bdk_csr_fatal("AP_ICC_AP1R0_EL1", 0, 0, 0, 0, 0);
13574 }
13575 
13576 #define typedef_BDK_AP_ICC_AP1R0_EL1 bdk_ap_icc_ap1r0_el1_t
13577 #define bustype_BDK_AP_ICC_AP1R0_EL1 BDK_CSR_TYPE_SYSREG
13578 #define basename_BDK_AP_ICC_AP1R0_EL1 "AP_ICC_AP1R0_EL1"
13579 #define busnum_BDK_AP_ICC_AP1R0_EL1 0
13580 #define arguments_BDK_AP_ICC_AP1R0_EL1 -1,-1,-1,-1
13581 
13582 /**
13583  * Register (SYSREG) ap_icc_asgi1r_el1
13584  *
13585  * AP Interrupt Controller Alias Software Generated Interrupt Group 1 Register
13586  * Provides software the ability to generate group 1 SGIs for the
13587  *     other Security state.
13588  */
13589 union bdk_ap_icc_asgi1r_el1
13590 {
13591     uint64_t u;
13592     struct bdk_ap_icc_asgi1r_el1_s
13593     {
13594 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13595         uint64_t reserved_56_63        : 8;
13596         uint64_t aff3                  : 8;  /**< [ 55: 48](R/W) The affinity 3 value of the affinity path of the cluster for
13597                                                                      which SGI interrupts will be generated. */
13598         uint64_t reserved_41_47        : 7;
13599         uint64_t irm                   : 1;  /**< [ 40: 40](R/W) Interrupt Routing Mode. Determines how the generated
13600                                                                      interrupts should be distributed to processors. Possible
13601                                                                      values are:
13602                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
13603                                                                      list}. In this routing, a, b, and c are the values of fields
13604                                                                      Aff3, Aff2, and Aff1 respectively.
13605                                                                  1 = Interrupts routed to all processors in the system, excluding
13606                                                                      "self". */
13607         uint64_t aff2                  : 8;  /**< [ 39: 32](R/W) The affinity 2 value of the affinity path of the cluster for
13608                                                                      which SGI interrupts will be generated. */
13609         uint64_t reserved_28_31        : 4;
13610         uint64_t sgiid                 : 4;  /**< [ 27: 24](R/W) SGI Interrupt ID. */
13611         uint64_t aff1                  : 8;  /**< [ 23: 16](R/W) The affinity 1 value of the affinity path of the cluster for
13612                                                                      which SGI interrupts will be generated. */
13613         uint64_t targetlist            : 16; /**< [ 15:  0](R/W) Target List. The set of processors for which SGI interrupts
13614                                                                      will be generated. Each bit corresponds to the processor
13615                                                                      within a cluster with an Affinity 0 value equal to the bit
13616                                                                      number.
13617 
13618                                                                  If a bit is 1 and the bit does not correspond to a valid
13619                                                                      target processor, the bit must be ignored by the Distributor.
13620                                                                      In such cases, a Distributor may optionally generate an SError
13621                                                                      interrupt.
13622 
13623                                                                  This restricts distribution of SGIs to the first 16 processors
13624                                                                      of an affinity 1 cluster. */
13625 #else /* Word 0 - Little Endian */
13626         uint64_t targetlist            : 16; /**< [ 15:  0](R/W) Target List. The set of processors for which SGI interrupts
13627                                                                      will be generated. Each bit corresponds to the processor
13628                                                                      within a cluster with an Affinity 0 value equal to the bit
13629                                                                      number.
13630 
13631                                                                  If a bit is 1 and the bit does not correspond to a valid
13632                                                                      target processor, the bit must be ignored by the Distributor.
13633                                                                      In such cases, a Distributor may optionally generate an SError
13634                                                                      interrupt.
13635 
13636                                                                  This restricts distribution of SGIs to the first 16 processors
13637                                                                      of an affinity 1 cluster. */
13638         uint64_t aff1                  : 8;  /**< [ 23: 16](R/W) The affinity 1 value of the affinity path of the cluster for
13639                                                                      which SGI interrupts will be generated. */
13640         uint64_t sgiid                 : 4;  /**< [ 27: 24](R/W) SGI Interrupt ID. */
13641         uint64_t reserved_28_31        : 4;
13642         uint64_t aff2                  : 8;  /**< [ 39: 32](R/W) The affinity 2 value of the affinity path of the cluster for
13643                                                                      which SGI interrupts will be generated. */
13644         uint64_t irm                   : 1;  /**< [ 40: 40](R/W) Interrupt Routing Mode. Determines how the generated
13645                                                                      interrupts should be distributed to processors. Possible
13646                                                                      values are:
13647                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
13648                                                                      list}. In this routing, a, b, and c are the values of fields
13649                                                                      Aff3, Aff2, and Aff1 respectively.
13650                                                                  1 = Interrupts routed to all processors in the system, excluding
13651                                                                      "self". */
13652         uint64_t reserved_41_47        : 7;
13653         uint64_t aff3                  : 8;  /**< [ 55: 48](R/W) The affinity 3 value of the affinity path of the cluster for
13654                                                                      which SGI interrupts will be generated. */
13655         uint64_t reserved_56_63        : 8;
13656 #endif /* Word 0 - End */
13657     } s;
13658     /* struct bdk_ap_icc_asgi1r_el1_s cn8; */
13659     struct bdk_ap_icc_asgi1r_el1_cn9
13660     {
13661 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13662         uint64_t reserved_56_63        : 8;
13663         uint64_t aff3                  : 8;  /**< [ 55: 48](WO) The affinity 3 value of the affinity path of the cluster for
13664                                                                      which SGI interrupts will be generated. */
13665         uint64_t reserved_41_47        : 7;
13666         uint64_t irm                   : 1;  /**< [ 40: 40](WO) Interrupt Routing Mode. Determines how the generated
13667                                                                      interrupts should be distributed to processors.
13668                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
13669                                                                      list}. In this routing, a, b, and c are the values of fields
13670                                                                      Aff3, Aff2, and Aff1 respectively.
13671                                                                  1 = Interrupts routed to all processors in the system, excluding
13672                                                                      self. */
13673         uint64_t aff2                  : 8;  /**< [ 39: 32](WO) The affinity 2 value of the affinity path of the cluster for
13674                                                                      which SGI interrupts will be generated. */
13675         uint64_t reserved_28_31        : 4;
13676         uint64_t sgiid                 : 4;  /**< [ 27: 24](WO) SGI Interrupt ID. */
13677         uint64_t aff1                  : 8;  /**< [ 23: 16](WO) The affinity 1 value of the affinity path of the cluster for
13678                                                                      which SGI interrupts will be generated. */
13679         uint64_t targetlist            : 16; /**< [ 15:  0](WO) Target List. The set of processors for which SGI interrupts
13680                                                                      will be generated. Each bit corresponds to the processor
13681                                                                      within a cluster with an Affinity 0 value equal to the bit
13682                                                                      number.
13683 
13684                                                                  If a bit is 1 and the bit does not correspond to a valid
13685                                                                      target processor, the bit must be ignored by the Distributor.
13686                                                                      In such cases, a Distributor may optionally generate an SError
13687                                                                      interrupt.
13688 
13689                                                                  This restricts distribution of SGIs to the first 16 processors
13690                                                                      of an affinity 1 cluster. */
13691 #else /* Word 0 - Little Endian */
13692         uint64_t targetlist            : 16; /**< [ 15:  0](WO) Target List. The set of processors for which SGI interrupts
13693                                                                      will be generated. Each bit corresponds to the processor
13694                                                                      within a cluster with an Affinity 0 value equal to the bit
13695                                                                      number.
13696 
13697                                                                  If a bit is 1 and the bit does not correspond to a valid
13698                                                                      target processor, the bit must be ignored by the Distributor.
13699                                                                      In such cases, a Distributor may optionally generate an SError
13700                                                                      interrupt.
13701 
13702                                                                  This restricts distribution of SGIs to the first 16 processors
13703                                                                      of an affinity 1 cluster. */
13704         uint64_t aff1                  : 8;  /**< [ 23: 16](WO) The affinity 1 value of the affinity path of the cluster for
13705                                                                      which SGI interrupts will be generated. */
13706         uint64_t sgiid                 : 4;  /**< [ 27: 24](WO) SGI Interrupt ID. */
13707         uint64_t reserved_28_31        : 4;
13708         uint64_t aff2                  : 8;  /**< [ 39: 32](WO) The affinity 2 value of the affinity path of the cluster for
13709                                                                      which SGI interrupts will be generated. */
13710         uint64_t irm                   : 1;  /**< [ 40: 40](WO) Interrupt Routing Mode. Determines how the generated
13711                                                                      interrupts should be distributed to processors.
13712                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
13713                                                                      list}. In this routing, a, b, and c are the values of fields
13714                                                                      Aff3, Aff2, and Aff1 respectively.
13715                                                                  1 = Interrupts routed to all processors in the system, excluding
13716                                                                      self. */
13717         uint64_t reserved_41_47        : 7;
13718         uint64_t aff3                  : 8;  /**< [ 55: 48](WO) The affinity 3 value of the affinity path of the cluster for
13719                                                                      which SGI interrupts will be generated. */
13720         uint64_t reserved_56_63        : 8;
13721 #endif /* Word 0 - End */
13722     } cn9;
13723 };
13724 typedef union bdk_ap_icc_asgi1r_el1 bdk_ap_icc_asgi1r_el1_t;
13725 
13726 #define BDK_AP_ICC_ASGI1R_EL1 BDK_AP_ICC_ASGI1R_EL1_FUNC()
13727 static inline uint64_t BDK_AP_ICC_ASGI1R_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_ASGI1R_EL1_FUNC(void)13728 static inline uint64_t BDK_AP_ICC_ASGI1R_EL1_FUNC(void)
13729 {
13730     return 0x3000c0b0600ll;
13731 }
13732 
13733 #define typedef_BDK_AP_ICC_ASGI1R_EL1 bdk_ap_icc_asgi1r_el1_t
13734 #define bustype_BDK_AP_ICC_ASGI1R_EL1 BDK_CSR_TYPE_SYSREG
13735 #define basename_BDK_AP_ICC_ASGI1R_EL1 "AP_ICC_ASGI1R_EL1"
13736 #define busnum_BDK_AP_ICC_ASGI1R_EL1 0
13737 #define arguments_BDK_AP_ICC_ASGI1R_EL1 -1,-1,-1,-1
13738 
13739 /**
13740  * Register (SYSREG) ap_icc_bpr0_el1
13741  *
13742  * AP Interrupt Controller Binary Point Register 0
13743  * Defines the point at which the priority value fields split
13744  *     into two parts, the group priority field and the subpriority
13745  *     field. The group priority field is used to determine interrupt
13746  *     preemption.
13747  */
13748 union bdk_ap_icc_bpr0_el1
13749 {
13750     uint32_t u;
13751     struct bdk_ap_icc_bpr0_el1_s
13752     {
13753 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13754         uint32_t reserved_3_31         : 29;
13755         uint32_t binarypoint           : 3;  /**< [  2:  0](R/W) The value of this field controls how the 8-bit interrupt
13756                                                                      priority field is split into a group priority field, used to
13757                                                                      determine interrupt preemption, and a subpriority field. This
13758                                                                      is done as follows:
13759 
13760                                                                  \<pre\>
13761                                                                  Binary point value  Group priority field    Subpriority field       Field with binary
13762                                                                  point
13763                                                                  0   [7:1]   [0]     ggggggg.s
13764                                                                  1   [7:2]   [1:0]   gggggg.ss
13765                                                                  2   [7:3]   [2:0]   ggggg.sss
13766                                                                  3   [7:4]   [3:0]   gggg.ssss
13767                                                                  4   [7:5]   [4:0]   ggg.sssss
13768                                                                  5   [7:6]   [5:0]   gg.ssssss
13769                                                                  6   [7]     [6:0]   g.sssssss
13770                                                                  7   No preemption   [7:0]   .ssssssss
13771                                                                  \</pre\> */
13772 #else /* Word 0 - Little Endian */
13773         uint32_t binarypoint           : 3;  /**< [  2:  0](R/W) The value of this field controls how the 8-bit interrupt
13774                                                                      priority field is split into a group priority field, used to
13775                                                                      determine interrupt preemption, and a subpriority field. This
13776                                                                      is done as follows:
13777 
13778                                                                  \<pre\>
13779                                                                  Binary point value  Group priority field    Subpriority field       Field with binary
13780                                                                  point
13781                                                                  0   [7:1]   [0]     ggggggg.s
13782                                                                  1   [7:2]   [1:0]   gggggg.ss
13783                                                                  2   [7:3]   [2:0]   ggggg.sss
13784                                                                  3   [7:4]   [3:0]   gggg.ssss
13785                                                                  4   [7:5]   [4:0]   ggg.sssss
13786                                                                  5   [7:6]   [5:0]   gg.ssssss
13787                                                                  6   [7]     [6:0]   g.sssssss
13788                                                                  7   No preemption   [7:0]   .ssssssss
13789                                                                  \</pre\> */
13790         uint32_t reserved_3_31         : 29;
13791 #endif /* Word 0 - End */
13792     } s;
13793     /* struct bdk_ap_icc_bpr0_el1_s cn; */
13794 };
13795 typedef union bdk_ap_icc_bpr0_el1 bdk_ap_icc_bpr0_el1_t;
13796 
13797 #define BDK_AP_ICC_BPR0_EL1 BDK_AP_ICC_BPR0_EL1_FUNC()
13798 static inline uint64_t BDK_AP_ICC_BPR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_BPR0_EL1_FUNC(void)13799 static inline uint64_t BDK_AP_ICC_BPR0_EL1_FUNC(void)
13800 {
13801     return 0x3000c080300ll;
13802 }
13803 
13804 #define typedef_BDK_AP_ICC_BPR0_EL1 bdk_ap_icc_bpr0_el1_t
13805 #define bustype_BDK_AP_ICC_BPR0_EL1 BDK_CSR_TYPE_SYSREG
13806 #define basename_BDK_AP_ICC_BPR0_EL1 "AP_ICC_BPR0_EL1"
13807 #define busnum_BDK_AP_ICC_BPR0_EL1 0
13808 #define arguments_BDK_AP_ICC_BPR0_EL1 -1,-1,-1,-1
13809 
13810 /**
13811  * Register (SYSREG) ap_icc_bpr1_el1
13812  *
13813  * AP Interrupt Controller Binary Point Register 1
13814  * Defines the point at which the priority value fields split
13815  *     into two parts, the group priority field and the subpriority
13816  *     field. The group priority field is used to determine Group 1
13817  *     interrupt preemption.
13818  */
13819 union bdk_ap_icc_bpr1_el1
13820 {
13821     uint32_t u;
13822     struct bdk_ap_icc_bpr1_el1_s
13823     {
13824 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13825         uint32_t reserved_3_31         : 29;
13826         uint32_t binarypoint           : 3;  /**< [  2:  0](R/W) The value of this field controls how the 8-bit interrupt
13827                                                                      priority field is split into a group priority field, used to
13828                                                                      determine interrupt preemption, and a subpriority field. This
13829                                                                      is done as follows:
13830                                                                  \<pre\>
13831                                                                  Binary point value  Group priority field    Subpriority field       Field with binary
13832                                                                  point
13833                                                                  0   [7:1]   [0]     ggggggg.s
13834                                                                  1   [7:2]   [1:0]   gggggg.ss
13835                                                                  2   [7:3]   [2:0]   ggggg.sss
13836                                                                  3   [7:4]   [3:0]   gggg.ssss
13837                                                                  4   [7:5]   [4:0]   ggg.sssss
13838                                                                  5   [7:6]   [5:0]   gg.ssssss
13839                                                                  6   [7]     [6:0]   g.sssssss
13840                                                                  7   No preemption   [7:0]   .ssssssss
13841                                                                  \</pre\> */
13842 #else /* Word 0 - Little Endian */
13843         uint32_t binarypoint           : 3;  /**< [  2:  0](R/W) The value of this field controls how the 8-bit interrupt
13844                                                                      priority field is split into a group priority field, used to
13845                                                                      determine interrupt preemption, and a subpriority field. This
13846                                                                      is done as follows:
13847                                                                  \<pre\>
13848                                                                  Binary point value  Group priority field    Subpriority field       Field with binary
13849                                                                  point
13850                                                                  0   [7:1]   [0]     ggggggg.s
13851                                                                  1   [7:2]   [1:0]   gggggg.ss
13852                                                                  2   [7:3]   [2:0]   ggggg.sss
13853                                                                  3   [7:4]   [3:0]   gggg.ssss
13854                                                                  4   [7:5]   [4:0]   ggg.sssss
13855                                                                  5   [7:6]   [5:0]   gg.ssssss
13856                                                                  6   [7]     [6:0]   g.sssssss
13857                                                                  7   No preemption   [7:0]   .ssssssss
13858                                                                  \</pre\> */
13859         uint32_t reserved_3_31         : 29;
13860 #endif /* Word 0 - End */
13861     } s;
13862     /* struct bdk_ap_icc_bpr1_el1_s cn; */
13863 };
13864 typedef union bdk_ap_icc_bpr1_el1 bdk_ap_icc_bpr1_el1_t;
13865 
13866 #define BDK_AP_ICC_BPR1_EL1 BDK_AP_ICC_BPR1_EL1_FUNC()
13867 static inline uint64_t BDK_AP_ICC_BPR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_BPR1_EL1_FUNC(void)13868 static inline uint64_t BDK_AP_ICC_BPR1_EL1_FUNC(void)
13869 {
13870     return 0x3000c0c0300ll;
13871 }
13872 
13873 #define typedef_BDK_AP_ICC_BPR1_EL1 bdk_ap_icc_bpr1_el1_t
13874 #define bustype_BDK_AP_ICC_BPR1_EL1 BDK_CSR_TYPE_SYSREG
13875 #define basename_BDK_AP_ICC_BPR1_EL1 "AP_ICC_BPR1_EL1"
13876 #define busnum_BDK_AP_ICC_BPR1_EL1 0
13877 #define arguments_BDK_AP_ICC_BPR1_EL1 -1,-1,-1,-1
13878 
13879 /**
13880  * Register (SYSREG) ap_icc_ctlr_el1
13881  *
13882  * AP Interrupt Controller Control EL1 Register
13883  * Controls aspects of the behaviour of the GIC CPU interface and
13884  *     provides information about the features implemented.
13885  */
13886 union bdk_ap_icc_ctlr_el1
13887 {
13888     uint32_t u;
13889     struct bdk_ap_icc_ctlr_el1_s
13890     {
13891 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13892         uint32_t reserved_16_31        : 16;
13893         uint32_t a3v                   : 1;  /**< [ 15: 15](RO) Affinity 3 Valid. Read-only and writes are ignored. Possible
13894                                                                      values are:
13895                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[A3V].
13896                                                                  0 = The CPU interface logic only supports zero values of Affinity
13897                                                                      3 in SGI generation system registers.
13898                                                                  1 = The CPU interface logic supports nonzero values of Affinity 3
13899                                                                      in SGI generation system registers. */
13900         uint32_t seis                  : 1;  /**< [ 14: 14](RO) SEI Support. Read-only and writes are ignored. Indicates
13901                                                                      whether the CPU interface supports local generation of SEIs:
13902                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[SEIS].
13903                                                                  0 = The CPU interface logic does not support local generation of
13904                                                                      SEIs by the CPU interface.
13905                                                                  1 = The CPU interface logic supports local generation of SEIs by
13906                                                                      the CPU interface. */
13907         uint32_t idbits                : 3;  /**< [ 13: 11](RO) Identifier bits. Read-only and writes are ignored. The number
13908                                                                      of physical interrupt identifier bits supported:
13909                                                                  All other values are reserved.
13910                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[IDBITS].
13911                                                                  0x0 = 16 bits.
13912                                                                  0x1 = 24 bits. */
13913         uint32_t pribits               : 3;  /**< [ 10:  8](RO) Priority bits. Read-only and writes are ignored. The number of
13914                                                                      priority bits implemented, minus one.
13915                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[PRI] bits. */
13916         uint32_t reserved_7            : 1;
13917         uint32_t pmhe                  : 1;  /**< [  6:  6](R/W) Priority Mask Hint Enable.
13918                                                                  If EL3 is present and GICD_CTLR[DS] == 0, this bit is a read-
13919                                                                      only alias of AP_ICC_CTLR_EL3[PMHE].
13920                                                                  If EL3 is present and GICD_CTLR[DS] == 1, this bit is writable
13921                                                                      at EL1 and EL2. */
13922         uint32_t reserved_2_5          : 4;
13923         uint32_t eoimode               : 1;  /**< [  1:  1](R/W) Alias of AP_ICC_CTLR_EL3[EOI]mode_EL1{S,NS} as appropriate to the
13924                                                                      current Security state.
13925                                                                  Virtual accesses modify AP_ICH_VMCR_EL2[VEOIM]. */
13926         uint32_t cbpr                  : 1;  /**< [  0:  0](R/W) Common Binary Point Register.
13927                                                                  If EL3 is present and GICD_CTLR[DS] == 0, this bit is a read-
13928                                                                      only alias of AP_ICC_CTLR_EL3[CBPR]_EL1{S,NS} as appropriate.
13929                                                                  If EL3 is not present, this field resets to zero.
13930                                                                  If EL3 is present and GICD_CTLR[DS] == 1, this bit is writable
13931                                                                      at EL1 and EL2.
13932                                                                  Virtual accesses modify AP_ICH_VMCR_EL2[VCBPR]. An access is
13933                                                                      virtual when accessed at nonsecure EL1 and either of FIQ or
13934                                                                      IRQ has been virtualized.  That is, when (AP_SCR_EL3[NS] == 1 &&
13935                                                                      (AP_HCR_EL2[FMO] == 1 || AP_HCR_EL2[IMO] == 1)). */
13936 #else /* Word 0 - Little Endian */
13937         uint32_t cbpr                  : 1;  /**< [  0:  0](R/W) Common Binary Point Register.
13938                                                                  If EL3 is present and GICD_CTLR[DS] == 0, this bit is a read-
13939                                                                      only alias of AP_ICC_CTLR_EL3[CBPR]_EL1{S,NS} as appropriate.
13940                                                                  If EL3 is not present, this field resets to zero.
13941                                                                  If EL3 is present and GICD_CTLR[DS] == 1, this bit is writable
13942                                                                      at EL1 and EL2.
13943                                                                  Virtual accesses modify AP_ICH_VMCR_EL2[VCBPR]. An access is
13944                                                                      virtual when accessed at nonsecure EL1 and either of FIQ or
13945                                                                      IRQ has been virtualized.  That is, when (AP_SCR_EL3[NS] == 1 &&
13946                                                                      (AP_HCR_EL2[FMO] == 1 || AP_HCR_EL2[IMO] == 1)). */
13947         uint32_t eoimode               : 1;  /**< [  1:  1](R/W) Alias of AP_ICC_CTLR_EL3[EOI]mode_EL1{S,NS} as appropriate to the
13948                                                                      current Security state.
13949                                                                  Virtual accesses modify AP_ICH_VMCR_EL2[VEOIM]. */
13950         uint32_t reserved_2_5          : 4;
13951         uint32_t pmhe                  : 1;  /**< [  6:  6](R/W) Priority Mask Hint Enable.
13952                                                                  If EL3 is present and GICD_CTLR[DS] == 0, this bit is a read-
13953                                                                      only alias of AP_ICC_CTLR_EL3[PMHE].
13954                                                                  If EL3 is present and GICD_CTLR[DS] == 1, this bit is writable
13955                                                                      at EL1 and EL2. */
13956         uint32_t reserved_7            : 1;
13957         uint32_t pribits               : 3;  /**< [ 10:  8](RO) Priority bits. Read-only and writes are ignored. The number of
13958                                                                      priority bits implemented, minus one.
13959                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[PRI] bits. */
13960         uint32_t idbits                : 3;  /**< [ 13: 11](RO) Identifier bits. Read-only and writes are ignored. The number
13961                                                                      of physical interrupt identifier bits supported:
13962                                                                  All other values are reserved.
13963                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[IDBITS].
13964                                                                  0x0 = 16 bits.
13965                                                                  0x1 = 24 bits. */
13966         uint32_t seis                  : 1;  /**< [ 14: 14](RO) SEI Support. Read-only and writes are ignored. Indicates
13967                                                                      whether the CPU interface supports local generation of SEIs:
13968                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[SEIS].
13969                                                                  0 = The CPU interface logic does not support local generation of
13970                                                                      SEIs by the CPU interface.
13971                                                                  1 = The CPU interface logic supports local generation of SEIs by
13972                                                                      the CPU interface. */
13973         uint32_t a3v                   : 1;  /**< [ 15: 15](RO) Affinity 3 Valid. Read-only and writes are ignored. Possible
13974                                                                      values are:
13975                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[A3V].
13976                                                                  0 = The CPU interface logic only supports zero values of Affinity
13977                                                                      3 in SGI generation system registers.
13978                                                                  1 = The CPU interface logic supports nonzero values of Affinity 3
13979                                                                      in SGI generation system registers. */
13980         uint32_t reserved_16_31        : 16;
13981 #endif /* Word 0 - End */
13982     } s;
13983     /* struct bdk_ap_icc_ctlr_el1_s cn; */
13984 };
13985 typedef union bdk_ap_icc_ctlr_el1 bdk_ap_icc_ctlr_el1_t;
13986 
13987 #define BDK_AP_ICC_CTLR_EL1 BDK_AP_ICC_CTLR_EL1_FUNC()
13988 static inline uint64_t BDK_AP_ICC_CTLR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_CTLR_EL1_FUNC(void)13989 static inline uint64_t BDK_AP_ICC_CTLR_EL1_FUNC(void)
13990 {
13991     return 0x3000c0c0400ll;
13992 }
13993 
13994 #define typedef_BDK_AP_ICC_CTLR_EL1 bdk_ap_icc_ctlr_el1_t
13995 #define bustype_BDK_AP_ICC_CTLR_EL1 BDK_CSR_TYPE_SYSREG
13996 #define basename_BDK_AP_ICC_CTLR_EL1 "AP_ICC_CTLR_EL1"
13997 #define busnum_BDK_AP_ICC_CTLR_EL1 0
13998 #define arguments_BDK_AP_ICC_CTLR_EL1 -1,-1,-1,-1
13999 
14000 /**
14001  * Register (SYSREG) ap_icc_ctlr_el3
14002  *
14003  * AP Interrupt Controller Control EL3 Register
14004  * Controls aspects of the behaviour of the GIC CPU interface and
14005  *     provides information about the features implemented.
14006  */
14007 union bdk_ap_icc_ctlr_el3
14008 {
14009     uint32_t u;
14010     struct bdk_ap_icc_ctlr_el3_s
14011     {
14012 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14013         uint32_t reserved_16_31        : 16;
14014         uint32_t a3v                   : 1;  /**< [ 15: 15](RO) Affinity 3 Valid. Read-only and writes are ignored. Possible
14015                                                                      values are:
14016                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[A3V].
14017                                                                  0 = The CPU interface logic only supports zero values of Affinity
14018                                                                      3 in SGI generation system registers.
14019                                                                  1 = The CPU interface logic supports nonzero values of Affinity 3
14020                                                                      in SGI generation system registers. */
14021         uint32_t seis                  : 1;  /**< [ 14: 14](RO) SEI Support. Read-only and writes are ignored. Indicates
14022                                                                      whether the CPU interface supports generation of SEIs:
14023                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[SEIS].
14024                                                                  0 = The CPU interface logic does not support generation of SEIs.
14025                                                                  1 = The CPU interface logic supports generation of SEIs. */
14026         uint32_t idbits                : 3;  /**< [ 13: 11](RO) Identifier bits. Read-only and writes are ignored. The number
14027                                                                      of physical interrupt identifier bits supported:
14028                                                                  All other values are reserved.
14029                                                                  0x0 = 16 bits.
14030                                                                  0x1 = 24 bits. */
14031         uint32_t pribits               : 3;  /**< [ 10:  8](RO) Priority bits. Read-only and writes are ignored. The number of
14032                                                                      priority bits implemented, minus one. */
14033         uint32_t reserved_7            : 1;
14034         uint32_t pmhe                  : 1;  /**< [  6:  6](R/W) Priority Mask Hint Enable.
14035                                                                  When set, enables use of the PMR as a hint for interrupt
14036                                                                      distribution. */
14037         uint32_t rm                    : 1;  /**< [  5:  5](RO) Routing Modifier.  Note: In systems without EL3 or where the secure
14038                                                                  copy of AP_ICC_SRE_EL1 is RES1, this bit is RES0.
14039                                                                  This bit is used to modify the behaviour of
14040                                                                  AP_ICC_IAR0_EL1 and AP_ICC_IAR1_EL1 such that systems with legacy
14041                                                                  secure software may be supported correctly.
14042                                                                  0 = Secure Group 0 and nonsecure group 1 interrupts can be
14043                                                                      acknowleged and observed as the highest priority interrupt
14044                                                                      at EL3 in AArch64 or Monitor mode in AArch32.
14045                                                                  1 = Secure Group 0 and nonsecure group 1 interrupts cannot be
14046                                                                      acknowleged and observed as the highest priority interrupt
14047                                                                      at EL3 in AArch64 or Monitor mode in AArch32 but return
14048                                                                      special values. */
14049         uint32_t eoimode_el1ns         : 1;  /**< [  4:  4](R/W) EOI mode for interrupts handled at nonsecure EL1 and EL2. */
14050         uint32_t eoimode_el1s          : 1;  /**< [  3:  3](R/W) EOI mode for interrupts handled at secure EL1. */
14051         uint32_t eoimode_el3           : 1;  /**< [  2:  2](R/W) EOI mode for interrupts handled at EL3. */
14052         uint32_t cbpr_el1ns            : 1;  /**< [  1:  1](R/W) When set, nonsecure accesses to GICC_BPR and AP_ICC_BPR1_EL1
14053                                                                      access the state of AP_ICC_BPR0_EL1. AP_ICC_BPR0_EL1 is used to
14054                                                                      determine the preemption group for nonsecure group 1
14055                                                                      interrupts. */
14056         uint32_t cbpr_el1s             : 1;  /**< [  0:  0](R/W) When set, secure EL1 accesses to AP_ICC_BPR1_EL1 access the state
14057                                                                      of AP_ICC_BPR0_EL1. AP_ICC_BPR0_EL1 is used to determine the
14058                                                                      preemption group for Secure Group 1 interrupts. */
14059 #else /* Word 0 - Little Endian */
14060         uint32_t cbpr_el1s             : 1;  /**< [  0:  0](R/W) When set, secure EL1 accesses to AP_ICC_BPR1_EL1 access the state
14061                                                                      of AP_ICC_BPR0_EL1. AP_ICC_BPR0_EL1 is used to determine the
14062                                                                      preemption group for Secure Group 1 interrupts. */
14063         uint32_t cbpr_el1ns            : 1;  /**< [  1:  1](R/W) When set, nonsecure accesses to GICC_BPR and AP_ICC_BPR1_EL1
14064                                                                      access the state of AP_ICC_BPR0_EL1. AP_ICC_BPR0_EL1 is used to
14065                                                                      determine the preemption group for nonsecure group 1
14066                                                                      interrupts. */
14067         uint32_t eoimode_el3           : 1;  /**< [  2:  2](R/W) EOI mode for interrupts handled at EL3. */
14068         uint32_t eoimode_el1s          : 1;  /**< [  3:  3](R/W) EOI mode for interrupts handled at secure EL1. */
14069         uint32_t eoimode_el1ns         : 1;  /**< [  4:  4](R/W) EOI mode for interrupts handled at nonsecure EL1 and EL2. */
14070         uint32_t rm                    : 1;  /**< [  5:  5](RO) Routing Modifier.  Note: In systems without EL3 or where the secure
14071                                                                  copy of AP_ICC_SRE_EL1 is RES1, this bit is RES0.
14072                                                                  This bit is used to modify the behaviour of
14073                                                                  AP_ICC_IAR0_EL1 and AP_ICC_IAR1_EL1 such that systems with legacy
14074                                                                  secure software may be supported correctly.
14075                                                                  0 = Secure Group 0 and nonsecure group 1 interrupts can be
14076                                                                      acknowleged and observed as the highest priority interrupt
14077                                                                      at EL3 in AArch64 or Monitor mode in AArch32.
14078                                                                  1 = Secure Group 0 and nonsecure group 1 interrupts cannot be
14079                                                                      acknowleged and observed as the highest priority interrupt
14080                                                                      at EL3 in AArch64 or Monitor mode in AArch32 but return
14081                                                                      special values. */
14082         uint32_t pmhe                  : 1;  /**< [  6:  6](R/W) Priority Mask Hint Enable.
14083                                                                  When set, enables use of the PMR as a hint for interrupt
14084                                                                      distribution. */
14085         uint32_t reserved_7            : 1;
14086         uint32_t pribits               : 3;  /**< [ 10:  8](RO) Priority bits. Read-only and writes are ignored. The number of
14087                                                                      priority bits implemented, minus one. */
14088         uint32_t idbits                : 3;  /**< [ 13: 11](RO) Identifier bits. Read-only and writes are ignored. The number
14089                                                                      of physical interrupt identifier bits supported:
14090                                                                  All other values are reserved.
14091                                                                  0x0 = 16 bits.
14092                                                                  0x1 = 24 bits. */
14093         uint32_t seis                  : 1;  /**< [ 14: 14](RO) SEI Support. Read-only and writes are ignored. Indicates
14094                                                                      whether the CPU interface supports generation of SEIs:
14095                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[SEIS].
14096                                                                  0 = The CPU interface logic does not support generation of SEIs.
14097                                                                  1 = The CPU interface logic supports generation of SEIs. */
14098         uint32_t a3v                   : 1;  /**< [ 15: 15](RO) Affinity 3 Valid. Read-only and writes are ignored. Possible
14099                                                                      values are:
14100                                                                  Virtual accesses return the value from AP_ICH_VTR_EL2[A3V].
14101                                                                  0 = The CPU interface logic only supports zero values of Affinity
14102                                                                      3 in SGI generation system registers.
14103                                                                  1 = The CPU interface logic supports nonzero values of Affinity 3
14104                                                                      in SGI generation system registers. */
14105         uint32_t reserved_16_31        : 16;
14106 #endif /* Word 0 - End */
14107     } s;
14108     /* struct bdk_ap_icc_ctlr_el3_s cn; */
14109 };
14110 typedef union bdk_ap_icc_ctlr_el3 bdk_ap_icc_ctlr_el3_t;
14111 
14112 #define BDK_AP_ICC_CTLR_EL3 BDK_AP_ICC_CTLR_EL3_FUNC()
14113 static inline uint64_t BDK_AP_ICC_CTLR_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_CTLR_EL3_FUNC(void)14114 static inline uint64_t BDK_AP_ICC_CTLR_EL3_FUNC(void)
14115 {
14116     return 0x3060c0c0400ll;
14117 }
14118 
14119 #define typedef_BDK_AP_ICC_CTLR_EL3 bdk_ap_icc_ctlr_el3_t
14120 #define bustype_BDK_AP_ICC_CTLR_EL3 BDK_CSR_TYPE_SYSREG
14121 #define basename_BDK_AP_ICC_CTLR_EL3 "AP_ICC_CTLR_EL3"
14122 #define busnum_BDK_AP_ICC_CTLR_EL3 0
14123 #define arguments_BDK_AP_ICC_CTLR_EL3 -1,-1,-1,-1
14124 
14125 /**
14126  * Register (SYSREG) ap_icc_dir_el1
14127  *
14128  * AP Interrupt Controller Deactivate Interrupt Register
14129  * When interrupt priority drop is separated from interrupt
14130  *     deactivation, a write to this register deactivates the
14131  *     specified interrupt.
14132  */
14133 union bdk_ap_icc_dir_el1
14134 {
14135     uint32_t u;
14136     struct bdk_ap_icc_dir_el1_s
14137     {
14138 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14139         uint32_t reserved_24_31        : 8;
14140         uint32_t interruptid           : 24; /**< [ 23:  0](WO) The interrupt ID.
14141                                                                  This field has either 16 or 24 bits implemented. The number of
14142                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14143                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14144                                                                      [23:16] of this register are RES0. */
14145 #else /* Word 0 - Little Endian */
14146         uint32_t interruptid           : 24; /**< [ 23:  0](WO) The interrupt ID.
14147                                                                  This field has either 16 or 24 bits implemented. The number of
14148                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14149                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14150                                                                      [23:16] of this register are RES0. */
14151         uint32_t reserved_24_31        : 8;
14152 #endif /* Word 0 - End */
14153     } s;
14154     /* struct bdk_ap_icc_dir_el1_s cn; */
14155 };
14156 typedef union bdk_ap_icc_dir_el1 bdk_ap_icc_dir_el1_t;
14157 
14158 #define BDK_AP_ICC_DIR_EL1 BDK_AP_ICC_DIR_EL1_FUNC()
14159 static inline uint64_t BDK_AP_ICC_DIR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_DIR_EL1_FUNC(void)14160 static inline uint64_t BDK_AP_ICC_DIR_EL1_FUNC(void)
14161 {
14162     return 0x3000c0b0100ll;
14163 }
14164 
14165 #define typedef_BDK_AP_ICC_DIR_EL1 bdk_ap_icc_dir_el1_t
14166 #define bustype_BDK_AP_ICC_DIR_EL1 BDK_CSR_TYPE_SYSREG
14167 #define basename_BDK_AP_ICC_DIR_EL1 "AP_ICC_DIR_EL1"
14168 #define busnum_BDK_AP_ICC_DIR_EL1 0
14169 #define arguments_BDK_AP_ICC_DIR_EL1 -1,-1,-1,-1
14170 
14171 /**
14172  * Register (SYSREG) ap_icc_eoir0_el1
14173  *
14174  * AP Interrupt Controller End Of Interrupt Register 0
14175  * A processor writes to this register to inform the CPU
14176  *     interface that it has completed the processing of the
14177  *     specified interrupt.
14178  */
14179 union bdk_ap_icc_eoir0_el1
14180 {
14181     uint32_t u;
14182     struct bdk_ap_icc_eoir0_el1_s
14183     {
14184 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14185         uint32_t reserved_24_31        : 8;
14186         uint32_t intvector             : 24; /**< [ 23:  0](WO) The InterruptID value from the corresponding GICC_IAR access.
14187                                                                  This field has either 16 or 24 bits implemented. The number of
14188                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14189                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14190                                                                      [23:16] of this register are RES0. */
14191 #else /* Word 0 - Little Endian */
14192         uint32_t intvector             : 24; /**< [ 23:  0](WO) The InterruptID value from the corresponding GICC_IAR access.
14193                                                                  This field has either 16 or 24 bits implemented. The number of
14194                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14195                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14196                                                                      [23:16] of this register are RES0. */
14197         uint32_t reserved_24_31        : 8;
14198 #endif /* Word 0 - End */
14199     } s;
14200     /* struct bdk_ap_icc_eoir0_el1_s cn; */
14201 };
14202 typedef union bdk_ap_icc_eoir0_el1 bdk_ap_icc_eoir0_el1_t;
14203 
14204 #define BDK_AP_ICC_EOIR0_EL1 BDK_AP_ICC_EOIR0_EL1_FUNC()
14205 static inline uint64_t BDK_AP_ICC_EOIR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_EOIR0_EL1_FUNC(void)14206 static inline uint64_t BDK_AP_ICC_EOIR0_EL1_FUNC(void)
14207 {
14208     return 0x3000c080100ll;
14209 }
14210 
14211 #define typedef_BDK_AP_ICC_EOIR0_EL1 bdk_ap_icc_eoir0_el1_t
14212 #define bustype_BDK_AP_ICC_EOIR0_EL1 BDK_CSR_TYPE_SYSREG
14213 #define basename_BDK_AP_ICC_EOIR0_EL1 "AP_ICC_EOIR0_EL1"
14214 #define busnum_BDK_AP_ICC_EOIR0_EL1 0
14215 #define arguments_BDK_AP_ICC_EOIR0_EL1 -1,-1,-1,-1
14216 
14217 /**
14218  * Register (SYSREG) ap_icc_eoir1_el1
14219  *
14220  * AP Interrupt Controller End Of Interrupt Register 1
14221  * A processor writes to this register to inform the CPU
14222  *     interface that it has completed the processing of the
14223  *     specified Group 1 interrupt.
14224  */
14225 union bdk_ap_icc_eoir1_el1
14226 {
14227     uint32_t u;
14228     struct bdk_ap_icc_eoir1_el1_s
14229     {
14230 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14231         uint32_t reserved_24_31        : 8;
14232         uint32_t intvector             : 24; /**< [ 23:  0](WO) The InterruptID value from the corresponding GICC_IAR access.
14233                                                                  This field has either 16 or 24 bits implemented. The number of
14234                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14235                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14236                                                                      [23:16] of this register are RES0. */
14237 #else /* Word 0 - Little Endian */
14238         uint32_t intvector             : 24; /**< [ 23:  0](WO) The InterruptID value from the corresponding GICC_IAR access.
14239                                                                  This field has either 16 or 24 bits implemented. The number of
14240                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14241                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14242                                                                      [23:16] of this register are RES0. */
14243         uint32_t reserved_24_31        : 8;
14244 #endif /* Word 0 - End */
14245     } s;
14246     /* struct bdk_ap_icc_eoir1_el1_s cn; */
14247 };
14248 typedef union bdk_ap_icc_eoir1_el1 bdk_ap_icc_eoir1_el1_t;
14249 
14250 #define BDK_AP_ICC_EOIR1_EL1 BDK_AP_ICC_EOIR1_EL1_FUNC()
14251 static inline uint64_t BDK_AP_ICC_EOIR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_EOIR1_EL1_FUNC(void)14252 static inline uint64_t BDK_AP_ICC_EOIR1_EL1_FUNC(void)
14253 {
14254     return 0x3000c0c0100ll;
14255 }
14256 
14257 #define typedef_BDK_AP_ICC_EOIR1_EL1 bdk_ap_icc_eoir1_el1_t
14258 #define bustype_BDK_AP_ICC_EOIR1_EL1 BDK_CSR_TYPE_SYSREG
14259 #define basename_BDK_AP_ICC_EOIR1_EL1 "AP_ICC_EOIR1_EL1"
14260 #define busnum_BDK_AP_ICC_EOIR1_EL1 0
14261 #define arguments_BDK_AP_ICC_EOIR1_EL1 -1,-1,-1,-1
14262 
14263 /**
14264  * Register (SYSREG) ap_icc_hppir0_el1
14265  *
14266  * AP Interrupt Controller Highest Priority Pending Interrupt Register 0
14267  * Indicates the Interrupt ID, and processor ID if appropriate,
14268  *     of the highest priority pending interrupt on the CPU
14269  *     interface.
14270  */
14271 union bdk_ap_icc_hppir0_el1
14272 {
14273     uint32_t u;
14274     struct bdk_ap_icc_hppir0_el1_s
14275     {
14276 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14277         uint32_t reserved_24_31        : 8;
14278         uint32_t intvector             : 24; /**< [ 23:  0](RO) The interrupt ID of the highest priority pending interrupt.
14279                                                                  This field has either 16 or 24 bits implemented. The number of
14280                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14281                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14282                                                                      [23:16] of this register are RES0. */
14283 #else /* Word 0 - Little Endian */
14284         uint32_t intvector             : 24; /**< [ 23:  0](RO) The interrupt ID of the highest priority pending interrupt.
14285                                                                  This field has either 16 or 24 bits implemented. The number of
14286                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14287                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14288                                                                      [23:16] of this register are RES0. */
14289         uint32_t reserved_24_31        : 8;
14290 #endif /* Word 0 - End */
14291     } s;
14292     /* struct bdk_ap_icc_hppir0_el1_s cn; */
14293 };
14294 typedef union bdk_ap_icc_hppir0_el1 bdk_ap_icc_hppir0_el1_t;
14295 
14296 #define BDK_AP_ICC_HPPIR0_EL1 BDK_AP_ICC_HPPIR0_EL1_FUNC()
14297 static inline uint64_t BDK_AP_ICC_HPPIR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_HPPIR0_EL1_FUNC(void)14298 static inline uint64_t BDK_AP_ICC_HPPIR0_EL1_FUNC(void)
14299 {
14300     return 0x3000c080200ll;
14301 }
14302 
14303 #define typedef_BDK_AP_ICC_HPPIR0_EL1 bdk_ap_icc_hppir0_el1_t
14304 #define bustype_BDK_AP_ICC_HPPIR0_EL1 BDK_CSR_TYPE_SYSREG
14305 #define basename_BDK_AP_ICC_HPPIR0_EL1 "AP_ICC_HPPIR0_EL1"
14306 #define busnum_BDK_AP_ICC_HPPIR0_EL1 0
14307 #define arguments_BDK_AP_ICC_HPPIR0_EL1 -1,-1,-1,-1
14308 
14309 /**
14310  * Register (SYSREG) ap_icc_hppir1_el1
14311  *
14312  * AP Interrupt Controller Highest Priority Pending Interrupt Register 1
14313  * If the highest priority pending interrupt on the CPU interface
14314  *     is a Group 1 interrupt, returns the interrupt ID of that
14315  *     interrupt. Otherwise, returns a spurious interrupt ID of 1023.
14316  */
14317 union bdk_ap_icc_hppir1_el1
14318 {
14319     uint32_t u;
14320     struct bdk_ap_icc_hppir1_el1_s
14321     {
14322 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14323         uint32_t reserved_24_31        : 8;
14324         uint32_t intvector             : 24; /**< [ 23:  0](RO) The interrupt ID of the highest priority pending interrupt.
14325 
14326                                                                  This field has either 16 or 24 bits implemented. The number of
14327                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14328                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14329                                                                      [23:16] of this register are RES0. */
14330 #else /* Word 0 - Little Endian */
14331         uint32_t intvector             : 24; /**< [ 23:  0](RO) The interrupt ID of the highest priority pending interrupt.
14332 
14333                                                                  This field has either 16 or 24 bits implemented. The number of
14334                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14335                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14336                                                                      [23:16] of this register are RES0. */
14337         uint32_t reserved_24_31        : 8;
14338 #endif /* Word 0 - End */
14339     } s;
14340     /* struct bdk_ap_icc_hppir1_el1_s cn; */
14341 };
14342 typedef union bdk_ap_icc_hppir1_el1 bdk_ap_icc_hppir1_el1_t;
14343 
14344 #define BDK_AP_ICC_HPPIR1_EL1 BDK_AP_ICC_HPPIR1_EL1_FUNC()
14345 static inline uint64_t BDK_AP_ICC_HPPIR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_HPPIR1_EL1_FUNC(void)14346 static inline uint64_t BDK_AP_ICC_HPPIR1_EL1_FUNC(void)
14347 {
14348     return 0x3000c0c0200ll;
14349 }
14350 
14351 #define typedef_BDK_AP_ICC_HPPIR1_EL1 bdk_ap_icc_hppir1_el1_t
14352 #define bustype_BDK_AP_ICC_HPPIR1_EL1 BDK_CSR_TYPE_SYSREG
14353 #define basename_BDK_AP_ICC_HPPIR1_EL1 "AP_ICC_HPPIR1_EL1"
14354 #define busnum_BDK_AP_ICC_HPPIR1_EL1 0
14355 #define arguments_BDK_AP_ICC_HPPIR1_EL1 -1,-1,-1,-1
14356 
14357 /**
14358  * Register (SYSREG) ap_icc_iar0_el1
14359  *
14360  * AP Interrupt Controller Interrupt Acknowledge Register 0
14361  * The processor reads this register to obtain the interrupt ID
14362  *     of the signaled interrupt. This read acts as an acknowledge
14363  *     for the interrupt.
14364  */
14365 union bdk_ap_icc_iar0_el1
14366 {
14367     uint32_t u;
14368     struct bdk_ap_icc_iar0_el1_s
14369     {
14370 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14371         uint32_t reserved_24_31        : 8;
14372         uint32_t intvector             : 24; /**< [ 23:  0](RO) The ID of the signaled interrupt. IDs 1020 to 1023 are
14373                                                                      reserved and convey additional information such as spurious
14374                                                                      interrupts.
14375 
14376                                                                  This field has either 16 or 24 bits implemented. The number of
14377                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14378                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14379                                                                      [23:16] of this register are RES0. */
14380 #else /* Word 0 - Little Endian */
14381         uint32_t intvector             : 24; /**< [ 23:  0](RO) The ID of the signaled interrupt. IDs 1020 to 1023 are
14382                                                                      reserved and convey additional information such as spurious
14383                                                                      interrupts.
14384 
14385                                                                  This field has either 16 or 24 bits implemented. The number of
14386                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14387                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14388                                                                      [23:16] of this register are RES0. */
14389         uint32_t reserved_24_31        : 8;
14390 #endif /* Word 0 - End */
14391     } s;
14392     /* struct bdk_ap_icc_iar0_el1_s cn; */
14393 };
14394 typedef union bdk_ap_icc_iar0_el1 bdk_ap_icc_iar0_el1_t;
14395 
14396 #define BDK_AP_ICC_IAR0_EL1 BDK_AP_ICC_IAR0_EL1_FUNC()
14397 static inline uint64_t BDK_AP_ICC_IAR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_IAR0_EL1_FUNC(void)14398 static inline uint64_t BDK_AP_ICC_IAR0_EL1_FUNC(void)
14399 {
14400     return 0x3000c080000ll;
14401 }
14402 
14403 #define typedef_BDK_AP_ICC_IAR0_EL1 bdk_ap_icc_iar0_el1_t
14404 #define bustype_BDK_AP_ICC_IAR0_EL1 BDK_CSR_TYPE_SYSREG
14405 #define basename_BDK_AP_ICC_IAR0_EL1 "AP_ICC_IAR0_EL1"
14406 #define busnum_BDK_AP_ICC_IAR0_EL1 0
14407 #define arguments_BDK_AP_ICC_IAR0_EL1 -1,-1,-1,-1
14408 
14409 /**
14410  * Register (SYSREG) ap_icc_iar1_el1
14411  *
14412  * AP Interrupt Controller Interrupt Acknowledge Register 1
14413  * The processor reads this register to obtain the interrupt ID
14414  *     of the signaled Group 1 interrupt. This read acts as an
14415  *     acknowledge for the interrupt.
14416  */
14417 union bdk_ap_icc_iar1_el1
14418 {
14419     uint32_t u;
14420     struct bdk_ap_icc_iar1_el1_s
14421     {
14422 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14423         uint32_t reserved_24_31        : 8;
14424         uint32_t intvector             : 24; /**< [ 23:  0](RO) The ID of the signaled interrupt. IDs 1020 to 1023 are
14425                                                                      reserved and convey additional information such as spurious
14426                                                                      interrupts.
14427 
14428                                                                  This field has either 16 or 24 bits implemented. The number of
14429                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14430                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14431                                                                      [23:16] of this register are RES0. */
14432 #else /* Word 0 - Little Endian */
14433         uint32_t intvector             : 24; /**< [ 23:  0](RO) The ID of the signaled interrupt. IDs 1020 to 1023 are
14434                                                                      reserved and convey additional information such as spurious
14435                                                                      interrupts.
14436 
14437                                                                  This field has either 16 or 24 bits implemented. The number of
14438                                                                      implemented bits can be found in AP_ICC_CTLR_EL1[IDBITS] and
14439                                                                      AP_ICC_CTLR_EL3[IDBITS]. If only 16 bits are implemented, bits
14440                                                                      [23:16] of this register are RES0. */
14441         uint32_t reserved_24_31        : 8;
14442 #endif /* Word 0 - End */
14443     } s;
14444     /* struct bdk_ap_icc_iar1_el1_s cn; */
14445 };
14446 typedef union bdk_ap_icc_iar1_el1 bdk_ap_icc_iar1_el1_t;
14447 
14448 #define BDK_AP_ICC_IAR1_EL1 BDK_AP_ICC_IAR1_EL1_FUNC()
14449 static inline uint64_t BDK_AP_ICC_IAR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_IAR1_EL1_FUNC(void)14450 static inline uint64_t BDK_AP_ICC_IAR1_EL1_FUNC(void)
14451 {
14452     return 0x3000c0c0000ll;
14453 }
14454 
14455 #define typedef_BDK_AP_ICC_IAR1_EL1 bdk_ap_icc_iar1_el1_t
14456 #define bustype_BDK_AP_ICC_IAR1_EL1 BDK_CSR_TYPE_SYSREG
14457 #define basename_BDK_AP_ICC_IAR1_EL1 "AP_ICC_IAR1_EL1"
14458 #define busnum_BDK_AP_ICC_IAR1_EL1 0
14459 #define arguments_BDK_AP_ICC_IAR1_EL1 -1,-1,-1,-1
14460 
14461 /**
14462  * Register (SYSREG) ap_icc_igrpen0_el1
14463  *
14464  * AP Interrupt Controller Interrupt Group 0 Enable Register
14465  * Controls whether Group 0 interrupts are enabled or not.
14466  */
14467 union bdk_ap_icc_igrpen0_el1
14468 {
14469     uint32_t u;
14470     struct bdk_ap_icc_igrpen0_el1_s
14471     {
14472 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14473         uint32_t reserved_1_31         : 31;
14474         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables Group 0 interrupts.
14475                                                                  Virtual accesses to this register update AP_ICH_VMCR_EL2[VENG0].
14476                                                                  0 = Group 0 interrupts are disabled.
14477                                                                  1 = Group 0 interrupts are enabled. */
14478 #else /* Word 0 - Little Endian */
14479         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables Group 0 interrupts.
14480                                                                  Virtual accesses to this register update AP_ICH_VMCR_EL2[VENG0].
14481                                                                  0 = Group 0 interrupts are disabled.
14482                                                                  1 = Group 0 interrupts are enabled. */
14483         uint32_t reserved_1_31         : 31;
14484 #endif /* Word 0 - End */
14485     } s;
14486     /* struct bdk_ap_icc_igrpen0_el1_s cn; */
14487 };
14488 typedef union bdk_ap_icc_igrpen0_el1 bdk_ap_icc_igrpen0_el1_t;
14489 
14490 #define BDK_AP_ICC_IGRPEN0_EL1 BDK_AP_ICC_IGRPEN0_EL1_FUNC()
14491 static inline uint64_t BDK_AP_ICC_IGRPEN0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_IGRPEN0_EL1_FUNC(void)14492 static inline uint64_t BDK_AP_ICC_IGRPEN0_EL1_FUNC(void)
14493 {
14494     return 0x3000c0c0600ll;
14495 }
14496 
14497 #define typedef_BDK_AP_ICC_IGRPEN0_EL1 bdk_ap_icc_igrpen0_el1_t
14498 #define bustype_BDK_AP_ICC_IGRPEN0_EL1 BDK_CSR_TYPE_SYSREG
14499 #define basename_BDK_AP_ICC_IGRPEN0_EL1 "AP_ICC_IGRPEN0_EL1"
14500 #define busnum_BDK_AP_ICC_IGRPEN0_EL1 0
14501 #define arguments_BDK_AP_ICC_IGRPEN0_EL1 -1,-1,-1,-1
14502 
14503 /**
14504  * Register (SYSREG) ap_icc_igrpen1_el1
14505  *
14506  * AP Interrupt Controller Interrupt Group 1 Enable Register
14507  * Controls whether Group 1 interrupts are enabled for the
14508  *     current Security state.
14509  */
14510 union bdk_ap_icc_igrpen1_el1
14511 {
14512     uint32_t u;
14513     struct bdk_ap_icc_igrpen1_el1_s
14514     {
14515 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14516         uint32_t reserved_1_31         : 31;
14517         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables Group 1 interrupts for the current Security state.
14518                                                                  Virtual accesses to this register update AP_ICH_VMCR_EL2[VENG1].
14519                                                                  When this register is accessed at EL3, the copy of this
14520                                                                      register appropriate to the current setting of AP_SCR_EL3[NS] is
14521                                                                      accessed.
14522                                                                  0 = Group 1 interrupts are disabled for the current Security
14523                                                                      state.
14524                                                                  1 = Group 1 interrupts are enabled for the current Security state. */
14525 #else /* Word 0 - Little Endian */
14526         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables Group 1 interrupts for the current Security state.
14527                                                                  Virtual accesses to this register update AP_ICH_VMCR_EL2[VENG1].
14528                                                                  When this register is accessed at EL3, the copy of this
14529                                                                      register appropriate to the current setting of AP_SCR_EL3[NS] is
14530                                                                      accessed.
14531                                                                  0 = Group 1 interrupts are disabled for the current Security
14532                                                                      state.
14533                                                                  1 = Group 1 interrupts are enabled for the current Security state. */
14534         uint32_t reserved_1_31         : 31;
14535 #endif /* Word 0 - End */
14536     } s;
14537     /* struct bdk_ap_icc_igrpen1_el1_s cn; */
14538 };
14539 typedef union bdk_ap_icc_igrpen1_el1 bdk_ap_icc_igrpen1_el1_t;
14540 
14541 #define BDK_AP_ICC_IGRPEN1_EL1 BDK_AP_ICC_IGRPEN1_EL1_FUNC()
14542 static inline uint64_t BDK_AP_ICC_IGRPEN1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_IGRPEN1_EL1_FUNC(void)14543 static inline uint64_t BDK_AP_ICC_IGRPEN1_EL1_FUNC(void)
14544 {
14545     return 0x3000c0c0700ll;
14546 }
14547 
14548 #define typedef_BDK_AP_ICC_IGRPEN1_EL1 bdk_ap_icc_igrpen1_el1_t
14549 #define bustype_BDK_AP_ICC_IGRPEN1_EL1 BDK_CSR_TYPE_SYSREG
14550 #define basename_BDK_AP_ICC_IGRPEN1_EL1 "AP_ICC_IGRPEN1_EL1"
14551 #define busnum_BDK_AP_ICC_IGRPEN1_EL1 0
14552 #define arguments_BDK_AP_ICC_IGRPEN1_EL1 -1,-1,-1,-1
14553 
14554 /**
14555  * Register (SYSREG) ap_icc_igrpen1_el3
14556  *
14557  * AP Interrupt Controller Interrupt Group 1 Enable EL3 Register
14558  * Controls whether Group 1 interrupts are enabled or not.
14559  */
14560 union bdk_ap_icc_igrpen1_el3
14561 {
14562     uint32_t u;
14563     struct bdk_ap_icc_igrpen1_el3_s
14564     {
14565 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14566         uint32_t reserved_2_31         : 30;
14567         uint32_t enablegrp1s           : 1;  /**< [  1:  1](R/W) Enables Group 1 interrupts for the Secure state.
14568                                                                  0 = Group 1 interrupts are disabled for the Secure state.
14569                                                                  1 = Group 1 interrupts are enabled for the Secure state. */
14570         uint32_t enablegrp1ns          : 1;  /**< [  0:  0](R/W) Enables Group 1 interrupts for the nonsecure state.
14571                                                                  0 = Group 1 interrupts are disabled for the nonsecure state.
14572                                                                  1 = Group 1 interrupts are enabled for the nonsecure state. */
14573 #else /* Word 0 - Little Endian */
14574         uint32_t enablegrp1ns          : 1;  /**< [  0:  0](R/W) Enables Group 1 interrupts for the nonsecure state.
14575                                                                  0 = Group 1 interrupts are disabled for the nonsecure state.
14576                                                                  1 = Group 1 interrupts are enabled for the nonsecure state. */
14577         uint32_t enablegrp1s           : 1;  /**< [  1:  1](R/W) Enables Group 1 interrupts for the Secure state.
14578                                                                  0 = Group 1 interrupts are disabled for the Secure state.
14579                                                                  1 = Group 1 interrupts are enabled for the Secure state. */
14580         uint32_t reserved_2_31         : 30;
14581 #endif /* Word 0 - End */
14582     } s;
14583     /* struct bdk_ap_icc_igrpen1_el3_s cn; */
14584 };
14585 typedef union bdk_ap_icc_igrpen1_el3 bdk_ap_icc_igrpen1_el3_t;
14586 
14587 #define BDK_AP_ICC_IGRPEN1_EL3 BDK_AP_ICC_IGRPEN1_EL3_FUNC()
14588 static inline uint64_t BDK_AP_ICC_IGRPEN1_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_IGRPEN1_EL3_FUNC(void)14589 static inline uint64_t BDK_AP_ICC_IGRPEN1_EL3_FUNC(void)
14590 {
14591     return 0x3060c0c0700ll;
14592 }
14593 
14594 #define typedef_BDK_AP_ICC_IGRPEN1_EL3 bdk_ap_icc_igrpen1_el3_t
14595 #define bustype_BDK_AP_ICC_IGRPEN1_EL3 BDK_CSR_TYPE_SYSREG
14596 #define basename_BDK_AP_ICC_IGRPEN1_EL3 "AP_ICC_IGRPEN1_EL3"
14597 #define busnum_BDK_AP_ICC_IGRPEN1_EL3 0
14598 #define arguments_BDK_AP_ICC_IGRPEN1_EL3 -1,-1,-1,-1
14599 
14600 /**
14601  * Register (SYSREG) ap_icc_pmr_el1
14602  *
14603  * AP Interrupt Controller Interrupt Priority Mask Register
14604  * Provides an interrupt priority filter. Only interrupts with
14605  *     higher priority than the value in this register are signaled
14606  *     to the processor.
14607  */
14608 union bdk_ap_icc_pmr_el1
14609 {
14610     uint32_t u;
14611     struct bdk_ap_icc_pmr_el1_s
14612     {
14613 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14614         uint32_t reserved_8_31         : 24;
14615         uint32_t pri                   : 8;  /**< [  7:  0](R/W) The priority mask level for the CPU interface. If the priority
14616                                                                      of an interrupt is higher than the value indicated by this
14617                                                                      field, the interface signals the interrupt to the processor.
14618 
14619                                                                  If the GIC supports fewer than 256 priority levels then some
14620                                                                      bits are RAZ/WI, as follows:
14621                                                                  - 128 supported levels: Bit [0] = 0.
14622                                                                  - 64 supported levels: Bits [1:0] =0b00
14623                                                                  - 32 supported levels: Bits [2:0] =0b000
14624                                                                  - 16 supported levels: Bits [3:0] =0b0000
14625 
14626                                                                  The possible priority field values are as follows:
14627 
14628                                                                  \<pre\>
14629                                                                  Implemented priority bits
14630                                                                           Possible priority field values
14631                                                                                      Number of priority levels
14632                                                                  [7:0]       0x000xFF        256
14633                                                                  [7:1]       0x000xFE        128
14634                                                                  [7:2]       0x000xFC        64
14635                                                                  [7:3]       0x000xF8        32
14636                                                                  [7:4]       0x000xF0        16
14637                                                                  \</pre\> */
14638 #else /* Word 0 - Little Endian */
14639         uint32_t pri                   : 8;  /**< [  7:  0](R/W) The priority mask level for the CPU interface. If the priority
14640                                                                      of an interrupt is higher than the value indicated by this
14641                                                                      field, the interface signals the interrupt to the processor.
14642 
14643                                                                  If the GIC supports fewer than 256 priority levels then some
14644                                                                      bits are RAZ/WI, as follows:
14645                                                                  - 128 supported levels: Bit [0] = 0.
14646                                                                  - 64 supported levels: Bits [1:0] =0b00
14647                                                                  - 32 supported levels: Bits [2:0] =0b000
14648                                                                  - 16 supported levels: Bits [3:0] =0b0000
14649 
14650                                                                  The possible priority field values are as follows:
14651 
14652                                                                  \<pre\>
14653                                                                  Implemented priority bits
14654                                                                           Possible priority field values
14655                                                                                      Number of priority levels
14656                                                                  [7:0]       0x000xFF        256
14657                                                                  [7:1]       0x000xFE        128
14658                                                                  [7:2]       0x000xFC        64
14659                                                                  [7:3]       0x000xF8        32
14660                                                                  [7:4]       0x000xF0        16
14661                                                                  \</pre\> */
14662         uint32_t reserved_8_31         : 24;
14663 #endif /* Word 0 - End */
14664     } s;
14665     /* struct bdk_ap_icc_pmr_el1_s cn; */
14666 };
14667 typedef union bdk_ap_icc_pmr_el1 bdk_ap_icc_pmr_el1_t;
14668 
14669 #define BDK_AP_ICC_PMR_EL1 BDK_AP_ICC_PMR_EL1_FUNC()
14670 static inline uint64_t BDK_AP_ICC_PMR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_PMR_EL1_FUNC(void)14671 static inline uint64_t BDK_AP_ICC_PMR_EL1_FUNC(void)
14672 {
14673     return 0x30004060000ll;
14674 }
14675 
14676 #define typedef_BDK_AP_ICC_PMR_EL1 bdk_ap_icc_pmr_el1_t
14677 #define bustype_BDK_AP_ICC_PMR_EL1 BDK_CSR_TYPE_SYSREG
14678 #define basename_BDK_AP_ICC_PMR_EL1 "AP_ICC_PMR_EL1"
14679 #define busnum_BDK_AP_ICC_PMR_EL1 0
14680 #define arguments_BDK_AP_ICC_PMR_EL1 -1,-1,-1,-1
14681 
14682 /**
14683  * Register (SYSREG) ap_icc_rpr_el1
14684  *
14685  * AP Interrupt Controller Running Priority Register
14686  * Indicates the Running priority of the CPU interface.
14687  */
14688 union bdk_ap_icc_rpr_el1
14689 {
14690     uint32_t u;
14691     struct bdk_ap_icc_rpr_el1_s
14692     {
14693 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14694         uint32_t reserved_8_31         : 24;
14695         uint32_t pri                   : 8;  /**< [  7:  0](R/W) The current running priority on the CPU interface. This is the
14696                                                                      priority of the current active interrupt. */
14697 #else /* Word 0 - Little Endian */
14698         uint32_t pri                   : 8;  /**< [  7:  0](R/W) The current running priority on the CPU interface. This is the
14699                                                                      priority of the current active interrupt. */
14700         uint32_t reserved_8_31         : 24;
14701 #endif /* Word 0 - End */
14702     } s;
14703     /* struct bdk_ap_icc_rpr_el1_s cn; */
14704 };
14705 typedef union bdk_ap_icc_rpr_el1 bdk_ap_icc_rpr_el1_t;
14706 
14707 #define BDK_AP_ICC_RPR_EL1 BDK_AP_ICC_RPR_EL1_FUNC()
14708 static inline uint64_t BDK_AP_ICC_RPR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_RPR_EL1_FUNC(void)14709 static inline uint64_t BDK_AP_ICC_RPR_EL1_FUNC(void)
14710 {
14711     return 0x3000c0b0300ll;
14712 }
14713 
14714 #define typedef_BDK_AP_ICC_RPR_EL1 bdk_ap_icc_rpr_el1_t
14715 #define bustype_BDK_AP_ICC_RPR_EL1 BDK_CSR_TYPE_SYSREG
14716 #define basename_BDK_AP_ICC_RPR_EL1 "AP_ICC_RPR_EL1"
14717 #define busnum_BDK_AP_ICC_RPR_EL1 0
14718 #define arguments_BDK_AP_ICC_RPR_EL1 -1,-1,-1,-1
14719 
14720 /**
14721  * Register (SYSREG) ap_icc_seien_el1
14722  *
14723  * AP Interrupt Controller System Error Interrupt Enable Register
14724  * Controls whether System Error Interrupts generated by bus
14725  *     message are enabled.
14726  */
14727 union bdk_ap_icc_seien_el1
14728 {
14729     uint32_t u;
14730     struct bdk_ap_icc_seien_el1_s
14731     {
14732 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14733         uint32_t reserved_1_31         : 31;
14734         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables System Error Interrupts generated by bus message.
14735                                                                  Virtual accesses to this register update AP_ICH_VMCR_EL2[VENSEI].
14736                                                                  0 = System Error Interrupts generated by bus message are disabled.
14737                                                                  1 = System Error Interrupts generated by bus message are enabled. */
14738 #else /* Word 0 - Little Endian */
14739         uint32_t enable                : 1;  /**< [  0:  0](R/W) Enables System Error Interrupts generated by bus message.
14740                                                                  Virtual accesses to this register update AP_ICH_VMCR_EL2[VENSEI].
14741                                                                  0 = System Error Interrupts generated by bus message are disabled.
14742                                                                  1 = System Error Interrupts generated by bus message are enabled. */
14743         uint32_t reserved_1_31         : 31;
14744 #endif /* Word 0 - End */
14745     } s;
14746     /* struct bdk_ap_icc_seien_el1_s cn; */
14747 };
14748 typedef union bdk_ap_icc_seien_el1 bdk_ap_icc_seien_el1_t;
14749 
14750 #define BDK_AP_ICC_SEIEN_EL1 BDK_AP_ICC_SEIEN_EL1_FUNC()
14751 static inline uint64_t BDK_AP_ICC_SEIEN_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_SEIEN_EL1_FUNC(void)14752 static inline uint64_t BDK_AP_ICC_SEIEN_EL1_FUNC(void)
14753 {
14754     if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX))
14755         return 0x3000c0d0000ll;
14756     __bdk_csr_fatal("AP_ICC_SEIEN_EL1", 0, 0, 0, 0, 0);
14757 }
14758 
14759 #define typedef_BDK_AP_ICC_SEIEN_EL1 bdk_ap_icc_seien_el1_t
14760 #define bustype_BDK_AP_ICC_SEIEN_EL1 BDK_CSR_TYPE_SYSREG
14761 #define basename_BDK_AP_ICC_SEIEN_EL1 "AP_ICC_SEIEN_EL1"
14762 #define busnum_BDK_AP_ICC_SEIEN_EL1 0
14763 #define arguments_BDK_AP_ICC_SEIEN_EL1 -1,-1,-1,-1
14764 
14765 /**
14766  * Register (SYSREG) ap_icc_sgi0r_el1
14767  *
14768  * AP Interrupt Controller Software Generated Interrupt group 0 Register
14769  * Provides software the ability to generate secure group 0 SGIs,
14770  *     including from the nonsecure state when permitted by
14771  *     GICR_NSACR.
14772  */
14773 union bdk_ap_icc_sgi0r_el1
14774 {
14775     uint64_t u;
14776     struct bdk_ap_icc_sgi0r_el1_s
14777     {
14778 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14779         uint64_t reserved_56_63        : 8;
14780         uint64_t aff3                  : 8;  /**< [ 55: 48](R/W) The affinity 3 value of the affinity path of the cluster for
14781                                                                      which SGI interrupts will be generated. */
14782         uint64_t reserved_41_47        : 7;
14783         uint64_t irm                   : 1;  /**< [ 40: 40](R/W) Interrupt Routing Mode. Determines how the generated
14784                                                                      interrupts should be distributed to processors. Possible
14785                                                                      values are:
14786                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
14787                                                                      list}. In this routing, a, b, and c are the values of fields
14788                                                                      Aff3, Aff2, and Aff1 respectively.
14789                                                                  1 = Interrupts routed to all processors in the system, excluding
14790                                                                      "self". */
14791         uint64_t aff2                  : 8;  /**< [ 39: 32](R/W) The affinity 2 value of the affinity path of the cluster for
14792                                                                      which SGI interrupts will be generated. */
14793         uint64_t reserved_28_31        : 4;
14794         uint64_t sgiid                 : 4;  /**< [ 27: 24](R/W) SGI Interrupt ID. */
14795         uint64_t aff1                  : 8;  /**< [ 23: 16](R/W) The affinity 1 value of the affinity path of the cluster for
14796                                                                      which SGI interrupts will be generated. */
14797         uint64_t targetlist            : 16; /**< [ 15:  0](R/W) Target List. The set of processors for which SGI interrupts
14798                                                                      will be generated. Each bit corresponds to the processor
14799                                                                      within a cluster with an Affinity 0 value equal to the bit
14800                                                                      number.
14801 
14802                                                                  If a bit is 1 and the bit does not correspond to a valid
14803                                                                      target processor, the bit must be ignored by the Distributor.
14804                                                                      In such cases, a Distributor may optionally generate an SError
14805                                                                      interrupt.
14806 
14807                                                                  This restricts distribution of SGIs to the first 16 processors
14808                                                                      of an affinity 1 cluster. */
14809 #else /* Word 0 - Little Endian */
14810         uint64_t targetlist            : 16; /**< [ 15:  0](R/W) Target List. The set of processors for which SGI interrupts
14811                                                                      will be generated. Each bit corresponds to the processor
14812                                                                      within a cluster with an Affinity 0 value equal to the bit
14813                                                                      number.
14814 
14815                                                                  If a bit is 1 and the bit does not correspond to a valid
14816                                                                      target processor, the bit must be ignored by the Distributor.
14817                                                                      In such cases, a Distributor may optionally generate an SError
14818                                                                      interrupt.
14819 
14820                                                                  This restricts distribution of SGIs to the first 16 processors
14821                                                                      of an affinity 1 cluster. */
14822         uint64_t aff1                  : 8;  /**< [ 23: 16](R/W) The affinity 1 value of the affinity path of the cluster for
14823                                                                      which SGI interrupts will be generated. */
14824         uint64_t sgiid                 : 4;  /**< [ 27: 24](R/W) SGI Interrupt ID. */
14825         uint64_t reserved_28_31        : 4;
14826         uint64_t aff2                  : 8;  /**< [ 39: 32](R/W) The affinity 2 value of the affinity path of the cluster for
14827                                                                      which SGI interrupts will be generated. */
14828         uint64_t irm                   : 1;  /**< [ 40: 40](R/W) Interrupt Routing Mode. Determines how the generated
14829                                                                      interrupts should be distributed to processors. Possible
14830                                                                      values are:
14831                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
14832                                                                      list}. In this routing, a, b, and c are the values of fields
14833                                                                      Aff3, Aff2, and Aff1 respectively.
14834                                                                  1 = Interrupts routed to all processors in the system, excluding
14835                                                                      "self". */
14836         uint64_t reserved_41_47        : 7;
14837         uint64_t aff3                  : 8;  /**< [ 55: 48](R/W) The affinity 3 value of the affinity path of the cluster for
14838                                                                      which SGI interrupts will be generated. */
14839         uint64_t reserved_56_63        : 8;
14840 #endif /* Word 0 - End */
14841     } s;
14842     /* struct bdk_ap_icc_sgi0r_el1_s cn8; */
14843     struct bdk_ap_icc_sgi0r_el1_cn9
14844     {
14845 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14846         uint64_t reserved_56_63        : 8;
14847         uint64_t aff3                  : 8;  /**< [ 55: 48](WO) The affinity 3 value of the affinity path of the cluster for
14848                                                                      which SGI interrupts will be generated. */
14849         uint64_t reserved_41_47        : 7;
14850         uint64_t irm                   : 1;  /**< [ 40: 40](WO) Interrupt Routing Mode. Determines how the generated
14851                                                                      interrupts should be distributed to processors. Possible
14852                                                                      values are:
14853                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
14854                                                                      list}. In this routing, a, b, and c are the values of fields
14855                                                                      Aff3, Aff2, and Aff1 respectively.
14856                                                                  1 = Interrupts routed to all processors in the system, excluding
14857                                                                      self. */
14858         uint64_t aff2                  : 8;  /**< [ 39: 32](WO) The affinity 2 value of the affinity path of the cluster for
14859                                                                      which SGI interrupts will be generated. */
14860         uint64_t reserved_28_31        : 4;
14861         uint64_t sgiid                 : 4;  /**< [ 27: 24](WO) SGI Interrupt ID. */
14862         uint64_t aff1                  : 8;  /**< [ 23: 16](WO) The affinity 1 value of the affinity path of the cluster for
14863                                                                      which SGI interrupts will be generated. */
14864         uint64_t targetlist            : 16; /**< [ 15:  0](WO) Target List. The set of processors for which SGI interrupts
14865                                                                      will be generated. Each bit corresponds to the processor
14866                                                                      within a cluster with an Affinity 0 value equal to the bit
14867                                                                      number.
14868 
14869                                                                  If a bit is 1 and the bit does not correspond to a valid
14870                                                                      target processor, the bit must be ignored by the Distributor.
14871                                                                      In such cases, a Distributor may optionally generate an SError
14872                                                                      interrupt.
14873 
14874                                                                  This restricts distribution of SGIs to the first 16 processors
14875                                                                      of an affinity 1 cluster. */
14876 #else /* Word 0 - Little Endian */
14877         uint64_t targetlist            : 16; /**< [ 15:  0](WO) Target List. The set of processors for which SGI interrupts
14878                                                                      will be generated. Each bit corresponds to the processor
14879                                                                      within a cluster with an Affinity 0 value equal to the bit
14880                                                                      number.
14881 
14882                                                                  If a bit is 1 and the bit does not correspond to a valid
14883                                                                      target processor, the bit must be ignored by the Distributor.
14884                                                                      In such cases, a Distributor may optionally generate an SError
14885                                                                      interrupt.
14886 
14887                                                                  This restricts distribution of SGIs to the first 16 processors
14888                                                                      of an affinity 1 cluster. */
14889         uint64_t aff1                  : 8;  /**< [ 23: 16](WO) The affinity 1 value of the affinity path of the cluster for
14890                                                                      which SGI interrupts will be generated. */
14891         uint64_t sgiid                 : 4;  /**< [ 27: 24](WO) SGI Interrupt ID. */
14892         uint64_t reserved_28_31        : 4;
14893         uint64_t aff2                  : 8;  /**< [ 39: 32](WO) The affinity 2 value of the affinity path of the cluster for
14894                                                                      which SGI interrupts will be generated. */
14895         uint64_t irm                   : 1;  /**< [ 40: 40](WO) Interrupt Routing Mode. Determines how the generated
14896                                                                      interrupts should be distributed to processors. Possible
14897                                                                      values are:
14898                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
14899                                                                      list}. In this routing, a, b, and c are the values of fields
14900                                                                      Aff3, Aff2, and Aff1 respectively.
14901                                                                  1 = Interrupts routed to all processors in the system, excluding
14902                                                                      self. */
14903         uint64_t reserved_41_47        : 7;
14904         uint64_t aff3                  : 8;  /**< [ 55: 48](WO) The affinity 3 value of the affinity path of the cluster for
14905                                                                      which SGI interrupts will be generated. */
14906         uint64_t reserved_56_63        : 8;
14907 #endif /* Word 0 - End */
14908     } cn9;
14909 };
14910 typedef union bdk_ap_icc_sgi0r_el1 bdk_ap_icc_sgi0r_el1_t;
14911 
14912 #define BDK_AP_ICC_SGI0R_EL1 BDK_AP_ICC_SGI0R_EL1_FUNC()
14913 static inline uint64_t BDK_AP_ICC_SGI0R_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_SGI0R_EL1_FUNC(void)14914 static inline uint64_t BDK_AP_ICC_SGI0R_EL1_FUNC(void)
14915 {
14916     return 0x3000c0b0700ll;
14917 }
14918 
14919 #define typedef_BDK_AP_ICC_SGI0R_EL1 bdk_ap_icc_sgi0r_el1_t
14920 #define bustype_BDK_AP_ICC_SGI0R_EL1 BDK_CSR_TYPE_SYSREG
14921 #define basename_BDK_AP_ICC_SGI0R_EL1 "AP_ICC_SGI0R_EL1"
14922 #define busnum_BDK_AP_ICC_SGI0R_EL1 0
14923 #define arguments_BDK_AP_ICC_SGI0R_EL1 -1,-1,-1,-1
14924 
14925 /**
14926  * Register (SYSREG) ap_icc_sgi1r_el1
14927  *
14928  * AP Interrupt Controller Software Generated Interrupt group 1 Register
14929  * Provides software the ability to generate group 1 SGIs for the
14930  *     current security state.
14931  */
14932 union bdk_ap_icc_sgi1r_el1
14933 {
14934     uint64_t u;
14935     struct bdk_ap_icc_sgi1r_el1_s
14936     {
14937 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14938         uint64_t reserved_56_63        : 8;
14939         uint64_t aff3                  : 8;  /**< [ 55: 48](R/W) The affinity 3 value of the affinity path of the cluster for
14940                                                                      which SGI interrupts will be generated. */
14941         uint64_t reserved_41_47        : 7;
14942         uint64_t irm                   : 1;  /**< [ 40: 40](R/W) Interrupt Routing Mode. Determines how the generated
14943                                                                      interrupts should be distributed to processors. Possible
14944                                                                      values are:
14945                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
14946                                                                      list}. In this routing, a, b, and c are the values of fields
14947                                                                      Aff3, Aff2, and Aff1 respectively.
14948                                                                  1 = Interrupts routed to all processors in the system, excluding
14949                                                                      "self". */
14950         uint64_t aff2                  : 8;  /**< [ 39: 32](R/W) The affinity 2 value of the affinity path of the cluster for
14951                                                                      which SGI interrupts will be generated. */
14952         uint64_t reserved_28_31        : 4;
14953         uint64_t sgiid                 : 4;  /**< [ 27: 24](R/W) SGI Interrupt ID. */
14954         uint64_t aff1                  : 8;  /**< [ 23: 16](R/W) The affinity 1 value of the affinity path of the cluster for
14955                                                                      which SGI interrupts will be generated. */
14956         uint64_t targetlist            : 16; /**< [ 15:  0](R/W) Target List. The set of processors for which SGI interrupts
14957                                                                      will be generated. Each bit corresponds to the processor
14958                                                                      within a cluster with an Affinity 0 value equal to the bit
14959                                                                      number.
14960                                                                  If a bit is 1 and the bit does not correspond to a valid
14961                                                                      target processor, the bit must be ignored by the Distributor.
14962                                                                      In such cases, a Distributor may optionally generate an SError
14963                                                                      interrupt.
14964                                                                  This restricts distribution of SGIs to the first 16 processors
14965                                                                      of an affinity 1 cluster. */
14966 #else /* Word 0 - Little Endian */
14967         uint64_t targetlist            : 16; /**< [ 15:  0](R/W) Target List. The set of processors for which SGI interrupts
14968                                                                      will be generated. Each bit corresponds to the processor
14969                                                                      within a cluster with an Affinity 0 value equal to the bit
14970                                                                      number.
14971                                                                  If a bit is 1 and the bit does not correspond to a valid
14972                                                                      target processor, the bit must be ignored by the Distributor.
14973                                                                      In such cases, a Distributor may optionally generate an SError
14974                                                                      interrupt.
14975                                                                  This restricts distribution of SGIs to the first 16 processors
14976                                                                      of an affinity 1 cluster. */
14977         uint64_t aff1                  : 8;  /**< [ 23: 16](R/W) The affinity 1 value of the affinity path of the cluster for
14978                                                                      which SGI interrupts will be generated. */
14979         uint64_t sgiid                 : 4;  /**< [ 27: 24](R/W) SGI Interrupt ID. */
14980         uint64_t reserved_28_31        : 4;
14981         uint64_t aff2                  : 8;  /**< [ 39: 32](R/W) The affinity 2 value of the affinity path of the cluster for
14982                                                                      which SGI interrupts will be generated. */
14983         uint64_t irm                   : 1;  /**< [ 40: 40](R/W) Interrupt Routing Mode. Determines how the generated
14984                                                                      interrupts should be distributed to processors. Possible
14985                                                                      values are:
14986                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
14987                                                                      list}. In this routing, a, b, and c are the values of fields
14988                                                                      Aff3, Aff2, and Aff1 respectively.
14989                                                                  1 = Interrupts routed to all processors in the system, excluding
14990                                                                      "self". */
14991         uint64_t reserved_41_47        : 7;
14992         uint64_t aff3                  : 8;  /**< [ 55: 48](R/W) The affinity 3 value of the affinity path of the cluster for
14993                                                                      which SGI interrupts will be generated. */
14994         uint64_t reserved_56_63        : 8;
14995 #endif /* Word 0 - End */
14996     } s;
14997     /* struct bdk_ap_icc_sgi1r_el1_s cn8; */
14998     struct bdk_ap_icc_sgi1r_el1_cn9
14999     {
15000 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15001         uint64_t reserved_56_63        : 8;
15002         uint64_t aff3                  : 8;  /**< [ 55: 48](WO) The affinity 3 value of the affinity path of the cluster for
15003                                                                      which SGI interrupts will be generated. */
15004         uint64_t reserved_41_47        : 7;
15005         uint64_t irm                   : 1;  /**< [ 40: 40](WO) Interrupt Routing Mode. Determines how the generated
15006                                                                      interrupts should be distributed to processors.
15007                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
15008                                                                      list}. In this routing, a, b, and c are the values of fields
15009                                                                      Aff3, Aff2, and Aff1 respectively.
15010                                                                  1 = Interrupts routed to all processors in the system, excluding
15011                                                                      self. */
15012         uint64_t aff2                  : 8;  /**< [ 39: 32](WO) The affinity 2 value of the affinity path of the cluster for
15013                                                                      which SGI interrupts will be generated. */
15014         uint64_t reserved_28_31        : 4;
15015         uint64_t sgiid                 : 4;  /**< [ 27: 24](WO) SGI Interrupt ID. */
15016         uint64_t aff1                  : 8;  /**< [ 23: 16](WO) The affinity 1 value of the affinity path of the cluster for
15017                                                                      which SGI interrupts will be generated. */
15018         uint64_t targetlist            : 16; /**< [ 15:  0](WO) Target List. The set of processors for which SGI interrupts
15019                                                                      will be generated. Each bit corresponds to the processor
15020                                                                      within a cluster with an Affinity 0 value equal to the bit
15021                                                                      number.
15022                                                                  If a bit is 1 and the bit does not correspond to a valid
15023                                                                      target processor, the bit must be ignored by the Distributor.
15024                                                                      In such cases, a Distributor may optionally generate an SError
15025                                                                      interrupt.
15026                                                                  This restricts distribution of SGIs to the first 16 processors
15027                                                                      of an affinity 1 cluster. */
15028 #else /* Word 0 - Little Endian */
15029         uint64_t targetlist            : 16; /**< [ 15:  0](WO) Target List. The set of processors for which SGI interrupts
15030                                                                      will be generated. Each bit corresponds to the processor
15031                                                                      within a cluster with an Affinity 0 value equal to the bit
15032                                                                      number.
15033                                                                  If a bit is 1 and the bit does not correspond to a valid
15034                                                                      target processor, the bit must be ignored by the Distributor.
15035                                                                      In such cases, a Distributor may optionally generate an SError
15036                                                                      interrupt.
15037                                                                  This restricts distribution of SGIs to the first 16 processors
15038                                                                      of an affinity 1 cluster. */
15039         uint64_t aff1                  : 8;  /**< [ 23: 16](WO) The affinity 1 value of the affinity path of the cluster for
15040                                                                      which SGI interrupts will be generated. */
15041         uint64_t sgiid                 : 4;  /**< [ 27: 24](WO) SGI Interrupt ID. */
15042         uint64_t reserved_28_31        : 4;
15043         uint64_t aff2                  : 8;  /**< [ 39: 32](WO) The affinity 2 value of the affinity path of the cluster for
15044                                                                      which SGI interrupts will be generated. */
15045         uint64_t irm                   : 1;  /**< [ 40: 40](WO) Interrupt Routing Mode. Determines how the generated
15046                                                                      interrupts should be distributed to processors.
15047                                                                  0 = Interrupts routed to the processors specified by a.b.c.{target
15048                                                                      list}. In this routing, a, b, and c are the values of fields
15049                                                                      Aff3, Aff2, and Aff1 respectively.
15050                                                                  1 = Interrupts routed to all processors in the system, excluding
15051                                                                      self. */
15052         uint64_t reserved_41_47        : 7;
15053         uint64_t aff3                  : 8;  /**< [ 55: 48](WO) The affinity 3 value of the affinity path of the cluster for
15054                                                                      which SGI interrupts will be generated. */
15055         uint64_t reserved_56_63        : 8;
15056 #endif /* Word 0 - End */
15057     } cn9;
15058 };
15059 typedef union bdk_ap_icc_sgi1r_el1 bdk_ap_icc_sgi1r_el1_t;
15060 
15061 #define BDK_AP_ICC_SGI1R_EL1 BDK_AP_ICC_SGI1R_EL1_FUNC()
15062 static inline uint64_t BDK_AP_ICC_SGI1R_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_SGI1R_EL1_FUNC(void)15063 static inline uint64_t BDK_AP_ICC_SGI1R_EL1_FUNC(void)
15064 {
15065     return 0x3000c0b0500ll;
15066 }
15067 
15068 #define typedef_BDK_AP_ICC_SGI1R_EL1 bdk_ap_icc_sgi1r_el1_t
15069 #define bustype_BDK_AP_ICC_SGI1R_EL1 BDK_CSR_TYPE_SYSREG
15070 #define basename_BDK_AP_ICC_SGI1R_EL1 "AP_ICC_SGI1R_EL1"
15071 #define busnum_BDK_AP_ICC_SGI1R_EL1 0
15072 #define arguments_BDK_AP_ICC_SGI1R_EL1 -1,-1,-1,-1
15073 
15074 /**
15075  * Register (SYSREG) ap_icc_sre_el1
15076  *
15077  * AP Interrupt Controller System Register Enable EL1 Register
15078  * Controls whether the system register interface or the memory
15079  *     mapped interface to the GIC CPU interface is used for EL0 and
15080  *     EL1.
15081  */
15082 union bdk_ap_icc_sre_el1
15083 {
15084     uint32_t u;
15085     struct bdk_ap_icc_sre_el1_s
15086     {
15087 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15088         uint32_t reserved_3_31         : 29;
15089         uint32_t dib                   : 1;  /**< [  2:  2](RO) Disable IRQ bypass.
15090                                                                  If EL3 is present, this field is a read-only alias of
15091                                                                      AP_ICC_SRE_EL3[DIB].
15092                                                                  If EL3 is not present and EL2 is present, this field is a
15093                                                                      read-only alias of AP_ICC_SRE_EL2[DIB]. */
15094         uint32_t dfb                   : 1;  /**< [  1:  1](RO) Disable FIQ bypass.
15095                                                                  If EL3 is present, this field is a read-only alias of
15096                                                                      AP_ICC_SRE_EL3[DFB].
15097                                                                  If EL3 is not present and EL2 is present, this field is a
15098                                                                      read-only alias of AP_ICC_SRE_EL2[DFB]. */
15099         uint32_t sre                   : 1;  /**< [  0:  0](RO) System Register Enable.
15100                                                                  Virtual accesses modify AP_ICH_VMCR_EL2[VSRE].
15101                                                                  0 = The memory mapped interface must be used. Access at EL1 to any
15102                                                                      ICC_* system register other than AP_ICC_SRE_EL1 results in an
15103                                                                      Undefined exception.
15104                                                                  1 = The system register interface for the current Security state
15105                                                                      is enabled. */
15106 #else /* Word 0 - Little Endian */
15107         uint32_t sre                   : 1;  /**< [  0:  0](RO) System Register Enable.
15108                                                                  Virtual accesses modify AP_ICH_VMCR_EL2[VSRE].
15109                                                                  0 = The memory mapped interface must be used. Access at EL1 to any
15110                                                                      ICC_* system register other than AP_ICC_SRE_EL1 results in an
15111                                                                      Undefined exception.
15112                                                                  1 = The system register interface for the current Security state
15113                                                                      is enabled. */
15114         uint32_t dfb                   : 1;  /**< [  1:  1](RO) Disable FIQ bypass.
15115                                                                  If EL3 is present, this field is a read-only alias of
15116                                                                      AP_ICC_SRE_EL3[DFB].
15117                                                                  If EL3 is not present and EL2 is present, this field is a
15118                                                                      read-only alias of AP_ICC_SRE_EL2[DFB]. */
15119         uint32_t dib                   : 1;  /**< [  2:  2](RO) Disable IRQ bypass.
15120                                                                  If EL3 is present, this field is a read-only alias of
15121                                                                      AP_ICC_SRE_EL3[DIB].
15122                                                                  If EL3 is not present and EL2 is present, this field is a
15123                                                                      read-only alias of AP_ICC_SRE_EL2[DIB]. */
15124         uint32_t reserved_3_31         : 29;
15125 #endif /* Word 0 - End */
15126     } s;
15127     /* struct bdk_ap_icc_sre_el1_s cn; */
15128 };
15129 typedef union bdk_ap_icc_sre_el1 bdk_ap_icc_sre_el1_t;
15130 
15131 #define BDK_AP_ICC_SRE_EL1 BDK_AP_ICC_SRE_EL1_FUNC()
15132 static inline uint64_t BDK_AP_ICC_SRE_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_SRE_EL1_FUNC(void)15133 static inline uint64_t BDK_AP_ICC_SRE_EL1_FUNC(void)
15134 {
15135     return 0x3000c0c0500ll;
15136 }
15137 
15138 #define typedef_BDK_AP_ICC_SRE_EL1 bdk_ap_icc_sre_el1_t
15139 #define bustype_BDK_AP_ICC_SRE_EL1 BDK_CSR_TYPE_SYSREG
15140 #define basename_BDK_AP_ICC_SRE_EL1 "AP_ICC_SRE_EL1"
15141 #define busnum_BDK_AP_ICC_SRE_EL1 0
15142 #define arguments_BDK_AP_ICC_SRE_EL1 -1,-1,-1,-1
15143 
15144 /**
15145  * Register (SYSREG) ap_icc_sre_el2
15146  *
15147  * AP Interrupt Controller System Register Enable EL2 Register
15148  * Controls whether the system register interface or the memory
15149  *     mapped interface to the GIC CPU interface is used for EL2.
15150  */
15151 union bdk_ap_icc_sre_el2
15152 {
15153     uint32_t u;
15154     struct bdk_ap_icc_sre_el2_s
15155     {
15156 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15157         uint32_t reserved_4_31         : 28;
15158         uint32_t enable                : 1;  /**< [  3:  3](R/W) Enable. Enables lower Exception level access to AP_ICC_SRE_EL1.
15159                                                                  0 = Nonsecure EL1 accesses to AP_ICC_SRE_EL1 trap to EL2.
15160                                                                  1 = Nonsecure EL1 accesses to AP_ICC_SRE_EL1 are permitted if EL3 is
15161                                                                      not present or AP_ICC_SRE_EL3[ENABLE] is 1, otherwise nonsecure
15162                                                                      EL1 accesses to AP_ICC_SRE_EL1 trap to EL3. */
15163         uint32_t dib                   : 1;  /**< [  2:  2](RO) Disable IRQ bypass.
15164                                                                  If EL3 is present and GICD_CTLR[DS] is 0, this field is a read-
15165                                                                      only alias of AP_ICC_SRE_EL3[DIB]. */
15166         uint32_t dfb                   : 1;  /**< [  1:  1](RO) Disable FIQ bypass.
15167                                                                  If EL3 is present and GICD_CTLR[DS] is 0, this field is a read-
15168                                                                      only alias of AP_ICC_SRE_EL3[DFB]. */
15169         uint32_t sre                   : 1;  /**< [  0:  0](RO) System Register Enable.
15170                                                                  0 = The memory mapped interface must be used. Access at EL2 to any
15171                                                                      ICH_* system register, or any EL1 or EL2 ICC_* register other
15172                                                                      than AP_ICC_SRE_EL1 or AP_ICC_SRE_EL2, results in an Undefined
15173                                                                      exception.
15174                                                                  1 = The system register interface to the ICH_* registers and the
15175                                                                      EL1 and EL2 ICC_* registers is enabled for EL2. */
15176 #else /* Word 0 - Little Endian */
15177         uint32_t sre                   : 1;  /**< [  0:  0](RO) System Register Enable.
15178                                                                  0 = The memory mapped interface must be used. Access at EL2 to any
15179                                                                      ICH_* system register, or any EL1 or EL2 ICC_* register other
15180                                                                      than AP_ICC_SRE_EL1 or AP_ICC_SRE_EL2, results in an Undefined
15181                                                                      exception.
15182                                                                  1 = The system register interface to the ICH_* registers and the
15183                                                                      EL1 and EL2 ICC_* registers is enabled for EL2. */
15184         uint32_t dfb                   : 1;  /**< [  1:  1](RO) Disable FIQ bypass.
15185                                                                  If EL3 is present and GICD_CTLR[DS] is 0, this field is a read-
15186                                                                      only alias of AP_ICC_SRE_EL3[DFB]. */
15187         uint32_t dib                   : 1;  /**< [  2:  2](RO) Disable IRQ bypass.
15188                                                                  If EL3 is present and GICD_CTLR[DS] is 0, this field is a read-
15189                                                                      only alias of AP_ICC_SRE_EL3[DIB]. */
15190         uint32_t enable                : 1;  /**< [  3:  3](R/W) Enable. Enables lower Exception level access to AP_ICC_SRE_EL1.
15191                                                                  0 = Nonsecure EL1 accesses to AP_ICC_SRE_EL1 trap to EL2.
15192                                                                  1 = Nonsecure EL1 accesses to AP_ICC_SRE_EL1 are permitted if EL3 is
15193                                                                      not present or AP_ICC_SRE_EL3[ENABLE] is 1, otherwise nonsecure
15194                                                                      EL1 accesses to AP_ICC_SRE_EL1 trap to EL3. */
15195         uint32_t reserved_4_31         : 28;
15196 #endif /* Word 0 - End */
15197     } s;
15198     /* struct bdk_ap_icc_sre_el2_s cn; */
15199 };
15200 typedef union bdk_ap_icc_sre_el2 bdk_ap_icc_sre_el2_t;
15201 
15202 #define BDK_AP_ICC_SRE_EL2 BDK_AP_ICC_SRE_EL2_FUNC()
15203 static inline uint64_t BDK_AP_ICC_SRE_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_SRE_EL2_FUNC(void)15204 static inline uint64_t BDK_AP_ICC_SRE_EL2_FUNC(void)
15205 {
15206     return 0x3040c090500ll;
15207 }
15208 
15209 #define typedef_BDK_AP_ICC_SRE_EL2 bdk_ap_icc_sre_el2_t
15210 #define bustype_BDK_AP_ICC_SRE_EL2 BDK_CSR_TYPE_SYSREG
15211 #define basename_BDK_AP_ICC_SRE_EL2 "AP_ICC_SRE_EL2"
15212 #define busnum_BDK_AP_ICC_SRE_EL2 0
15213 #define arguments_BDK_AP_ICC_SRE_EL2 -1,-1,-1,-1
15214 
15215 /**
15216  * Register (SYSREG) ap_icc_sre_el3
15217  *
15218  * AP Interrupt Controller System Register Enable EL3 Register
15219  * Controls whether the system register interface or the memory
15220  *     mapped interface to the GIC CPU interface is used for EL2.
15221  */
15222 union bdk_ap_icc_sre_el3
15223 {
15224     uint32_t u;
15225     struct bdk_ap_icc_sre_el3_s
15226     {
15227 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15228         uint32_t reserved_4_31         : 28;
15229         uint32_t enable                : 1;  /**< [  3:  3](R/W) Enable. Enables lower Exception level access to AP_ICC_SRE_EL1
15230                                                                      and AP_ICC_SRE_EL2.
15231                                                                  0 = EL1 and EL2 accesses to AP_ICC_SRE_EL1 or AP_ICC_SRE_EL2 trap to
15232                                                                      EL3.
15233                                                                  1 = EL2 accesses to AP_ICC_SRE_EL2 are permitted. If the Enable bit
15234                                                                      of AP_ICC_SRE_EL2 is 1, then EL1 accesses to AP_ICC_SRE_EL1 are also
15235                                                                      permitted. */
15236         uint32_t dib                   : 1;  /**< [  2:  2](RO) Disable IRQ bypass. */
15237         uint32_t dfb                   : 1;  /**< [  1:  1](RO) Disable FIQ bypass. */
15238         uint32_t sre                   : 1;  /**< [  0:  0](RO) System Register Enable.
15239                                                                  0 = The memory mapped interface must be used. Access at EL3 to any
15240                                                                      ICH_* system register, or any EL1, EL2, or EL3 ICC_* register
15241                                                                      other than AP_ICC_SRE_EL1, AP_ICC_SRE_EL2, or AP_ICC_SRE_EL3, results
15242                                                                      in an Undefined exception.
15243                                                                  1 = The system register interface to the ICH_* registers and the
15244                                                                      EL1, EL2, and EL3 ICC_* registers is enabled for EL3. */
15245 #else /* Word 0 - Little Endian */
15246         uint32_t sre                   : 1;  /**< [  0:  0](RO) System Register Enable.
15247                                                                  0 = The memory mapped interface must be used. Access at EL3 to any
15248                                                                      ICH_* system register, or any EL1, EL2, or EL3 ICC_* register
15249                                                                      other than AP_ICC_SRE_EL1, AP_ICC_SRE_EL2, or AP_ICC_SRE_EL3, results
15250                                                                      in an Undefined exception.
15251                                                                  1 = The system register interface to the ICH_* registers and the
15252                                                                      EL1, EL2, and EL3 ICC_* registers is enabled for EL3. */
15253         uint32_t dfb                   : 1;  /**< [  1:  1](RO) Disable FIQ bypass. */
15254         uint32_t dib                   : 1;  /**< [  2:  2](RO) Disable IRQ bypass. */
15255         uint32_t enable                : 1;  /**< [  3:  3](R/W) Enable. Enables lower Exception level access to AP_ICC_SRE_EL1
15256                                                                      and AP_ICC_SRE_EL2.
15257                                                                  0 = EL1 and EL2 accesses to AP_ICC_SRE_EL1 or AP_ICC_SRE_EL2 trap to
15258                                                                      EL3.
15259                                                                  1 = EL2 accesses to AP_ICC_SRE_EL2 are permitted. If the Enable bit
15260                                                                      of AP_ICC_SRE_EL2 is 1, then EL1 accesses to AP_ICC_SRE_EL1 are also
15261                                                                      permitted. */
15262         uint32_t reserved_4_31         : 28;
15263 #endif /* Word 0 - End */
15264     } s;
15265     /* struct bdk_ap_icc_sre_el3_s cn; */
15266 };
15267 typedef union bdk_ap_icc_sre_el3 bdk_ap_icc_sre_el3_t;
15268 
15269 #define BDK_AP_ICC_SRE_EL3 BDK_AP_ICC_SRE_EL3_FUNC()
15270 static inline uint64_t BDK_AP_ICC_SRE_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICC_SRE_EL3_FUNC(void)15271 static inline uint64_t BDK_AP_ICC_SRE_EL3_FUNC(void)
15272 {
15273     return 0x3060c0c0500ll;
15274 }
15275 
15276 #define typedef_BDK_AP_ICC_SRE_EL3 bdk_ap_icc_sre_el3_t
15277 #define bustype_BDK_AP_ICC_SRE_EL3 BDK_CSR_TYPE_SYSREG
15278 #define basename_BDK_AP_ICC_SRE_EL3 "AP_ICC_SRE_EL3"
15279 #define busnum_BDK_AP_ICC_SRE_EL3 0
15280 #define arguments_BDK_AP_ICC_SRE_EL3 -1,-1,-1,-1
15281 
15282 /**
15283  * Register (SYSREG) ap_ich_ap0r0_el2
15284  *
15285  * AP Interrupt Controller Hyp Active Priorities (0,0) Register
15286  * Provides information about the active priorities for the
15287  *     current EL2 interrupt regime.
15288  */
15289 union bdk_ap_ich_ap0r0_el2
15290 {
15291     uint32_t u;
15292     struct bdk_ap_ich_ap0r0_el2_s
15293     {
15294 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15295         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
15296                                                                      following relationship:
15297 
15298                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
15299                                                                      minus 1, where U is the number of unimplemented bits of
15300                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRIBITS]).
15301 
15302                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRIBITS] == 0x4:
15303 
15304                                                                   There are 5 bits of implemented priority.
15305 
15306                                                                   This means there are 3 bits of unimplemented priority, which
15307                                                                      are always at the least significant end (bits [2:0] are RES0).
15308 
15309                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
15310                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
15311 
15312                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
15313                                                                      provide information about those priorities.
15314 
15315                                                                  Accesses to these registers from an interrupt regime give a
15316                                                                      view of the active priorities that is appropriate for that
15317                                                                      interrupt regime, to allow save and restore of the appropriate
15318                                                                      state.
15319 
15320                                                                  Interrupt regime and the number of Security states supported
15321                                                                      by the Distributor affect the view as follows. Unless
15322                                                                      otherwise stated, when a bit is successfully set to one, this
15323                                                                      clears any other active priorities corresponding to that bit.
15324 
15325                                                                  Exception level     AP0Rn access
15326 
15327                                                                  (Secure) EL3        Permitted. Accesses Group 0 Secure active priorities.
15328 
15329                                                                  Secure EL1  Permitted. Accesses Group 0 Secure active priorities.
15330 
15331                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP0Rn_EL2
15332 
15333                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
15334                                                                  0) Permitted. Accesses Group 0 Secure active priorities.
15335 
15336                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
15337                                                                  1)  Permitted. Accesses Group 0 active priorities.
15338 
15339                                                                  A Virtual interrupt in this case means that the interrupt
15340                                                                      group associated with the register has been virtualized. */
15341 #else /* Word 0 - Little Endian */
15342         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
15343                                                                      following relationship:
15344 
15345                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
15346                                                                      minus 1, where U is the number of unimplemented bits of
15347                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRIBITS]).
15348 
15349                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRIBITS] == 0x4:
15350 
15351                                                                   There are 5 bits of implemented priority.
15352 
15353                                                                   This means there are 3 bits of unimplemented priority, which
15354                                                                      are always at the least significant end (bits [2:0] are RES0).
15355 
15356                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
15357                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
15358 
15359                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
15360                                                                      provide information about those priorities.
15361 
15362                                                                  Accesses to these registers from an interrupt regime give a
15363                                                                      view of the active priorities that is appropriate for that
15364                                                                      interrupt regime, to allow save and restore of the appropriate
15365                                                                      state.
15366 
15367                                                                  Interrupt regime and the number of Security states supported
15368                                                                      by the Distributor affect the view as follows. Unless
15369                                                                      otherwise stated, when a bit is successfully set to one, this
15370                                                                      clears any other active priorities corresponding to that bit.
15371 
15372                                                                  Exception level     AP0Rn access
15373 
15374                                                                  (Secure) EL3        Permitted. Accesses Group 0 Secure active priorities.
15375 
15376                                                                  Secure EL1  Permitted. Accesses Group 0 Secure active priorities.
15377 
15378                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP0Rn_EL2
15379 
15380                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
15381                                                                  0) Permitted. Accesses Group 0 Secure active priorities.
15382 
15383                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
15384                                                                  1)  Permitted. Accesses Group 0 active priorities.
15385 
15386                                                                  A Virtual interrupt in this case means that the interrupt
15387                                                                      group associated with the register has been virtualized. */
15388 #endif /* Word 0 - End */
15389     } s;
15390     /* struct bdk_ap_ich_ap0r0_el2_s cn; */
15391 };
15392 typedef union bdk_ap_ich_ap0r0_el2 bdk_ap_ich_ap0r0_el2_t;
15393 
15394 #define BDK_AP_ICH_AP0R0_EL2 BDK_AP_ICH_AP0R0_EL2_FUNC()
15395 static inline uint64_t BDK_AP_ICH_AP0R0_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_AP0R0_EL2_FUNC(void)15396 static inline uint64_t BDK_AP_ICH_AP0R0_EL2_FUNC(void)
15397 {
15398     return 0x3040c080000ll;
15399 }
15400 
15401 #define typedef_BDK_AP_ICH_AP0R0_EL2 bdk_ap_ich_ap0r0_el2_t
15402 #define bustype_BDK_AP_ICH_AP0R0_EL2 BDK_CSR_TYPE_SYSREG
15403 #define basename_BDK_AP_ICH_AP0R0_EL2 "AP_ICH_AP0R0_EL2"
15404 #define busnum_BDK_AP_ICH_AP0R0_EL2 0
15405 #define arguments_BDK_AP_ICH_AP0R0_EL2 -1,-1,-1,-1
15406 
15407 /**
15408  * Register (SYSREG) ap_ich_ap0r1_el2
15409  *
15410  * AP Interrupt Controller Hyp Active Priorities (0,1) Register
15411  * Provides information about the active priorities for the
15412  *     current EL2 interrupt regime.
15413  */
15414 union bdk_ap_ich_ap0r1_el2
15415 {
15416     uint32_t u;
15417     struct bdk_ap_ich_ap0r1_el2_s
15418     {
15419 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15420         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP0R0_EL2[PRIORITYBITS]. */
15421 #else /* Word 0 - Little Endian */
15422         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP0R0_EL2[PRIORITYBITS]. */
15423 #endif /* Word 0 - End */
15424     } s;
15425     /* struct bdk_ap_ich_ap0r1_el2_s cn; */
15426 };
15427 typedef union bdk_ap_ich_ap0r1_el2 bdk_ap_ich_ap0r1_el2_t;
15428 
15429 #define BDK_AP_ICH_AP0R1_EL2 BDK_AP_ICH_AP0R1_EL2_FUNC()
15430 static inline uint64_t BDK_AP_ICH_AP0R1_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_AP0R1_EL2_FUNC(void)15431 static inline uint64_t BDK_AP_ICH_AP0R1_EL2_FUNC(void)
15432 {
15433     return 0x3040c080100ll;
15434 }
15435 
15436 #define typedef_BDK_AP_ICH_AP0R1_EL2 bdk_ap_ich_ap0r1_el2_t
15437 #define bustype_BDK_AP_ICH_AP0R1_EL2 BDK_CSR_TYPE_SYSREG
15438 #define basename_BDK_AP_ICH_AP0R1_EL2 "AP_ICH_AP0R1_EL2"
15439 #define busnum_BDK_AP_ICH_AP0R1_EL2 0
15440 #define arguments_BDK_AP_ICH_AP0R1_EL2 -1,-1,-1,-1
15441 
15442 /**
15443  * Register (SYSREG) ap_ich_ap0r2_el2
15444  *
15445  * AP Interrupt Controller Hyp Active Priorities (0,2) Register
15446  * Provides information about the active priorities for the
15447  *     current EL2 interrupt regime.
15448  */
15449 union bdk_ap_ich_ap0r2_el2
15450 {
15451     uint32_t u;
15452     struct bdk_ap_ich_ap0r2_el2_s
15453     {
15454 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15455         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP0R0_EL2[PRIORITYBITS]. */
15456 #else /* Word 0 - Little Endian */
15457         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP0R0_EL2[PRIORITYBITS]. */
15458 #endif /* Word 0 - End */
15459     } s;
15460     /* struct bdk_ap_ich_ap0r2_el2_s cn; */
15461 };
15462 typedef union bdk_ap_ich_ap0r2_el2 bdk_ap_ich_ap0r2_el2_t;
15463 
15464 #define BDK_AP_ICH_AP0R2_EL2 BDK_AP_ICH_AP0R2_EL2_FUNC()
15465 static inline uint64_t BDK_AP_ICH_AP0R2_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_AP0R2_EL2_FUNC(void)15466 static inline uint64_t BDK_AP_ICH_AP0R2_EL2_FUNC(void)
15467 {
15468     return 0x3040c080200ll;
15469 }
15470 
15471 #define typedef_BDK_AP_ICH_AP0R2_EL2 bdk_ap_ich_ap0r2_el2_t
15472 #define bustype_BDK_AP_ICH_AP0R2_EL2 BDK_CSR_TYPE_SYSREG
15473 #define basename_BDK_AP_ICH_AP0R2_EL2 "AP_ICH_AP0R2_EL2"
15474 #define busnum_BDK_AP_ICH_AP0R2_EL2 0
15475 #define arguments_BDK_AP_ICH_AP0R2_EL2 -1,-1,-1,-1
15476 
15477 /**
15478  * Register (SYSREG) ap_ich_ap0r3_el2
15479  *
15480  * AP Interrupt Controller Hyp Active Priorities (0,3) Register
15481  * Provides information about the active priorities for the
15482  *     current EL2 interrupt regime.
15483  */
15484 union bdk_ap_ich_ap0r3_el2
15485 {
15486     uint32_t u;
15487     struct bdk_ap_ich_ap0r3_el2_s
15488     {
15489 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15490         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP0R0_EL2[PRIORITYBITS]. */
15491 #else /* Word 0 - Little Endian */
15492         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP0R0_EL2[PRIORITYBITS]. */
15493 #endif /* Word 0 - End */
15494     } s;
15495     /* struct bdk_ap_ich_ap0r3_el2_s cn; */
15496 };
15497 typedef union bdk_ap_ich_ap0r3_el2 bdk_ap_ich_ap0r3_el2_t;
15498 
15499 #define BDK_AP_ICH_AP0R3_EL2 BDK_AP_ICH_AP0R3_EL2_FUNC()
15500 static inline uint64_t BDK_AP_ICH_AP0R3_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_AP0R3_EL2_FUNC(void)15501 static inline uint64_t BDK_AP_ICH_AP0R3_EL2_FUNC(void)
15502 {
15503     return 0x3040c080300ll;
15504 }
15505 
15506 #define typedef_BDK_AP_ICH_AP0R3_EL2 bdk_ap_ich_ap0r3_el2_t
15507 #define bustype_BDK_AP_ICH_AP0R3_EL2 BDK_CSR_TYPE_SYSREG
15508 #define basename_BDK_AP_ICH_AP0R3_EL2 "AP_ICH_AP0R3_EL2"
15509 #define busnum_BDK_AP_ICH_AP0R3_EL2 0
15510 #define arguments_BDK_AP_ICH_AP0R3_EL2 -1,-1,-1,-1
15511 
15512 /**
15513  * Register (SYSREG) ap_ich_ap1r0_el2
15514  *
15515  * AP Interrupt Controller Hyp Active Priorities (1,0) Register
15516  * Provides information about the active priorities for the
15517  *     current EL2 interrupt regime.
15518  */
15519 union bdk_ap_ich_ap1r0_el2
15520 {
15521     uint32_t u;
15522     struct bdk_ap_ich_ap1r0_el2_s
15523     {
15524 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15525         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
15526                                                                      following relationship:
15527 
15528                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
15529                                                                      minus 1, where U is the number of unimplemented bits of
15530                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRIBITS]).
15531 
15532                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRIBITS] = 0x4:
15533 
15534                                                                   There are 5 bits of implemented priority.
15535 
15536                                                                   This means there are 3 bits of unimplemented priority, which
15537                                                                      are always at the least significant end (bits [2:0] are RES0).
15538 
15539                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
15540                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
15541 
15542                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
15543                                                                      provide information about those priorities.
15544 
15545                                                                  Accesses to these registers from an interrupt regime give a
15546                                                                      view of the active priorities that is appropriate for that
15547                                                                      interrupt regime, to allow save and restore of the appropriate
15548                                                                      state.
15549 
15550                                                                  Interrupt regime and the number of Security states supported
15551                                                                      by the Distributor affect the view as follows. Unless
15552                                                                      otherwise stated, when a bit is successfully set to one, this
15553                                                                      clears any other active priorities corresponding to that bit.
15554 
15555                                                                  Current Exception level and Security state  AP1Rn access
15556 
15557                                                                  (Secure) EL3        Permitted. When AP_SCR_EL3[NS] is 0, accesses Group 1 Secure active
15558                                                                  priorities. When AP_SCR_EL3[NS] is 1, accesses Group 1 nonsecure active priorities
15559                                                                  (unshifted). When a bit is written, the bit is only updated if the corresponding Group 0
15560                                                                  and Group 1 Secure active priority is zero.
15561 
15562                                                                  Secure EL1  Permitted. Accesses Group 1 Secure active priorities (unshifted). When a bit
15563                                                                  is written, the bit is only updated if the corresponding Group 0 Secure active priority is
15564                                                                  zero.
15565 
15566                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP1Rn_EL2
15567 
15568                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
15569                                                                  0) Permitted. Accesses Group 1 nonsecure active priorities (shifted). When a bit is
15570                                                                  written, the bit is only updated if the corresponding Group 0 and Group 1 Secure active
15571                                                                  priority is zero.
15572 
15573                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
15574                                                                  1)  Permitted. Accesses Group 1 nonsecure active priorities (unshifted). When a bit is
15575                                                                  written, the bit is only updated if the Group 0 active priority is zero.
15576 
15577                                                                  A Virtual interrupt in this case means that the interrupt
15578                                                                      group associated with the register has been virtualized. */
15579 #else /* Word 0 - Little Endian */
15580         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) Provides information about priority M, according to the
15581                                                                      following relationship:
15582 
15583                                                                  Bit P\<n\> corresponds to priority (M divided by 22^(U))
15584                                                                      minus 1, where U is the number of unimplemented bits of
15585                                                                      priority and is equal to (7 -  AP_ICC_CTLR_EL1[PRIBITS]).
15586 
15587                                                                  For example, in a system with AP_ICC_CTLR_EL1[PRIBITS] = 0x4:
15588 
15589                                                                   There are 5 bits of implemented priority.
15590 
15591                                                                   This means there are 3 bits of unimplemented priority, which
15592                                                                      are always at the least significant end (bits [2:0] are RES0).
15593 
15594                                                                   Valid priorities are 8, 16, 24, 32, and so on. Dividing these
15595                                                                      by 22^(3) gives 1, 2, 3, 4, and so on.
15596 
15597                                                                   Subtracting 1 from each gives bits 0, 1, 2, 3, and so on that
15598                                                                      provide information about those priorities.
15599 
15600                                                                  Accesses to these registers from an interrupt regime give a
15601                                                                      view of the active priorities that is appropriate for that
15602                                                                      interrupt regime, to allow save and restore of the appropriate
15603                                                                      state.
15604 
15605                                                                  Interrupt regime and the number of Security states supported
15606                                                                      by the Distributor affect the view as follows. Unless
15607                                                                      otherwise stated, when a bit is successfully set to one, this
15608                                                                      clears any other active priorities corresponding to that bit.
15609 
15610                                                                  Current Exception level and Security state  AP1Rn access
15611 
15612                                                                  (Secure) EL3        Permitted. When AP_SCR_EL3[NS] is 0, accesses Group 1 Secure active
15613                                                                  priorities. When AP_SCR_EL3[NS] is 1, accesses Group 1 nonsecure active priorities
15614                                                                  (unshifted). When a bit is written, the bit is only updated if the corresponding Group 0
15615                                                                  and Group 1 Secure active priority is zero.
15616 
15617                                                                  Secure EL1  Permitted. Accesses Group 1 Secure active priorities (unshifted). When a bit
15618                                                                  is written, the bit is only updated if the corresponding Group 0 Secure active priority is
15619                                                                  zero.
15620 
15621                                                                  Nonsecure EL1 access for a Virtual interrupt       ICH_AP1Rn_EL2
15622 
15623                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports two Security states (GICD_CTLR[DS] is
15624                                                                  0) Permitted. Accesses Group 1 nonsecure active priorities (shifted). When a bit is
15625                                                                  written, the bit is only updated if the corresponding Group 0 and Group 1 Secure active
15626                                                                  priority is zero.
15627 
15628                                                                  Nonsecure EL1 or EL2 when GIC Distributor supports one Security state (GICD_CTLR[DS] is
15629                                                                  1)  Permitted. Accesses Group 1 nonsecure active priorities (unshifted). When a bit is
15630                                                                  written, the bit is only updated if the Group 0 active priority is zero.
15631 
15632                                                                  A Virtual interrupt in this case means that the interrupt
15633                                                                      group associated with the register has been virtualized. */
15634 #endif /* Word 0 - End */
15635     } s;
15636     /* struct bdk_ap_ich_ap1r0_el2_s cn; */
15637 };
15638 typedef union bdk_ap_ich_ap1r0_el2 bdk_ap_ich_ap1r0_el2_t;
15639 
15640 #define BDK_AP_ICH_AP1R0_EL2 BDK_AP_ICH_AP1R0_EL2_FUNC()
15641 static inline uint64_t BDK_AP_ICH_AP1R0_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_AP1R0_EL2_FUNC(void)15642 static inline uint64_t BDK_AP_ICH_AP1R0_EL2_FUNC(void)
15643 {
15644     return 0x3040c090000ll;
15645 }
15646 
15647 #define typedef_BDK_AP_ICH_AP1R0_EL2 bdk_ap_ich_ap1r0_el2_t
15648 #define bustype_BDK_AP_ICH_AP1R0_EL2 BDK_CSR_TYPE_SYSREG
15649 #define basename_BDK_AP_ICH_AP1R0_EL2 "AP_ICH_AP1R0_EL2"
15650 #define busnum_BDK_AP_ICH_AP1R0_EL2 0
15651 #define arguments_BDK_AP_ICH_AP1R0_EL2 -1,-1,-1,-1
15652 
15653 /**
15654  * Register (SYSREG) ap_ich_ap1r1_el2
15655  *
15656  * AP Interrupt Controller Hyp Active Priorities (1,1) Register
15657  * Provides information about the active priorities for the
15658  *     current EL2 interrupt regime.
15659  */
15660 union bdk_ap_ich_ap1r1_el2
15661 {
15662     uint32_t u;
15663     struct bdk_ap_ich_ap1r1_el2_s
15664     {
15665 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15666         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP1R0_EL2[PRIORITYBITS]. */
15667 #else /* Word 0 - Little Endian */
15668         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP1R0_EL2[PRIORITYBITS]. */
15669 #endif /* Word 0 - End */
15670     } s;
15671     /* struct bdk_ap_ich_ap1r1_el2_s cn; */
15672 };
15673 typedef union bdk_ap_ich_ap1r1_el2 bdk_ap_ich_ap1r1_el2_t;
15674 
15675 #define BDK_AP_ICH_AP1R1_EL2 BDK_AP_ICH_AP1R1_EL2_FUNC()
15676 static inline uint64_t BDK_AP_ICH_AP1R1_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_AP1R1_EL2_FUNC(void)15677 static inline uint64_t BDK_AP_ICH_AP1R1_EL2_FUNC(void)
15678 {
15679     return 0x3040c090100ll;
15680 }
15681 
15682 #define typedef_BDK_AP_ICH_AP1R1_EL2 bdk_ap_ich_ap1r1_el2_t
15683 #define bustype_BDK_AP_ICH_AP1R1_EL2 BDK_CSR_TYPE_SYSREG
15684 #define basename_BDK_AP_ICH_AP1R1_EL2 "AP_ICH_AP1R1_EL2"
15685 #define busnum_BDK_AP_ICH_AP1R1_EL2 0
15686 #define arguments_BDK_AP_ICH_AP1R1_EL2 -1,-1,-1,-1
15687 
15688 /**
15689  * Register (SYSREG) ap_ich_ap1r2_el2
15690  *
15691  * AP Interrupt Controller Hyp Active Priorities (1,2) Register
15692  * Provides information about the active priorities for the
15693  *     current EL2 interrupt regime.
15694  */
15695 union bdk_ap_ich_ap1r2_el2
15696 {
15697     uint32_t u;
15698     struct bdk_ap_ich_ap1r2_el2_s
15699     {
15700 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15701         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP1R0_EL2[PRIORITYBITS]. */
15702 #else /* Word 0 - Little Endian */
15703         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP1R0_EL2[PRIORITYBITS]. */
15704 #endif /* Word 0 - End */
15705     } s;
15706     /* struct bdk_ap_ich_ap1r2_el2_s cn; */
15707 };
15708 typedef union bdk_ap_ich_ap1r2_el2 bdk_ap_ich_ap1r2_el2_t;
15709 
15710 #define BDK_AP_ICH_AP1R2_EL2 BDK_AP_ICH_AP1R2_EL2_FUNC()
15711 static inline uint64_t BDK_AP_ICH_AP1R2_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_AP1R2_EL2_FUNC(void)15712 static inline uint64_t BDK_AP_ICH_AP1R2_EL2_FUNC(void)
15713 {
15714     return 0x3040c090200ll;
15715 }
15716 
15717 #define typedef_BDK_AP_ICH_AP1R2_EL2 bdk_ap_ich_ap1r2_el2_t
15718 #define bustype_BDK_AP_ICH_AP1R2_EL2 BDK_CSR_TYPE_SYSREG
15719 #define basename_BDK_AP_ICH_AP1R2_EL2 "AP_ICH_AP1R2_EL2"
15720 #define busnum_BDK_AP_ICH_AP1R2_EL2 0
15721 #define arguments_BDK_AP_ICH_AP1R2_EL2 -1,-1,-1,-1
15722 
15723 /**
15724  * Register (SYSREG) ap_ich_ap1r3_el2
15725  *
15726  * AP Interrupt Controller Hyp Active Priorities (1,3) Register
15727  * Provides information about the active priorities for the
15728  *     current EL2 interrupt regime.
15729  */
15730 union bdk_ap_ich_ap1r3_el2
15731 {
15732     uint32_t u;
15733     struct bdk_ap_ich_ap1r3_el2_s
15734     {
15735 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15736         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP1R0_EL2[PRIORITYBITS]. */
15737 #else /* Word 0 - Little Endian */
15738         uint32_t prioritybits          : 32; /**< [ 31:  0](R/W) See description of AP_ICH_AP1R0_EL2[PRIORITYBITS]. */
15739 #endif /* Word 0 - End */
15740     } s;
15741     /* struct bdk_ap_ich_ap1r3_el2_s cn; */
15742 };
15743 typedef union bdk_ap_ich_ap1r3_el2 bdk_ap_ich_ap1r3_el2_t;
15744 
15745 #define BDK_AP_ICH_AP1R3_EL2 BDK_AP_ICH_AP1R3_EL2_FUNC()
15746 static inline uint64_t BDK_AP_ICH_AP1R3_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_AP1R3_EL2_FUNC(void)15747 static inline uint64_t BDK_AP_ICH_AP1R3_EL2_FUNC(void)
15748 {
15749     return 0x3040c090300ll;
15750 }
15751 
15752 #define typedef_BDK_AP_ICH_AP1R3_EL2 bdk_ap_ich_ap1r3_el2_t
15753 #define bustype_BDK_AP_ICH_AP1R3_EL2 BDK_CSR_TYPE_SYSREG
15754 #define basename_BDK_AP_ICH_AP1R3_EL2 "AP_ICH_AP1R3_EL2"
15755 #define busnum_BDK_AP_ICH_AP1R3_EL2 0
15756 #define arguments_BDK_AP_ICH_AP1R3_EL2 -1,-1,-1,-1
15757 
15758 /**
15759  * Register (SYSREG) ap_ich_eisr_el2
15760  *
15761  * AP Interrupt Controller End of Interrupt Status Register
15762  * When a maintenance interrupt is received, this register helps
15763  *     determine which List registers have outstanding EOI interrupts
15764  *     that require servicing.
15765  */
15766 union bdk_ap_ich_eisr_el2
15767 {
15768     uint32_t u;
15769     struct bdk_ap_ich_eisr_el2_s
15770     {
15771 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15772         uint32_t status_bits           : 32; /**< [ 31:  0](RO) EOI status bit for List register \<n\>:
15773                                                                  For any ICH_LR\<n\>_EL2, the corresponding status bit is set to
15774                                                                      1 if ICH_LR\<n\>_EL2[State] is 0x0.
15775                                                                  0 = List register \<n\>, ICH_LR\<n\>_EL2, does not have an EOI.
15776                                                                  1 = List register \<n\>, ICH_LR\<n\>_EL2, has an EOI. */
15777 #else /* Word 0 - Little Endian */
15778         uint32_t status_bits           : 32; /**< [ 31:  0](RO) EOI status bit for List register \<n\>:
15779                                                                  For any ICH_LR\<n\>_EL2, the corresponding status bit is set to
15780                                                                      1 if ICH_LR\<n\>_EL2[State] is 0x0.
15781                                                                  0 = List register \<n\>, ICH_LR\<n\>_EL2, does not have an EOI.
15782                                                                  1 = List register \<n\>, ICH_LR\<n\>_EL2, has an EOI. */
15783 #endif /* Word 0 - End */
15784     } s;
15785     /* struct bdk_ap_ich_eisr_el2_s cn; */
15786 };
15787 typedef union bdk_ap_ich_eisr_el2 bdk_ap_ich_eisr_el2_t;
15788 
15789 #define BDK_AP_ICH_EISR_EL2 BDK_AP_ICH_EISR_EL2_FUNC()
15790 static inline uint64_t BDK_AP_ICH_EISR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_EISR_EL2_FUNC(void)15791 static inline uint64_t BDK_AP_ICH_EISR_EL2_FUNC(void)
15792 {
15793     return 0x3040c0b0300ll;
15794 }
15795 
15796 #define typedef_BDK_AP_ICH_EISR_EL2 bdk_ap_ich_eisr_el2_t
15797 #define bustype_BDK_AP_ICH_EISR_EL2 BDK_CSR_TYPE_SYSREG
15798 #define basename_BDK_AP_ICH_EISR_EL2 "AP_ICH_EISR_EL2"
15799 #define busnum_BDK_AP_ICH_EISR_EL2 0
15800 #define arguments_BDK_AP_ICH_EISR_EL2 -1,-1,-1,-1
15801 
15802 /**
15803  * Register (SYSREG) ap_ich_elrsr_el2
15804  *
15805  * AP Interrupt Controller Empty List Register Status Register
15806  * This register can be used to locate a usable List register
15807  *     when the hypervisor is delivering an interrupt to a Guest OS.
15808  *
15809  * Internal:
15810  * This register was renamed ICH_ELRSR_EL2 in OBAN of 2014-06-13 after release v20 of GIC v3.
15811  */
15812 union bdk_ap_ich_elrsr_el2
15813 {
15814     uint32_t u;
15815     struct bdk_ap_ich_elrsr_el2_s
15816     {
15817 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15818         uint32_t status_bits           : 32; /**< [ 31:  0](RO) Status bit for List register \<n\>, ICH_LR\<n\>_EL2:
15819                                                                  For any ICH_LR\<n\>_EL2, the corresponding status bit is set to
15820                                                                      1 if ICH_LR\<n\>_EL2[State] is 0x0.
15821                                                                  0 = List register ICH_LR\<n\>_EL2, if implemented, contains a valid
15822                                                                     interrupt. Using this List register can result in overwriting
15823                                                                      a valid interrupt.
15824                                                                  1 = List register ICH_LR\<n\>_EL2 does not contain a valid
15825                                                                      interrupt. The List register is empty and can be used without
15826                                                                      overwriting a valid interrupt or losing an EOI maintenance
15827                                                                      interrupt. */
15828 #else /* Word 0 - Little Endian */
15829         uint32_t status_bits           : 32; /**< [ 31:  0](RO) Status bit for List register \<n\>, ICH_LR\<n\>_EL2:
15830                                                                  For any ICH_LR\<n\>_EL2, the corresponding status bit is set to
15831                                                                      1 if ICH_LR\<n\>_EL2[State] is 0x0.
15832                                                                  0 = List register ICH_LR\<n\>_EL2, if implemented, contains a valid
15833                                                                     interrupt. Using this List register can result in overwriting
15834                                                                      a valid interrupt.
15835                                                                  1 = List register ICH_LR\<n\>_EL2 does not contain a valid
15836                                                                      interrupt. The List register is empty and can be used without
15837                                                                      overwriting a valid interrupt or losing an EOI maintenance
15838                                                                      interrupt. */
15839 #endif /* Word 0 - End */
15840     } s;
15841     /* struct bdk_ap_ich_elrsr_el2_s cn; */
15842 };
15843 typedef union bdk_ap_ich_elrsr_el2 bdk_ap_ich_elrsr_el2_t;
15844 
15845 #define BDK_AP_ICH_ELRSR_EL2 BDK_AP_ICH_ELRSR_EL2_FUNC()
15846 static inline uint64_t BDK_AP_ICH_ELRSR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_ELRSR_EL2_FUNC(void)15847 static inline uint64_t BDK_AP_ICH_ELRSR_EL2_FUNC(void)
15848 {
15849     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
15850         return 0x3040c0b0500ll;
15851     __bdk_csr_fatal("AP_ICH_ELRSR_EL2", 0, 0, 0, 0, 0);
15852 }
15853 
15854 #define typedef_BDK_AP_ICH_ELRSR_EL2 bdk_ap_ich_elrsr_el2_t
15855 #define bustype_BDK_AP_ICH_ELRSR_EL2 BDK_CSR_TYPE_SYSREG
15856 #define basename_BDK_AP_ICH_ELRSR_EL2 "AP_ICH_ELRSR_EL2"
15857 #define busnum_BDK_AP_ICH_ELRSR_EL2 0
15858 #define arguments_BDK_AP_ICH_ELRSR_EL2 -1,-1,-1,-1
15859 
15860 /**
15861  * Register (SYSREG) ap_ich_elsr_el2
15862  *
15863  * AP Interrupt Controller Empty List Register Status Register
15864  * This register can be used to locate a usable List register
15865  *     when the hypervisor is delivering an interrupt to a Guest OS.
15866  */
15867 union bdk_ap_ich_elsr_el2
15868 {
15869     uint32_t u;
15870     struct bdk_ap_ich_elsr_el2_s
15871     {
15872 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15873         uint32_t status_bits           : 32; /**< [ 31:  0](RO) Status bit for List register \<n\>, ICH_LR\<n\>_EL2:
15874                                                                  For any ICH_LR\<n\>_EL2, the corresponding status bit is set to
15875                                                                      1 if ICH_LR\<n\>_EL2[State] is 0x0.
15876                                                                  0 = List register ICH_LR\<n\>_EL2, if implemented, contains a valid
15877                                                                     interrupt. Using this List register can result in overwriting
15878                                                                      a valid interrupt.
15879                                                                  1 = List register ICH_LR\<n\>_EL2 does not contain a valid
15880                                                                      interrupt. The List register is empty and can be used without
15881                                                                      overwriting a valid interrupt or losing an EOI maintenance
15882                                                                      interrupt. */
15883 #else /* Word 0 - Little Endian */
15884         uint32_t status_bits           : 32; /**< [ 31:  0](RO) Status bit for List register \<n\>, ICH_LR\<n\>_EL2:
15885                                                                  For any ICH_LR\<n\>_EL2, the corresponding status bit is set to
15886                                                                      1 if ICH_LR\<n\>_EL2[State] is 0x0.
15887                                                                  0 = List register ICH_LR\<n\>_EL2, if implemented, contains a valid
15888                                                                     interrupt. Using this List register can result in overwriting
15889                                                                      a valid interrupt.
15890                                                                  1 = List register ICH_LR\<n\>_EL2 does not contain a valid
15891                                                                      interrupt. The List register is empty and can be used without
15892                                                                      overwriting a valid interrupt or losing an EOI maintenance
15893                                                                      interrupt. */
15894 #endif /* Word 0 - End */
15895     } s;
15896     /* struct bdk_ap_ich_elsr_el2_s cn; */
15897 };
15898 typedef union bdk_ap_ich_elsr_el2 bdk_ap_ich_elsr_el2_t;
15899 
15900 #define BDK_AP_ICH_ELSR_EL2 BDK_AP_ICH_ELSR_EL2_FUNC()
15901 static inline uint64_t BDK_AP_ICH_ELSR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_ELSR_EL2_FUNC(void)15902 static inline uint64_t BDK_AP_ICH_ELSR_EL2_FUNC(void)
15903 {
15904     if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX))
15905         return 0x3040c0b0500ll;
15906     __bdk_csr_fatal("AP_ICH_ELSR_EL2", 0, 0, 0, 0, 0);
15907 }
15908 
15909 #define typedef_BDK_AP_ICH_ELSR_EL2 bdk_ap_ich_elsr_el2_t
15910 #define bustype_BDK_AP_ICH_ELSR_EL2 BDK_CSR_TYPE_SYSREG
15911 #define basename_BDK_AP_ICH_ELSR_EL2 "AP_ICH_ELSR_EL2"
15912 #define busnum_BDK_AP_ICH_ELSR_EL2 0
15913 #define arguments_BDK_AP_ICH_ELSR_EL2 -1,-1,-1,-1
15914 
15915 /**
15916  * Register (SYSREG) ap_ich_hcr_el2
15917  *
15918  * AP Interrupt Controller Hyp Control Register
15919  * Controls the environment for guest operating systems.
15920  */
15921 union bdk_ap_ich_hcr_el2
15922 {
15923     uint32_t u;
15924     struct bdk_ap_ich_hcr_el2_s
15925     {
15926 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15927         uint32_t eoicount              : 5;  /**< [ 31: 27](R/W) Counts the number of EOIs received that do not have a
15928                                                                      corresponding entry in the List registers. The virtual CPU
15929                                                                      interface increments this field automatically when a matching
15930                                                                      EOI is received.
15931 
15932                                                                  EOIs that do not clear a bit in one of the Active Priorities
15933                                                                      registers ICH_APmRn_EL2 do not cause an increment.
15934 
15935                                                                  Although not possible under correct operation, if an EOI
15936                                                                      occurs when the value of this field is 31, this field wraps to
15937                                                                      0.
15938 
15939                                                                  The maintenance interrupt is asserted whenever this field is
15940                                                                      nonzero and the LRENPIE bit is set to 1. */
15941         uint32_t reserved_15_26        : 12;
15942         uint32_t tdir                  : 1;  /**< [ 14: 14](R/W) Trap nonsecure EL1 writes to ICC_DIR_EL1:
15943                                                                    0 = Nonsecure EL1 writes of ICC_DIR_EL1 do not cause a trap to EL2, unless trapped by
15944                                                                  other mechanisms.
15945                                                                    1 = Nonsecure EL1 writes of ICC_DIR_EL1 are trapped to EL2. */
15946         uint32_t tsei                  : 1;  /**< [ 13: 13](RO) A locally generated SEI will trap to EL2 if this bit is set.  This bit is RES0 when
15947                                                                  AP_ICH_VTR_EL2[SEIS] is not set. */
15948         uint32_t tall1                 : 1;  /**< [ 12: 12](R/W) Trap all nonsecure EL1 accesses to ICC_* system registers for
15949                                                                      group 1 interrupts to EL2.
15950                                                                  0 = Non-Secure EL1 accesses to ICC_* registers for group 1
15951                                                                      interrupts proceed as normal.
15952                                                                  1 = Any nonsecure EL1 accesses to ICC_* registers for group 1
15953                                                                      interrupts trap to EL2. */
15954         uint32_t tall0                 : 1;  /**< [ 11: 11](R/W) Trap all nonsecure EL1 accesses to ICC_* system registers for
15955                                                                      group 0 interrupts to EL2.
15956                                                                  0 = Non-Secure EL1 accesses to ICC_* registers for group 0
15957                                                                      interrupts proceed as normal.
15958                                                                  1 = Any nonsecure EL1 accesses to ICC_* registers for group 0
15959                                                                      interrupts trap to EL2. */
15960         uint32_t tc                    : 1;  /**< [ 10: 10](R/W) Trap all nonsecure El1 accesses to system registers that are
15961                                                                      common to group 0 and group 1 to EL2.
15962                                                                  This affects AP_ICC_DIR_EL1, AP_ICC_PMR_EL1, and AP_ICC_RPR_EL1.
15963                                                                  0 = Nonsecure EL1 accesses to common registers proceed as normal.
15964                                                                  1 = Any nonsecure EL1 accesses to common registers trap to EL2. */
15965         uint32_t reserved_8_9          : 2;
15966         uint32_t vgrp1die              : 1;  /**< [  7:  7](R/W) VM Disable Group 1 Interrupt Enable. Enables the signaling of
15967                                                                      a maintenance interrupt while signaling of Group 1 interrupts
15968                                                                      from the virtual CPU interface to the connected virtual
15969                                                                      machine is disabled:
15970                                                                  0 = Maintenance interrupt disabled.
15971                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp1] is
15972                                                                      set to 0. */
15973         uint32_t vgrp1eie              : 1;  /**< [  6:  6](R/W) VM Enable Group 1 Interrupt Enable. Enables the signaling of a
15974                                                                      maintenance interrupt while signaling of Group 1 interrupts
15975                                                                      from the virtual CPU interface to the connected virtual
15976                                                                      machine is enabled:
15977                                                                  0 = Maintenance interrupt disabled.
15978                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp1] is
15979                                                                      set to 1. */
15980         uint32_t vgrp0die              : 1;  /**< [  5:  5](R/W) VM Disable Group 0 Interrupt Enable. Enables the signaling of
15981                                                                      a maintenance interrupt while signaling of Group 0 interrupts
15982                                                                      from the virtual CPU interface to the connected virtual
15983                                                                      machine is disabled:
15984                                                                  0 = Maintenance interrupt disabled.
15985                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp0] is
15986                                                                      set to 0. */
15987         uint32_t vgrp0eie              : 1;  /**< [  4:  4](R/W) VM Enable Group 0 Interrupt Enable. Enables the signaling of a
15988                                                                      maintenance interrupt while signaling of Group 0 interrupts
15989                                                                      from the virtual CPU interface to the connected virtual
15990                                                                      machine is enabled:
15991                                                                  0 = Maintenance interrupt disabled.
15992                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp0] is
15993                                                                      set to 1. */
15994         uint32_t npie                  : 1;  /**< [  3:  3](R/W) No Pending Interrupt Enable. Enables the signaling of a
15995                                                                      maintenance interrupt while no pending interrupts are present
15996                                                                      in the List registers:
15997                                                                  0 = Maintenance interrupt disabled.
15998                                                                  1 = Maintenance interupt signaled while the List registers contain
15999                                                                      no interrupts in the pending state. */
16000         uint32_t lrenpie               : 1;  /**< [  2:  2](R/W) List Register Entry Not Present Interrupt Enable. Enables the
16001                                                                      signaling of a maintenance interrupt while the virtual CPU
16002                                                                      interface does not have a corresponding valid List register
16003                                                                      entry for an EOI request:
16004                                                                  0 = Maintenance interrupt disabled.
16005                                                                  1 = A maintenance interrupt is asserted while the EOIcount field
16006                                                                      is not 0. */
16007         uint32_t uie                   : 1;  /**< [  1:  1](R/W) Underflow Interrupt Enable. Enables the signaling of a
16008                                                                      maintenance interrupt when the List registers are empty, or
16009                                                                      hold only one valid entry:
16010                                                                  0 = Maintenance interrupt disabled.
16011                                                                  1 = A maintenance interrupt is asserted if none, or only one, of
16012                                                                      the List register entries is marked as a valid interrupt. */
16013         uint32_t en                    : 1;  /**< [  0:  0](R/W) Enable. Global enable bit for the virtual CPU interface:
16014                                                                  When this field is set to 0:
16015                                                                   The virtual CPU interface does not signal any maintenance
16016                                                                      interrupts.
16017                                                                   The virtual CPU interface does not signal any virtual
16018                                                                      interrupts.
16019                                                                   A read of GICV_IAR or GICV_AIAR returns a spurious interrupt
16020                                                                      ID.
16021                                                                  0 = Virtual CPU interface operation disabled.
16022                                                                  1 = Virtual CPU interface operation enabled. */
16023 #else /* Word 0 - Little Endian */
16024         uint32_t en                    : 1;  /**< [  0:  0](R/W) Enable. Global enable bit for the virtual CPU interface:
16025                                                                  When this field is set to 0:
16026                                                                   The virtual CPU interface does not signal any maintenance
16027                                                                      interrupts.
16028                                                                   The virtual CPU interface does not signal any virtual
16029                                                                      interrupts.
16030                                                                   A read of GICV_IAR or GICV_AIAR returns a spurious interrupt
16031                                                                      ID.
16032                                                                  0 = Virtual CPU interface operation disabled.
16033                                                                  1 = Virtual CPU interface operation enabled. */
16034         uint32_t uie                   : 1;  /**< [  1:  1](R/W) Underflow Interrupt Enable. Enables the signaling of a
16035                                                                      maintenance interrupt when the List registers are empty, or
16036                                                                      hold only one valid entry:
16037                                                                  0 = Maintenance interrupt disabled.
16038                                                                  1 = A maintenance interrupt is asserted if none, or only one, of
16039                                                                      the List register entries is marked as a valid interrupt. */
16040         uint32_t lrenpie               : 1;  /**< [  2:  2](R/W) List Register Entry Not Present Interrupt Enable. Enables the
16041                                                                      signaling of a maintenance interrupt while the virtual CPU
16042                                                                      interface does not have a corresponding valid List register
16043                                                                      entry for an EOI request:
16044                                                                  0 = Maintenance interrupt disabled.
16045                                                                  1 = A maintenance interrupt is asserted while the EOIcount field
16046                                                                      is not 0. */
16047         uint32_t npie                  : 1;  /**< [  3:  3](R/W) No Pending Interrupt Enable. Enables the signaling of a
16048                                                                      maintenance interrupt while no pending interrupts are present
16049                                                                      in the List registers:
16050                                                                  0 = Maintenance interrupt disabled.
16051                                                                  1 = Maintenance interupt signaled while the List registers contain
16052                                                                      no interrupts in the pending state. */
16053         uint32_t vgrp0eie              : 1;  /**< [  4:  4](R/W) VM Enable Group 0 Interrupt Enable. Enables the signaling of a
16054                                                                      maintenance interrupt while signaling of Group 0 interrupts
16055                                                                      from the virtual CPU interface to the connected virtual
16056                                                                      machine is enabled:
16057                                                                  0 = Maintenance interrupt disabled.
16058                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp0] is
16059                                                                      set to 1. */
16060         uint32_t vgrp0die              : 1;  /**< [  5:  5](R/W) VM Disable Group 0 Interrupt Enable. Enables the signaling of
16061                                                                      a maintenance interrupt while signaling of Group 0 interrupts
16062                                                                      from the virtual CPU interface to the connected virtual
16063                                                                      machine is disabled:
16064                                                                  0 = Maintenance interrupt disabled.
16065                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp0] is
16066                                                                      set to 0. */
16067         uint32_t vgrp1eie              : 1;  /**< [  6:  6](R/W) VM Enable Group 1 Interrupt Enable. Enables the signaling of a
16068                                                                      maintenance interrupt while signaling of Group 1 interrupts
16069                                                                      from the virtual CPU interface to the connected virtual
16070                                                                      machine is enabled:
16071                                                                  0 = Maintenance interrupt disabled.
16072                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp1] is
16073                                                                      set to 1. */
16074         uint32_t vgrp1die              : 1;  /**< [  7:  7](R/W) VM Disable Group 1 Interrupt Enable. Enables the signaling of
16075                                                                      a maintenance interrupt while signaling of Group 1 interrupts
16076                                                                      from the virtual CPU interface to the connected virtual
16077                                                                      machine is disabled:
16078                                                                  0 = Maintenance interrupt disabled.
16079                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp1] is
16080                                                                      set to 0. */
16081         uint32_t reserved_8_9          : 2;
16082         uint32_t tc                    : 1;  /**< [ 10: 10](R/W) Trap all nonsecure El1 accesses to system registers that are
16083                                                                      common to group 0 and group 1 to EL2.
16084                                                                  This affects AP_ICC_DIR_EL1, AP_ICC_PMR_EL1, and AP_ICC_RPR_EL1.
16085                                                                  0 = Nonsecure EL1 accesses to common registers proceed as normal.
16086                                                                  1 = Any nonsecure EL1 accesses to common registers trap to EL2. */
16087         uint32_t tall0                 : 1;  /**< [ 11: 11](R/W) Trap all nonsecure EL1 accesses to ICC_* system registers for
16088                                                                      group 0 interrupts to EL2.
16089                                                                  0 = Non-Secure EL1 accesses to ICC_* registers for group 0
16090                                                                      interrupts proceed as normal.
16091                                                                  1 = Any nonsecure EL1 accesses to ICC_* registers for group 0
16092                                                                      interrupts trap to EL2. */
16093         uint32_t tall1                 : 1;  /**< [ 12: 12](R/W) Trap all nonsecure EL1 accesses to ICC_* system registers for
16094                                                                      group 1 interrupts to EL2.
16095                                                                  0 = Non-Secure EL1 accesses to ICC_* registers for group 1
16096                                                                      interrupts proceed as normal.
16097                                                                  1 = Any nonsecure EL1 accesses to ICC_* registers for group 1
16098                                                                      interrupts trap to EL2. */
16099         uint32_t tsei                  : 1;  /**< [ 13: 13](RO) A locally generated SEI will trap to EL2 if this bit is set.  This bit is RES0 when
16100                                                                  AP_ICH_VTR_EL2[SEIS] is not set. */
16101         uint32_t tdir                  : 1;  /**< [ 14: 14](R/W) Trap nonsecure EL1 writes to ICC_DIR_EL1:
16102                                                                    0 = Nonsecure EL1 writes of ICC_DIR_EL1 do not cause a trap to EL2, unless trapped by
16103                                                                  other mechanisms.
16104                                                                    1 = Nonsecure EL1 writes of ICC_DIR_EL1 are trapped to EL2. */
16105         uint32_t reserved_15_26        : 12;
16106         uint32_t eoicount              : 5;  /**< [ 31: 27](R/W) Counts the number of EOIs received that do not have a
16107                                                                      corresponding entry in the List registers. The virtual CPU
16108                                                                      interface increments this field automatically when a matching
16109                                                                      EOI is received.
16110 
16111                                                                  EOIs that do not clear a bit in one of the Active Priorities
16112                                                                      registers ICH_APmRn_EL2 do not cause an increment.
16113 
16114                                                                  Although not possible under correct operation, if an EOI
16115                                                                      occurs when the value of this field is 31, this field wraps to
16116                                                                      0.
16117 
16118                                                                  The maintenance interrupt is asserted whenever this field is
16119                                                                      nonzero and the LRENPIE bit is set to 1. */
16120 #endif /* Word 0 - End */
16121     } s;
16122     struct bdk_ap_ich_hcr_el2_cn8
16123     {
16124 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16125         uint32_t eoicount              : 5;  /**< [ 31: 27](R/W) Counts the number of EOIs received that do not have a
16126                                                                      corresponding entry in the List registers. The virtual CPU
16127                                                                      interface increments this field automatically when a matching
16128                                                                      EOI is received.
16129 
16130                                                                  EOIs that do not clear a bit in one of the Active Priorities
16131                                                                      registers ICH_APmRn_EL2 do not cause an increment.
16132 
16133                                                                  Although not possible under correct operation, if an EOI
16134                                                                      occurs when the value of this field is 31, this field wraps to
16135                                                                      0.
16136 
16137                                                                  The maintenance interrupt is asserted whenever this field is
16138                                                                      nonzero and the LRENPIE bit is set to 1. */
16139         uint32_t reserved_14_26        : 13;
16140         uint32_t tsei                  : 1;  /**< [ 13: 13](RO) A locally generated SEI will trap to EL2 if this bit is set.  This bit is RES0 when
16141                                                                  AP_ICH_VTR_EL2[SEIS] is not set. */
16142         uint32_t tall1                 : 1;  /**< [ 12: 12](R/W) Trap all nonsecure EL1 accesses to ICC_* system registers for
16143                                                                      group 1 interrupts to EL2.
16144                                                                  0 = Non-Secure EL1 accesses to ICC_* registers for group 1
16145                                                                      interrupts proceed as normal.
16146                                                                  1 = Any nonsecure EL1 accesses to ICC_* registers for group 1
16147                                                                      interrupts trap to EL2. */
16148         uint32_t tall0                 : 1;  /**< [ 11: 11](R/W) Trap all nonsecure EL1 accesses to ICC_* system registers for
16149                                                                      group 0 interrupts to EL2.
16150                                                                  0 = Non-Secure EL1 accesses to ICC_* registers for group 0
16151                                                                      interrupts proceed as normal.
16152                                                                  1 = Any nonsecure EL1 accesses to ICC_* registers for group 0
16153                                                                      interrupts trap to EL2. */
16154         uint32_t tc                    : 1;  /**< [ 10: 10](R/W) Trap all nonsecure El1 accesses to system registers that are
16155                                                                      common to group 0 and group 1 to EL2.
16156                                                                  This affects AP_ICC_DIR_EL1, AP_ICC_PMR_EL1, and AP_ICC_RPR_EL1.
16157                                                                  0 = Nonsecure EL1 accesses to common registers proceed as normal.
16158                                                                  1 = Any nonsecure EL1 accesses to common registers trap to EL2. */
16159         uint32_t reserved_8_9          : 2;
16160         uint32_t vgrp1die              : 1;  /**< [  7:  7](R/W) VM Disable Group 1 Interrupt Enable. Enables the signaling of
16161                                                                      a maintenance interrupt while signaling of Group 1 interrupts
16162                                                                      from the virtual CPU interface to the connected virtual
16163                                                                      machine is disabled:
16164                                                                  0 = Maintenance interrupt disabled.
16165                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp1] is
16166                                                                      set to 0. */
16167         uint32_t vgrp1eie              : 1;  /**< [  6:  6](R/W) VM Enable Group 1 Interrupt Enable. Enables the signaling of a
16168                                                                      maintenance interrupt while signaling of Group 1 interrupts
16169                                                                      from the virtual CPU interface to the connected virtual
16170                                                                      machine is enabled:
16171                                                                  0 = Maintenance interrupt disabled.
16172                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp1] is
16173                                                                      set to 1. */
16174         uint32_t vgrp0die              : 1;  /**< [  5:  5](R/W) VM Disable Group 0 Interrupt Enable. Enables the signaling of
16175                                                                      a maintenance interrupt while signaling of Group 0 interrupts
16176                                                                      from the virtual CPU interface to the connected virtual
16177                                                                      machine is disabled:
16178                                                                  0 = Maintenance interrupt disabled.
16179                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp0] is
16180                                                                      set to 0. */
16181         uint32_t vgrp0eie              : 1;  /**< [  4:  4](R/W) VM Enable Group 0 Interrupt Enable. Enables the signaling of a
16182                                                                      maintenance interrupt while signaling of Group 0 interrupts
16183                                                                      from the virtual CPU interface to the connected virtual
16184                                                                      machine is enabled:
16185                                                                  0 = Maintenance interrupt disabled.
16186                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp0] is
16187                                                                      set to 1. */
16188         uint32_t npie                  : 1;  /**< [  3:  3](R/W) No Pending Interrupt Enable. Enables the signaling of a
16189                                                                      maintenance interrupt while no pending interrupts are present
16190                                                                      in the List registers:
16191                                                                  0 = Maintenance interrupt disabled.
16192                                                                  1 = Maintenance interupt signaled while the List registers contain
16193                                                                      no interrupts in the pending state. */
16194         uint32_t lrenpie               : 1;  /**< [  2:  2](R/W) List Register Entry Not Present Interrupt Enable. Enables the
16195                                                                      signaling of a maintenance interrupt while the virtual CPU
16196                                                                      interface does not have a corresponding valid List register
16197                                                                      entry for an EOI request:
16198                                                                  0 = Maintenance interrupt disabled.
16199                                                                  1 = A maintenance interrupt is asserted while the EOIcount field
16200                                                                      is not 0. */
16201         uint32_t uie                   : 1;  /**< [  1:  1](R/W) Underflow Interrupt Enable. Enables the signaling of a
16202                                                                      maintenance interrupt when the List registers are empty, or
16203                                                                      hold only one valid entry:
16204                                                                  0 = Maintenance interrupt disabled.
16205                                                                  1 = A maintenance interrupt is asserted if none, or only one, of
16206                                                                      the List register entries is marked as a valid interrupt. */
16207         uint32_t en                    : 1;  /**< [  0:  0](R/W) Enable. Global enable bit for the virtual CPU interface:
16208                                                                  When this field is set to 0:
16209                                                                   The virtual CPU interface does not signal any maintenance
16210                                                                      interrupts.
16211                                                                   The virtual CPU interface does not signal any virtual
16212                                                                      interrupts.
16213                                                                   A read of GICV_IAR or GICV_AIAR returns a spurious interrupt
16214                                                                      ID.
16215                                                                  0 = Virtual CPU interface operation disabled.
16216                                                                  1 = Virtual CPU interface operation enabled. */
16217 #else /* Word 0 - Little Endian */
16218         uint32_t en                    : 1;  /**< [  0:  0](R/W) Enable. Global enable bit for the virtual CPU interface:
16219                                                                  When this field is set to 0:
16220                                                                   The virtual CPU interface does not signal any maintenance
16221                                                                      interrupts.
16222                                                                   The virtual CPU interface does not signal any virtual
16223                                                                      interrupts.
16224                                                                   A read of GICV_IAR or GICV_AIAR returns a spurious interrupt
16225                                                                      ID.
16226                                                                  0 = Virtual CPU interface operation disabled.
16227                                                                  1 = Virtual CPU interface operation enabled. */
16228         uint32_t uie                   : 1;  /**< [  1:  1](R/W) Underflow Interrupt Enable. Enables the signaling of a
16229                                                                      maintenance interrupt when the List registers are empty, or
16230                                                                      hold only one valid entry:
16231                                                                  0 = Maintenance interrupt disabled.
16232                                                                  1 = A maintenance interrupt is asserted if none, or only one, of
16233                                                                      the List register entries is marked as a valid interrupt. */
16234         uint32_t lrenpie               : 1;  /**< [  2:  2](R/W) List Register Entry Not Present Interrupt Enable. Enables the
16235                                                                      signaling of a maintenance interrupt while the virtual CPU
16236                                                                      interface does not have a corresponding valid List register
16237                                                                      entry for an EOI request:
16238                                                                  0 = Maintenance interrupt disabled.
16239                                                                  1 = A maintenance interrupt is asserted while the EOIcount field
16240                                                                      is not 0. */
16241         uint32_t npie                  : 1;  /**< [  3:  3](R/W) No Pending Interrupt Enable. Enables the signaling of a
16242                                                                      maintenance interrupt while no pending interrupts are present
16243                                                                      in the List registers:
16244                                                                  0 = Maintenance interrupt disabled.
16245                                                                  1 = Maintenance interupt signaled while the List registers contain
16246                                                                      no interrupts in the pending state. */
16247         uint32_t vgrp0eie              : 1;  /**< [  4:  4](R/W) VM Enable Group 0 Interrupt Enable. Enables the signaling of a
16248                                                                      maintenance interrupt while signaling of Group 0 interrupts
16249                                                                      from the virtual CPU interface to the connected virtual
16250                                                                      machine is enabled:
16251                                                                  0 = Maintenance interrupt disabled.
16252                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp0] is
16253                                                                      set to 1. */
16254         uint32_t vgrp0die              : 1;  /**< [  5:  5](R/W) VM Disable Group 0 Interrupt Enable. Enables the signaling of
16255                                                                      a maintenance interrupt while signaling of Group 0 interrupts
16256                                                                      from the virtual CPU interface to the connected virtual
16257                                                                      machine is disabled:
16258                                                                  0 = Maintenance interrupt disabled.
16259                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp0] is
16260                                                                      set to 0. */
16261         uint32_t vgrp1eie              : 1;  /**< [  6:  6](R/W) VM Enable Group 1 Interrupt Enable. Enables the signaling of a
16262                                                                      maintenance interrupt while signaling of Group 1 interrupts
16263                                                                      from the virtual CPU interface to the connected virtual
16264                                                                      machine is enabled:
16265                                                                  0 = Maintenance interrupt disabled.
16266                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp1] is
16267                                                                      set to 1. */
16268         uint32_t vgrp1die              : 1;  /**< [  7:  7](R/W) VM Disable Group 1 Interrupt Enable. Enables the signaling of
16269                                                                      a maintenance interrupt while signaling of Group 1 interrupts
16270                                                                      from the virtual CPU interface to the connected virtual
16271                                                                      machine is disabled:
16272                                                                  0 = Maintenance interrupt disabled.
16273                                                                  1 = Maintenance interrupt signaled while GICV_CTLR[EnableGrp1] is
16274                                                                      set to 0. */
16275         uint32_t reserved_8_9          : 2;
16276         uint32_t tc                    : 1;  /**< [ 10: 10](R/W) Trap all nonsecure El1 accesses to system registers that are
16277                                                                      common to group 0 and group 1 to EL2.
16278                                                                  This affects AP_ICC_DIR_EL1, AP_ICC_PMR_EL1, and AP_ICC_RPR_EL1.
16279                                                                  0 = Nonsecure EL1 accesses to common registers proceed as normal.
16280                                                                  1 = Any nonsecure EL1 accesses to common registers trap to EL2. */
16281         uint32_t tall0                 : 1;  /**< [ 11: 11](R/W) Trap all nonsecure EL1 accesses to ICC_* system registers for
16282                                                                      group 0 interrupts to EL2.
16283                                                                  0 = Non-Secure EL1 accesses to ICC_* registers for group 0
16284                                                                      interrupts proceed as normal.
16285                                                                  1 = Any nonsecure EL1 accesses to ICC_* registers for group 0
16286                                                                      interrupts trap to EL2. */
16287         uint32_t tall1                 : 1;  /**< [ 12: 12](R/W) Trap all nonsecure EL1 accesses to ICC_* system registers for
16288                                                                      group 1 interrupts to EL2.
16289                                                                  0 = Non-Secure EL1 accesses to ICC_* registers for group 1
16290                                                                      interrupts proceed as normal.
16291                                                                  1 = Any nonsecure EL1 accesses to ICC_* registers for group 1
16292                                                                      interrupts trap to EL2. */
16293         uint32_t tsei                  : 1;  /**< [ 13: 13](RO) A locally generated SEI will trap to EL2 if this bit is set.  This bit is RES0 when
16294                                                                  AP_ICH_VTR_EL2[SEIS] is not set. */
16295         uint32_t reserved_14_26        : 13;
16296         uint32_t eoicount              : 5;  /**< [ 31: 27](R/W) Counts the number of EOIs received that do not have a
16297                                                                      corresponding entry in the List registers. The virtual CPU
16298                                                                      interface increments this field automatically when a matching
16299                                                                      EOI is received.
16300 
16301                                                                  EOIs that do not clear a bit in one of the Active Priorities
16302                                                                      registers ICH_APmRn_EL2 do not cause an increment.
16303 
16304                                                                  Although not possible under correct operation, if an EOI
16305                                                                      occurs when the value of this field is 31, this field wraps to
16306                                                                      0.
16307 
16308                                                                  The maintenance interrupt is asserted whenever this field is
16309                                                                      nonzero and the LRENPIE bit is set to 1. */
16310 #endif /* Word 0 - End */
16311     } cn8;
16312     /* struct bdk_ap_ich_hcr_el2_s cn9; */
16313 };
16314 typedef union bdk_ap_ich_hcr_el2 bdk_ap_ich_hcr_el2_t;
16315 
16316 #define BDK_AP_ICH_HCR_EL2 BDK_AP_ICH_HCR_EL2_FUNC()
16317 static inline uint64_t BDK_AP_ICH_HCR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_HCR_EL2_FUNC(void)16318 static inline uint64_t BDK_AP_ICH_HCR_EL2_FUNC(void)
16319 {
16320     return 0x3040c0b0000ll;
16321 }
16322 
16323 #define typedef_BDK_AP_ICH_HCR_EL2 bdk_ap_ich_hcr_el2_t
16324 #define bustype_BDK_AP_ICH_HCR_EL2 BDK_CSR_TYPE_SYSREG
16325 #define basename_BDK_AP_ICH_HCR_EL2 "AP_ICH_HCR_EL2"
16326 #define busnum_BDK_AP_ICH_HCR_EL2 0
16327 #define arguments_BDK_AP_ICH_HCR_EL2 -1,-1,-1,-1
16328 
16329 /**
16330  * Register (SYSREG) ap_ich_lr#_el2
16331  *
16332  * AP List Registers
16333  * Provides interrupt context information for the virtual CPU interface.
16334  */
16335 union bdk_ap_ich_lrx_el2
16336 {
16337     uint64_t u;
16338     struct bdk_ap_ich_lrx_el2_s
16339     {
16340 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16341         uint64_t state                 : 2;  /**< [ 63: 62](R/W) 0x0 = Invalid.
16342                                                                  0x1 = Pending.
16343                                                                  0x2 = Active.
16344                                                                  0x3 = Pending and Active. */
16345         uint64_t hw                    : 1;  /**< [ 61: 61](R/W) Virtual interrupt corresponds to physical interrupt. */
16346         uint64_t group                 : 1;  /**< [ 60: 60](R/W) Indicates interrupt is group 1. */
16347         uint64_t reserved_56_59        : 4;
16348         uint64_t pri                   : 8;  /**< [ 55: 48](R/W) Interrupt priority. */
16349         uint64_t reserved_42_47        : 6;
16350         uint64_t physical_id           : 10; /**< [ 41: 32](R/W) When [HW] is zero, bit 41 indicates whether this interrupt triggers an EOI
16351                                                                  maintenance interrupt and bits 40..32 are RES0. */
16352         uint64_t virtual_id            : 32; /**< [ 31:  0](R/W) Virtual interrupt ID. */
16353 #else /* Word 0 - Little Endian */
16354         uint64_t virtual_id            : 32; /**< [ 31:  0](R/W) Virtual interrupt ID. */
16355         uint64_t physical_id           : 10; /**< [ 41: 32](R/W) When [HW] is zero, bit 41 indicates whether this interrupt triggers an EOI
16356                                                                  maintenance interrupt and bits 40..32 are RES0. */
16357         uint64_t reserved_42_47        : 6;
16358         uint64_t pri                   : 8;  /**< [ 55: 48](R/W) Interrupt priority. */
16359         uint64_t reserved_56_59        : 4;
16360         uint64_t group                 : 1;  /**< [ 60: 60](R/W) Indicates interrupt is group 1. */
16361         uint64_t hw                    : 1;  /**< [ 61: 61](R/W) Virtual interrupt corresponds to physical interrupt. */
16362         uint64_t state                 : 2;  /**< [ 63: 62](R/W) 0x0 = Invalid.
16363                                                                  0x1 = Pending.
16364                                                                  0x2 = Active.
16365                                                                  0x3 = Pending and Active. */
16366 #endif /* Word 0 - End */
16367     } s;
16368     /* struct bdk_ap_ich_lrx_el2_s cn; */
16369 };
16370 typedef union bdk_ap_ich_lrx_el2 bdk_ap_ich_lrx_el2_t;
16371 
16372 static inline uint64_t BDK_AP_ICH_LRX_EL2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ICH_LRX_EL2(unsigned long a)16373 static inline uint64_t BDK_AP_ICH_LRX_EL2(unsigned long a)
16374 {
16375     if (a<=15)
16376         return 0x3040c0c0000ll + 0x100ll * ((a) & 0xf);
16377     __bdk_csr_fatal("AP_ICH_LRX_EL2", 1, a, 0, 0, 0);
16378 }
16379 
16380 #define typedef_BDK_AP_ICH_LRX_EL2(a) bdk_ap_ich_lrx_el2_t
16381 #define bustype_BDK_AP_ICH_LRX_EL2(a) BDK_CSR_TYPE_SYSREG
16382 #define basename_BDK_AP_ICH_LRX_EL2(a) "AP_ICH_LRX_EL2"
16383 #define busnum_BDK_AP_ICH_LRX_EL2(a) (a)
16384 #define arguments_BDK_AP_ICH_LRX_EL2(a) (a),-1,-1,-1
16385 
16386 /**
16387  * Register (SYSREG) ap_ich_lrc#
16388  *
16389  * AP List 32-bit Registers
16390  * Provides interrupt context information for the virtual CPU interface. Only used for Aarch32.
16391  * Here for disassembly only.
16392  */
16393 union bdk_ap_ich_lrcx
16394 {
16395     uint32_t u;
16396     struct bdk_ap_ich_lrcx_s
16397     {
16398 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16399         uint32_t reserved_0_31         : 32;
16400 #else /* Word 0 - Little Endian */
16401         uint32_t reserved_0_31         : 32;
16402 #endif /* Word 0 - End */
16403     } s;
16404     /* struct bdk_ap_ich_lrcx_s cn; */
16405 };
16406 typedef union bdk_ap_ich_lrcx bdk_ap_ich_lrcx_t;
16407 
16408 static inline uint64_t BDK_AP_ICH_LRCX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ICH_LRCX(unsigned long a)16409 static inline uint64_t BDK_AP_ICH_LRCX(unsigned long a)
16410 {
16411     if (a<=15)
16412         return 0x3040c0e0000ll + 0x100ll * ((a) & 0xf);
16413     __bdk_csr_fatal("AP_ICH_LRCX", 1, a, 0, 0, 0);
16414 }
16415 
16416 #define typedef_BDK_AP_ICH_LRCX(a) bdk_ap_ich_lrcx_t
16417 #define bustype_BDK_AP_ICH_LRCX(a) BDK_CSR_TYPE_SYSREG
16418 #define basename_BDK_AP_ICH_LRCX(a) "AP_ICH_LRCX"
16419 #define busnum_BDK_AP_ICH_LRCX(a) (a)
16420 #define arguments_BDK_AP_ICH_LRCX(a) (a),-1,-1,-1
16421 
16422 /**
16423  * Register (SYSREG) ap_ich_misr_el2
16424  *
16425  * AP Interrupt Controller Maintenance Interrupt State Register
16426  * Indicates which maintenance interrupts are asserted.
16427  */
16428 union bdk_ap_ich_misr_el2
16429 {
16430     uint32_t u;
16431     struct bdk_ap_ich_misr_el2_s
16432     {
16433 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16434         uint32_t reserved_9_31         : 23;
16435         uint32_t vsei                  : 1;  /**< [  8:  8](RO) Virtual SEI. Set to 1 when a condition that would result in
16436                                                                      generation of an SEI is detected during a virtual access to an
16437                                                                      ICC_* system register. */
16438         uint32_t vgrp1d                : 1;  /**< [  7:  7](RO) Disabled Group 1 maintenance interrupt.
16439                                                                  Asserted whenever AP_ICH_HCR_EL2[VGrp1DIE] is 1 and
16440                                                                      AP_ICH_VMCR_EL2[VMGrp1En] is 0. */
16441         uint32_t vgrp1e                : 1;  /**< [  6:  6](RO) Enabled Group 1 maintenance interrupt.
16442                                                                  Asserted whenever AP_ICH_HCR_EL2[VGrp1EIE] is 1 and
16443                                                                      AP_ICH_VMCR_EL2[VMGrp1En] is 1. */
16444         uint32_t vgrp0d                : 1;  /**< [  5:  5](RO) Disabled Group 0 maintenance interrupt.
16445                                                                  Asserted whenever AP_ICH_HCR_EL2[VGrp0DIE] is 1 and
16446                                                                      AP_ICH_VMCR_EL2[VMGrp0En] is 0. */
16447         uint32_t vgrp0e                : 1;  /**< [  4:  4](RO) Enabled Group 0 maintenance interrupt.
16448                                                                  Asserted whenever AP_ICH_HCR_EL2[VGrp0EIE] is 1 and
16449                                                                      AP_ICH_VMCR_EL2[VMGrp0En] is 1. */
16450         uint32_t np                    : 1;  /**< [  3:  3](RO) No Pending maintenance interrupt.
16451                                                                  Asserted whenever AP_ICH_HCR_EL2[NPIE] is 1 and no List register
16452                                                                      is in pending state. */
16453         uint32_t lrenp                 : 1;  /**< [  2:  2](RO) List Register Entry Not Present maintenance interrupt.
16454                                                                  Asserted whenever AP_ICH_HCR_EL2[LRENPIE] is 1 and
16455                                                                      AP_ICH_HCR_EL2[EOIcount] is nonzero. */
16456         uint32_t u                     : 1;  /**< [  1:  1](RO) Underflow maintenance interrupt.
16457                                                                  Asserted whenever AP_ICH_HCR_EL2[UIE] is 1 and if none, or only
16458                                                                      one, of the List register entries are marked as a valid
16459                                                                      interrupt, that is, if the corresponding ICH_LR\<n\>_EL2[State]
16460                                                                      bits do not equal0x0 */
16461         uint32_t eoi                   : 1;  /**< [  0:  0](RO) EOI maintenance interrupt.
16462                                                                  Asserted whenever at least one List register is asserting an
16463                                                                      EOI interrupt. That is, when at least one bit in ICH_EISR0_EL1
16464                                                                      or ICH_EISR1_EL1 is 1. */
16465 #else /* Word 0 - Little Endian */
16466         uint32_t eoi                   : 1;  /**< [  0:  0](RO) EOI maintenance interrupt.
16467                                                                  Asserted whenever at least one List register is asserting an
16468                                                                      EOI interrupt. That is, when at least one bit in ICH_EISR0_EL1
16469                                                                      or ICH_EISR1_EL1 is 1. */
16470         uint32_t u                     : 1;  /**< [  1:  1](RO) Underflow maintenance interrupt.
16471                                                                  Asserted whenever AP_ICH_HCR_EL2[UIE] is 1 and if none, or only
16472                                                                      one, of the List register entries are marked as a valid
16473                                                                      interrupt, that is, if the corresponding ICH_LR\<n\>_EL2[State]
16474                                                                      bits do not equal0x0 */
16475         uint32_t lrenp                 : 1;  /**< [  2:  2](RO) List Register Entry Not Present maintenance interrupt.
16476                                                                  Asserted whenever AP_ICH_HCR_EL2[LRENPIE] is 1 and
16477                                                                      AP_ICH_HCR_EL2[EOIcount] is nonzero. */
16478         uint32_t np                    : 1;  /**< [  3:  3](RO) No Pending maintenance interrupt.
16479                                                                  Asserted whenever AP_ICH_HCR_EL2[NPIE] is 1 and no List register
16480                                                                      is in pending state. */
16481         uint32_t vgrp0e                : 1;  /**< [  4:  4](RO) Enabled Group 0 maintenance interrupt.
16482                                                                  Asserted whenever AP_ICH_HCR_EL2[VGrp0EIE] is 1 and
16483                                                                      AP_ICH_VMCR_EL2[VMGrp0En] is 1. */
16484         uint32_t vgrp0d                : 1;  /**< [  5:  5](RO) Disabled Group 0 maintenance interrupt.
16485                                                                  Asserted whenever AP_ICH_HCR_EL2[VGrp0DIE] is 1 and
16486                                                                      AP_ICH_VMCR_EL2[VMGrp0En] is 0. */
16487         uint32_t vgrp1e                : 1;  /**< [  6:  6](RO) Enabled Group 1 maintenance interrupt.
16488                                                                  Asserted whenever AP_ICH_HCR_EL2[VGrp1EIE] is 1 and
16489                                                                      AP_ICH_VMCR_EL2[VMGrp1En] is 1. */
16490         uint32_t vgrp1d                : 1;  /**< [  7:  7](RO) Disabled Group 1 maintenance interrupt.
16491                                                                  Asserted whenever AP_ICH_HCR_EL2[VGrp1DIE] is 1 and
16492                                                                      AP_ICH_VMCR_EL2[VMGrp1En] is 0. */
16493         uint32_t vsei                  : 1;  /**< [  8:  8](RO) Virtual SEI. Set to 1 when a condition that would result in
16494                                                                      generation of an SEI is detected during a virtual access to an
16495                                                                      ICC_* system register. */
16496         uint32_t reserved_9_31         : 23;
16497 #endif /* Word 0 - End */
16498     } s;
16499     /* struct bdk_ap_ich_misr_el2_s cn; */
16500 };
16501 typedef union bdk_ap_ich_misr_el2 bdk_ap_ich_misr_el2_t;
16502 
16503 #define BDK_AP_ICH_MISR_EL2 BDK_AP_ICH_MISR_EL2_FUNC()
16504 static inline uint64_t BDK_AP_ICH_MISR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_MISR_EL2_FUNC(void)16505 static inline uint64_t BDK_AP_ICH_MISR_EL2_FUNC(void)
16506 {
16507     return 0x3040c0b0200ll;
16508 }
16509 
16510 #define typedef_BDK_AP_ICH_MISR_EL2 bdk_ap_ich_misr_el2_t
16511 #define bustype_BDK_AP_ICH_MISR_EL2 BDK_CSR_TYPE_SYSREG
16512 #define basename_BDK_AP_ICH_MISR_EL2 "AP_ICH_MISR_EL2"
16513 #define busnum_BDK_AP_ICH_MISR_EL2 0
16514 #define arguments_BDK_AP_ICH_MISR_EL2 -1,-1,-1,-1
16515 
16516 /**
16517  * Register (SYSREG) ap_ich_vmcr_el2
16518  *
16519  * AP Interrupt Controller Virtual Machine Control Register
16520  * Enables the hypervisor to save and restore the virtual machine
16521  *     view of the GIC state.
16522  */
16523 union bdk_ap_ich_vmcr_el2
16524 {
16525     uint32_t u;
16526     struct bdk_ap_ich_vmcr_el2_s
16527     {
16528 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16529         uint32_t vpmr                  : 8;  /**< [ 31: 24](R/W) Virtual Priority Mask.
16530                                                                  Visible to the guest OS as AP_ICC_PMR_EL1 / GICV_PMR. */
16531         uint32_t vbpr0                 : 3;  /**< [ 23: 21](R/W) Virtual BPR0.
16532                                                                  Visible to the guest OS as AP_ICC_BPR0_EL1 / GICV_BPR. */
16533         uint32_t vbpr1                 : 3;  /**< [ 20: 18](R/W) Virtual BPR1.
16534                                                                  Visible to the guest OS as AP_ICC_BPR1_EL1 / GICV_ABPR. */
16535         uint32_t reserved_10_17        : 8;
16536         uint32_t veoim                 : 1;  /**< [  9:  9](R/W) Virtual EOImode.
16537                                                                  Visible to the guest OS as AP_ICC_CTLR_EL1[EOImode] /
16538                                                                      GICV_CTLR[EOImode]. */
16539         uint32_t reserved_5_8          : 4;
16540         uint32_t vcbpr                 : 1;  /**< [  4:  4](R/W) Virtual CBPR.
16541                                                                  Visible to the guest OS as AP_ICC_CTLR_EL1[CBPR] / GICV_CTLR[CBPR]. */
16542         uint32_t vfiqen                : 1;  /**< [  3:  3](R/W) Virtual FIQ enable.
16543                                                                  Visible to the guest OS as GICV_CTLR[FIQEn]. */
16544         uint32_t vackctl               : 1;  /**< [  2:  2](R/W) Virtual AckCtl.
16545                                                                  Visible to the guest OS as GICV_CTLR[AckCtl]. */
16546         uint32_t veng1                 : 1;  /**< [  1:  1](R/W) Virtual group 1 interrupt enable.
16547                                                                  Visible to the guest OS as AP_ICC_IGRPEN1_EL1[Enable] /
16548                                                                      GICV_CTLR[EnableGrp1]. */
16549         uint32_t veng0                 : 1;  /**< [  0:  0](R/W) Virtual group 0 interrupt enable.
16550                                                                  Visible to the guest OS as AP_ICC_IGRPEN0_EL1[Enable] /
16551                                                                      GICV_CTLR[EnableGrp0]. */
16552 #else /* Word 0 - Little Endian */
16553         uint32_t veng0                 : 1;  /**< [  0:  0](R/W) Virtual group 0 interrupt enable.
16554                                                                  Visible to the guest OS as AP_ICC_IGRPEN0_EL1[Enable] /
16555                                                                      GICV_CTLR[EnableGrp0]. */
16556         uint32_t veng1                 : 1;  /**< [  1:  1](R/W) Virtual group 1 interrupt enable.
16557                                                                  Visible to the guest OS as AP_ICC_IGRPEN1_EL1[Enable] /
16558                                                                      GICV_CTLR[EnableGrp1]. */
16559         uint32_t vackctl               : 1;  /**< [  2:  2](R/W) Virtual AckCtl.
16560                                                                  Visible to the guest OS as GICV_CTLR[AckCtl]. */
16561         uint32_t vfiqen                : 1;  /**< [  3:  3](R/W) Virtual FIQ enable.
16562                                                                  Visible to the guest OS as GICV_CTLR[FIQEn]. */
16563         uint32_t vcbpr                 : 1;  /**< [  4:  4](R/W) Virtual CBPR.
16564                                                                  Visible to the guest OS as AP_ICC_CTLR_EL1[CBPR] / GICV_CTLR[CBPR]. */
16565         uint32_t reserved_5_8          : 4;
16566         uint32_t veoim                 : 1;  /**< [  9:  9](R/W) Virtual EOImode.
16567                                                                  Visible to the guest OS as AP_ICC_CTLR_EL1[EOImode] /
16568                                                                      GICV_CTLR[EOImode]. */
16569         uint32_t reserved_10_17        : 8;
16570         uint32_t vbpr1                 : 3;  /**< [ 20: 18](R/W) Virtual BPR1.
16571                                                                  Visible to the guest OS as AP_ICC_BPR1_EL1 / GICV_ABPR. */
16572         uint32_t vbpr0                 : 3;  /**< [ 23: 21](R/W) Virtual BPR0.
16573                                                                  Visible to the guest OS as AP_ICC_BPR0_EL1 / GICV_BPR. */
16574         uint32_t vpmr                  : 8;  /**< [ 31: 24](R/W) Virtual Priority Mask.
16575                                                                  Visible to the guest OS as AP_ICC_PMR_EL1 / GICV_PMR. */
16576 #endif /* Word 0 - End */
16577     } s;
16578     /* struct bdk_ap_ich_vmcr_el2_s cn; */
16579 };
16580 typedef union bdk_ap_ich_vmcr_el2 bdk_ap_ich_vmcr_el2_t;
16581 
16582 #define BDK_AP_ICH_VMCR_EL2 BDK_AP_ICH_VMCR_EL2_FUNC()
16583 static inline uint64_t BDK_AP_ICH_VMCR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_VMCR_EL2_FUNC(void)16584 static inline uint64_t BDK_AP_ICH_VMCR_EL2_FUNC(void)
16585 {
16586     return 0x3040c0b0700ll;
16587 }
16588 
16589 #define typedef_BDK_AP_ICH_VMCR_EL2 bdk_ap_ich_vmcr_el2_t
16590 #define bustype_BDK_AP_ICH_VMCR_EL2 BDK_CSR_TYPE_SYSREG
16591 #define basename_BDK_AP_ICH_VMCR_EL2 "AP_ICH_VMCR_EL2"
16592 #define busnum_BDK_AP_ICH_VMCR_EL2 0
16593 #define arguments_BDK_AP_ICH_VMCR_EL2 -1,-1,-1,-1
16594 
16595 /**
16596  * Register (SYSREG) ap_ich_vseir_el2
16597  *
16598  * AP Interrupt Controller Virtual System Error Interrupt Register
16599  * Allows the hypervisor to inject a virtual SEI.
16600  */
16601 union bdk_ap_ich_vseir_el2
16602 {
16603     uint32_t u;
16604     struct bdk_ap_ich_vseir_el2_s
16605     {
16606 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16607         uint32_t valid                 : 1;  /**< [ 31: 31](R/W) System error interrupt valid.
16608                                                                  0 = No virtual system error exception is pending.
16609                                                                  1 = A virtual system error exception is pending for nonsecure
16610                                                                      EL1. */
16611         uint32_t reserved_25_30        : 6;
16612         uint32_t syndrome              : 25; /**< [ 24:  0](R/W) The value that will be presented in bits [24:0] of ESR_EL1 on
16613                                                                      entry into the SError exception handler. */
16614 #else /* Word 0 - Little Endian */
16615         uint32_t syndrome              : 25; /**< [ 24:  0](R/W) The value that will be presented in bits [24:0] of ESR_EL1 on
16616                                                                      entry into the SError exception handler. */
16617         uint32_t reserved_25_30        : 6;
16618         uint32_t valid                 : 1;  /**< [ 31: 31](R/W) System error interrupt valid.
16619                                                                  0 = No virtual system error exception is pending.
16620                                                                  1 = A virtual system error exception is pending for nonsecure
16621                                                                      EL1. */
16622 #endif /* Word 0 - End */
16623     } s;
16624     /* struct bdk_ap_ich_vseir_el2_s cn; */
16625 };
16626 typedef union bdk_ap_ich_vseir_el2 bdk_ap_ich_vseir_el2_t;
16627 
16628 #define BDK_AP_ICH_VSEIR_EL2 BDK_AP_ICH_VSEIR_EL2_FUNC()
16629 static inline uint64_t BDK_AP_ICH_VSEIR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_VSEIR_EL2_FUNC(void)16630 static inline uint64_t BDK_AP_ICH_VSEIR_EL2_FUNC(void)
16631 {
16632     if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX))
16633         return 0x3040c090400ll;
16634     __bdk_csr_fatal("AP_ICH_VSEIR_EL2", 0, 0, 0, 0, 0);
16635 }
16636 
16637 #define typedef_BDK_AP_ICH_VSEIR_EL2 bdk_ap_ich_vseir_el2_t
16638 #define bustype_BDK_AP_ICH_VSEIR_EL2 BDK_CSR_TYPE_SYSREG
16639 #define basename_BDK_AP_ICH_VSEIR_EL2 "AP_ICH_VSEIR_EL2"
16640 #define busnum_BDK_AP_ICH_VSEIR_EL2 0
16641 #define arguments_BDK_AP_ICH_VSEIR_EL2 -1,-1,-1,-1
16642 
16643 /**
16644  * Register (SYSREG) ap_ich_vtr_el2
16645  *
16646  * AP Interrupt Controller VGIC Type Register
16647  * Describes the number of implemented virtual priority bits and
16648  *     List registers.
16649  */
16650 union bdk_ap_ich_vtr_el2
16651 {
16652     uint32_t u;
16653     struct bdk_ap_ich_vtr_el2_s
16654     {
16655 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16656         uint32_t pribits               : 3;  /**< [ 31: 29](RO) The number of virtual priority bits implemented, minus one. */
16657         uint32_t prebits               : 3;  /**< [ 28: 26](RO) The number of virtual preemption bits implemented, minus one. */
16658         uint32_t idbits                : 3;  /**< [ 25: 23](RO) The number of virtual interrupt identifier bits supported:
16659                                                                  All other values are reserved.
16660                                                                  0x0 = 16 bits.
16661                                                                  0x1 = 24 bits. */
16662         uint32_t seis                  : 1;  /**< [ 22: 22](RO) SEI Support. Indicates whether the virtual CPU interface
16663                                                                      supports generation of SEIs:
16664                                                                  Virtual system errors may still be generated by writing to
16665                                                                      AP_ICH_VSEIR_EL2 regardless of the value of this field.
16666                                                                  0 = The virtual CPU interface logic does not support generation of
16667                                                                      SEIs.
16668                                                                  1 = The virtual CPU interface logic supports generation of SEIs. */
16669         uint32_t a3v                   : 1;  /**< [ 21: 21](RO) Affinity 3 Valid.
16670                                                                  0 = The virtual CPU interface logic only supports zero values of
16671                                                                      Affinity 3 in SGI generation system registers.
16672                                                                  1 = The virtual CPU interface logic supports nonzero values of
16673                                                                      Affinity 3 in SGI generation system registers. */
16674         uint32_t reserved_20           : 1;
16675         uint32_t tds                   : 1;  /**< [ 19: 19](RO) Separate trapping of nonsecure EL1 writes supported.
16676                                                                  0 = Implementation does not support CIM()_ICH_HCR_EL2[TDIR].
16677                                                                  1 = Implementation supports CIM()_ICH_HCR_EL2[TDIR]. */
16678         uint32_t reserved_5_18         : 14;
16679         uint32_t listregs              : 5;  /**< [  4:  0](RO) The number of implemented List registers, minus one. */
16680 #else /* Word 0 - Little Endian */
16681         uint32_t listregs              : 5;  /**< [  4:  0](RO) The number of implemented List registers, minus one. */
16682         uint32_t reserved_5_18         : 14;
16683         uint32_t tds                   : 1;  /**< [ 19: 19](RO) Separate trapping of nonsecure EL1 writes supported.
16684                                                                  0 = Implementation does not support CIM()_ICH_HCR_EL2[TDIR].
16685                                                                  1 = Implementation supports CIM()_ICH_HCR_EL2[TDIR]. */
16686         uint32_t reserved_20           : 1;
16687         uint32_t a3v                   : 1;  /**< [ 21: 21](RO) Affinity 3 Valid.
16688                                                                  0 = The virtual CPU interface logic only supports zero values of
16689                                                                      Affinity 3 in SGI generation system registers.
16690                                                                  1 = The virtual CPU interface logic supports nonzero values of
16691                                                                      Affinity 3 in SGI generation system registers. */
16692         uint32_t seis                  : 1;  /**< [ 22: 22](RO) SEI Support. Indicates whether the virtual CPU interface
16693                                                                      supports generation of SEIs:
16694                                                                  Virtual system errors may still be generated by writing to
16695                                                                      AP_ICH_VSEIR_EL2 regardless of the value of this field.
16696                                                                  0 = The virtual CPU interface logic does not support generation of
16697                                                                      SEIs.
16698                                                                  1 = The virtual CPU interface logic supports generation of SEIs. */
16699         uint32_t idbits                : 3;  /**< [ 25: 23](RO) The number of virtual interrupt identifier bits supported:
16700                                                                  All other values are reserved.
16701                                                                  0x0 = 16 bits.
16702                                                                  0x1 = 24 bits. */
16703         uint32_t prebits               : 3;  /**< [ 28: 26](RO) The number of virtual preemption bits implemented, minus one. */
16704         uint32_t pribits               : 3;  /**< [ 31: 29](RO) The number of virtual priority bits implemented, minus one. */
16705 #endif /* Word 0 - End */
16706     } s;
16707     struct bdk_ap_ich_vtr_el2_cn8
16708     {
16709 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16710         uint32_t pribits               : 3;  /**< [ 31: 29](RO) The number of virtual priority bits implemented, minus one. */
16711         uint32_t prebits               : 3;  /**< [ 28: 26](RO) The number of virtual preemption bits implemented, minus one. */
16712         uint32_t idbits                : 3;  /**< [ 25: 23](RO) The number of virtual interrupt identifier bits supported:
16713                                                                  All other values are reserved.
16714                                                                  0x0 = 16 bits.
16715                                                                  0x1 = 24 bits. */
16716         uint32_t seis                  : 1;  /**< [ 22: 22](RO) SEI Support. Indicates whether the virtual CPU interface
16717                                                                      supports generation of SEIs:
16718                                                                  Virtual system errors may still be generated by writing to
16719                                                                      AP_ICH_VSEIR_EL2 regardless of the value of this field.
16720                                                                  0 = The virtual CPU interface logic does not support generation of
16721                                                                      SEIs.
16722                                                                  1 = The virtual CPU interface logic supports generation of SEIs. */
16723         uint32_t a3v                   : 1;  /**< [ 21: 21](RO) Affinity 3 Valid.
16724                                                                  0 = The virtual CPU interface logic only supports zero values of
16725                                                                      Affinity 3 in SGI generation system registers.
16726                                                                  1 = The virtual CPU interface logic supports nonzero values of
16727                                                                      Affinity 3 in SGI generation system registers. */
16728         uint32_t reserved_5_20         : 16;
16729         uint32_t listregs              : 5;  /**< [  4:  0](RO) The number of implemented List registers, minus one. */
16730 #else /* Word 0 - Little Endian */
16731         uint32_t listregs              : 5;  /**< [  4:  0](RO) The number of implemented List registers, minus one. */
16732         uint32_t reserved_5_20         : 16;
16733         uint32_t a3v                   : 1;  /**< [ 21: 21](RO) Affinity 3 Valid.
16734                                                                  0 = The virtual CPU interface logic only supports zero values of
16735                                                                      Affinity 3 in SGI generation system registers.
16736                                                                  1 = The virtual CPU interface logic supports nonzero values of
16737                                                                      Affinity 3 in SGI generation system registers. */
16738         uint32_t seis                  : 1;  /**< [ 22: 22](RO) SEI Support. Indicates whether the virtual CPU interface
16739                                                                      supports generation of SEIs:
16740                                                                  Virtual system errors may still be generated by writing to
16741                                                                      AP_ICH_VSEIR_EL2 regardless of the value of this field.
16742                                                                  0 = The virtual CPU interface logic does not support generation of
16743                                                                      SEIs.
16744                                                                  1 = The virtual CPU interface logic supports generation of SEIs. */
16745         uint32_t idbits                : 3;  /**< [ 25: 23](RO) The number of virtual interrupt identifier bits supported:
16746                                                                  All other values are reserved.
16747                                                                  0x0 = 16 bits.
16748                                                                  0x1 = 24 bits. */
16749         uint32_t prebits               : 3;  /**< [ 28: 26](RO) The number of virtual preemption bits implemented, minus one. */
16750         uint32_t pribits               : 3;  /**< [ 31: 29](RO) The number of virtual priority bits implemented, minus one. */
16751 #endif /* Word 0 - End */
16752     } cn8;
16753     struct bdk_ap_ich_vtr_el2_cn9
16754     {
16755 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16756         uint32_t pribits               : 3;  /**< [ 31: 29](RO) The number of virtual priority bits implemented, minus one. */
16757         uint32_t prebits               : 3;  /**< [ 28: 26](RO) The number of virtual preemption bits implemented, minus one. */
16758         uint32_t idbits                : 3;  /**< [ 25: 23](RO) The number of virtual interrupt identifier bits supported:
16759                                                                  All other values are reserved.
16760                                                                  0x0 = 16 bits.
16761                                                                  0x1 = 24 bits. */
16762         uint32_t seis                  : 1;  /**< [ 22: 22](RO) SEI Support. Indicates whether the virtual CPU interface
16763                                                                      supports generation of SEIs:
16764                                                                  0 = The virtual CPU interface logic does not support generation of
16765                                                                      SEIs.
16766                                                                  1 = The virtual CPU interface logic supports generation of SEIs. */
16767         uint32_t a3v                   : 1;  /**< [ 21: 21](RO) Affinity 3 Valid.
16768                                                                  0 = The virtual CPU interface logic only supports zero values of
16769                                                                      Affinity 3 in SGI generation system registers.
16770                                                                  1 = The virtual CPU interface logic supports nonzero values of
16771                                                                      Affinity 3 in SGI generation system registers. */
16772         uint32_t reserved_20           : 1;
16773         uint32_t tds                   : 1;  /**< [ 19: 19](RO) Separate trapping of nonsecure EL1 writes supported.
16774                                                                  0 = Implementation does not support CIM()_ICH_HCR_EL2[TDIR].
16775                                                                  1 = Implementation supports CIM()_ICH_HCR_EL2[TDIR]. */
16776         uint32_t reserved_5_18         : 14;
16777         uint32_t listregs              : 5;  /**< [  4:  0](RO) The number of implemented List registers, minus one. */
16778 #else /* Word 0 - Little Endian */
16779         uint32_t listregs              : 5;  /**< [  4:  0](RO) The number of implemented List registers, minus one. */
16780         uint32_t reserved_5_18         : 14;
16781         uint32_t tds                   : 1;  /**< [ 19: 19](RO) Separate trapping of nonsecure EL1 writes supported.
16782                                                                  0 = Implementation does not support CIM()_ICH_HCR_EL2[TDIR].
16783                                                                  1 = Implementation supports CIM()_ICH_HCR_EL2[TDIR]. */
16784         uint32_t reserved_20           : 1;
16785         uint32_t a3v                   : 1;  /**< [ 21: 21](RO) Affinity 3 Valid.
16786                                                                  0 = The virtual CPU interface logic only supports zero values of
16787                                                                      Affinity 3 in SGI generation system registers.
16788                                                                  1 = The virtual CPU interface logic supports nonzero values of
16789                                                                      Affinity 3 in SGI generation system registers. */
16790         uint32_t seis                  : 1;  /**< [ 22: 22](RO) SEI Support. Indicates whether the virtual CPU interface
16791                                                                      supports generation of SEIs:
16792                                                                  0 = The virtual CPU interface logic does not support generation of
16793                                                                      SEIs.
16794                                                                  1 = The virtual CPU interface logic supports generation of SEIs. */
16795         uint32_t idbits                : 3;  /**< [ 25: 23](RO) The number of virtual interrupt identifier bits supported:
16796                                                                  All other values are reserved.
16797                                                                  0x0 = 16 bits.
16798                                                                  0x1 = 24 bits. */
16799         uint32_t prebits               : 3;  /**< [ 28: 26](RO) The number of virtual preemption bits implemented, minus one. */
16800         uint32_t pribits               : 3;  /**< [ 31: 29](RO) The number of virtual priority bits implemented, minus one. */
16801 #endif /* Word 0 - End */
16802     } cn9;
16803 };
16804 typedef union bdk_ap_ich_vtr_el2 bdk_ap_ich_vtr_el2_t;
16805 
16806 #define BDK_AP_ICH_VTR_EL2 BDK_AP_ICH_VTR_EL2_FUNC()
16807 static inline uint64_t BDK_AP_ICH_VTR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ICH_VTR_EL2_FUNC(void)16808 static inline uint64_t BDK_AP_ICH_VTR_EL2_FUNC(void)
16809 {
16810     return 0x3040c0b0100ll;
16811 }
16812 
16813 #define typedef_BDK_AP_ICH_VTR_EL2 bdk_ap_ich_vtr_el2_t
16814 #define bustype_BDK_AP_ICH_VTR_EL2 BDK_CSR_TYPE_SYSREG
16815 #define basename_BDK_AP_ICH_VTR_EL2 "AP_ICH_VTR_EL2"
16816 #define busnum_BDK_AP_ICH_VTR_EL2 0
16817 #define arguments_BDK_AP_ICH_VTR_EL2 -1,-1,-1,-1
16818 
16819 /**
16820  * Register (SYSREG) ap_id_aa64afr#_el1_res0
16821  *
16822  * INTERNAL: AP AArch64 Reserved Register
16823  *
16824  * Reserved for future expansion of information about the
16825  *     implementation defined features of the processor in AArch64.
16826  *     ARM doesn't actually assign a name to these registers, so
16827  *     for CNXXXX a made up one.
16828  */
16829 union bdk_ap_id_aa64afrx_el1_res0
16830 {
16831     uint64_t u;
16832     struct bdk_ap_id_aa64afrx_el1_res0_s
16833     {
16834 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16835         uint64_t reserved_0_63         : 64;
16836 #else /* Word 0 - Little Endian */
16837         uint64_t reserved_0_63         : 64;
16838 #endif /* Word 0 - End */
16839     } s;
16840     /* struct bdk_ap_id_aa64afrx_el1_res0_s cn; */
16841 };
16842 typedef union bdk_ap_id_aa64afrx_el1_res0 bdk_ap_id_aa64afrx_el1_res0_t;
16843 
16844 static inline uint64_t BDK_AP_ID_AA64AFRX_EL1_RES0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64AFRX_EL1_RES0(unsigned long a)16845 static inline uint64_t BDK_AP_ID_AA64AFRX_EL1_RES0(unsigned long a)
16846 {
16847     if ((a>=2)&&(a<=3))
16848         return 0x30000050400ll + 0x100ll * ((a) & 0x3);
16849     __bdk_csr_fatal("AP_ID_AA64AFRX_EL1_RES0", 1, a, 0, 0, 0);
16850 }
16851 
16852 #define typedef_BDK_AP_ID_AA64AFRX_EL1_RES0(a) bdk_ap_id_aa64afrx_el1_res0_t
16853 #define bustype_BDK_AP_ID_AA64AFRX_EL1_RES0(a) BDK_CSR_TYPE_SYSREG
16854 #define basename_BDK_AP_ID_AA64AFRX_EL1_RES0(a) "AP_ID_AA64AFRX_EL1_RES0"
16855 #define busnum_BDK_AP_ID_AA64AFRX_EL1_RES0(a) (a)
16856 #define arguments_BDK_AP_ID_AA64AFRX_EL1_RES0(a) (a),-1,-1,-1
16857 
16858 /**
16859  * Register (SYSREG) ap_id_aa64afr0_el1
16860  *
16861  * AP AArch64 Auxiliary Feature Register 0
16862  * Provides information about the implementation defined features
16863  *     of the processor in AArch64.
16864  */
16865 union bdk_ap_id_aa64afr0_el1
16866 {
16867     uint64_t u;
16868     struct bdk_ap_id_aa64afr0_el1_s
16869     {
16870 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16871         uint64_t reserved_0_63         : 64;
16872 #else /* Word 0 - Little Endian */
16873         uint64_t reserved_0_63         : 64;
16874 #endif /* Word 0 - End */
16875     } s;
16876     /* struct bdk_ap_id_aa64afr0_el1_s cn; */
16877 };
16878 typedef union bdk_ap_id_aa64afr0_el1 bdk_ap_id_aa64afr0_el1_t;
16879 
16880 #define BDK_AP_ID_AA64AFR0_EL1 BDK_AP_ID_AA64AFR0_EL1_FUNC()
16881 static inline uint64_t BDK_AP_ID_AA64AFR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64AFR0_EL1_FUNC(void)16882 static inline uint64_t BDK_AP_ID_AA64AFR0_EL1_FUNC(void)
16883 {
16884     return 0x30000050400ll;
16885 }
16886 
16887 #define typedef_BDK_AP_ID_AA64AFR0_EL1 bdk_ap_id_aa64afr0_el1_t
16888 #define bustype_BDK_AP_ID_AA64AFR0_EL1 BDK_CSR_TYPE_SYSREG
16889 #define basename_BDK_AP_ID_AA64AFR0_EL1 "AP_ID_AA64AFR0_EL1"
16890 #define busnum_BDK_AP_ID_AA64AFR0_EL1 0
16891 #define arguments_BDK_AP_ID_AA64AFR0_EL1 -1,-1,-1,-1
16892 
16893 /**
16894  * Register (SYSREG) ap_id_aa64afr1_el1
16895  *
16896  * AP AArch64 Auxiliary Feature Register 1
16897  * Reserved for future expansion of information about the
16898  *     implementation defined features of the processor in AArch64.
16899  */
16900 union bdk_ap_id_aa64afr1_el1
16901 {
16902     uint64_t u;
16903     struct bdk_ap_id_aa64afr1_el1_s
16904     {
16905 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16906         uint64_t reserved_0_63         : 64;
16907 #else /* Word 0 - Little Endian */
16908         uint64_t reserved_0_63         : 64;
16909 #endif /* Word 0 - End */
16910     } s;
16911     /* struct bdk_ap_id_aa64afr1_el1_s cn; */
16912 };
16913 typedef union bdk_ap_id_aa64afr1_el1 bdk_ap_id_aa64afr1_el1_t;
16914 
16915 #define BDK_AP_ID_AA64AFR1_EL1 BDK_AP_ID_AA64AFR1_EL1_FUNC()
16916 static inline uint64_t BDK_AP_ID_AA64AFR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64AFR1_EL1_FUNC(void)16917 static inline uint64_t BDK_AP_ID_AA64AFR1_EL1_FUNC(void)
16918 {
16919     return 0x30000050500ll;
16920 }
16921 
16922 #define typedef_BDK_AP_ID_AA64AFR1_EL1 bdk_ap_id_aa64afr1_el1_t
16923 #define bustype_BDK_AP_ID_AA64AFR1_EL1 BDK_CSR_TYPE_SYSREG
16924 #define basename_BDK_AP_ID_AA64AFR1_EL1 "AP_ID_AA64AFR1_EL1"
16925 #define busnum_BDK_AP_ID_AA64AFR1_EL1 0
16926 #define arguments_BDK_AP_ID_AA64AFR1_EL1 -1,-1,-1,-1
16927 
16928 /**
16929  * Register (SYSREG) ap_id_aa64dfr#_el1_res0
16930  *
16931  * INTERNAL: AP AArch64 Reserved Register
16932  *
16933  * Reserved for future expansion of top level information about
16934  *     the debug system in AArch64. ARM doesn't actually assign
16935  *     a name to these registers, so CNXXXX made up one.
16936  */
16937 union bdk_ap_id_aa64dfrx_el1_res0
16938 {
16939     uint64_t u;
16940     struct bdk_ap_id_aa64dfrx_el1_res0_s
16941     {
16942 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16943         uint64_t reserved_0_63         : 64;
16944 #else /* Word 0 - Little Endian */
16945         uint64_t reserved_0_63         : 64;
16946 #endif /* Word 0 - End */
16947     } s;
16948     /* struct bdk_ap_id_aa64dfrx_el1_res0_s cn; */
16949 };
16950 typedef union bdk_ap_id_aa64dfrx_el1_res0 bdk_ap_id_aa64dfrx_el1_res0_t;
16951 
16952 static inline uint64_t BDK_AP_ID_AA64DFRX_EL1_RES0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64DFRX_EL1_RES0(unsigned long a)16953 static inline uint64_t BDK_AP_ID_AA64DFRX_EL1_RES0(unsigned long a)
16954 {
16955     if ((a>=2)&&(a<=3))
16956         return 0x30000050000ll + 0x100ll * ((a) & 0x3);
16957     __bdk_csr_fatal("AP_ID_AA64DFRX_EL1_RES0", 1, a, 0, 0, 0);
16958 }
16959 
16960 #define typedef_BDK_AP_ID_AA64DFRX_EL1_RES0(a) bdk_ap_id_aa64dfrx_el1_res0_t
16961 #define bustype_BDK_AP_ID_AA64DFRX_EL1_RES0(a) BDK_CSR_TYPE_SYSREG
16962 #define basename_BDK_AP_ID_AA64DFRX_EL1_RES0(a) "AP_ID_AA64DFRX_EL1_RES0"
16963 #define busnum_BDK_AP_ID_AA64DFRX_EL1_RES0(a) (a)
16964 #define arguments_BDK_AP_ID_AA64DFRX_EL1_RES0(a) (a),-1,-1,-1
16965 
16966 /**
16967  * Register (SYSREG) ap_id_aa64dfr0_el1
16968  *
16969  * AP AArch64 Debug Feature Register 0
16970  * This register provides top level information about the debug system in AArch64.
16971  */
16972 union bdk_ap_id_aa64dfr0_el1
16973 {
16974     uint64_t u;
16975     struct bdk_ap_id_aa64dfr0_el1_s
16976     {
16977 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16978         uint64_t reserved_36_63        : 28;
16979         uint64_t pmsver                : 4;  /**< [ 35: 32](RO) Statistical profiling extension version.
16980                                                                  0x0 = No statistical profiling extension.
16981                                                                  0x1 = Version 1 of the statistical profiling extension present.
16982 
16983                                                                  All other values are reserved. Reserved values might be defined in a future
16984                                                                  version of the architecture. */
16985         uint64_t ctx_cmps              : 4;  /**< [ 31: 28](RO) Number of breakpoints that are context-aware, minus 1. These
16986                                                                      are the highest numbered breakpoints.
16987 
16988                                                                  In CNXXXX all breakpoints are context-aware. */
16989         uint64_t reserved_24_27        : 4;
16990         uint64_t wrps                  : 4;  /**< [ 23: 20](RO) Number of watchpoints, minus 1. The value of 0b0000 is reserved.
16991 
16992                                                                  In CNXXXX 4 watchpoints. */
16993         uint64_t reserved_16_19        : 4;
16994         uint64_t brps                  : 4;  /**< [ 15: 12](RO) Number of breakpoints, minus 1. The value of 0b0000 is reserved.
16995 
16996                                                                  In CNXXXX 6 breakpoints. */
16997         uint64_t pmuver                : 4;  /**< [ 11:  8](RO) Performance Monitors extension version. Indicates whether
16998                                                                      system register interface to Performance Monitors extension is
16999                                                                      implemented.
17000                                                                  All other values are reserved.
17001                                                                  0x0 = Performance Monitors extension system registers not
17002                                                                      implemented.
17003                                                                  0x1 = Performance Monitors extension system registers implemented,
17004                                                                      PMUv3.
17005                                                                  0x4 = v8.1: Performance Monitors extension system registers
17006                                                                      implemented, PMUv3 with 16bit evtCount.
17007                                                                  0xF =  implementation defined form of performance monitors
17008                                                                      supported, PMUv3 not supported.
17009 
17010                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x4, else 0x1. */
17011         uint64_t tracever              : 4;  /**< [  7:  4](RO) Trace extension. Indicates whether system register interface to the trace
17012                                                                  extension is implemented.
17013                                                                  All other values are reserved.
17014                                                                  0x0 = Trace extension system registers not implemented.
17015                                                                  0x1 = Trace extension system registers implemented. */
17016         uint64_t debugver              : 4;  /**< [  3:  0](RO) Debug architecture version. Indicates presence of ARMv8 debug
17017                                                                      architecture.
17018                                                                  All other values are reserved.
17019                                                                  0x6 = ARMv8 debug architecture.
17020                                                                  0x7 = ARMv8.1 debug architecture.
17021                                                                  0x8 = ARMv8.2 debug architecture.
17022 
17023                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x7, else 0x6. */
17024 #else /* Word 0 - Little Endian */
17025         uint64_t debugver              : 4;  /**< [  3:  0](RO) Debug architecture version. Indicates presence of ARMv8 debug
17026                                                                      architecture.
17027                                                                  All other values are reserved.
17028                                                                  0x6 = ARMv8 debug architecture.
17029                                                                  0x7 = ARMv8.1 debug architecture.
17030                                                                  0x8 = ARMv8.2 debug architecture.
17031 
17032                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x7, else 0x6. */
17033         uint64_t tracever              : 4;  /**< [  7:  4](RO) Trace extension. Indicates whether system register interface to the trace
17034                                                                  extension is implemented.
17035                                                                  All other values are reserved.
17036                                                                  0x0 = Trace extension system registers not implemented.
17037                                                                  0x1 = Trace extension system registers implemented. */
17038         uint64_t pmuver                : 4;  /**< [ 11:  8](RO) Performance Monitors extension version. Indicates whether
17039                                                                      system register interface to Performance Monitors extension is
17040                                                                      implemented.
17041                                                                  All other values are reserved.
17042                                                                  0x0 = Performance Monitors extension system registers not
17043                                                                      implemented.
17044                                                                  0x1 = Performance Monitors extension system registers implemented,
17045                                                                      PMUv3.
17046                                                                  0x4 = v8.1: Performance Monitors extension system registers
17047                                                                      implemented, PMUv3 with 16bit evtCount.
17048                                                                  0xF =  implementation defined form of performance monitors
17049                                                                      supported, PMUv3 not supported.
17050 
17051                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x4, else 0x1. */
17052         uint64_t brps                  : 4;  /**< [ 15: 12](RO) Number of breakpoints, minus 1. The value of 0b0000 is reserved.
17053 
17054                                                                  In CNXXXX 6 breakpoints. */
17055         uint64_t reserved_16_19        : 4;
17056         uint64_t wrps                  : 4;  /**< [ 23: 20](RO) Number of watchpoints, minus 1. The value of 0b0000 is reserved.
17057 
17058                                                                  In CNXXXX 4 watchpoints. */
17059         uint64_t reserved_24_27        : 4;
17060         uint64_t ctx_cmps              : 4;  /**< [ 31: 28](RO) Number of breakpoints that are context-aware, minus 1. These
17061                                                                      are the highest numbered breakpoints.
17062 
17063                                                                  In CNXXXX all breakpoints are context-aware. */
17064         uint64_t pmsver                : 4;  /**< [ 35: 32](RO) Statistical profiling extension version.
17065                                                                  0x0 = No statistical profiling extension.
17066                                                                  0x1 = Version 1 of the statistical profiling extension present.
17067 
17068                                                                  All other values are reserved. Reserved values might be defined in a future
17069                                                                  version of the architecture. */
17070         uint64_t reserved_36_63        : 28;
17071 #endif /* Word 0 - End */
17072     } s;
17073     struct bdk_ap_id_aa64dfr0_el1_cn8
17074     {
17075 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17076         uint64_t reserved_32_63        : 32;
17077         uint64_t ctx_cmps              : 4;  /**< [ 31: 28](RO) Number of breakpoints that are context-aware, minus 1. These
17078                                                                      are the highest numbered breakpoints.
17079 
17080                                                                  In CNXXXX all breakpoints are context-aware. */
17081         uint64_t reserved_24_27        : 4;
17082         uint64_t wrps                  : 4;  /**< [ 23: 20](RO) Number of watchpoints, minus 1. The value of 0b0000 is reserved.
17083 
17084                                                                  In CNXXXX 4 watchpoints. */
17085         uint64_t reserved_16_19        : 4;
17086         uint64_t brps                  : 4;  /**< [ 15: 12](RO) Number of breakpoints, minus 1. The value of 0b0000 is reserved.
17087 
17088                                                                  In CNXXXX 6 breakpoints. */
17089         uint64_t pmuver                : 4;  /**< [ 11:  8](RO) Performance Monitors extension version. Indicates whether
17090                                                                      system register interface to Performance Monitors extension is
17091                                                                      implemented.
17092                                                                  All other values are reserved.
17093                                                                  0x0 = Performance Monitors extension system registers not
17094                                                                      implemented.
17095                                                                  0x1 = Performance Monitors extension system registers implemented,
17096                                                                      PMUv3.
17097                                                                  0x4 = v8.1: Performance Monitors extension system registers
17098                                                                      implemented, PMUv3 with 16bit evtCount.
17099                                                                  0xF =  implementation defined form of performance monitors
17100                                                                      supported, PMUv3 not supported.
17101 
17102                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x4, else 0x1. */
17103         uint64_t tracever              : 4;  /**< [  7:  4](RO) Trace extension. Indicates whether system register interface to the trace
17104                                                                  extension is implemented.
17105                                                                  All other values are reserved.
17106                                                                  0x0 = Trace extension system registers not implemented.
17107                                                                  0x1 = Trace extension system registers implemented. */
17108         uint64_t debugver              : 4;  /**< [  3:  0](RO) Debug architecture version. Indicates presence of ARMv8 debug
17109                                                                      architecture.
17110                                                                  All other values are reserved.
17111                                                                  0x6 = ARMv8 debug architecture.
17112                                                                  0x7 = ARMv8.1 debug architecture.
17113                                                                  0x8 = ARMv8.2 debug architecture.
17114 
17115                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x7, else 0x6. */
17116 #else /* Word 0 - Little Endian */
17117         uint64_t debugver              : 4;  /**< [  3:  0](RO) Debug architecture version. Indicates presence of ARMv8 debug
17118                                                                      architecture.
17119                                                                  All other values are reserved.
17120                                                                  0x6 = ARMv8 debug architecture.
17121                                                                  0x7 = ARMv8.1 debug architecture.
17122                                                                  0x8 = ARMv8.2 debug architecture.
17123 
17124                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x7, else 0x6. */
17125         uint64_t tracever              : 4;  /**< [  7:  4](RO) Trace extension. Indicates whether system register interface to the trace
17126                                                                  extension is implemented.
17127                                                                  All other values are reserved.
17128                                                                  0x0 = Trace extension system registers not implemented.
17129                                                                  0x1 = Trace extension system registers implemented. */
17130         uint64_t pmuver                : 4;  /**< [ 11:  8](RO) Performance Monitors extension version. Indicates whether
17131                                                                      system register interface to Performance Monitors extension is
17132                                                                      implemented.
17133                                                                  All other values are reserved.
17134                                                                  0x0 = Performance Monitors extension system registers not
17135                                                                      implemented.
17136                                                                  0x1 = Performance Monitors extension system registers implemented,
17137                                                                      PMUv3.
17138                                                                  0x4 = v8.1: Performance Monitors extension system registers
17139                                                                      implemented, PMUv3 with 16bit evtCount.
17140                                                                  0xF =  implementation defined form of performance monitors
17141                                                                      supported, PMUv3 not supported.
17142 
17143                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x4, else 0x1. */
17144         uint64_t brps                  : 4;  /**< [ 15: 12](RO) Number of breakpoints, minus 1. The value of 0b0000 is reserved.
17145 
17146                                                                  In CNXXXX 6 breakpoints. */
17147         uint64_t reserved_16_19        : 4;
17148         uint64_t wrps                  : 4;  /**< [ 23: 20](RO) Number of watchpoints, minus 1. The value of 0b0000 is reserved.
17149 
17150                                                                  In CNXXXX 4 watchpoints. */
17151         uint64_t reserved_24_27        : 4;
17152         uint64_t ctx_cmps              : 4;  /**< [ 31: 28](RO) Number of breakpoints that are context-aware, minus 1. These
17153                                                                      are the highest numbered breakpoints.
17154 
17155                                                                  In CNXXXX all breakpoints are context-aware. */
17156         uint64_t reserved_32_63        : 32;
17157 #endif /* Word 0 - End */
17158     } cn8;
17159     /* struct bdk_ap_id_aa64dfr0_el1_s cn9; */
17160 };
17161 typedef union bdk_ap_id_aa64dfr0_el1 bdk_ap_id_aa64dfr0_el1_t;
17162 
17163 #define BDK_AP_ID_AA64DFR0_EL1 BDK_AP_ID_AA64DFR0_EL1_FUNC()
17164 static inline uint64_t BDK_AP_ID_AA64DFR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64DFR0_EL1_FUNC(void)17165 static inline uint64_t BDK_AP_ID_AA64DFR0_EL1_FUNC(void)
17166 {
17167     return 0x30000050000ll;
17168 }
17169 
17170 #define typedef_BDK_AP_ID_AA64DFR0_EL1 bdk_ap_id_aa64dfr0_el1_t
17171 #define bustype_BDK_AP_ID_AA64DFR0_EL1 BDK_CSR_TYPE_SYSREG
17172 #define basename_BDK_AP_ID_AA64DFR0_EL1 "AP_ID_AA64DFR0_EL1"
17173 #define busnum_BDK_AP_ID_AA64DFR0_EL1 0
17174 #define arguments_BDK_AP_ID_AA64DFR0_EL1 -1,-1,-1,-1
17175 
17176 /**
17177  * Register (SYSREG) ap_id_aa64dfr1_el1
17178  *
17179  * AP AArch64 Debug Feature Register 1
17180  * Reserved for future expansion of top level information about
17181  *     the debug system in AArch64.
17182  */
17183 union bdk_ap_id_aa64dfr1_el1
17184 {
17185     uint64_t u;
17186     struct bdk_ap_id_aa64dfr1_el1_s
17187     {
17188 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17189         uint64_t reserved_0_63         : 64;
17190 #else /* Word 0 - Little Endian */
17191         uint64_t reserved_0_63         : 64;
17192 #endif /* Word 0 - End */
17193     } s;
17194     /* struct bdk_ap_id_aa64dfr1_el1_s cn; */
17195 };
17196 typedef union bdk_ap_id_aa64dfr1_el1 bdk_ap_id_aa64dfr1_el1_t;
17197 
17198 #define BDK_AP_ID_AA64DFR1_EL1 BDK_AP_ID_AA64DFR1_EL1_FUNC()
17199 static inline uint64_t BDK_AP_ID_AA64DFR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64DFR1_EL1_FUNC(void)17200 static inline uint64_t BDK_AP_ID_AA64DFR1_EL1_FUNC(void)
17201 {
17202     return 0x30000050100ll;
17203 }
17204 
17205 #define typedef_BDK_AP_ID_AA64DFR1_EL1 bdk_ap_id_aa64dfr1_el1_t
17206 #define bustype_BDK_AP_ID_AA64DFR1_EL1 BDK_CSR_TYPE_SYSREG
17207 #define basename_BDK_AP_ID_AA64DFR1_EL1 "AP_ID_AA64DFR1_EL1"
17208 #define busnum_BDK_AP_ID_AA64DFR1_EL1 0
17209 #define arguments_BDK_AP_ID_AA64DFR1_EL1 -1,-1,-1,-1
17210 
17211 /**
17212  * Register (SYSREG) ap_id_aa64isar#_el1_res0
17213  *
17214  * INTERNAL: AP AArch64 Reserved Register
17215  *
17216  * Reserved for future expansion of the information about the
17217  *     instruction sets implemented by the processor in AArch64.
17218  *     ARM doesn't actually assign a name to these registers, so
17219  *     CNXXXX made up one.
17220  */
17221 union bdk_ap_id_aa64isarx_el1_res0
17222 {
17223     uint64_t u;
17224     struct bdk_ap_id_aa64isarx_el1_res0_s
17225     {
17226 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17227         uint64_t reserved_0_63         : 64;
17228 #else /* Word 0 - Little Endian */
17229         uint64_t reserved_0_63         : 64;
17230 #endif /* Word 0 - End */
17231     } s;
17232     /* struct bdk_ap_id_aa64isarx_el1_res0_s cn; */
17233 };
17234 typedef union bdk_ap_id_aa64isarx_el1_res0 bdk_ap_id_aa64isarx_el1_res0_t;
17235 
17236 static inline uint64_t BDK_AP_ID_AA64ISARX_EL1_RES0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64ISARX_EL1_RES0(unsigned long a)17237 static inline uint64_t BDK_AP_ID_AA64ISARX_EL1_RES0(unsigned long a)
17238 {
17239     if ((a>=2)&&(a<=7))
17240         return 0x30000060000ll + 0x100ll * ((a) & 0x7);
17241     __bdk_csr_fatal("AP_ID_AA64ISARX_EL1_RES0", 1, a, 0, 0, 0);
17242 }
17243 
17244 #define typedef_BDK_AP_ID_AA64ISARX_EL1_RES0(a) bdk_ap_id_aa64isarx_el1_res0_t
17245 #define bustype_BDK_AP_ID_AA64ISARX_EL1_RES0(a) BDK_CSR_TYPE_SYSREG
17246 #define basename_BDK_AP_ID_AA64ISARX_EL1_RES0(a) "AP_ID_AA64ISARX_EL1_RES0"
17247 #define busnum_BDK_AP_ID_AA64ISARX_EL1_RES0(a) (a)
17248 #define arguments_BDK_AP_ID_AA64ISARX_EL1_RES0(a) (a),-1,-1,-1
17249 
17250 /**
17251  * Register (SYSREG) ap_id_aa64isar0_el1
17252  *
17253  * AP AArch64 Instruction Set Attribute Register 0
17254  * This register provides information about the instructions implemented by the
17255  * processor in AArch64.
17256  */
17257 union bdk_ap_id_aa64isar0_el1
17258 {
17259     uint64_t u;
17260     struct bdk_ap_id_aa64isar0_el1_s
17261     {
17262 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17263         uint64_t reserved_32_63        : 32;
17264         uint64_t sqrdml                : 4;  /**< [ 31: 28](RO) 0x0 = SQRDMLAH and SQRDMLSH not supported in AArch64.
17265                                                                  0x1 = SQRDMLAH and SQRDMLSH supported in AArch64.
17266                                                                  All other values reserved.
17267 
17268                                                                  In CNXXXX, 0x1 if AP_CVMCTL_EL1[ENABLE_V81] is set, else 0x0. */
17269         uint64_t reserved_24_27        : 4;
17270         uint64_t atomic                : 4;  /**< [ 23: 20](RO) Atomic instructions in AArch64
17271                                                                      0x0 = No Atomic instructions implemented.
17272                                                                      0x1 = Reserved.
17273                                                                      0x2 = LDADD, LDCLR, LDEOR, LDSET, LDSMAX, LDSMIN, LDUMAX, LDUMIN, CAS, CASP,
17274                                                                          SWP instructions implemented.
17275 
17276                                                                  For CNXXXX, 0x2. */
17277         uint64_t crc32                 : 4;  /**< [ 19: 16](RO) CRC32 instructions in AArch64.
17278                                                                  All other values are reserved.
17279                                                                  This field must have the same value as ID_ISAR5[CRC32]. The
17280                                                                      architecture requires that if CRC32 is supported in one
17281                                                                      Execution state, it must be supported in both Execution
17282                                                                      states.
17283                                                                  0x0 = No CRC32 instructions implemented.
17284                                                                  0x1 = CRC32B, CRC32H, CRC32W, CRC32X, CRC32CB, CRC32CH, CRC32CW, and
17285                                                                      CRC32CX instructions implemented.
17286 
17287                                                                  In CNXXXX, supported unless crypto disabled by MIO_FUS_DAT2[NOCRYPTO]. */
17288         uint64_t sha2                  : 4;  /**< [ 15: 12](RO) SHA2 instructions in AArch64.
17289                                                                  All other values are reserved.
17290                                                                  0x0 = No SHA2 instructions implemented.
17291                                                                  0x1 = SHA256H, SHA256H2, SHA256SU0, and SHA256SU1 instructions
17292                                                                      implemented.
17293 
17294                                                                  In CNXXXX, supported unless crypto disabled by MIO_FUS_DAT2[NOCRYPTO]. */
17295         uint64_t sha1                  : 4;  /**< [ 11:  8](RO) SHA1 instructions in AArch64.
17296                                                                  All other values are reserved.
17297                                                                  0x0 = No SHA1 instructions implemented.
17298                                                                  0x1 = SHA1C, SHA1P, SHA1M, SHA1H, SHA1SU0, and SHA1SU1 instructions
17299                                                                      implemented.
17300 
17301                                                                  In CNXXXX, supported unless crypto disabled by MIO_FUS_DAT2[NOCRYPTO]. */
17302         uint64_t aes                   : 4;  /**< [  7:  4](RO) AES instructions in AArch64.
17303                                                                  0x0 = No AES instructions implemented.
17304                                                                  0x1 = AESE, AESD, AESMC, and AESIMC instructions implemented.
17305                                                                  0x2 = As for 0x1, plus PMULL/PMULL2 instructions operate on
17306                                                                  64-bit data quantities.
17307 
17308                                                                  In CNXXXX, supported with PMULL/PMULL2. */
17309         uint64_t reserved_0_3          : 4;
17310 #else /* Word 0 - Little Endian */
17311         uint64_t reserved_0_3          : 4;
17312         uint64_t aes                   : 4;  /**< [  7:  4](RO) AES instructions in AArch64.
17313                                                                  0x0 = No AES instructions implemented.
17314                                                                  0x1 = AESE, AESD, AESMC, and AESIMC instructions implemented.
17315                                                                  0x2 = As for 0x1, plus PMULL/PMULL2 instructions operate on
17316                                                                  64-bit data quantities.
17317 
17318                                                                  In CNXXXX, supported with PMULL/PMULL2. */
17319         uint64_t sha1                  : 4;  /**< [ 11:  8](RO) SHA1 instructions in AArch64.
17320                                                                  All other values are reserved.
17321                                                                  0x0 = No SHA1 instructions implemented.
17322                                                                  0x1 = SHA1C, SHA1P, SHA1M, SHA1H, SHA1SU0, and SHA1SU1 instructions
17323                                                                      implemented.
17324 
17325                                                                  In CNXXXX, supported unless crypto disabled by MIO_FUS_DAT2[NOCRYPTO]. */
17326         uint64_t sha2                  : 4;  /**< [ 15: 12](RO) SHA2 instructions in AArch64.
17327                                                                  All other values are reserved.
17328                                                                  0x0 = No SHA2 instructions implemented.
17329                                                                  0x1 = SHA256H, SHA256H2, SHA256SU0, and SHA256SU1 instructions
17330                                                                      implemented.
17331 
17332                                                                  In CNXXXX, supported unless crypto disabled by MIO_FUS_DAT2[NOCRYPTO]. */
17333         uint64_t crc32                 : 4;  /**< [ 19: 16](RO) CRC32 instructions in AArch64.
17334                                                                  All other values are reserved.
17335                                                                  This field must have the same value as ID_ISAR5[CRC32]. The
17336                                                                      architecture requires that if CRC32 is supported in one
17337                                                                      Execution state, it must be supported in both Execution
17338                                                                      states.
17339                                                                  0x0 = No CRC32 instructions implemented.
17340                                                                  0x1 = CRC32B, CRC32H, CRC32W, CRC32X, CRC32CB, CRC32CH, CRC32CW, and
17341                                                                      CRC32CX instructions implemented.
17342 
17343                                                                  In CNXXXX, supported unless crypto disabled by MIO_FUS_DAT2[NOCRYPTO]. */
17344         uint64_t atomic                : 4;  /**< [ 23: 20](RO) Atomic instructions in AArch64
17345                                                                      0x0 = No Atomic instructions implemented.
17346                                                                      0x1 = Reserved.
17347                                                                      0x2 = LDADD, LDCLR, LDEOR, LDSET, LDSMAX, LDSMIN, LDUMAX, LDUMIN, CAS, CASP,
17348                                                                          SWP instructions implemented.
17349 
17350                                                                  For CNXXXX, 0x2. */
17351         uint64_t reserved_24_27        : 4;
17352         uint64_t sqrdml                : 4;  /**< [ 31: 28](RO) 0x0 = SQRDMLAH and SQRDMLSH not supported in AArch64.
17353                                                                  0x1 = SQRDMLAH and SQRDMLSH supported in AArch64.
17354                                                                  All other values reserved.
17355 
17356                                                                  In CNXXXX, 0x1 if AP_CVMCTL_EL1[ENABLE_V81] is set, else 0x0. */
17357         uint64_t reserved_32_63        : 32;
17358 #endif /* Word 0 - End */
17359     } s;
17360     /* struct bdk_ap_id_aa64isar0_el1_s cn; */
17361 };
17362 typedef union bdk_ap_id_aa64isar0_el1 bdk_ap_id_aa64isar0_el1_t;
17363 
17364 #define BDK_AP_ID_AA64ISAR0_EL1 BDK_AP_ID_AA64ISAR0_EL1_FUNC()
17365 static inline uint64_t BDK_AP_ID_AA64ISAR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64ISAR0_EL1_FUNC(void)17366 static inline uint64_t BDK_AP_ID_AA64ISAR0_EL1_FUNC(void)
17367 {
17368     return 0x30000060000ll;
17369 }
17370 
17371 #define typedef_BDK_AP_ID_AA64ISAR0_EL1 bdk_ap_id_aa64isar0_el1_t
17372 #define bustype_BDK_AP_ID_AA64ISAR0_EL1 BDK_CSR_TYPE_SYSREG
17373 #define basename_BDK_AP_ID_AA64ISAR0_EL1 "AP_ID_AA64ISAR0_EL1"
17374 #define busnum_BDK_AP_ID_AA64ISAR0_EL1 0
17375 #define arguments_BDK_AP_ID_AA64ISAR0_EL1 -1,-1,-1,-1
17376 
17377 /**
17378  * Register (SYSREG) ap_id_aa64isar1_el1
17379  *
17380  * AP AArch64 Instruction Set Attribute Register 1
17381  * Reserved for future expansion of the information about the
17382  *     instruction sets implemented by the processor in AArch64.
17383  */
17384 union bdk_ap_id_aa64isar1_el1
17385 {
17386     uint64_t u;
17387     struct bdk_ap_id_aa64isar1_el1_s
17388     {
17389 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17390         uint64_t reserved_4_63         : 60;
17391         uint64_t dpb                   : 4;  /**< [  3:  0](RO) 0x0 = DC CVAP not supported in AArch64.
17392                                                                  0x1 = DC CVAP supported in AArch64.
17393 
17394                                                                  All other values reserved. */
17395 #else /* Word 0 - Little Endian */
17396         uint64_t dpb                   : 4;  /**< [  3:  0](RO) 0x0 = DC CVAP not supported in AArch64.
17397                                                                  0x1 = DC CVAP supported in AArch64.
17398 
17399                                                                  All other values reserved. */
17400         uint64_t reserved_4_63         : 60;
17401 #endif /* Word 0 - End */
17402     } s;
17403     struct bdk_ap_id_aa64isar1_el1_cn8
17404     {
17405 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17406         uint64_t reserved_0_63         : 64;
17407 #else /* Word 0 - Little Endian */
17408         uint64_t reserved_0_63         : 64;
17409 #endif /* Word 0 - End */
17410     } cn8;
17411     /* struct bdk_ap_id_aa64isar1_el1_s cn9; */
17412 };
17413 typedef union bdk_ap_id_aa64isar1_el1 bdk_ap_id_aa64isar1_el1_t;
17414 
17415 #define BDK_AP_ID_AA64ISAR1_EL1 BDK_AP_ID_AA64ISAR1_EL1_FUNC()
17416 static inline uint64_t BDK_AP_ID_AA64ISAR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64ISAR1_EL1_FUNC(void)17417 static inline uint64_t BDK_AP_ID_AA64ISAR1_EL1_FUNC(void)
17418 {
17419     return 0x30000060100ll;
17420 }
17421 
17422 #define typedef_BDK_AP_ID_AA64ISAR1_EL1 bdk_ap_id_aa64isar1_el1_t
17423 #define bustype_BDK_AP_ID_AA64ISAR1_EL1 BDK_CSR_TYPE_SYSREG
17424 #define basename_BDK_AP_ID_AA64ISAR1_EL1 "AP_ID_AA64ISAR1_EL1"
17425 #define busnum_BDK_AP_ID_AA64ISAR1_EL1 0
17426 #define arguments_BDK_AP_ID_AA64ISAR1_EL1 -1,-1,-1,-1
17427 
17428 /**
17429  * Register (SYSREG) ap_id_aa64mmfr#_el1_res0
17430  *
17431  * INTERNAL: AP AArch64 Reserved Register
17432  *
17433  * Reserved for future expansion of the information about the
17434  *     implemented memory model and memory management support in
17435  *     AArch64. ARM doesn't actually assign a name to these
17436  *     registers, so CNXXXX made up one.
17437  */
17438 union bdk_ap_id_aa64mmfrx_el1_res0
17439 {
17440     uint64_t u;
17441     struct bdk_ap_id_aa64mmfrx_el1_res0_s
17442     {
17443 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17444         uint64_t reserved_0_63         : 64;
17445 #else /* Word 0 - Little Endian */
17446         uint64_t reserved_0_63         : 64;
17447 #endif /* Word 0 - End */
17448     } s;
17449     /* struct bdk_ap_id_aa64mmfrx_el1_res0_s cn; */
17450 };
17451 typedef union bdk_ap_id_aa64mmfrx_el1_res0 bdk_ap_id_aa64mmfrx_el1_res0_t;
17452 
17453 static inline uint64_t BDK_AP_ID_AA64MMFRX_EL1_RES0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64MMFRX_EL1_RES0(unsigned long a)17454 static inline uint64_t BDK_AP_ID_AA64MMFRX_EL1_RES0(unsigned long a)
17455 {
17456     if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX) && ((a>=2)&&(a<=7)))
17457         return 0x30000070000ll + 0x100ll * ((a) & 0x7);
17458     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && ((a>=3)&&(a<=7)))
17459         return 0x30000070000ll + 0x100ll * ((a) & 0x7);
17460     __bdk_csr_fatal("AP_ID_AA64MMFRX_EL1_RES0", 1, a, 0, 0, 0);
17461 }
17462 
17463 #define typedef_BDK_AP_ID_AA64MMFRX_EL1_RES0(a) bdk_ap_id_aa64mmfrx_el1_res0_t
17464 #define bustype_BDK_AP_ID_AA64MMFRX_EL1_RES0(a) BDK_CSR_TYPE_SYSREG
17465 #define basename_BDK_AP_ID_AA64MMFRX_EL1_RES0(a) "AP_ID_AA64MMFRX_EL1_RES0"
17466 #define busnum_BDK_AP_ID_AA64MMFRX_EL1_RES0(a) (a)
17467 #define arguments_BDK_AP_ID_AA64MMFRX_EL1_RES0(a) (a),-1,-1,-1
17468 
17469 /**
17470  * Register (SYSREG) ap_id_aa64mmfr0_el1
17471  *
17472  * AP AArch64 Memory Model Feature Register 0
17473  * This register provides information about the implemented memory model and memory
17474  * management support in AArch64.
17475  */
17476 union bdk_ap_id_aa64mmfr0_el1
17477 {
17478     uint64_t u;
17479     struct bdk_ap_id_aa64mmfr0_el1_s
17480     {
17481 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17482         uint64_t reserved_32_63        : 32;
17483         uint64_t tgran4                : 4;  /**< [ 31: 28](RO) Support for 4KB memory translation granule size.
17484                                                                  All other values are reserved.
17485                                                                  0x0 = 4KB granule supported.
17486                                                                  0xF = 4KB granule not supported.
17487 
17488                                                                  In CNXXXX, supported. */
17489         uint64_t tgran64               : 4;  /**< [ 27: 24](RO) Support for 64KB memory translation granule size.
17490                                                                  All other values are reserved.
17491                                                                  0x0 = 64KB granule supported.
17492                                                                  0xF = 64KB granule not supported.
17493 
17494                                                                  In CNXXXX, supported. */
17495         uint64_t tgran16               : 4;  /**< [ 23: 20](RO) Support for 16KB memory translation granule size.
17496                                                                  All other values are reserved.
17497                                                                  0x0 = 16KB granule not supported.
17498                                                                  0x1 = 16KB granule supported.
17499 
17500                                                                  In CNXXXX, supported. */
17501         uint64_t bigendel0             : 4;  /**< [ 19: 16](RO) Mixed-endian support at EL0 only.
17502                                                                  All other values are reserved.
17503                                                                  This field is invalid and is RES0 if the BigEnd field, bits
17504                                                                      [11:8], is not 0x0.
17505                                                                  0x0 = No mixed-endian support at EL0. The AP_SCTLR_EL1[E0E] bit has a
17506                                                                      fixed value.
17507                                                                  0x1 = Mixed-endian support at EL0. The AP_SCTLR_EL1[E0E] bit can be
17508                                                                      configured.
17509 
17510                                                                  In CNXXXX, supported. */
17511         uint64_t snsmem                : 4;  /**< [ 15: 12](RO) Secure versus nonsecure memory distinction.
17512                                                                  All other values are reserved.
17513                                                                  0x0 = Does not support a distinction between secure and nonsecure
17514                                                                      memory.
17515                                                                  0x1 = Does support a distinction between secure and nonsecure
17516                                                                      memory.
17517 
17518                                                                  In CNXXXX, supported. */
17519         uint64_t bigend                : 4;  /**< [ 11:  8](RO) Mixed-endian configuration support.
17520                                                                  All other values are reserved.
17521                                                                  0x0 = No mixed-endian support. The AP_SCTLR_ELx[EE] bits have a fixed
17522                                                                      value. See the BigEndEL0 field, bits[19:16], for whether EL0
17523                                                                      supports mixed-endian.
17524                                                                  0x1 = Mixed-endian support. The AP_SCTLR_ELx[EE] and AP_SCTLR_EL1[E0E] bits
17525                                                                      can be configured.
17526 
17527                                                                  In CNXXXX, supported. */
17528         uint64_t asidbits              : 4;  /**< [  7:  4](RO) Number of ASID bits.
17529                                                                  All other values are reserved.
17530                                                                  0x0 = 8 bits.
17531                                                                  0x2 = 16 bits.
17532 
17533                                                                  In CNXXXX, 16 bits. */
17534         uint64_t parange               : 4;  /**< [  3:  0](RO) Physical address range supported.
17535                                                                  All other values are reserved.
17536                                                                  0x0 = 32 bits, 4GB.
17537                                                                  0x1 = 36 bits, 64GB.
17538                                                                  0x2 = 40 bits, 1TB.
17539                                                                  0x3 = 42 bits, 4TB.
17540                                                                  0x4 = 44 bits, 16TB.
17541                                                                  0x5 = 48 bits, 256TB.
17542 
17543                                                                  In CNXXXX, 48 bits. */
17544 #else /* Word 0 - Little Endian */
17545         uint64_t parange               : 4;  /**< [  3:  0](RO) Physical address range supported.
17546                                                                  All other values are reserved.
17547                                                                  0x0 = 32 bits, 4GB.
17548                                                                  0x1 = 36 bits, 64GB.
17549                                                                  0x2 = 40 bits, 1TB.
17550                                                                  0x3 = 42 bits, 4TB.
17551                                                                  0x4 = 44 bits, 16TB.
17552                                                                  0x5 = 48 bits, 256TB.
17553 
17554                                                                  In CNXXXX, 48 bits. */
17555         uint64_t asidbits              : 4;  /**< [  7:  4](RO) Number of ASID bits.
17556                                                                  All other values are reserved.
17557                                                                  0x0 = 8 bits.
17558                                                                  0x2 = 16 bits.
17559 
17560                                                                  In CNXXXX, 16 bits. */
17561         uint64_t bigend                : 4;  /**< [ 11:  8](RO) Mixed-endian configuration support.
17562                                                                  All other values are reserved.
17563                                                                  0x0 = No mixed-endian support. The AP_SCTLR_ELx[EE] bits have a fixed
17564                                                                      value. See the BigEndEL0 field, bits[19:16], for whether EL0
17565                                                                      supports mixed-endian.
17566                                                                  0x1 = Mixed-endian support. The AP_SCTLR_ELx[EE] and AP_SCTLR_EL1[E0E] bits
17567                                                                      can be configured.
17568 
17569                                                                  In CNXXXX, supported. */
17570         uint64_t snsmem                : 4;  /**< [ 15: 12](RO) Secure versus nonsecure memory distinction.
17571                                                                  All other values are reserved.
17572                                                                  0x0 = Does not support a distinction between secure and nonsecure
17573                                                                      memory.
17574                                                                  0x1 = Does support a distinction between secure and nonsecure
17575                                                                      memory.
17576 
17577                                                                  In CNXXXX, supported. */
17578         uint64_t bigendel0             : 4;  /**< [ 19: 16](RO) Mixed-endian support at EL0 only.
17579                                                                  All other values are reserved.
17580                                                                  This field is invalid and is RES0 if the BigEnd field, bits
17581                                                                      [11:8], is not 0x0.
17582                                                                  0x0 = No mixed-endian support at EL0. The AP_SCTLR_EL1[E0E] bit has a
17583                                                                      fixed value.
17584                                                                  0x1 = Mixed-endian support at EL0. The AP_SCTLR_EL1[E0E] bit can be
17585                                                                      configured.
17586 
17587                                                                  In CNXXXX, supported. */
17588         uint64_t tgran16               : 4;  /**< [ 23: 20](RO) Support for 16KB memory translation granule size.
17589                                                                  All other values are reserved.
17590                                                                  0x0 = 16KB granule not supported.
17591                                                                  0x1 = 16KB granule supported.
17592 
17593                                                                  In CNXXXX, supported. */
17594         uint64_t tgran64               : 4;  /**< [ 27: 24](RO) Support for 64KB memory translation granule size.
17595                                                                  All other values are reserved.
17596                                                                  0x0 = 64KB granule supported.
17597                                                                  0xF = 64KB granule not supported.
17598 
17599                                                                  In CNXXXX, supported. */
17600         uint64_t tgran4                : 4;  /**< [ 31: 28](RO) Support for 4KB memory translation granule size.
17601                                                                  All other values are reserved.
17602                                                                  0x0 = 4KB granule supported.
17603                                                                  0xF = 4KB granule not supported.
17604 
17605                                                                  In CNXXXX, supported. */
17606         uint64_t reserved_32_63        : 32;
17607 #endif /* Word 0 - End */
17608     } s;
17609     /* struct bdk_ap_id_aa64mmfr0_el1_s cn8; */
17610     struct bdk_ap_id_aa64mmfr0_el1_cn9
17611     {
17612 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17613         uint64_t reserved_32_63        : 32;
17614         uint64_t tgran4                : 4;  /**< [ 31: 28](RO) Support for 4KB memory translation granule size.
17615                                                                  All other values are reserved.
17616                                                                  0x0 = 4KB granule supported.
17617                                                                  0xF = 4KB granule not supported.
17618 
17619                                                                  In CNXXXX, supported. */
17620         uint64_t tgran64               : 4;  /**< [ 27: 24](RO) Support for 64KB memory translation granule size.
17621                                                                  All other values are reserved.
17622                                                                  0x0 = 64KB granule supported.
17623                                                                  0xF = 64KB granule not supported.
17624 
17625                                                                  In CNXXXX, supported. */
17626         uint64_t tgran16               : 4;  /**< [ 23: 20](RO) Support for 16KB memory translation granule size.
17627                                                                  All other values are reserved.
17628                                                                  0x0 = 16KB granule not supported.
17629                                                                  0x1 = 16KB granule supported.
17630 
17631                                                                  In CNXXXX, supported. */
17632         uint64_t bigendel0             : 4;  /**< [ 19: 16](RO) Mixed-endian support at EL0 only.
17633                                                                  All other values are reserved.
17634                                                                  This field is invalid and is RES0 if the BigEnd field, bits
17635                                                                      [11:8], is not 0x0.
17636                                                                  0x0 = No mixed-endian support at EL0. The AP_SCTLR_EL1[E0E] bit has a
17637                                                                      fixed value.
17638                                                                  0x1 = Mixed-endian support at EL0. The AP_SCTLR_EL1[E0E] bit can be
17639                                                                      configured.
17640 
17641                                                                  In CNXXXX, supported. */
17642         uint64_t snsmem                : 4;  /**< [ 15: 12](RO) Secure versus nonsecure memory distinction.
17643                                                                  All other values are reserved.
17644                                                                  0x0 = Does not support a distinction between secure and nonsecure
17645                                                                      memory.
17646                                                                  0x1 = Does support a distinction between secure and nonsecure
17647                                                                      memory.
17648 
17649                                                                  In CNXXXX, supported. */
17650         uint64_t bigend                : 4;  /**< [ 11:  8](RO) Mixed-endian configuration support.
17651                                                                  All other values are reserved.
17652                                                                  0x0 = No mixed-endian support. The AP_SCTLR_ELx[EE] bits have a fixed
17653                                                                      value. See the BigEndEL0 field, bits[19:16], for whether EL0
17654                                                                      supports mixed-endian.
17655                                                                  0x1 = Mixed-endian support. The AP_SCTLR_ELx[EE] and AP_SCTLR_EL1[E0E] bits
17656                                                                      can be configured.
17657 
17658                                                                  In CNXXXX, supported. */
17659         uint64_t asidbits              : 4;  /**< [  7:  4](RO) Number of ASID bits.
17660                                                                  All other values are reserved.
17661                                                                  0x0 = 8 bits.
17662                                                                  0x2 = 16 bits.
17663 
17664                                                                  In CNXXXX, 16 bits. */
17665         uint64_t parange               : 4;  /**< [  3:  0](RO) Physical address range supported.
17666                                                                  All other values are reserved.
17667                                                                  0x0 = 32 bits, 4GB.
17668                                                                  0x1 = 36 bits, 64GB.
17669                                                                  0x2 = 40 bits, 1TB.
17670                                                                  0x3 = 42 bits, 4TB.
17671                                                                  0x4 = 44 bits, 16TB.
17672                                                                  0x5 = 48 bits, 256TB.
17673                                                                  0x6 = 52 bits, 4PB.
17674 
17675                                                                  In CN8XXX, 48 bits.
17676                                                                  In CN9XXX, 52 bits. */
17677 #else /* Word 0 - Little Endian */
17678         uint64_t parange               : 4;  /**< [  3:  0](RO) Physical address range supported.
17679                                                                  All other values are reserved.
17680                                                                  0x0 = 32 bits, 4GB.
17681                                                                  0x1 = 36 bits, 64GB.
17682                                                                  0x2 = 40 bits, 1TB.
17683                                                                  0x3 = 42 bits, 4TB.
17684                                                                  0x4 = 44 bits, 16TB.
17685                                                                  0x5 = 48 bits, 256TB.
17686                                                                  0x6 = 52 bits, 4PB.
17687 
17688                                                                  In CN8XXX, 48 bits.
17689                                                                  In CN9XXX, 52 bits. */
17690         uint64_t asidbits              : 4;  /**< [  7:  4](RO) Number of ASID bits.
17691                                                                  All other values are reserved.
17692                                                                  0x0 = 8 bits.
17693                                                                  0x2 = 16 bits.
17694 
17695                                                                  In CNXXXX, 16 bits. */
17696         uint64_t bigend                : 4;  /**< [ 11:  8](RO) Mixed-endian configuration support.
17697                                                                  All other values are reserved.
17698                                                                  0x0 = No mixed-endian support. The AP_SCTLR_ELx[EE] bits have a fixed
17699                                                                      value. See the BigEndEL0 field, bits[19:16], for whether EL0
17700                                                                      supports mixed-endian.
17701                                                                  0x1 = Mixed-endian support. The AP_SCTLR_ELx[EE] and AP_SCTLR_EL1[E0E] bits
17702                                                                      can be configured.
17703 
17704                                                                  In CNXXXX, supported. */
17705         uint64_t snsmem                : 4;  /**< [ 15: 12](RO) Secure versus nonsecure memory distinction.
17706                                                                  All other values are reserved.
17707                                                                  0x0 = Does not support a distinction between secure and nonsecure
17708                                                                      memory.
17709                                                                  0x1 = Does support a distinction between secure and nonsecure
17710                                                                      memory.
17711 
17712                                                                  In CNXXXX, supported. */
17713         uint64_t bigendel0             : 4;  /**< [ 19: 16](RO) Mixed-endian support at EL0 only.
17714                                                                  All other values are reserved.
17715                                                                  This field is invalid and is RES0 if the BigEnd field, bits
17716                                                                      [11:8], is not 0x0.
17717                                                                  0x0 = No mixed-endian support at EL0. The AP_SCTLR_EL1[E0E] bit has a
17718                                                                      fixed value.
17719                                                                  0x1 = Mixed-endian support at EL0. The AP_SCTLR_EL1[E0E] bit can be
17720                                                                      configured.
17721 
17722                                                                  In CNXXXX, supported. */
17723         uint64_t tgran16               : 4;  /**< [ 23: 20](RO) Support for 16KB memory translation granule size.
17724                                                                  All other values are reserved.
17725                                                                  0x0 = 16KB granule not supported.
17726                                                                  0x1 = 16KB granule supported.
17727 
17728                                                                  In CNXXXX, supported. */
17729         uint64_t tgran64               : 4;  /**< [ 27: 24](RO) Support for 64KB memory translation granule size.
17730                                                                  All other values are reserved.
17731                                                                  0x0 = 64KB granule supported.
17732                                                                  0xF = 64KB granule not supported.
17733 
17734                                                                  In CNXXXX, supported. */
17735         uint64_t tgran4                : 4;  /**< [ 31: 28](RO) Support for 4KB memory translation granule size.
17736                                                                  All other values are reserved.
17737                                                                  0x0 = 4KB granule supported.
17738                                                                  0xF = 4KB granule not supported.
17739 
17740                                                                  In CNXXXX, supported. */
17741         uint64_t reserved_32_63        : 32;
17742 #endif /* Word 0 - End */
17743     } cn9;
17744 };
17745 typedef union bdk_ap_id_aa64mmfr0_el1 bdk_ap_id_aa64mmfr0_el1_t;
17746 
17747 #define BDK_AP_ID_AA64MMFR0_EL1 BDK_AP_ID_AA64MMFR0_EL1_FUNC()
17748 static inline uint64_t BDK_AP_ID_AA64MMFR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64MMFR0_EL1_FUNC(void)17749 static inline uint64_t BDK_AP_ID_AA64MMFR0_EL1_FUNC(void)
17750 {
17751     return 0x30000070000ll;
17752 }
17753 
17754 #define typedef_BDK_AP_ID_AA64MMFR0_EL1 bdk_ap_id_aa64mmfr0_el1_t
17755 #define bustype_BDK_AP_ID_AA64MMFR0_EL1 BDK_CSR_TYPE_SYSREG
17756 #define basename_BDK_AP_ID_AA64MMFR0_EL1 "AP_ID_AA64MMFR0_EL1"
17757 #define busnum_BDK_AP_ID_AA64MMFR0_EL1 0
17758 #define arguments_BDK_AP_ID_AA64MMFR0_EL1 -1,-1,-1,-1
17759 
17760 /**
17761  * Register (SYSREG) ap_id_aa64mmfr1_el1
17762  *
17763  * AP AArch64 Memory Model Feature Register 1
17764  * This register contains additional information about the implemented memory model and
17765  * memory management support in AArch64.
17766  */
17767 union bdk_ap_id_aa64mmfr1_el1
17768 {
17769     uint64_t u;
17770     struct bdk_ap_id_aa64mmfr1_el1_s
17771     {
17772 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17773         uint64_t reserved_32_63        : 32;
17774         uint64_t xnx                   : 4;  /**< [ 31: 28](RO) 0x0 = EL0/EL1 execute control distinction at stage2 bit not supported.
17775                                                                  0x1 = EL0/EL1 execute control distinction at stage2 bit supported.
17776 
17777                                                                  All other values reserved. */
17778         uint64_t specsei               : 4;  /**< [ 27: 24](RO) Describes whether the PE can generate SError interrupt exceptions from speculative reads
17779                                                                  of memory, including speculative instruction fetches.
17780                                                                    0x0 = The PE never generates an SError interrupt due to an external abort on a
17781                                                                  speculative read.
17782                                                                    0x1 = The PE might generate an SError interrupt due to an external abort on a
17783                                                                  speculative
17784                                                                  read.
17785 
17786                                                                  All other values are reserved. Reserved values might be defined in a future version of the
17787                                                                  architecture.
17788 
17789                                                                  Valid only if AP_ID_AA64PFR0_EL1[RAS] is nonzero. RAZ otherwise.
17790 
17791                                                                  Note: Speculative reads include speculative instruction prefetches. The architecture
17792                                                                  places restrictions on the memory types a processor is permitted to speculatively read
17793                                                                  from. Software might use this to control how it initializes memory, and how it responds to
17794                                                                  errors reported by ESB operations. */
17795         uint64_t pan                   : 4;  /**< [ 23: 20](RO) V8.1: Privileged Access Never.
17796                                                                  0x0 = AP_PAN not supported.
17797                                                                  0x1 = AP_PAN supported.
17798                                                                  All other values reserved.
17799 
17800                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17801         uint64_t lo                    : 4;  /**< [ 19: 16](RO) V8.1: Limited order regions
17802                                                                  All other values reserved.
17803                                                                  0x0 = LORRegions not supported.
17804                                                                  0x1 = LORRegions supported.
17805 
17806                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17807         uint64_t reserved_12_15        : 4;
17808         uint64_t vh                    : 4;  /**< [ 11:  8](RO) V8.1:  Virtualization Host Extensions.
17809                                                                  All other values reserved.
17810                                                                  0x0 = Virtualization Host Extensions are not supported.
17811                                                                  0x1 = Virtualization Host Extensions supported.
17812 
17813                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17814         uint64_t vmidbits              : 4;  /**< [  7:  4](RO) V8.1: Number of VMID bits.
17815                                                                  Other values are reserved.
17816                                                                  0x0 = 8 bits.
17817                                                                  0x1 = Reserved.
17818                                                                  0x2 = 16 bits.
17819 
17820                                                                  In CNXXXX, 16 bits. */
17821         uint64_t hardware_access_dirty : 4;  /**< [  3:  0](RO) V8.1: Hardware updates of the Access and Dirty bits
17822                                                                  All other fields reserved.
17823                                                                  0x0 = no hardware update of the access and dirty bits supported in hardware.
17824                                                                  0x1 = hardware update of the access bit supported in hardware.
17825                                                                  0x2 = hardware update of both the access and dirty bits supported in hardware.
17826 
17827                                                                  In CNXXXX not supported. */
17828 #else /* Word 0 - Little Endian */
17829         uint64_t hardware_access_dirty : 4;  /**< [  3:  0](RO) V8.1: Hardware updates of the Access and Dirty bits
17830                                                                  All other fields reserved.
17831                                                                  0x0 = no hardware update of the access and dirty bits supported in hardware.
17832                                                                  0x1 = hardware update of the access bit supported in hardware.
17833                                                                  0x2 = hardware update of both the access and dirty bits supported in hardware.
17834 
17835                                                                  In CNXXXX not supported. */
17836         uint64_t vmidbits              : 4;  /**< [  7:  4](RO) V8.1: Number of VMID bits.
17837                                                                  Other values are reserved.
17838                                                                  0x0 = 8 bits.
17839                                                                  0x1 = Reserved.
17840                                                                  0x2 = 16 bits.
17841 
17842                                                                  In CNXXXX, 16 bits. */
17843         uint64_t vh                    : 4;  /**< [ 11:  8](RO) V8.1:  Virtualization Host Extensions.
17844                                                                  All other values reserved.
17845                                                                  0x0 = Virtualization Host Extensions are not supported.
17846                                                                  0x1 = Virtualization Host Extensions supported.
17847 
17848                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17849         uint64_t reserved_12_15        : 4;
17850         uint64_t lo                    : 4;  /**< [ 19: 16](RO) V8.1: Limited order regions
17851                                                                  All other values reserved.
17852                                                                  0x0 = LORRegions not supported.
17853                                                                  0x1 = LORRegions supported.
17854 
17855                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17856         uint64_t pan                   : 4;  /**< [ 23: 20](RO) V8.1: Privileged Access Never.
17857                                                                  0x0 = AP_PAN not supported.
17858                                                                  0x1 = AP_PAN supported.
17859                                                                  All other values reserved.
17860 
17861                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17862         uint64_t specsei               : 4;  /**< [ 27: 24](RO) Describes whether the PE can generate SError interrupt exceptions from speculative reads
17863                                                                  of memory, including speculative instruction fetches.
17864                                                                    0x0 = The PE never generates an SError interrupt due to an external abort on a
17865                                                                  speculative read.
17866                                                                    0x1 = The PE might generate an SError interrupt due to an external abort on a
17867                                                                  speculative
17868                                                                  read.
17869 
17870                                                                  All other values are reserved. Reserved values might be defined in a future version of the
17871                                                                  architecture.
17872 
17873                                                                  Valid only if AP_ID_AA64PFR0_EL1[RAS] is nonzero. RAZ otherwise.
17874 
17875                                                                  Note: Speculative reads include speculative instruction prefetches. The architecture
17876                                                                  places restrictions on the memory types a processor is permitted to speculatively read
17877                                                                  from. Software might use this to control how it initializes memory, and how it responds to
17878                                                                  errors reported by ESB operations. */
17879         uint64_t xnx                   : 4;  /**< [ 31: 28](RO) 0x0 = EL0/EL1 execute control distinction at stage2 bit not supported.
17880                                                                  0x1 = EL0/EL1 execute control distinction at stage2 bit supported.
17881 
17882                                                                  All other values reserved. */
17883         uint64_t reserved_32_63        : 32;
17884 #endif /* Word 0 - End */
17885     } s;
17886     struct bdk_ap_id_aa64mmfr1_el1_cn8
17887     {
17888 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17889         uint64_t reserved_24_63        : 40;
17890         uint64_t pan                   : 4;  /**< [ 23: 20](RO) V8.1: Privileged Access Never.
17891                                                                  0x0 = AP_PAN not supported.
17892                                                                  0x1 = AP_PAN supported.
17893                                                                  All other values reserved.
17894 
17895                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17896         uint64_t lo                    : 4;  /**< [ 19: 16](RO) V8.1: Limited order regions
17897                                                                  All other values reserved.
17898                                                                  0x0 = LORRegions not supported.
17899                                                                  0x1 = LORRegions supported.
17900 
17901                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17902         uint64_t hd                    : 4;  /**< [ 15: 12](RO) V8.1: Hierarchical Attribute Disables.
17903                                                                  All other values reserved.
17904                                                                  0x0 = Hierarchical Attribute Disables not supported.
17905                                                                  0x1 = Hierarchical Attribute Disables supported.
17906 
17907                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17908         uint64_t vh                    : 4;  /**< [ 11:  8](RO) V8.1:  Virtualization Host Extensions.
17909                                                                  All other values reserved.
17910                                                                  0x0 = Virtualization Host Extensions are not supported.
17911                                                                  0x1 = Virtualization Host Extensions supported.
17912 
17913                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17914         uint64_t vmidbits              : 4;  /**< [  7:  4](RO) V8.1: Number of VMID bits.
17915                                                                  Other values are reserved.
17916                                                                  0x0 = 8 bits.
17917                                                                  0x1 = Reserved.
17918                                                                  0x2 = 16 bits.
17919 
17920                                                                  In CNXXXX, 16 bits. */
17921         uint64_t hardware_access_dirty : 4;  /**< [  3:  0](RO) V8.1: Hardware updates of the Access and Dirty bits
17922                                                                  All other fields reserved.
17923                                                                  0x0 = no hardware update of the access and dirty bits supported in hardware.
17924                                                                  0x1 = hardware update of the access bit supported in hardware.
17925                                                                  0x2 = hardware update of both the access and dirty bits supported in hardware.
17926 
17927                                                                  In CNXXXX not supported. */
17928 #else /* Word 0 - Little Endian */
17929         uint64_t hardware_access_dirty : 4;  /**< [  3:  0](RO) V8.1: Hardware updates of the Access and Dirty bits
17930                                                                  All other fields reserved.
17931                                                                  0x0 = no hardware update of the access and dirty bits supported in hardware.
17932                                                                  0x1 = hardware update of the access bit supported in hardware.
17933                                                                  0x2 = hardware update of both the access and dirty bits supported in hardware.
17934 
17935                                                                  In CNXXXX not supported. */
17936         uint64_t vmidbits              : 4;  /**< [  7:  4](RO) V8.1: Number of VMID bits.
17937                                                                  Other values are reserved.
17938                                                                  0x0 = 8 bits.
17939                                                                  0x1 = Reserved.
17940                                                                  0x2 = 16 bits.
17941 
17942                                                                  In CNXXXX, 16 bits. */
17943         uint64_t vh                    : 4;  /**< [ 11:  8](RO) V8.1:  Virtualization Host Extensions.
17944                                                                  All other values reserved.
17945                                                                  0x0 = Virtualization Host Extensions are not supported.
17946                                                                  0x1 = Virtualization Host Extensions supported.
17947 
17948                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17949         uint64_t hd                    : 4;  /**< [ 15: 12](RO) V8.1: Hierarchical Attribute Disables.
17950                                                                  All other values reserved.
17951                                                                  0x0 = Hierarchical Attribute Disables not supported.
17952                                                                  0x1 = Hierarchical Attribute Disables supported.
17953 
17954                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17955         uint64_t lo                    : 4;  /**< [ 19: 16](RO) V8.1: Limited order regions
17956                                                                  All other values reserved.
17957                                                                  0x0 = LORRegions not supported.
17958                                                                  0x1 = LORRegions supported.
17959 
17960                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17961         uint64_t pan                   : 4;  /**< [ 23: 20](RO) V8.1: Privileged Access Never.
17962                                                                  0x0 = AP_PAN not supported.
17963                                                                  0x1 = AP_PAN supported.
17964                                                                  All other values reserved.
17965 
17966                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
17967         uint64_t reserved_24_63        : 40;
17968 #endif /* Word 0 - End */
17969     } cn8;
17970     struct bdk_ap_id_aa64mmfr1_el1_cn9
17971     {
17972 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17973         uint64_t reserved_32_63        : 32;
17974         uint64_t xnx                   : 4;  /**< [ 31: 28](RO) 0x0 = EL0/EL1 execute control distinction at stage2 bit not supported.
17975                                                                  0x1 = EL0/EL1 execute control distinction at stage2 bit supported.
17976 
17977                                                                  All other values reserved. */
17978         uint64_t specsei               : 4;  /**< [ 27: 24](RO) Describes whether the PE can generate SError interrupt exceptions from speculative reads
17979                                                                  of memory, including speculative instruction fetches.
17980                                                                    0x0 = The PE never generates an SError interrupt due to an external abort on a
17981                                                                  speculative read.
17982                                                                    0x1 = The PE might generate an SError interrupt due to an external abort on a
17983                                                                  speculative
17984                                                                  read.
17985 
17986                                                                  All other values are reserved. Reserved values might be defined in a future version of the
17987                                                                  architecture.
17988 
17989                                                                  Valid only if AP_ID_AA64PFR0_EL1[RAS] is nonzero. RAZ otherwise.
17990 
17991                                                                  Note: Speculative reads include speculative instruction prefetches. The architecture
17992                                                                  places restrictions on the memory types a processor is permitted to speculatively read
17993                                                                  from. Software might use this to control how it initializes memory, and how it responds to
17994                                                                  errors reported by ESB operations. */
17995         uint64_t pan                   : 4;  /**< [ 23: 20](RO) V8.1: Privileged Access Never.
17996                                                                  0x0 = AP_PAN not supported.
17997                                                                  0x1 = AP_PAN supported.
17998                                                                  0x2 = PAN supported and new AT S1E1RP and AT S1E1WP instructions supported
17999 
18000                                                                  All other values reserved.
18001 
18002                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18003         uint64_t lo                    : 4;  /**< [ 19: 16](RO) V8.1: Limited order regions
18004                                                                  All other values reserved.
18005                                                                  0x0 = LORRegions not supported.
18006                                                                  0x1 = LORRegions supported.
18007 
18008                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18009         uint64_t hpds                  : 4;  /**< [ 15: 12](RO) V8.1: Hierarchical Permission Disables.
18010                                                                  All other values reserved.
18011                                                                  0x0 = Hierarchical Permission Disables not supported.
18012                                                                  0x1 = Hierarchical Permission Disables supported.
18013                                                                  0x2 = Hierarchical Permission Disables and hardware allocation of bits[62:59] supported.
18014 
18015                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18016         uint64_t vh                    : 4;  /**< [ 11:  8](RO) V8.1:  Virtualization Host Extensions.
18017                                                                  All other values reserved.
18018                                                                  0x0 = Virtualization Host Extensions are not supported.
18019                                                                  0x1 = Virtualization Host Extensions supported.
18020 
18021                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18022         uint64_t vmidbits              : 4;  /**< [  7:  4](RO) V8.1: Number of VMID bits.
18023                                                                  Other values are reserved.
18024                                                                  0x0 = 8 bits.
18025                                                                  0x1 = Reserved.
18026                                                                  0x2 = 16 bits.
18027 
18028                                                                  In CNXXXX, 16 bits. */
18029         uint64_t hardware_access_dirty : 4;  /**< [  3:  0](RO) V8.1: Hardware updates of the Access and Dirty bits
18030                                                                  All other fields reserved.
18031                                                                  0x0 = no hardware update of the access and dirty bits supported in hardware.
18032                                                                  0x1 = hardware update of the access bit supported in hardware.
18033                                                                  0x2 = hardware update of both the access and dirty bits supported in hardware.
18034 
18035                                                                  In CNXXXX not supported. */
18036 #else /* Word 0 - Little Endian */
18037         uint64_t hardware_access_dirty : 4;  /**< [  3:  0](RO) V8.1: Hardware updates of the Access and Dirty bits
18038                                                                  All other fields reserved.
18039                                                                  0x0 = no hardware update of the access and dirty bits supported in hardware.
18040                                                                  0x1 = hardware update of the access bit supported in hardware.
18041                                                                  0x2 = hardware update of both the access and dirty bits supported in hardware.
18042 
18043                                                                  In CNXXXX not supported. */
18044         uint64_t vmidbits              : 4;  /**< [  7:  4](RO) V8.1: Number of VMID bits.
18045                                                                  Other values are reserved.
18046                                                                  0x0 = 8 bits.
18047                                                                  0x1 = Reserved.
18048                                                                  0x2 = 16 bits.
18049 
18050                                                                  In CNXXXX, 16 bits. */
18051         uint64_t vh                    : 4;  /**< [ 11:  8](RO) V8.1:  Virtualization Host Extensions.
18052                                                                  All other values reserved.
18053                                                                  0x0 = Virtualization Host Extensions are not supported.
18054                                                                  0x1 = Virtualization Host Extensions supported.
18055 
18056                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18057         uint64_t hpds                  : 4;  /**< [ 15: 12](RO) V8.1: Hierarchical Permission Disables.
18058                                                                  All other values reserved.
18059                                                                  0x0 = Hierarchical Permission Disables not supported.
18060                                                                  0x1 = Hierarchical Permission Disables supported.
18061                                                                  0x2 = Hierarchical Permission Disables and hardware allocation of bits[62:59] supported.
18062 
18063                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18064         uint64_t lo                    : 4;  /**< [ 19: 16](RO) V8.1: Limited order regions
18065                                                                  All other values reserved.
18066                                                                  0x0 = LORRegions not supported.
18067                                                                  0x1 = LORRegions supported.
18068 
18069                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18070         uint64_t pan                   : 4;  /**< [ 23: 20](RO) V8.1: Privileged Access Never.
18071                                                                  0x0 = AP_PAN not supported.
18072                                                                  0x1 = AP_PAN supported.
18073                                                                  0x2 = PAN supported and new AT S1E1RP and AT S1E1WP instructions supported
18074 
18075                                                                  All other values reserved.
18076 
18077                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18078         uint64_t specsei               : 4;  /**< [ 27: 24](RO) Describes whether the PE can generate SError interrupt exceptions from speculative reads
18079                                                                  of memory, including speculative instruction fetches.
18080                                                                    0x0 = The PE never generates an SError interrupt due to an external abort on a
18081                                                                  speculative read.
18082                                                                    0x1 = The PE might generate an SError interrupt due to an external abort on a
18083                                                                  speculative
18084                                                                  read.
18085 
18086                                                                  All other values are reserved. Reserved values might be defined in a future version of the
18087                                                                  architecture.
18088 
18089                                                                  Valid only if AP_ID_AA64PFR0_EL1[RAS] is nonzero. RAZ otherwise.
18090 
18091                                                                  Note: Speculative reads include speculative instruction prefetches. The architecture
18092                                                                  places restrictions on the memory types a processor is permitted to speculatively read
18093                                                                  from. Software might use this to control how it initializes memory, and how it responds to
18094                                                                  errors reported by ESB operations. */
18095         uint64_t xnx                   : 4;  /**< [ 31: 28](RO) 0x0 = EL0/EL1 execute control distinction at stage2 bit not supported.
18096                                                                  0x1 = EL0/EL1 execute control distinction at stage2 bit supported.
18097 
18098                                                                  All other values reserved. */
18099         uint64_t reserved_32_63        : 32;
18100 #endif /* Word 0 - End */
18101     } cn9;
18102 };
18103 typedef union bdk_ap_id_aa64mmfr1_el1 bdk_ap_id_aa64mmfr1_el1_t;
18104 
18105 #define BDK_AP_ID_AA64MMFR1_EL1 BDK_AP_ID_AA64MMFR1_EL1_FUNC()
18106 static inline uint64_t BDK_AP_ID_AA64MMFR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64MMFR1_EL1_FUNC(void)18107 static inline uint64_t BDK_AP_ID_AA64MMFR1_EL1_FUNC(void)
18108 {
18109     return 0x30000070100ll;
18110 }
18111 
18112 #define typedef_BDK_AP_ID_AA64MMFR1_EL1 bdk_ap_id_aa64mmfr1_el1_t
18113 #define bustype_BDK_AP_ID_AA64MMFR1_EL1 BDK_CSR_TYPE_SYSREG
18114 #define basename_BDK_AP_ID_AA64MMFR1_EL1 "AP_ID_AA64MMFR1_EL1"
18115 #define busnum_BDK_AP_ID_AA64MMFR1_EL1 0
18116 #define arguments_BDK_AP_ID_AA64MMFR1_EL1 -1,-1,-1,-1
18117 
18118 /**
18119  * Register (SYSREG) ap_id_aa64mmfr2_el1
18120  *
18121  * AP AArch64 Memory Model Feature Register 2
18122  * This register contains additional information about the implemented memory model and
18123  * memory management support in AArch64.
18124  */
18125 union bdk_ap_id_aa64mmfr2_el1
18126 {
18127     uint64_t u;
18128     struct bdk_ap_id_aa64mmfr2_el1_s
18129     {
18130 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18131         uint64_t reserved_20_63        : 44;
18132         uint64_t varange               : 4;  /**< [ 19: 16](RO) 0x0 = 48 bits of VA for each translation table page register (for 64Kbyte
18133                                                                  stage1 pages) are supported.
18134                                                                  0x1 = 52 bits of VA for each translation table page register (for 64Kbyte
18135                                                                  stage1 pages) are supported. */
18136         uint64_t iesb                  : 4;  /**< [ 15: 12](RO) 0x0 = Not implemented.
18137                                                                  0x1 = SCTLR_ELx.IESB implicit error synchronization barrier control implemented. */
18138         uint64_t lsm                   : 4;  /**< [ 11:  8](RO) 0x0 = LSMAOE and nTLSMD bit not supported.
18139                                                                  0x1 = LSMAOE and nTLSMD bit supported.
18140 
18141                                                                  All other values reserved. */
18142         uint64_t uao                   : 4;  /**< [  7:  4](RO) 0x0 = UAO not supported.
18143                                                                  0x1 = UAO supported.
18144 
18145                                                                  All other values reserved. */
18146         uint64_t cnp                   : 4;  /**< [  3:  0](RO) 0x0 = CnP bit not supported.
18147                                                                  0x1 = CnP bit supported.
18148 
18149                                                                  All other values reserved. */
18150 #else /* Word 0 - Little Endian */
18151         uint64_t cnp                   : 4;  /**< [  3:  0](RO) 0x0 = CnP bit not supported.
18152                                                                  0x1 = CnP bit supported.
18153 
18154                                                                  All other values reserved. */
18155         uint64_t uao                   : 4;  /**< [  7:  4](RO) 0x0 = UAO not supported.
18156                                                                  0x1 = UAO supported.
18157 
18158                                                                  All other values reserved. */
18159         uint64_t lsm                   : 4;  /**< [ 11:  8](RO) 0x0 = LSMAOE and nTLSMD bit not supported.
18160                                                                  0x1 = LSMAOE and nTLSMD bit supported.
18161 
18162                                                                  All other values reserved. */
18163         uint64_t iesb                  : 4;  /**< [ 15: 12](RO) 0x0 = Not implemented.
18164                                                                  0x1 = SCTLR_ELx.IESB implicit error synchronization barrier control implemented. */
18165         uint64_t varange               : 4;  /**< [ 19: 16](RO) 0x0 = 48 bits of VA for each translation table page register (for 64Kbyte
18166                                                                  stage1 pages) are supported.
18167                                                                  0x1 = 52 bits of VA for each translation table page register (for 64Kbyte
18168                                                                  stage1 pages) are supported. */
18169         uint64_t reserved_20_63        : 44;
18170 #endif /* Word 0 - End */
18171     } s;
18172     /* struct bdk_ap_id_aa64mmfr2_el1_s cn; */
18173 };
18174 typedef union bdk_ap_id_aa64mmfr2_el1 bdk_ap_id_aa64mmfr2_el1_t;
18175 
18176 #define BDK_AP_ID_AA64MMFR2_EL1 BDK_AP_ID_AA64MMFR2_EL1_FUNC()
18177 static inline uint64_t BDK_AP_ID_AA64MMFR2_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64MMFR2_EL1_FUNC(void)18178 static inline uint64_t BDK_AP_ID_AA64MMFR2_EL1_FUNC(void)
18179 {
18180     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
18181         return 0x30000070200ll;
18182     __bdk_csr_fatal("AP_ID_AA64MMFR2_EL1", 0, 0, 0, 0, 0);
18183 }
18184 
18185 #define typedef_BDK_AP_ID_AA64MMFR2_EL1 bdk_ap_id_aa64mmfr2_el1_t
18186 #define bustype_BDK_AP_ID_AA64MMFR2_EL1 BDK_CSR_TYPE_SYSREG
18187 #define basename_BDK_AP_ID_AA64MMFR2_EL1 "AP_ID_AA64MMFR2_EL1"
18188 #define busnum_BDK_AP_ID_AA64MMFR2_EL1 0
18189 #define arguments_BDK_AP_ID_AA64MMFR2_EL1 -1,-1,-1,-1
18190 
18191 /**
18192  * Register (SYSREG) ap_id_aa64pfr#_el1_res0
18193  *
18194  * INTERNAL: AP AArch64 Reserved Register
18195  *
18196  * Reserved for future expansion of information about implemented
18197  *     processor features in AArch64. ARM doesn't actually assign
18198  *     a name to these registers, so CNXXXX made up one.
18199  */
18200 union bdk_ap_id_aa64pfrx_el1_res0
18201 {
18202     uint64_t u;
18203     struct bdk_ap_id_aa64pfrx_el1_res0_s
18204     {
18205 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18206         uint64_t reserved_0_63         : 64;
18207 #else /* Word 0 - Little Endian */
18208         uint64_t reserved_0_63         : 64;
18209 #endif /* Word 0 - End */
18210     } s;
18211     /* struct bdk_ap_id_aa64pfrx_el1_res0_s cn; */
18212 };
18213 typedef union bdk_ap_id_aa64pfrx_el1_res0 bdk_ap_id_aa64pfrx_el1_res0_t;
18214 
18215 static inline uint64_t BDK_AP_ID_AA64PFRX_EL1_RES0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64PFRX_EL1_RES0(unsigned long a)18216 static inline uint64_t BDK_AP_ID_AA64PFRX_EL1_RES0(unsigned long a)
18217 {
18218     if ((a>=2)&&(a<=7))
18219         return 0x30000040000ll + 0x100ll * ((a) & 0x7);
18220     __bdk_csr_fatal("AP_ID_AA64PFRX_EL1_RES0", 1, a, 0, 0, 0);
18221 }
18222 
18223 #define typedef_BDK_AP_ID_AA64PFRX_EL1_RES0(a) bdk_ap_id_aa64pfrx_el1_res0_t
18224 #define bustype_BDK_AP_ID_AA64PFRX_EL1_RES0(a) BDK_CSR_TYPE_SYSREG
18225 #define basename_BDK_AP_ID_AA64PFRX_EL1_RES0(a) "AP_ID_AA64PFRX_EL1_RES0"
18226 #define busnum_BDK_AP_ID_AA64PFRX_EL1_RES0(a) (a)
18227 #define arguments_BDK_AP_ID_AA64PFRX_EL1_RES0(a) (a),-1,-1,-1
18228 
18229 /**
18230  * Register (SYSREG) ap_id_aa64pfr0_el1
18231  *
18232  * AP AArch64 Processor Feature Register 0
18233  * This register provides additional information about implemented processor features
18234  * in AArch64.
18235  */
18236 union bdk_ap_id_aa64pfr0_el1
18237 {
18238     uint64_t u;
18239     struct bdk_ap_id_aa64pfr0_el1_s
18240     {
18241 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18242         uint64_t reserved_32_63        : 32;
18243         uint64_t ras                   : 4;  /**< [ 31: 28](RO) RAS extension version.
18244                                                                    0x0 = No RAS extension.
18245                                                                    0x1 = Version 1 of the RAS extension present.
18246 
18247                                                                  All other values are reserved. Reserved values might be defined in a future version of the
18248                                                                  architecture. */
18249         uint64_t gic                   : 4;  /**< [ 27: 24](RO) GIC system register interface.
18250                                                                  All other values are reserved.
18251                                                                  0x0 = No GIC system registers are supported.
18252                                                                  0x1 = GICv3 system registers are supported.
18253 
18254                                                                  In CNXXXX, supported. */
18255         uint64_t advsimd               : 4;  /**< [ 23: 20](RO) Advanced SIMD.
18256                                                                  All other values are reserved.
18257                                                                  0x0 = Advanced SIMD is implemented.
18258                                                                  0xF = Advanced SIMD is not implemented.
18259 
18260                                                                  In CNXXXX, supported. */
18261         uint64_t fp                    : 4;  /**< [ 19: 16](RO) Floating-point.
18262                                                                  All other values are reserved.
18263                                                                  0x0 = Floating-point is implemented.
18264                                                                  0xF = Floating-point is not implemented.
18265 
18266                                                                  In CNXXXX, supported. */
18267         uint64_t el3                   : 4;  /**< [ 15: 12](RO) EL3 Exception level handling.
18268                                                                  All other values are reserved.
18269                                                                  0x0 = EL3 is not implemented.
18270                                                                  0x1 = EL3 can be executed in AArch64 state only.
18271                                                                  0x2 = EL3 can be executed in either AArch64 or AArch32 state.
18272 
18273                                                                  In CNXXXX, supported in AArch64. */
18274         uint64_t el2                   : 4;  /**< [ 11:  8](RO) EL2 Exception level handling.
18275                                                                  All other values are reserved.
18276                                                                  0x0 = EL2 is not implemented.
18277                                                                  0x1 = EL2 can be executed in AArch64 state only.
18278                                                                  0x2 = EL2 can be executed in either AArch64 or AArch32 state.
18279 
18280                                                                  In CNXXXX, supported in AArch64. */
18281         uint64_t el1                   : 4;  /**< [  7:  4](RO) EL1 Exception level handling.
18282                                                                  All other values are reserved.
18283                                                                  0x0 = EL1 is not implemented.
18284                                                                  0x1 = EL1 can be executed in AArch64 state only.
18285                                                                  0x2 = EL1 can be executed in either AArch64 or AArch32 state.
18286 
18287                                                                  In CNXXXX, supported in AArch64. */
18288         uint64_t el0                   : 4;  /**< [  3:  0](RO) EL0 Exception level handling.
18289                                                                  All other values are reserved.
18290                                                                  0x0 = EL0 is not implemented.
18291                                                                  0x1 = EL0 can be executed in AArch64 state only.
18292                                                                  0x2 = EL0 can be executed in either AArch64 or AArch32 state.
18293 
18294                                                                  In CNXXXX, supported in AArch64. */
18295 #else /* Word 0 - Little Endian */
18296         uint64_t el0                   : 4;  /**< [  3:  0](RO) EL0 Exception level handling.
18297                                                                  All other values are reserved.
18298                                                                  0x0 = EL0 is not implemented.
18299                                                                  0x1 = EL0 can be executed in AArch64 state only.
18300                                                                  0x2 = EL0 can be executed in either AArch64 or AArch32 state.
18301 
18302                                                                  In CNXXXX, supported in AArch64. */
18303         uint64_t el1                   : 4;  /**< [  7:  4](RO) EL1 Exception level handling.
18304                                                                  All other values are reserved.
18305                                                                  0x0 = EL1 is not implemented.
18306                                                                  0x1 = EL1 can be executed in AArch64 state only.
18307                                                                  0x2 = EL1 can be executed in either AArch64 or AArch32 state.
18308 
18309                                                                  In CNXXXX, supported in AArch64. */
18310         uint64_t el2                   : 4;  /**< [ 11:  8](RO) EL2 Exception level handling.
18311                                                                  All other values are reserved.
18312                                                                  0x0 = EL2 is not implemented.
18313                                                                  0x1 = EL2 can be executed in AArch64 state only.
18314                                                                  0x2 = EL2 can be executed in either AArch64 or AArch32 state.
18315 
18316                                                                  In CNXXXX, supported in AArch64. */
18317         uint64_t el3                   : 4;  /**< [ 15: 12](RO) EL3 Exception level handling.
18318                                                                  All other values are reserved.
18319                                                                  0x0 = EL3 is not implemented.
18320                                                                  0x1 = EL3 can be executed in AArch64 state only.
18321                                                                  0x2 = EL3 can be executed in either AArch64 or AArch32 state.
18322 
18323                                                                  In CNXXXX, supported in AArch64. */
18324         uint64_t fp                    : 4;  /**< [ 19: 16](RO) Floating-point.
18325                                                                  All other values are reserved.
18326                                                                  0x0 = Floating-point is implemented.
18327                                                                  0xF = Floating-point is not implemented.
18328 
18329                                                                  In CNXXXX, supported. */
18330         uint64_t advsimd               : 4;  /**< [ 23: 20](RO) Advanced SIMD.
18331                                                                  All other values are reserved.
18332                                                                  0x0 = Advanced SIMD is implemented.
18333                                                                  0xF = Advanced SIMD is not implemented.
18334 
18335                                                                  In CNXXXX, supported. */
18336         uint64_t gic                   : 4;  /**< [ 27: 24](RO) GIC system register interface.
18337                                                                  All other values are reserved.
18338                                                                  0x0 = No GIC system registers are supported.
18339                                                                  0x1 = GICv3 system registers are supported.
18340 
18341                                                                  In CNXXXX, supported. */
18342         uint64_t ras                   : 4;  /**< [ 31: 28](RO) RAS extension version.
18343                                                                    0x0 = No RAS extension.
18344                                                                    0x1 = Version 1 of the RAS extension present.
18345 
18346                                                                  All other values are reserved. Reserved values might be defined in a future version of the
18347                                                                  architecture. */
18348         uint64_t reserved_32_63        : 32;
18349 #endif /* Word 0 - End */
18350     } s;
18351     struct bdk_ap_id_aa64pfr0_el1_cn8
18352     {
18353 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18354         uint64_t reserved_28_63        : 36;
18355         uint64_t gic                   : 4;  /**< [ 27: 24](RO) GIC system register interface.
18356                                                                  All other values are reserved.
18357                                                                  0x0 = No GIC system registers are supported.
18358                                                                  0x1 = GICv3 system registers are supported.
18359 
18360                                                                  In CNXXXX, supported. */
18361         uint64_t advsimd               : 4;  /**< [ 23: 20](RO) Advanced SIMD.
18362                                                                  All other values are reserved.
18363                                                                  0x0 = Advanced SIMD is implemented.
18364                                                                  0xF = Advanced SIMD is not implemented.
18365 
18366                                                                  In CNXXXX, supported. */
18367         uint64_t fp                    : 4;  /**< [ 19: 16](RO) Floating-point.
18368                                                                  All other values are reserved.
18369                                                                  0x0 = Floating-point is implemented.
18370                                                                  0xF = Floating-point is not implemented.
18371 
18372                                                                  In CNXXXX, supported. */
18373         uint64_t el3                   : 4;  /**< [ 15: 12](RO) EL3 Exception level handling.
18374                                                                  All other values are reserved.
18375                                                                  0x0 = EL3 is not implemented.
18376                                                                  0x1 = EL3 can be executed in AArch64 state only.
18377                                                                  0x2 = EL3 can be executed in either AArch64 or AArch32 state.
18378 
18379                                                                  In CNXXXX, supported in AArch64. */
18380         uint64_t el2                   : 4;  /**< [ 11:  8](RO) EL2 Exception level handling.
18381                                                                  All other values are reserved.
18382                                                                  0x0 = EL2 is not implemented.
18383                                                                  0x1 = EL2 can be executed in AArch64 state only.
18384                                                                  0x2 = EL2 can be executed in either AArch64 or AArch32 state.
18385 
18386                                                                  In CNXXXX, supported in AArch64. */
18387         uint64_t el1                   : 4;  /**< [  7:  4](RO) EL1 Exception level handling.
18388                                                                  All other values are reserved.
18389                                                                  0x0 = EL1 is not implemented.
18390                                                                  0x1 = EL1 can be executed in AArch64 state only.
18391                                                                  0x2 = EL1 can be executed in either AArch64 or AArch32 state.
18392 
18393                                                                  In CNXXXX, supported in AArch64. */
18394         uint64_t el0                   : 4;  /**< [  3:  0](RO) EL0 Exception level handling.
18395                                                                  All other values are reserved.
18396                                                                  0x0 = EL0 is not implemented.
18397                                                                  0x1 = EL0 can be executed in AArch64 state only.
18398                                                                  0x2 = EL0 can be executed in either AArch64 or AArch32 state.
18399 
18400                                                                  In CNXXXX, supported in AArch64. */
18401 #else /* Word 0 - Little Endian */
18402         uint64_t el0                   : 4;  /**< [  3:  0](RO) EL0 Exception level handling.
18403                                                                  All other values are reserved.
18404                                                                  0x0 = EL0 is not implemented.
18405                                                                  0x1 = EL0 can be executed in AArch64 state only.
18406                                                                  0x2 = EL0 can be executed in either AArch64 or AArch32 state.
18407 
18408                                                                  In CNXXXX, supported in AArch64. */
18409         uint64_t el1                   : 4;  /**< [  7:  4](RO) EL1 Exception level handling.
18410                                                                  All other values are reserved.
18411                                                                  0x0 = EL1 is not implemented.
18412                                                                  0x1 = EL1 can be executed in AArch64 state only.
18413                                                                  0x2 = EL1 can be executed in either AArch64 or AArch32 state.
18414 
18415                                                                  In CNXXXX, supported in AArch64. */
18416         uint64_t el2                   : 4;  /**< [ 11:  8](RO) EL2 Exception level handling.
18417                                                                  All other values are reserved.
18418                                                                  0x0 = EL2 is not implemented.
18419                                                                  0x1 = EL2 can be executed in AArch64 state only.
18420                                                                  0x2 = EL2 can be executed in either AArch64 or AArch32 state.
18421 
18422                                                                  In CNXXXX, supported in AArch64. */
18423         uint64_t el3                   : 4;  /**< [ 15: 12](RO) EL3 Exception level handling.
18424                                                                  All other values are reserved.
18425                                                                  0x0 = EL3 is not implemented.
18426                                                                  0x1 = EL3 can be executed in AArch64 state only.
18427                                                                  0x2 = EL3 can be executed in either AArch64 or AArch32 state.
18428 
18429                                                                  In CNXXXX, supported in AArch64. */
18430         uint64_t fp                    : 4;  /**< [ 19: 16](RO) Floating-point.
18431                                                                  All other values are reserved.
18432                                                                  0x0 = Floating-point is implemented.
18433                                                                  0xF = Floating-point is not implemented.
18434 
18435                                                                  In CNXXXX, supported. */
18436         uint64_t advsimd               : 4;  /**< [ 23: 20](RO) Advanced SIMD.
18437                                                                  All other values are reserved.
18438                                                                  0x0 = Advanced SIMD is implemented.
18439                                                                  0xF = Advanced SIMD is not implemented.
18440 
18441                                                                  In CNXXXX, supported. */
18442         uint64_t gic                   : 4;  /**< [ 27: 24](RO) GIC system register interface.
18443                                                                  All other values are reserved.
18444                                                                  0x0 = No GIC system registers are supported.
18445                                                                  0x1 = GICv3 system registers are supported.
18446 
18447                                                                  In CNXXXX, supported. */
18448         uint64_t reserved_28_63        : 36;
18449 #endif /* Word 0 - End */
18450     } cn8;
18451     /* struct bdk_ap_id_aa64pfr0_el1_s cn9; */
18452 };
18453 typedef union bdk_ap_id_aa64pfr0_el1 bdk_ap_id_aa64pfr0_el1_t;
18454 
18455 #define BDK_AP_ID_AA64PFR0_EL1 BDK_AP_ID_AA64PFR0_EL1_FUNC()
18456 static inline uint64_t BDK_AP_ID_AA64PFR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64PFR0_EL1_FUNC(void)18457 static inline uint64_t BDK_AP_ID_AA64PFR0_EL1_FUNC(void)
18458 {
18459     return 0x30000040000ll;
18460 }
18461 
18462 #define typedef_BDK_AP_ID_AA64PFR0_EL1 bdk_ap_id_aa64pfr0_el1_t
18463 #define bustype_BDK_AP_ID_AA64PFR0_EL1 BDK_CSR_TYPE_SYSREG
18464 #define basename_BDK_AP_ID_AA64PFR0_EL1 "AP_ID_AA64PFR0_EL1"
18465 #define busnum_BDK_AP_ID_AA64PFR0_EL1 0
18466 #define arguments_BDK_AP_ID_AA64PFR0_EL1 -1,-1,-1,-1
18467 
18468 /**
18469  * Register (SYSREG) ap_id_aa64pfr1_el1
18470  *
18471  * AP AArch64 Processor Feature Register 1
18472  * Reserved for future expansion of information about implemented
18473  *     processor features in AArch64.
18474  */
18475 union bdk_ap_id_aa64pfr1_el1
18476 {
18477     uint64_t u;
18478     struct bdk_ap_id_aa64pfr1_el1_s
18479     {
18480 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18481         uint64_t reserved_0_63         : 64;
18482 #else /* Word 0 - Little Endian */
18483         uint64_t reserved_0_63         : 64;
18484 #endif /* Word 0 - End */
18485     } s;
18486     /* struct bdk_ap_id_aa64pfr1_el1_s cn; */
18487 };
18488 typedef union bdk_ap_id_aa64pfr1_el1 bdk_ap_id_aa64pfr1_el1_t;
18489 
18490 #define BDK_AP_ID_AA64PFR1_EL1 BDK_AP_ID_AA64PFR1_EL1_FUNC()
18491 static inline uint64_t BDK_AP_ID_AA64PFR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AA64PFR1_EL1_FUNC(void)18492 static inline uint64_t BDK_AP_ID_AA64PFR1_EL1_FUNC(void)
18493 {
18494     return 0x30000040100ll;
18495 }
18496 
18497 #define typedef_BDK_AP_ID_AA64PFR1_EL1 bdk_ap_id_aa64pfr1_el1_t
18498 #define bustype_BDK_AP_ID_AA64PFR1_EL1 BDK_CSR_TYPE_SYSREG
18499 #define basename_BDK_AP_ID_AA64PFR1_EL1 "AP_ID_AA64PFR1_EL1"
18500 #define busnum_BDK_AP_ID_AA64PFR1_EL1 0
18501 #define arguments_BDK_AP_ID_AA64PFR1_EL1 -1,-1,-1,-1
18502 
18503 /**
18504  * Register (SYSREG) ap_id_afr0_el1
18505  *
18506  * AP AArch32 Auxiliary Feature Register 0
18507  * Provides information about the implementation defined features
18508  *     of the PE in AArch32.
18509  */
18510 union bdk_ap_id_afr0_el1
18511 {
18512     uint32_t u;
18513     struct bdk_ap_id_afr0_el1_s
18514     {
18515 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18516         uint32_t reserved_0_31         : 32;
18517 #else /* Word 0 - Little Endian */
18518         uint32_t reserved_0_31         : 32;
18519 #endif /* Word 0 - End */
18520     } s;
18521     /* struct bdk_ap_id_afr0_el1_s cn; */
18522 };
18523 typedef union bdk_ap_id_afr0_el1 bdk_ap_id_afr0_el1_t;
18524 
18525 #define BDK_AP_ID_AFR0_EL1 BDK_AP_ID_AFR0_EL1_FUNC()
18526 static inline uint64_t BDK_AP_ID_AFR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_AFR0_EL1_FUNC(void)18527 static inline uint64_t BDK_AP_ID_AFR0_EL1_FUNC(void)
18528 {
18529     return 0x30000010300ll;
18530 }
18531 
18532 #define typedef_BDK_AP_ID_AFR0_EL1 bdk_ap_id_afr0_el1_t
18533 #define bustype_BDK_AP_ID_AFR0_EL1 BDK_CSR_TYPE_SYSREG
18534 #define basename_BDK_AP_ID_AFR0_EL1 "AP_ID_AFR0_EL1"
18535 #define busnum_BDK_AP_ID_AFR0_EL1 0
18536 #define arguments_BDK_AP_ID_AFR0_EL1 -1,-1,-1,-1
18537 
18538 /**
18539  * Register (SYSREG) ap_id_dfr0_el1
18540  *
18541  * AP AArch32 Debug Feature Register 0
18542  * Provides top level information about the debug system in
18543  *     AArch32.
18544  * This register is RES0 on CNXXXX since we don't support 32bit,
18545  * but it still needs to exist per spec.
18546  */
18547 union bdk_ap_id_dfr0_el1
18548 {
18549     uint32_t u;
18550     struct bdk_ap_id_dfr0_el1_s
18551     {
18552 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18553         uint32_t reserved_0_31         : 32;
18554 #else /* Word 0 - Little Endian */
18555         uint32_t reserved_0_31         : 32;
18556 #endif /* Word 0 - End */
18557     } s;
18558     /* struct bdk_ap_id_dfr0_el1_s cn; */
18559 };
18560 typedef union bdk_ap_id_dfr0_el1 bdk_ap_id_dfr0_el1_t;
18561 
18562 #define BDK_AP_ID_DFR0_EL1 BDK_AP_ID_DFR0_EL1_FUNC()
18563 static inline uint64_t BDK_AP_ID_DFR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_DFR0_EL1_FUNC(void)18564 static inline uint64_t BDK_AP_ID_DFR0_EL1_FUNC(void)
18565 {
18566     return 0x30000010200ll;
18567 }
18568 
18569 #define typedef_BDK_AP_ID_DFR0_EL1 bdk_ap_id_dfr0_el1_t
18570 #define bustype_BDK_AP_ID_DFR0_EL1 BDK_CSR_TYPE_SYSREG
18571 #define basename_BDK_AP_ID_DFR0_EL1 "AP_ID_DFR0_EL1"
18572 #define busnum_BDK_AP_ID_DFR0_EL1 0
18573 #define arguments_BDK_AP_ID_DFR0_EL1 -1,-1,-1,-1
18574 
18575 /**
18576  * Register (SYSREG) ap_id_isar#_el1
18577  *
18578  * AP ARM32 Instruction Set Attribute Register
18579  * Instruction set attribute register
18580  */
18581 union bdk_ap_id_isarx_el1
18582 {
18583     uint32_t u;
18584     struct bdk_ap_id_isarx_el1_s
18585     {
18586 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18587         uint32_t reserved_0_31         : 32;
18588 #else /* Word 0 - Little Endian */
18589         uint32_t reserved_0_31         : 32;
18590 #endif /* Word 0 - End */
18591     } s;
18592     /* struct bdk_ap_id_isarx_el1_s cn; */
18593 };
18594 typedef union bdk_ap_id_isarx_el1 bdk_ap_id_isarx_el1_t;
18595 
18596 static inline uint64_t BDK_AP_ID_ISARX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ID_ISARX_EL1(unsigned long a)18597 static inline uint64_t BDK_AP_ID_ISARX_EL1(unsigned long a)
18598 {
18599     if (a<=5)
18600         return 0x30000020000ll + 0x100ll * ((a) & 0x7);
18601     __bdk_csr_fatal("AP_ID_ISARX_EL1", 1, a, 0, 0, 0);
18602 }
18603 
18604 #define typedef_BDK_AP_ID_ISARX_EL1(a) bdk_ap_id_isarx_el1_t
18605 #define bustype_BDK_AP_ID_ISARX_EL1(a) BDK_CSR_TYPE_SYSREG
18606 #define basename_BDK_AP_ID_ISARX_EL1(a) "AP_ID_ISARX_EL1"
18607 #define busnum_BDK_AP_ID_ISARX_EL1(a) (a)
18608 #define arguments_BDK_AP_ID_ISARX_EL1(a) (a),-1,-1,-1
18609 
18610 /**
18611  * Register (SYSREG) ap_id_isar#_el1_res0
18612  *
18613  * INTERNAL: AP ARM32 Instruction Set Attribute Register
18614  *
18615  * Instruction set attribute register. ARM doesn't actually assign a name to these registers, so
18616  * CNXXXX made up one.
18617  */
18618 union bdk_ap_id_isarx_el1_res0
18619 {
18620     uint32_t u;
18621     struct bdk_ap_id_isarx_el1_res0_s
18622     {
18623 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18624         uint32_t reserved_0_31         : 32;
18625 #else /* Word 0 - Little Endian */
18626         uint32_t reserved_0_31         : 32;
18627 #endif /* Word 0 - End */
18628     } s;
18629     /* struct bdk_ap_id_isarx_el1_res0_s cn; */
18630 };
18631 typedef union bdk_ap_id_isarx_el1_res0 bdk_ap_id_isarx_el1_res0_t;
18632 
18633 static inline uint64_t BDK_AP_ID_ISARX_EL1_RES0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ID_ISARX_EL1_RES0(unsigned long a)18634 static inline uint64_t BDK_AP_ID_ISARX_EL1_RES0(unsigned long a)
18635 {
18636     if (CAVIUM_IS_MODEL(CAVIUM_CN8XXX) && ((a>=6)&&(a<=7)))
18637         return 0x30000020000ll + 0x100ll * ((a) & 0x7);
18638     __bdk_csr_fatal("AP_ID_ISARX_EL1_RES0", 1, a, 0, 0, 0);
18639 }
18640 
18641 #define typedef_BDK_AP_ID_ISARX_EL1_RES0(a) bdk_ap_id_isarx_el1_res0_t
18642 #define bustype_BDK_AP_ID_ISARX_EL1_RES0(a) BDK_CSR_TYPE_SYSREG
18643 #define basename_BDK_AP_ID_ISARX_EL1_RES0(a) "AP_ID_ISARX_EL1_RES0"
18644 #define busnum_BDK_AP_ID_ISARX_EL1_RES0(a) (a)
18645 #define arguments_BDK_AP_ID_ISARX_EL1_RES0(a) (a),-1,-1,-1
18646 
18647 /**
18648  * Register (SYSREG) ap_id_isar7_el1_res0
18649  *
18650  * INTERNAL: AP ARM32 Instruction Set Attribute Register
18651  *
18652  * Instruction set attribute register. ARM doesn't actually assign a name to these registers, so
18653  * CNXXXX made up one.
18654  */
18655 union bdk_ap_id_isar7_el1_res0
18656 {
18657     uint32_t u;
18658     struct bdk_ap_id_isar7_el1_res0_s
18659     {
18660 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18661         uint32_t reserved_0_31         : 32;
18662 #else /* Word 0 - Little Endian */
18663         uint32_t reserved_0_31         : 32;
18664 #endif /* Word 0 - End */
18665     } s;
18666     /* struct bdk_ap_id_isar7_el1_res0_s cn; */
18667 };
18668 typedef union bdk_ap_id_isar7_el1_res0 bdk_ap_id_isar7_el1_res0_t;
18669 
18670 #define BDK_AP_ID_ISAR7_EL1_RES0 BDK_AP_ID_ISAR7_EL1_RES0_FUNC()
18671 static inline uint64_t BDK_AP_ID_ISAR7_EL1_RES0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_ISAR7_EL1_RES0_FUNC(void)18672 static inline uint64_t BDK_AP_ID_ISAR7_EL1_RES0_FUNC(void)
18673 {
18674     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
18675         return 0x30000020700ll;
18676     __bdk_csr_fatal("AP_ID_ISAR7_EL1_RES0", 0, 0, 0, 0, 0);
18677 }
18678 
18679 #define typedef_BDK_AP_ID_ISAR7_EL1_RES0 bdk_ap_id_isar7_el1_res0_t
18680 #define bustype_BDK_AP_ID_ISAR7_EL1_RES0 BDK_CSR_TYPE_SYSREG
18681 #define basename_BDK_AP_ID_ISAR7_EL1_RES0 "AP_ID_ISAR7_EL1_RES0"
18682 #define busnum_BDK_AP_ID_ISAR7_EL1_RES0 0
18683 #define arguments_BDK_AP_ID_ISAR7_EL1_RES0 -1,-1,-1,-1
18684 
18685 /**
18686  * Register (SYSREG) ap_id_mmfr#_el1
18687  *
18688  * AP ARM32 Memory Model Feature Register
18689  * ARM32 Memory model feature register
18690  */
18691 union bdk_ap_id_mmfrx_el1
18692 {
18693     uint32_t u;
18694     struct bdk_ap_id_mmfrx_el1_s
18695     {
18696 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18697         uint32_t reserved_0_31         : 32;
18698 #else /* Word 0 - Little Endian */
18699         uint32_t reserved_0_31         : 32;
18700 #endif /* Word 0 - End */
18701     } s;
18702     /* struct bdk_ap_id_mmfrx_el1_s cn; */
18703 };
18704 typedef union bdk_ap_id_mmfrx_el1 bdk_ap_id_mmfrx_el1_t;
18705 
18706 static inline uint64_t BDK_AP_ID_MMFRX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_ID_MMFRX_EL1(unsigned long a)18707 static inline uint64_t BDK_AP_ID_MMFRX_EL1(unsigned long a)
18708 {
18709     if (a<=3)
18710         return 0x30000010400ll + 0x100ll * ((a) & 0x3);
18711     __bdk_csr_fatal("AP_ID_MMFRX_EL1", 1, a, 0, 0, 0);
18712 }
18713 
18714 #define typedef_BDK_AP_ID_MMFRX_EL1(a) bdk_ap_id_mmfrx_el1_t
18715 #define bustype_BDK_AP_ID_MMFRX_EL1(a) BDK_CSR_TYPE_SYSREG
18716 #define basename_BDK_AP_ID_MMFRX_EL1(a) "AP_ID_MMFRX_EL1"
18717 #define busnum_BDK_AP_ID_MMFRX_EL1(a) (a)
18718 #define arguments_BDK_AP_ID_MMFRX_EL1(a) (a),-1,-1,-1
18719 
18720 /**
18721  * Register (SYSREG) ap_id_mmfr4_el1
18722  *
18723  * AP AArch32 Memory Model Feature Register 4
18724  * Provides additional information about implemented memory model and memory management support
18725  * in AArch32.
18726  *
18727  * Usage constraints:
18728  *   ID_MMFR4_EL1 is UNDEFINED at EL0.
18729  *   If EL2 is implemented and HCR_EL2.TID3 == 1, then direct reads of ID_MMFR4_EL1 at Non-secure
18730  * EL1 generate a Trap exception to EL2.
18731  *
18732  * Configurations:
18733  *   AArch64 System register ID_MMFR4_EL1 is architecturally mapped to AArch32 System register
18734  * ID_MMFR4.
18735  *   In an implementation that does not include ACTLR2 and HACTLR2 this register is RAZ/WI.
18736  *   In an AArch64-only implementation, this register is UNKNOWN.
18737  */
18738 union bdk_ap_id_mmfr4_el1
18739 {
18740     uint32_t u;
18741     struct bdk_ap_id_mmfr4_el1_s
18742     {
18743 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18744         uint32_t reserved_24_31        : 8;
18745         uint32_t lsm                   : 4;  /**< [ 23: 20](RO) 0x0 = LSMAOE and nTLSMD bit not supported.
18746                                                                  0x1 = LSMAOE and nTLSMD bit supported.
18747 
18748                                                                  All other values reserved. */
18749         uint32_t hpds                  : 4;  /**< [ 19: 16](RO) V8.1: Hierarchical Permission Disables.
18750                                                                  0x0 = Hierarchical Permission Disables not supported.
18751                                                                  0x1 = Hierarchical Permission Disables supported.
18752                                                                  0x2 = Hierarchical Permission Disables and hardware allocation of bits[62:59] supported.
18753 
18754                                                                  All other values reserved.
18755 
18756                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18757         uint32_t cnp                   : 4;  /**< [ 15: 12](RO) 0x0 = CnP bit not supported.
18758                                                                  0x1 = CnP bit supported.
18759 
18760                                                                  All other values reserved. */
18761         uint32_t xnx                   : 4;  /**< [ 11:  8](RO) 0x0 = EL0/EL1 execute control distinction at stage2 bit not supported.
18762                                                                  0x1 = EL0/EL1 execute control distinction at stage2 bit supported.
18763 
18764                                                                  All other values reserved. */
18765         uint32_t ac2                   : 4;  /**< [  7:  4](RO) Indicates the extension of the ACTLR and HACTLR registers using ACTLR2 and HACTLR2.
18766                                                                    0x0 = ACTLR2 and HACTLR2 are not implemented.
18767                                                                    0x1 = ACTLR2 and HACTLR2 are implemented.
18768 
18769                                                                  All other values are reserved. */
18770         uint32_t specsei               : 4;  /**< [  3:  0](RO) Describes whether the PE can generate SError interrupt exceptions from speculative reads
18771                                                                  of memory, including speculative instruction fetches.
18772                                                                    0x0 = The PE never generates an SError interrupt due to an external abort on a
18773                                                                  speculative read.
18774                                                                    0x1 = The PE might generate an SError interrupt due to an external abort on a
18775                                                                  speculative read. */
18776 #else /* Word 0 - Little Endian */
18777         uint32_t specsei               : 4;  /**< [  3:  0](RO) Describes whether the PE can generate SError interrupt exceptions from speculative reads
18778                                                                  of memory, including speculative instruction fetches.
18779                                                                    0x0 = The PE never generates an SError interrupt due to an external abort on a
18780                                                                  speculative read.
18781                                                                    0x1 = The PE might generate an SError interrupt due to an external abort on a
18782                                                                  speculative read. */
18783         uint32_t ac2                   : 4;  /**< [  7:  4](RO) Indicates the extension of the ACTLR and HACTLR registers using ACTLR2 and HACTLR2.
18784                                                                    0x0 = ACTLR2 and HACTLR2 are not implemented.
18785                                                                    0x1 = ACTLR2 and HACTLR2 are implemented.
18786 
18787                                                                  All other values are reserved. */
18788         uint32_t xnx                   : 4;  /**< [ 11:  8](RO) 0x0 = EL0/EL1 execute control distinction at stage2 bit not supported.
18789                                                                  0x1 = EL0/EL1 execute control distinction at stage2 bit supported.
18790 
18791                                                                  All other values reserved. */
18792         uint32_t cnp                   : 4;  /**< [ 15: 12](RO) 0x0 = CnP bit not supported.
18793                                                                  0x1 = CnP bit supported.
18794 
18795                                                                  All other values reserved. */
18796         uint32_t hpds                  : 4;  /**< [ 19: 16](RO) V8.1: Hierarchical Permission Disables.
18797                                                                  0x0 = Hierarchical Permission Disables not supported.
18798                                                                  0x1 = Hierarchical Permission Disables supported.
18799                                                                  0x2 = Hierarchical Permission Disables and hardware allocation of bits[62:59] supported.
18800 
18801                                                                  All other values reserved.
18802 
18803                                                                  For CNXXXX, if AP_CVMCTL_EL1[ENABLE_V81] is set 0x1, else 0x0. */
18804         uint32_t lsm                   : 4;  /**< [ 23: 20](RO) 0x0 = LSMAOE and nTLSMD bit not supported.
18805                                                                  0x1 = LSMAOE and nTLSMD bit supported.
18806 
18807                                                                  All other values reserved. */
18808         uint32_t reserved_24_31        : 8;
18809 #endif /* Word 0 - End */
18810     } s;
18811     /* struct bdk_ap_id_mmfr4_el1_s cn; */
18812 };
18813 typedef union bdk_ap_id_mmfr4_el1 bdk_ap_id_mmfr4_el1_t;
18814 
18815 #define BDK_AP_ID_MMFR4_EL1 BDK_AP_ID_MMFR4_EL1_FUNC()
18816 static inline uint64_t BDK_AP_ID_MMFR4_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_MMFR4_EL1_FUNC(void)18817 static inline uint64_t BDK_AP_ID_MMFR4_EL1_FUNC(void)
18818 {
18819     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
18820         return 0x30000020600ll;
18821     __bdk_csr_fatal("AP_ID_MMFR4_EL1", 0, 0, 0, 0, 0);
18822 }
18823 
18824 #define typedef_BDK_AP_ID_MMFR4_EL1 bdk_ap_id_mmfr4_el1_t
18825 #define bustype_BDK_AP_ID_MMFR4_EL1 BDK_CSR_TYPE_SYSREG
18826 #define basename_BDK_AP_ID_MMFR4_EL1 "AP_ID_MMFR4_EL1"
18827 #define busnum_BDK_AP_ID_MMFR4_EL1 0
18828 #define arguments_BDK_AP_ID_MMFR4_EL1 -1,-1,-1,-1
18829 
18830 /**
18831  * Register (SYSREG) ap_id_pfr0_el1
18832  *
18833  * AP AArch32 Processor Feature Register 0
18834  * Gives top-level information about the instruction sets
18835  *     supported by the processor in AArch32.
18836  */
18837 union bdk_ap_id_pfr0_el1
18838 {
18839     uint32_t u;
18840     struct bdk_ap_id_pfr0_el1_s
18841     {
18842 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18843         uint32_t ras                   : 4;  /**< [ 31: 28](RO) RAS extension version. The possible values of this field are:
18844                                                                    0x0 = No RAS extension.
18845                                                                    0x1 = Version 1 of the RAS extension present.
18846 
18847                                                                  All other values are reserved. Reserved values might be defined in a future version of the
18848                                                                  architecture. */
18849         uint32_t reserved_16_27        : 12;
18850         uint32_t state3                : 4;  /**< [ 15: 12](RO) T32EE instruction set support.
18851                                                                  All other values are reserved.
18852                                                                  0x0 = Not implemented.
18853                                                                  0x1 = T32EE instruction set implemented. */
18854         uint32_t state2                : 4;  /**< [ 11:  8](RO) Jazelle extension support.
18855                                                                  All other values are reserved.
18856                                                                  0x0 = Not implemented.
18857                                                                  0x1 = Jazelle extension implemented, without clearing of JOSCR[CV] on
18858                                                                      exception entry.
18859                                                                  0x2 = Jazelle extension implemented, with clearing of JOSCR[CV] on
18860                                                                      exception entry. */
18861         uint32_t state1                : 4;  /**< [  7:  4](RO) T32 instruction set support.
18862                                                                  All other values are reserved.
18863                                                                  0x0 = T32 instruction set not implemented.
18864 
18865                                                                  0x1 = T32 encodings before the introduction of Thumb-2 technology
18866                                                                      implemented:
18867                                                                   All instructions are 16-bit.
18868                                                                   A BL or BLX is a pair of 16-bit instructions.
18869                                                                   32-bit instructions other than BL and BLX cannot be encoded.
18870 
18871                                                                  0x3 = T32 encodings after the introduction of Thumb-2 technology
18872                                                                      implemented, for all 16-bit and 32-bit T32 basic instructions. */
18873         uint32_t state0                : 4;  /**< [  3:  0](RO) A32 instruction set support.
18874                                                                  All other values are reserved.
18875                                                                  0x0 = A32 instruction set not implemented.
18876                                                                  0x1 = A32 instruction set implemented. */
18877 #else /* Word 0 - Little Endian */
18878         uint32_t state0                : 4;  /**< [  3:  0](RO) A32 instruction set support.
18879                                                                  All other values are reserved.
18880                                                                  0x0 = A32 instruction set not implemented.
18881                                                                  0x1 = A32 instruction set implemented. */
18882         uint32_t state1                : 4;  /**< [  7:  4](RO) T32 instruction set support.
18883                                                                  All other values are reserved.
18884                                                                  0x0 = T32 instruction set not implemented.
18885 
18886                                                                  0x1 = T32 encodings before the introduction of Thumb-2 technology
18887                                                                      implemented:
18888                                                                   All instructions are 16-bit.
18889                                                                   A BL or BLX is a pair of 16-bit instructions.
18890                                                                   32-bit instructions other than BL and BLX cannot be encoded.
18891 
18892                                                                  0x3 = T32 encodings after the introduction of Thumb-2 technology
18893                                                                      implemented, for all 16-bit and 32-bit T32 basic instructions. */
18894         uint32_t state2                : 4;  /**< [ 11:  8](RO) Jazelle extension support.
18895                                                                  All other values are reserved.
18896                                                                  0x0 = Not implemented.
18897                                                                  0x1 = Jazelle extension implemented, without clearing of JOSCR[CV] on
18898                                                                      exception entry.
18899                                                                  0x2 = Jazelle extension implemented, with clearing of JOSCR[CV] on
18900                                                                      exception entry. */
18901         uint32_t state3                : 4;  /**< [ 15: 12](RO) T32EE instruction set support.
18902                                                                  All other values are reserved.
18903                                                                  0x0 = Not implemented.
18904                                                                  0x1 = T32EE instruction set implemented. */
18905         uint32_t reserved_16_27        : 12;
18906         uint32_t ras                   : 4;  /**< [ 31: 28](RO) RAS extension version. The possible values of this field are:
18907                                                                    0x0 = No RAS extension.
18908                                                                    0x1 = Version 1 of the RAS extension present.
18909 
18910                                                                  All other values are reserved. Reserved values might be defined in a future version of the
18911                                                                  architecture. */
18912 #endif /* Word 0 - End */
18913     } s;
18914     struct bdk_ap_id_pfr0_el1_cn8
18915     {
18916 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18917         uint32_t reserved_16_31        : 16;
18918         uint32_t state3                : 4;  /**< [ 15: 12](RO) T32EE instruction set support.
18919                                                                  All other values are reserved.
18920                                                                  0x0 = Not implemented.
18921                                                                  0x1 = T32EE instruction set implemented. */
18922         uint32_t state2                : 4;  /**< [ 11:  8](RO) Jazelle extension support.
18923                                                                  All other values are reserved.
18924                                                                  0x0 = Not implemented.
18925                                                                  0x1 = Jazelle extension implemented, without clearing of JOSCR[CV] on
18926                                                                      exception entry.
18927                                                                  0x2 = Jazelle extension implemented, with clearing of JOSCR[CV] on
18928                                                                      exception entry. */
18929         uint32_t state1                : 4;  /**< [  7:  4](RO) T32 instruction set support.
18930                                                                  All other values are reserved.
18931                                                                  0x0 = T32 instruction set not implemented.
18932 
18933                                                                  0x1 = T32 encodings before the introduction of Thumb-2 technology
18934                                                                      implemented:
18935                                                                   All instructions are 16-bit.
18936                                                                   A BL or BLX is a pair of 16-bit instructions.
18937                                                                   32-bit instructions other than BL and BLX cannot be encoded.
18938 
18939                                                                  0x3 = T32 encodings after the introduction of Thumb-2 technology
18940                                                                      implemented, for all 16-bit and 32-bit T32 basic instructions. */
18941         uint32_t state0                : 4;  /**< [  3:  0](RO) A32 instruction set support.
18942                                                                  All other values are reserved.
18943                                                                  0x0 = A32 instruction set not implemented.
18944                                                                  0x1 = A32 instruction set implemented. */
18945 #else /* Word 0 - Little Endian */
18946         uint32_t state0                : 4;  /**< [  3:  0](RO) A32 instruction set support.
18947                                                                  All other values are reserved.
18948                                                                  0x0 = A32 instruction set not implemented.
18949                                                                  0x1 = A32 instruction set implemented. */
18950         uint32_t state1                : 4;  /**< [  7:  4](RO) T32 instruction set support.
18951                                                                  All other values are reserved.
18952                                                                  0x0 = T32 instruction set not implemented.
18953 
18954                                                                  0x1 = T32 encodings before the introduction of Thumb-2 technology
18955                                                                      implemented:
18956                                                                   All instructions are 16-bit.
18957                                                                   A BL or BLX is a pair of 16-bit instructions.
18958                                                                   32-bit instructions other than BL and BLX cannot be encoded.
18959 
18960                                                                  0x3 = T32 encodings after the introduction of Thumb-2 technology
18961                                                                      implemented, for all 16-bit and 32-bit T32 basic instructions. */
18962         uint32_t state2                : 4;  /**< [ 11:  8](RO) Jazelle extension support.
18963                                                                  All other values are reserved.
18964                                                                  0x0 = Not implemented.
18965                                                                  0x1 = Jazelle extension implemented, without clearing of JOSCR[CV] on
18966                                                                      exception entry.
18967                                                                  0x2 = Jazelle extension implemented, with clearing of JOSCR[CV] on
18968                                                                      exception entry. */
18969         uint32_t state3                : 4;  /**< [ 15: 12](RO) T32EE instruction set support.
18970                                                                  All other values are reserved.
18971                                                                  0x0 = Not implemented.
18972                                                                  0x1 = T32EE instruction set implemented. */
18973         uint32_t reserved_16_31        : 16;
18974 #endif /* Word 0 - End */
18975     } cn8;
18976     /* struct bdk_ap_id_pfr0_el1_s cn9; */
18977 };
18978 typedef union bdk_ap_id_pfr0_el1 bdk_ap_id_pfr0_el1_t;
18979 
18980 #define BDK_AP_ID_PFR0_EL1 BDK_AP_ID_PFR0_EL1_FUNC()
18981 static inline uint64_t BDK_AP_ID_PFR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_PFR0_EL1_FUNC(void)18982 static inline uint64_t BDK_AP_ID_PFR0_EL1_FUNC(void)
18983 {
18984     return 0x30000010000ll;
18985 }
18986 
18987 #define typedef_BDK_AP_ID_PFR0_EL1 bdk_ap_id_pfr0_el1_t
18988 #define bustype_BDK_AP_ID_PFR0_EL1 BDK_CSR_TYPE_SYSREG
18989 #define basename_BDK_AP_ID_PFR0_EL1 "AP_ID_PFR0_EL1"
18990 #define busnum_BDK_AP_ID_PFR0_EL1 0
18991 #define arguments_BDK_AP_ID_PFR0_EL1 -1,-1,-1,-1
18992 
18993 /**
18994  * Register (SYSREG) ap_id_pfr1_el1
18995  *
18996  * AP AArch32 Processor Feature Register 1
18997  * Gives information about the programmers' model and extensions
18998  *     support in AArch32.
18999  */
19000 union bdk_ap_id_pfr1_el1
19001 {
19002     uint32_t u;
19003     struct bdk_ap_id_pfr1_el1_s
19004     {
19005 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19006         uint32_t gic                   : 4;  /**< [ 31: 28](RO) GIC CP15 interface.
19007                                                                  All other values are reserved.
19008                                                                  0x0 = No GIC CP15 registers are supported.
19009                                                                  0x1 = GICv3 CP15 registers are supported. */
19010         uint32_t virt_frac             : 4;  /**< [ 27: 24](RO) Virtualization fractional field. When the Virtualization field
19011                                                                      is0b0000
19012                                                                  All other values are reserved.
19013                                                                  This field is only valid when AP_ID_PFR1_EL1[15:12] == 0,
19014                                                                      otherwise it holds the value0b0000
19015                                                                  0x0 = No features from the ARMv7 Virtualization Extensions are
19016                                                                      implemented.
19017                                                                  0x1 = The SCR[SIF] bit is implemented. The modifications to the
19018                                                                      SCR[AW] and SCR[FW] bits are part of the control of whether the
19019                                                                      CPSR[A] and CPSR[F] bits mask the corresponding aborts. The MSR
19020                                                                      (Banked register) and MRS (Banked register) instructions are
19021                                                                      implemented.
19022                                                                  This value is permitted only when AP_ID_PFR1_EL1[Security] is
19023                                                                      not0b0000 */
19024         uint32_t sec_frac              : 4;  /**< [ 23: 20](RO) Security fractional field. When the Security field is0b0000
19025                                                                  All other values are reserved.
19026                                                                  This field is only valid when AP_ID_PFR1_EL1[7:4] == 0, otherwise
19027                                                                      it holds the value0b0000
19028                                                                  0x0 = No features from the ARMv7 Security Extensions are
19029                                                                      implemented.
19030                                                                  0x1 = The implementation includes the VBAR, and the TCR[PD0] and
19031                                                                      TCR[PD1] bits.
19032                                                                  0x2 = As for 0x1. */
19033         uint32_t gentimer              : 4;  /**< [ 19: 16](RO) Generic Timer Extension support.
19034                                                                  All other values are reserved.
19035                                                                  0x0 = Not implemented.
19036                                                                  0x1 = Generic Timer Extension implemented. */
19037         uint32_t virtualization        : 4;  /**< [ 15: 12](RO) Virtualization support.
19038                                                                  All other values are reserved.
19039                                                                  A value of0b0001
19040                                                                  0x0 = EL2 not implemented.
19041                                                                  0x1 = EL2 implemented. */
19042         uint32_t mprogmod              : 4;  /**< [ 11:  8](RO) M profile programmers' model support.
19043                                                                  All other values are reserved.
19044                                                                  0x0 = Not supported.
19045                                                                  0x2 = Support for two-stack programmers' model. */
19046         uint32_t security              : 4;  /**< [  7:  4](RO) Security support.
19047                                                                  All other values are reserved.
19048                                                                  0x0 = EL3 not implemented.
19049                                                                  0x1 = EL3 implemented.
19050                                                                  This includes support for Monitor mode and the SMC
19051                                                                      instruction.
19052                                                                  0x2 = As for 0x1 NSACR[RFR] bit. Not permitted in ARMv8 as the
19053                                                                      NSACR[RFR] bit is RES0. */
19054         uint32_t progmod               : 4;  /**< [  3:  0](RO) Support for the standard programmers' model for ARMv4 and
19055                                                                      later. Model must support User, FIQ, IRQ, Supervisor, Abort,
19056                                                                      Undefined, and System modes.
19057                                                                  All other values are reserved.
19058                                                                  0x0 = Not supported.
19059                                                                  0x1 = Supported. */
19060 #else /* Word 0 - Little Endian */
19061         uint32_t progmod               : 4;  /**< [  3:  0](RO) Support for the standard programmers' model for ARMv4 and
19062                                                                      later. Model must support User, FIQ, IRQ, Supervisor, Abort,
19063                                                                      Undefined, and System modes.
19064                                                                  All other values are reserved.
19065                                                                  0x0 = Not supported.
19066                                                                  0x1 = Supported. */
19067         uint32_t security              : 4;  /**< [  7:  4](RO) Security support.
19068                                                                  All other values are reserved.
19069                                                                  0x0 = EL3 not implemented.
19070                                                                  0x1 = EL3 implemented.
19071                                                                  This includes support for Monitor mode and the SMC
19072                                                                      instruction.
19073                                                                  0x2 = As for 0x1 NSACR[RFR] bit. Not permitted in ARMv8 as the
19074                                                                      NSACR[RFR] bit is RES0. */
19075         uint32_t mprogmod              : 4;  /**< [ 11:  8](RO) M profile programmers' model support.
19076                                                                  All other values are reserved.
19077                                                                  0x0 = Not supported.
19078                                                                  0x2 = Support for two-stack programmers' model. */
19079         uint32_t virtualization        : 4;  /**< [ 15: 12](RO) Virtualization support.
19080                                                                  All other values are reserved.
19081                                                                  A value of0b0001
19082                                                                  0x0 = EL2 not implemented.
19083                                                                  0x1 = EL2 implemented. */
19084         uint32_t gentimer              : 4;  /**< [ 19: 16](RO) Generic Timer Extension support.
19085                                                                  All other values are reserved.
19086                                                                  0x0 = Not implemented.
19087                                                                  0x1 = Generic Timer Extension implemented. */
19088         uint32_t sec_frac              : 4;  /**< [ 23: 20](RO) Security fractional field. When the Security field is0b0000
19089                                                                  All other values are reserved.
19090                                                                  This field is only valid when AP_ID_PFR1_EL1[7:4] == 0, otherwise
19091                                                                      it holds the value0b0000
19092                                                                  0x0 = No features from the ARMv7 Security Extensions are
19093                                                                      implemented.
19094                                                                  0x1 = The implementation includes the VBAR, and the TCR[PD0] and
19095                                                                      TCR[PD1] bits.
19096                                                                  0x2 = As for 0x1. */
19097         uint32_t virt_frac             : 4;  /**< [ 27: 24](RO) Virtualization fractional field. When the Virtualization field
19098                                                                      is0b0000
19099                                                                  All other values are reserved.
19100                                                                  This field is only valid when AP_ID_PFR1_EL1[15:12] == 0,
19101                                                                      otherwise it holds the value0b0000
19102                                                                  0x0 = No features from the ARMv7 Virtualization Extensions are
19103                                                                      implemented.
19104                                                                  0x1 = The SCR[SIF] bit is implemented. The modifications to the
19105                                                                      SCR[AW] and SCR[FW] bits are part of the control of whether the
19106                                                                      CPSR[A] and CPSR[F] bits mask the corresponding aborts. The MSR
19107                                                                      (Banked register) and MRS (Banked register) instructions are
19108                                                                      implemented.
19109                                                                  This value is permitted only when AP_ID_PFR1_EL1[Security] is
19110                                                                      not0b0000 */
19111         uint32_t gic                   : 4;  /**< [ 31: 28](RO) GIC CP15 interface.
19112                                                                  All other values are reserved.
19113                                                                  0x0 = No GIC CP15 registers are supported.
19114                                                                  0x1 = GICv3 CP15 registers are supported. */
19115 #endif /* Word 0 - End */
19116     } s;
19117     /* struct bdk_ap_id_pfr1_el1_s cn; */
19118 };
19119 typedef union bdk_ap_id_pfr1_el1 bdk_ap_id_pfr1_el1_t;
19120 
19121 #define BDK_AP_ID_PFR1_EL1 BDK_AP_ID_PFR1_EL1_FUNC()
19122 static inline uint64_t BDK_AP_ID_PFR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ID_PFR1_EL1_FUNC(void)19123 static inline uint64_t BDK_AP_ID_PFR1_EL1_FUNC(void)
19124 {
19125     return 0x30000010100ll;
19126 }
19127 
19128 #define typedef_BDK_AP_ID_PFR1_EL1 bdk_ap_id_pfr1_el1_t
19129 #define bustype_BDK_AP_ID_PFR1_EL1 BDK_CSR_TYPE_SYSREG
19130 #define basename_BDK_AP_ID_PFR1_EL1 "AP_ID_PFR1_EL1"
19131 #define busnum_BDK_AP_ID_PFR1_EL1 0
19132 #define arguments_BDK_AP_ID_PFR1_EL1 -1,-1,-1,-1
19133 
19134 /**
19135  * Register (SYSREG) ap_ifsr32_el2
19136  *
19137  * AP Instruction Fault Status EL2 Register
19138  * Allows access to the AArch32 IFSR register from AArch64 state
19139  *     only. Its value has no effect on execution in AArch64 state.
19140  */
19141 union bdk_ap_ifsr32_el2
19142 {
19143     uint32_t u;
19144     struct bdk_ap_ifsr32_el2_s
19145     {
19146 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19147         uint32_t reserved_0_31         : 32;
19148 #else /* Word 0 - Little Endian */
19149         uint32_t reserved_0_31         : 32;
19150 #endif /* Word 0 - End */
19151     } s;
19152     struct bdk_ap_ifsr32_el2_cn
19153     {
19154 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19155         uint32_t reserved_13_31        : 19;
19156         uint32_t reserved_12           : 1;
19157         uint32_t reserved_11           : 1;
19158         uint32_t reserved_10           : 1;
19159         uint32_t reserved_9            : 1;
19160         uint32_t reserved_4_8          : 5;
19161         uint32_t reserved_0_3          : 4;
19162 #else /* Word 0 - Little Endian */
19163         uint32_t reserved_0_3          : 4;
19164         uint32_t reserved_4_8          : 5;
19165         uint32_t reserved_9            : 1;
19166         uint32_t reserved_10           : 1;
19167         uint32_t reserved_11           : 1;
19168         uint32_t reserved_12           : 1;
19169         uint32_t reserved_13_31        : 19;
19170 #endif /* Word 0 - End */
19171     } cn;
19172 };
19173 typedef union bdk_ap_ifsr32_el2 bdk_ap_ifsr32_el2_t;
19174 
19175 #define BDK_AP_IFSR32_EL2 BDK_AP_IFSR32_EL2_FUNC()
19176 static inline uint64_t BDK_AP_IFSR32_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_IFSR32_EL2_FUNC(void)19177 static inline uint64_t BDK_AP_IFSR32_EL2_FUNC(void)
19178 {
19179     return 0x30405000100ll;
19180 }
19181 
19182 #define typedef_BDK_AP_IFSR32_EL2 bdk_ap_ifsr32_el2_t
19183 #define bustype_BDK_AP_IFSR32_EL2 BDK_CSR_TYPE_SYSREG
19184 #define basename_BDK_AP_IFSR32_EL2 "AP_IFSR32_EL2"
19185 #define busnum_BDK_AP_IFSR32_EL2 0
19186 #define arguments_BDK_AP_IFSR32_EL2 -1,-1,-1,-1
19187 
19188 /**
19189  * Register (SYSREG) ap_isr_el1
19190  *
19191  * AP Interrupt Status Register
19192  * Shows whether an IRQ, FIQ, or SError interrupt is pending. If
19193  *     EL2 is implemented, an indicated pending interrupt might be a
19194  *     physical interrupt or a virtual interrupt.
19195  */
19196 union bdk_ap_isr_el1
19197 {
19198     uint32_t u;
19199     struct bdk_ap_isr_el1_s
19200     {
19201 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19202         uint32_t reserved_9_31         : 23;
19203         uint32_t aa                    : 1;  /**< [  8:  8](RO) SError pending bit:
19204                                                                  0 = No pending SError.
19205                                                                  1 = An SError interrupt is pending. */
19206         uint32_t i                     : 1;  /**< [  7:  7](RO) IRQ pending bit. Indicates whether an IRQ interrupt is
19207                                                                      pending:
19208                                                                  0 = No pending IRQ.
19209                                                                  1 = An IRQ interrupt is pending. */
19210         uint32_t f                     : 1;  /**< [  6:  6](RO) FIQ pending bit. Indicates whether an FIQ interrupt is
19211                                                                      pending.
19212                                                                  0 = No pending FIQ.
19213                                                                  1 = An FIQ interrupt is pending. */
19214         uint32_t reserved_0_5          : 6;
19215 #else /* Word 0 - Little Endian */
19216         uint32_t reserved_0_5          : 6;
19217         uint32_t f                     : 1;  /**< [  6:  6](RO) FIQ pending bit. Indicates whether an FIQ interrupt is
19218                                                                      pending.
19219                                                                  0 = No pending FIQ.
19220                                                                  1 = An FIQ interrupt is pending. */
19221         uint32_t i                     : 1;  /**< [  7:  7](RO) IRQ pending bit. Indicates whether an IRQ interrupt is
19222                                                                      pending:
19223                                                                  0 = No pending IRQ.
19224                                                                  1 = An IRQ interrupt is pending. */
19225         uint32_t aa                    : 1;  /**< [  8:  8](RO) SError pending bit:
19226                                                                  0 = No pending SError.
19227                                                                  1 = An SError interrupt is pending. */
19228         uint32_t reserved_9_31         : 23;
19229 #endif /* Word 0 - End */
19230     } s;
19231     /* struct bdk_ap_isr_el1_s cn; */
19232 };
19233 typedef union bdk_ap_isr_el1 bdk_ap_isr_el1_t;
19234 
19235 #define BDK_AP_ISR_EL1 BDK_AP_ISR_EL1_FUNC()
19236 static inline uint64_t BDK_AP_ISR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_ISR_EL1_FUNC(void)19237 static inline uint64_t BDK_AP_ISR_EL1_FUNC(void)
19238 {
19239     return 0x3000c010000ll;
19240 }
19241 
19242 #define typedef_BDK_AP_ISR_EL1 bdk_ap_isr_el1_t
19243 #define bustype_BDK_AP_ISR_EL1 BDK_CSR_TYPE_SYSREG
19244 #define basename_BDK_AP_ISR_EL1 "AP_ISR_EL1"
19245 #define busnum_BDK_AP_ISR_EL1 0
19246 #define arguments_BDK_AP_ISR_EL1 -1,-1,-1,-1
19247 
19248 /**
19249  * Register (SYSREG) ap_lorc_el1
19250  *
19251  * AP LORegion Control (v8.1) Register
19252  * v8.1: LORegion Control, being a 64-bit read/write register that is
19253  * accessible from EL1 or above.
19254  *
19255  * When the AP_LORC_EL1[EN] bit is 0, then no acceses match an LORegion
19256  * Note: this has the consequence that if the AP_LORID_EL1 indicates that no
19257  * LORegions are implemented, then the LoadLOAcquire and StoreLORelease
19258  * will therefore behave as LoadAcquire and StoreRelease.
19259  *
19260  * The AP_LORC_EL1[EN] bit is permitted to be cached within a TLB.
19261  * Note: In keeping with the other system registers in the ARMv8
19262  * architecture, the LORC register must be explicitly synchronised for
19263  * changes in the AP_LORC_EL1[DS] field to take effect.
19264  */
19265 union bdk_ap_lorc_el1
19266 {
19267     uint64_t u;
19268     struct bdk_ap_lorc_el1_s
19269     {
19270 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19271         uint64_t reserved_5_63         : 59;
19272         uint64_t ds                    : 3;  /**< [  4:  2](R/W) Descriptor Select, being a number that selects the current LOR
19273                                                                  Descriptor accessed by the AP_LORSA_EL1, AP_LOREA_EL1, AP_LORN_EL1
19274                                                                  registers; If the AP_LORC_EL1[DS] points to a LOR Descriptor that is
19275                                                                  not supported by an implementation then the AP_LOREA_EL1, AP_LORSA_EL1
19276                                                                  and AP_LORN_EL1 are RES0. */
19277         uint64_t reserved_1            : 1;
19278         uint64_t en                    : 1;  /**< [  0:  0](R/W) Enable.
19279                                                                  0 = Disabled (reset value).
19280                                                                  1 = Enabled. */
19281 #else /* Word 0 - Little Endian */
19282         uint64_t en                    : 1;  /**< [  0:  0](R/W) Enable.
19283                                                                  0 = Disabled (reset value).
19284                                                                  1 = Enabled. */
19285         uint64_t reserved_1            : 1;
19286         uint64_t ds                    : 3;  /**< [  4:  2](R/W) Descriptor Select, being a number that selects the current LOR
19287                                                                  Descriptor accessed by the AP_LORSA_EL1, AP_LOREA_EL1, AP_LORN_EL1
19288                                                                  registers; If the AP_LORC_EL1[DS] points to a LOR Descriptor that is
19289                                                                  not supported by an implementation then the AP_LOREA_EL1, AP_LORSA_EL1
19290                                                                  and AP_LORN_EL1 are RES0. */
19291         uint64_t reserved_5_63         : 59;
19292 #endif /* Word 0 - End */
19293     } s;
19294     /* struct bdk_ap_lorc_el1_s cn; */
19295 };
19296 typedef union bdk_ap_lorc_el1 bdk_ap_lorc_el1_t;
19297 
19298 #define BDK_AP_LORC_EL1 BDK_AP_LORC_EL1_FUNC()
19299 static inline uint64_t BDK_AP_LORC_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_LORC_EL1_FUNC(void)19300 static inline uint64_t BDK_AP_LORC_EL1_FUNC(void)
19301 {
19302     return 0x3000a040300ll;
19303 }
19304 
19305 #define typedef_BDK_AP_LORC_EL1 bdk_ap_lorc_el1_t
19306 #define bustype_BDK_AP_LORC_EL1 BDK_CSR_TYPE_SYSREG
19307 #define basename_BDK_AP_LORC_EL1 "AP_LORC_EL1"
19308 #define busnum_BDK_AP_LORC_EL1 0
19309 #define arguments_BDK_AP_LORC_EL1 -1,-1,-1,-1
19310 
19311 /**
19312  * Register (SYSREG) ap_lorea_el1
19313  *
19314  * AP LORegion End Address (v8.1) Register
19315  * v8.1: LORegion End Address being a 64 bit read/write register that is
19316  * accessible from EL1 or above.
19317  * The AP_LOREA_EL1 is permitted to be cached in a TLB.
19318  * If the AP_LORN_EL1[StartAddress] \> AP_LORN_EL1[EndAddress] for a LOR
19319  * Descriptor, then that LOR Descriptor does not match any LORegion.
19320  */
19321 union bdk_ap_lorea_el1
19322 {
19323     uint64_t u;
19324     struct bdk_ap_lorea_el1_s
19325     {
19326 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19327         uint64_t reserved_48_63        : 16;
19328         uint64_t ea                    : 32; /**< [ 47: 16](R/W) End physical address bits \<47:16\>. Bits\<15:0\> of the end address
19329                                                                  are defined to be 0xFFFF. */
19330         uint64_t reserved_0_15         : 16;
19331 #else /* Word 0 - Little Endian */
19332         uint64_t reserved_0_15         : 16;
19333         uint64_t ea                    : 32; /**< [ 47: 16](R/W) End physical address bits \<47:16\>. Bits\<15:0\> of the end address
19334                                                                  are defined to be 0xFFFF. */
19335         uint64_t reserved_48_63        : 16;
19336 #endif /* Word 0 - End */
19337     } s;
19338     /* struct bdk_ap_lorea_el1_s cn; */
19339 };
19340 typedef union bdk_ap_lorea_el1 bdk_ap_lorea_el1_t;
19341 
19342 #define BDK_AP_LOREA_EL1 BDK_AP_LOREA_EL1_FUNC()
19343 static inline uint64_t BDK_AP_LOREA_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_LOREA_EL1_FUNC(void)19344 static inline uint64_t BDK_AP_LOREA_EL1_FUNC(void)
19345 {
19346     return 0x3000a040100ll;
19347 }
19348 
19349 #define typedef_BDK_AP_LOREA_EL1 bdk_ap_lorea_el1_t
19350 #define bustype_BDK_AP_LOREA_EL1 BDK_CSR_TYPE_SYSREG
19351 #define basename_BDK_AP_LOREA_EL1 "AP_LOREA_EL1"
19352 #define busnum_BDK_AP_LOREA_EL1 0
19353 #define arguments_BDK_AP_LOREA_EL1 -1,-1,-1,-1
19354 
19355 /**
19356  * Register (SYSREG) ap_lorid_el1
19357  *
19358  * AP LORegionID (v8.1) Register
19359  * v8.1: The LORegion ID provides an ID register as to how many LORegions
19360  * and LOR Descriptors are supported by the system.
19361  * The AP_LORID_EL1 register is a 64-bit Read-only register accessible from
19362  * EL1 and above.
19363  * If no LOR Descriptors are implemented then the AP_LORC_EL1, AP_LORN_EL1,
19364  * AP_LORSA_EL1 and AP_LOREA_EL1 registers are RES0.
19365  */
19366 union bdk_ap_lorid_el1
19367 {
19368     uint64_t u;
19369     struct bdk_ap_lorid_el1_s
19370     {
19371 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19372         uint64_t reserved_24_63        : 40;
19373         uint64_t ld                    : 8;  /**< [ 23: 16](RO) Number of LOR Descriptors supported by the implementation,
19374                                                                  expressed as binary 8 bit number. */
19375         uint64_t reserved_8_15         : 8;
19376         uint64_t lr                    : 8;  /**< [  7:  0](RO) Number of LORegions supported by the implementation, expressed as
19377                                                                  binary 8 bit number. */
19378 #else /* Word 0 - Little Endian */
19379         uint64_t lr                    : 8;  /**< [  7:  0](RO) Number of LORegions supported by the implementation, expressed as
19380                                                                  binary 8 bit number. */
19381         uint64_t reserved_8_15         : 8;
19382         uint64_t ld                    : 8;  /**< [ 23: 16](RO) Number of LOR Descriptors supported by the implementation,
19383                                                                  expressed as binary 8 bit number. */
19384         uint64_t reserved_24_63        : 40;
19385 #endif /* Word 0 - End */
19386     } s;
19387     /* struct bdk_ap_lorid_el1_s cn; */
19388 };
19389 typedef union bdk_ap_lorid_el1 bdk_ap_lorid_el1_t;
19390 
19391 #define BDK_AP_LORID_EL1 BDK_AP_LORID_EL1_FUNC()
19392 static inline uint64_t BDK_AP_LORID_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_LORID_EL1_FUNC(void)19393 static inline uint64_t BDK_AP_LORID_EL1_FUNC(void)
19394 {
19395     return 0x3000a040700ll;
19396 }
19397 
19398 #define typedef_BDK_AP_LORID_EL1 bdk_ap_lorid_el1_t
19399 #define bustype_BDK_AP_LORID_EL1 BDK_CSR_TYPE_SYSREG
19400 #define basename_BDK_AP_LORID_EL1 "AP_LORID_EL1"
19401 #define busnum_BDK_AP_LORID_EL1 0
19402 #define arguments_BDK_AP_LORID_EL1 -1,-1,-1,-1
19403 
19404 /**
19405  * Register (SYSREG) ap_lorn_el1
19406  *
19407  * AP LORegion Number (v8.1) Register
19408  * v8.1: LORegion Number, being a 64-bit read/write register that is
19409  * accessible from EL1 or above.
19410  * The AP_LORN_EL1 is permitted to be cached in a TLB.
19411  * If the AP_LORN_EL1[Num] bit points to a LORegion that is not supported by
19412  * the implemented, then that LOR Descriptor does not match any LORegion.
19413  */
19414 union bdk_ap_lorn_el1
19415 {
19416     uint64_t u;
19417     struct bdk_ap_lorn_el1_s
19418     {
19419 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19420         uint64_t reserved_2_63         : 62;
19421         uint64_t num                   : 2;  /**< [  1:  0](R/W) LORegion Number.
19422 
19423                                                                  For CNXXXX region number 0 is special and matches all physical
19424                                                                  addresses. */
19425 #else /* Word 0 - Little Endian */
19426         uint64_t num                   : 2;  /**< [  1:  0](R/W) LORegion Number.
19427 
19428                                                                  For CNXXXX region number 0 is special and matches all physical
19429                                                                  addresses. */
19430         uint64_t reserved_2_63         : 62;
19431 #endif /* Word 0 - End */
19432     } s;
19433     /* struct bdk_ap_lorn_el1_s cn; */
19434 };
19435 typedef union bdk_ap_lorn_el1 bdk_ap_lorn_el1_t;
19436 
19437 #define BDK_AP_LORN_EL1 BDK_AP_LORN_EL1_FUNC()
19438 static inline uint64_t BDK_AP_LORN_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_LORN_EL1_FUNC(void)19439 static inline uint64_t BDK_AP_LORN_EL1_FUNC(void)
19440 {
19441     return 0x3000a040200ll;
19442 }
19443 
19444 #define typedef_BDK_AP_LORN_EL1 bdk_ap_lorn_el1_t
19445 #define bustype_BDK_AP_LORN_EL1 BDK_CSR_TYPE_SYSREG
19446 #define basename_BDK_AP_LORN_EL1 "AP_LORN_EL1"
19447 #define busnum_BDK_AP_LORN_EL1 0
19448 #define arguments_BDK_AP_LORN_EL1 -1,-1,-1,-1
19449 
19450 /**
19451  * Register (SYSREG) ap_lorsa_el1
19452  *
19453  * AP LORegion Start Address (v8.1) Register
19454  * v8.1: LORegion Start Address being a 64 bit read/write register that is
19455  * accessible from EL1 or above
19456  * The AP_LORSA_EL1 is permitted to be cached in a TLB.
19457  */
19458 union bdk_ap_lorsa_el1
19459 {
19460     uint64_t u;
19461     struct bdk_ap_lorsa_el1_s
19462     {
19463 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19464         uint64_t reserved_48_63        : 16;
19465         uint64_t sa                    : 32; /**< [ 47: 16](R/W) Start physical address bits \<47:16\>. Bits\<15:0\> of the start
19466                                                                  physical address are defined to be 0x0. */
19467         uint64_t reserved_1_15         : 15;
19468         uint64_t valid                 : 1;  /**< [  0:  0](R/W) indicates whether the LORegion Descriptor is enabled
19469                                                                  0 = Not valid (reset value).
19470                                                                  1 = Valid. */
19471 #else /* Word 0 - Little Endian */
19472         uint64_t valid                 : 1;  /**< [  0:  0](R/W) indicates whether the LORegion Descriptor is enabled
19473                                                                  0 = Not valid (reset value).
19474                                                                  1 = Valid. */
19475         uint64_t reserved_1_15         : 15;
19476         uint64_t sa                    : 32; /**< [ 47: 16](R/W) Start physical address bits \<47:16\>. Bits\<15:0\> of the start
19477                                                                  physical address are defined to be 0x0. */
19478         uint64_t reserved_48_63        : 16;
19479 #endif /* Word 0 - End */
19480     } s;
19481     /* struct bdk_ap_lorsa_el1_s cn; */
19482 };
19483 typedef union bdk_ap_lorsa_el1 bdk_ap_lorsa_el1_t;
19484 
19485 #define BDK_AP_LORSA_EL1 BDK_AP_LORSA_EL1_FUNC()
19486 static inline uint64_t BDK_AP_LORSA_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_LORSA_EL1_FUNC(void)19487 static inline uint64_t BDK_AP_LORSA_EL1_FUNC(void)
19488 {
19489     return 0x3000a040000ll;
19490 }
19491 
19492 #define typedef_BDK_AP_LORSA_EL1 bdk_ap_lorsa_el1_t
19493 #define bustype_BDK_AP_LORSA_EL1 BDK_CSR_TYPE_SYSREG
19494 #define basename_BDK_AP_LORSA_EL1 "AP_LORSA_EL1"
19495 #define busnum_BDK_AP_LORSA_EL1 0
19496 #define arguments_BDK_AP_LORSA_EL1 -1,-1,-1,-1
19497 
19498 /**
19499  * Register (SYSREG) ap_mair_el#
19500  *
19501  * AP Memory Attribute Indirection Register
19502  * Provides the memory attribute encodings corresponding to the
19503  *     possible AttrIndx values in a Long-descriptor format
19504  *     translation table entry for stage 1 translations at EL3.
19505  */
19506 union bdk_ap_mair_elx
19507 {
19508     uint64_t u;
19509     struct bdk_ap_mair_elx_s
19510     {
19511 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19512         uint64_t reserved_0_63         : 64;
19513 #else /* Word 0 - Little Endian */
19514         uint64_t reserved_0_63         : 64;
19515 #endif /* Word 0 - End */
19516     } s;
19517     struct bdk_ap_mair_elx_cn8
19518     {
19519 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19520         uint64_t attr_n                : 64; /**< [ 63:  0](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19521                                                                      Long descriptor format translation table entry, where
19522                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19523 
19524                                                                  Bits [7:4] are encoded as follows:
19525 
19526                                                                  Attr\<n\>[7:4]        Meaning
19527                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19528                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19529                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19530                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19531                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19532                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19533 
19534                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19535                                                                      Policy.
19536 
19537                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19538 
19539                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19540                                                                  not 0000
19541                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19542                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19543                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19544                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19545                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19546                                                                  (RW=00)
19547                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19548                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19549                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19550 
19551                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19552                                                                      Policy.
19553 
19554                                                                  ARMv7's Strongly-ordered and Device memory types have been
19555                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19556 
19557                                                                  The R and W bits in some Attr\<n\> fields have the following
19558                                                                      meanings:
19559 
19560                                                                  R or W      Meaning
19561                                                                  0 = Do not allocate.
19562                                                                  1 = Allocate. */
19563 #else /* Word 0 - Little Endian */
19564         uint64_t attr_n                : 64; /**< [ 63:  0](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19565                                                                      Long descriptor format translation table entry, where
19566                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19567 
19568                                                                  Bits [7:4] are encoded as follows:
19569 
19570                                                                  Attr\<n\>[7:4]        Meaning
19571                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19572                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19573                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19574                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19575                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19576                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19577 
19578                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19579                                                                      Policy.
19580 
19581                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19582 
19583                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19584                                                                  not 0000
19585                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19586                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19587                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19588                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19589                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19590                                                                  (RW=00)
19591                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19592                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19593                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19594 
19595                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19596                                                                      Policy.
19597 
19598                                                                  ARMv7's Strongly-ordered and Device memory types have been
19599                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19600 
19601                                                                  The R and W bits in some Attr\<n\> fields have the following
19602                                                                      meanings:
19603 
19604                                                                  R or W      Meaning
19605                                                                  0 = Do not allocate.
19606                                                                  1 = Allocate. */
19607 #endif /* Word 0 - End */
19608     } cn8;
19609     struct bdk_ap_mair_elx_cn9
19610     {
19611 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19612         uint64_t attr7                 : 8;  /**< [ 63: 56](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19613                                                                      Long descriptor format translation table entry, where
19614                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19615 
19616                                                                  Bits [7:4] are encoded as follows:
19617 
19618                                                                  Attr\<n\>[7:4]        Meaning
19619                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19620                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19621                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19622                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19623                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19624                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19625 
19626                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19627                                                                      Policy.
19628 
19629                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19630 
19631                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19632                                                                  not 0000
19633                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19634                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19635                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19636                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19637                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19638                                                                  (RW=00)
19639                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19640                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19641                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19642 
19643                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19644                                                                      Policy.
19645 
19646                                                                  ARMv7's Strongly-ordered and Device memory types have been
19647                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19648 
19649                                                                  The R and W bits in some Attr\<n\> fields have the following
19650                                                                      meanings:
19651 
19652                                                                  R or W      Meaning
19653                                                                  0 = Do not allocate.
19654                                                                  1 = Allocate. */
19655         uint64_t attr6                 : 8;  /**< [ 55: 48](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19656                                                                      Long descriptor format translation table entry, where
19657                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19658 
19659                                                                  Bits [7:4] are encoded as follows:
19660 
19661                                                                  Attr\<n\>[7:4]        Meaning
19662                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19663                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19664                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19665                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19666                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19667                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19668 
19669                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19670                                                                      Policy.
19671 
19672                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19673 
19674                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19675                                                                  not 0000
19676                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19677                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19678                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19679                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19680                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19681                                                                  (RW=00)
19682                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19683                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19684                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19685 
19686                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19687                                                                      Policy.
19688 
19689                                                                  ARMv7's Strongly-ordered and Device memory types have been
19690                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19691 
19692                                                                  The R and W bits in some Attr\<n\> fields have the following
19693                                                                      meanings:
19694 
19695                                                                  R or W      Meaning
19696                                                                  0 = Do not allocate.
19697                                                                  1 = Allocate. */
19698         uint64_t attr5                 : 8;  /**< [ 47: 40](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19699                                                                      Long descriptor format translation table entry, where
19700                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19701 
19702                                                                  Bits [7:4] are encoded as follows:
19703 
19704                                                                  Attr\<n\>[7:4]        Meaning
19705                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19706                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19707                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19708                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19709                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19710                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19711 
19712                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19713                                                                      Policy.
19714 
19715                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19716 
19717                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19718                                                                  not 0000
19719                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19720                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19721                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19722                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19723                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19724                                                                  (RW=00)
19725                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19726                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19727                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19728 
19729                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19730                                                                      Policy.
19731 
19732                                                                  ARMv7's Strongly-ordered and Device memory types have been
19733                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19734 
19735                                                                  The R and W bits in some Attr\<n\> fields have the following
19736                                                                      meanings:
19737 
19738                                                                  R or W      Meaning
19739                                                                  0 = Do not allocate.
19740                                                                  1 = Allocate. */
19741         uint64_t attr4                 : 8;  /**< [ 39: 32](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19742                                                                      Long descriptor format translation table entry, where
19743                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19744 
19745                                                                  Bits [7:4] are encoded as follows:
19746 
19747                                                                  Attr\<n\>[7:4]        Meaning
19748                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19749                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19750                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19751                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19752                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19753                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19754 
19755                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19756                                                                      Policy.
19757 
19758                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19759 
19760                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19761                                                                  not 0000
19762                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19763                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19764                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19765                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19766                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19767                                                                  (RW=00)
19768                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19769                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19770                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19771 
19772                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19773                                                                      Policy.
19774 
19775                                                                  ARMv7's Strongly-ordered and Device memory types have been
19776                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19777 
19778                                                                  The R and W bits in some Attr\<n\> fields have the following
19779                                                                      meanings:
19780 
19781                                                                  R or W      Meaning
19782                                                                  0 = Do not allocate.
19783                                                                  1 = Allocate. */
19784         uint64_t attr3                 : 8;  /**< [ 31: 24](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19785                                                                      Long descriptor format translation table entry, where
19786                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19787 
19788                                                                  Bits [7:4] are encoded as follows:
19789 
19790                                                                  Attr\<n\>[7:4]        Meaning
19791                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19792                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19793                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19794                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19795                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19796                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19797 
19798                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19799                                                                      Policy.
19800 
19801                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19802 
19803                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19804                                                                  not 0000
19805                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19806                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19807                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19808                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19809                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19810                                                                  (RW=00)
19811                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19812                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19813                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19814 
19815                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19816                                                                      Policy.
19817 
19818                                                                  ARMv7's Strongly-ordered and Device memory types have been
19819                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19820 
19821                                                                  The R and W bits in some Attr\<n\> fields have the following
19822                                                                      meanings:
19823 
19824                                                                  R or W      Meaning
19825                                                                  0 = Do not allocate.
19826                                                                  1 = Allocate. */
19827         uint64_t attr2                 : 8;  /**< [ 23: 16](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19828                                                                      Long descriptor format translation table entry, where
19829                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19830 
19831                                                                  Bits [7:4] are encoded as follows:
19832 
19833                                                                  Attr\<n\>[7:4]        Meaning
19834                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19835                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19836                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19837                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19838                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19839                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19840 
19841                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19842                                                                      Policy.
19843 
19844                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19845 
19846                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19847                                                                  not 0000
19848                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19849                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19850                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19851                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19852                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19853                                                                  (RW=00)
19854                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19855                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19856                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19857 
19858                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19859                                                                      Policy.
19860 
19861                                                                  ARMv7's Strongly-ordered and Device memory types have been
19862                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19863 
19864                                                                  The R and W bits in some Attr\<n\> fields have the following
19865                                                                      meanings:
19866 
19867                                                                  R or W      Meaning
19868                                                                  0 = Do not allocate.
19869                                                                  1 = Allocate. */
19870         uint64_t attr1                 : 8;  /**< [ 15:  8](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19871                                                                      Long descriptor format translation table entry, where
19872                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19873 
19874                                                                  Bits [7:4] are encoded as follows:
19875 
19876                                                                  Attr\<n\>[7:4]        Meaning
19877                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19878                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19879                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19880                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19881                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19882                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19883 
19884                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19885                                                                      Policy.
19886 
19887                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19888 
19889                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19890                                                                  not 0000
19891                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19892                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19893                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19894                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19895                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19896                                                                  (RW=00)
19897                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19898                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19899                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19900 
19901                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19902                                                                      Policy.
19903 
19904                                                                  ARMv7's Strongly-ordered and Device memory types have been
19905                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19906 
19907                                                                  The R and W bits in some Attr\<n\> fields have the following
19908                                                                      meanings:
19909 
19910                                                                  R or W      Meaning
19911                                                                  0 = Do not allocate.
19912                                                                  1 = Allocate. */
19913         uint64_t attr0                 : 8;  /**< [  7:  0](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19914                                                                      Long descriptor format translation table entry, where
19915                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19916 
19917                                                                  Bits [7:4] are encoded as follows:
19918 
19919                                                                  Attr\<n\>[7:4]        Meaning
19920                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19921                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19922                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19923                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19924                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19925                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19926 
19927                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19928                                                                      Policy.
19929 
19930                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19931 
19932                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19933                                                                  not 0000
19934                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19935                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19936                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19937                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19938                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19939                                                                  (RW=00)
19940                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19941                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19942                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19943 
19944                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19945                                                                      Policy.
19946 
19947                                                                  ARMv7's Strongly-ordered and Device memory types have been
19948                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19949 
19950                                                                  The R and W bits in some Attr\<n\> fields have the following
19951                                                                      meanings:
19952 
19953                                                                  R or W      Meaning
19954                                                                  0 = Do not allocate.
19955                                                                  1 = Allocate. */
19956 #else /* Word 0 - Little Endian */
19957         uint64_t attr0                 : 8;  /**< [  7:  0](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
19958                                                                      Long descriptor format translation table entry, where
19959                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
19960 
19961                                                                  Bits [7:4] are encoded as follows:
19962 
19963                                                                  Attr\<n\>[7:4]        Meaning
19964                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
19965                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
19966                                                                  0b0100      Normal Memory, Outer Non-Cacheable
19967                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
19968                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
19969                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
19970 
19971                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
19972                                                                      Policy.
19973 
19974                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
19975 
19976                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
19977                                                                  not 0000
19978                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
19979                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
19980                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
19981                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
19982                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
19983                                                                  (RW=00)
19984                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
19985                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
19986                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
19987 
19988                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
19989                                                                      Policy.
19990 
19991                                                                  ARMv7's Strongly-ordered and Device memory types have been
19992                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
19993 
19994                                                                  The R and W bits in some Attr\<n\> fields have the following
19995                                                                      meanings:
19996 
19997                                                                  R or W      Meaning
19998                                                                  0 = Do not allocate.
19999                                                                  1 = Allocate. */
20000         uint64_t attr1                 : 8;  /**< [ 15:  8](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
20001                                                                      Long descriptor format translation table entry, where
20002                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
20003 
20004                                                                  Bits [7:4] are encoded as follows:
20005 
20006                                                                  Attr\<n\>[7:4]        Meaning
20007                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
20008                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
20009                                                                  0b0100      Normal Memory, Outer Non-Cacheable
20010                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
20011                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
20012                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
20013 
20014                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
20015                                                                      Policy.
20016 
20017                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
20018 
20019                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
20020                                                                  not 0000
20021                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
20022                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
20023                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
20024                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
20025                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
20026                                                                  (RW=00)
20027                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
20028                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
20029                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
20030 
20031                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
20032                                                                      Policy.
20033 
20034                                                                  ARMv7's Strongly-ordered and Device memory types have been
20035                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
20036 
20037                                                                  The R and W bits in some Attr\<n\> fields have the following
20038                                                                      meanings:
20039 
20040                                                                  R or W      Meaning
20041                                                                  0 = Do not allocate.
20042                                                                  1 = Allocate. */
20043         uint64_t attr2                 : 8;  /**< [ 23: 16](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
20044                                                                      Long descriptor format translation table entry, where
20045                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
20046 
20047                                                                  Bits [7:4] are encoded as follows:
20048 
20049                                                                  Attr\<n\>[7:4]        Meaning
20050                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
20051                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
20052                                                                  0b0100      Normal Memory, Outer Non-Cacheable
20053                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
20054                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
20055                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
20056 
20057                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
20058                                                                      Policy.
20059 
20060                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
20061 
20062                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
20063                                                                  not 0000
20064                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
20065                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
20066                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
20067                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
20068                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
20069                                                                  (RW=00)
20070                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
20071                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
20072                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
20073 
20074                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
20075                                                                      Policy.
20076 
20077                                                                  ARMv7's Strongly-ordered and Device memory types have been
20078                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
20079 
20080                                                                  The R and W bits in some Attr\<n\> fields have the following
20081                                                                      meanings:
20082 
20083                                                                  R or W      Meaning
20084                                                                  0 = Do not allocate.
20085                                                                  1 = Allocate. */
20086         uint64_t attr3                 : 8;  /**< [ 31: 24](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
20087                                                                      Long descriptor format translation table entry, where
20088                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
20089 
20090                                                                  Bits [7:4] are encoded as follows:
20091 
20092                                                                  Attr\<n\>[7:4]        Meaning
20093                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
20094                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
20095                                                                  0b0100      Normal Memory, Outer Non-Cacheable
20096                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
20097                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
20098                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
20099 
20100                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
20101                                                                      Policy.
20102 
20103                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
20104 
20105                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
20106                                                                  not 0000
20107                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
20108                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
20109                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
20110                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
20111                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
20112                                                                  (RW=00)
20113                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
20114                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
20115                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
20116 
20117                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
20118                                                                      Policy.
20119 
20120                                                                  ARMv7's Strongly-ordered and Device memory types have been
20121                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
20122 
20123                                                                  The R and W bits in some Attr\<n\> fields have the following
20124                                                                      meanings:
20125 
20126                                                                  R or W      Meaning
20127                                                                  0 = Do not allocate.
20128                                                                  1 = Allocate. */
20129         uint64_t attr4                 : 8;  /**< [ 39: 32](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
20130                                                                      Long descriptor format translation table entry, where
20131                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
20132 
20133                                                                  Bits [7:4] are encoded as follows:
20134 
20135                                                                  Attr\<n\>[7:4]        Meaning
20136                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
20137                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
20138                                                                  0b0100      Normal Memory, Outer Non-Cacheable
20139                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
20140                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
20141                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
20142 
20143                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
20144                                                                      Policy.
20145 
20146                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
20147 
20148                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
20149                                                                  not 0000
20150                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
20151                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
20152                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
20153                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
20154                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
20155                                                                  (RW=00)
20156                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
20157                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
20158                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
20159 
20160                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
20161                                                                      Policy.
20162 
20163                                                                  ARMv7's Strongly-ordered and Device memory types have been
20164                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
20165 
20166                                                                  The R and W bits in some Attr\<n\> fields have the following
20167                                                                      meanings:
20168 
20169                                                                  R or W      Meaning
20170                                                                  0 = Do not allocate.
20171                                                                  1 = Allocate. */
20172         uint64_t attr5                 : 8;  /**< [ 47: 40](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
20173                                                                      Long descriptor format translation table entry, where
20174                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
20175 
20176                                                                  Bits [7:4] are encoded as follows:
20177 
20178                                                                  Attr\<n\>[7:4]        Meaning
20179                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
20180                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
20181                                                                  0b0100      Normal Memory, Outer Non-Cacheable
20182                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
20183                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
20184                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
20185 
20186                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
20187                                                                      Policy.
20188 
20189                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
20190 
20191                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
20192                                                                  not 0000
20193                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
20194                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
20195                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
20196                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
20197                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
20198                                                                  (RW=00)
20199                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
20200                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
20201                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
20202 
20203                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
20204                                                                      Policy.
20205 
20206                                                                  ARMv7's Strongly-ordered and Device memory types have been
20207                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
20208 
20209                                                                  The R and W bits in some Attr\<n\> fields have the following
20210                                                                      meanings:
20211 
20212                                                                  R or W      Meaning
20213                                                                  0 = Do not allocate.
20214                                                                  1 = Allocate. */
20215         uint64_t attr6                 : 8;  /**< [ 55: 48](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
20216                                                                      Long descriptor format translation table entry, where
20217                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
20218 
20219                                                                  Bits [7:4] are encoded as follows:
20220 
20221                                                                  Attr\<n\>[7:4]        Meaning
20222                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
20223                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
20224                                                                  0b0100      Normal Memory, Outer Non-Cacheable
20225                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
20226                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
20227                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
20228 
20229                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
20230                                                                      Policy.
20231 
20232                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
20233 
20234                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
20235                                                                  not 0000
20236                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
20237                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
20238                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
20239                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
20240                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
20241                                                                  (RW=00)
20242                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
20243                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
20244                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
20245 
20246                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
20247                                                                      Policy.
20248 
20249                                                                  ARMv7's Strongly-ordered and Device memory types have been
20250                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
20251 
20252                                                                  The R and W bits in some Attr\<n\> fields have the following
20253                                                                      meanings:
20254 
20255                                                                  R or W      Meaning
20256                                                                  0 = Do not allocate.
20257                                                                  1 = Allocate. */
20258         uint64_t attr7                 : 8;  /**< [ 63: 56](R/W) The memory attribute encoding for an AttrIndx[2:0] entry in a
20259                                                                      Long descriptor format translation table entry, where
20260                                                                      AttrIndx[2:0] gives the value of \<n\> in Attr\<n\>.
20261 
20262                                                                  Bits [7:4] are encoded as follows:
20263 
20264                                                                  Attr\<n\>[7:4]        Meaning
20265                                                                  0b0000      Device memory. See encoding of Attr\<n\>[3:0] for the type of Device memory.
20266                                                                  0b00RW0b00  Normal Memory, Outer Write-through transient
20267                                                                  0b0100      Normal Memory, Outer Non-Cacheable
20268                                                                  0b01RW0b00  Normal Memory, Outer Write-back transient
20269                                                                  0b10RW      Normal Memory, Outer Write-through non-transient
20270                                                                  0b11RW      Normal Memory, Outer Write-back non-transient
20271 
20272                                                                  R = Outer Read Allocate Policy, W = Outer Write Allocate
20273                                                                      Policy.
20274 
20275                                                                  The meaning of bits [3:0] depends on the value of bits [7:4]:
20276 
20277                                                                  Attr\<n\>[3:0]        Meaning when Attr\<n\>[7:4] is 0000       Meaning when Attr\<n\>[7:4] is
20278                                                                  not 0000
20279                                                                  0b0000      Device-nGnRnE memory     UNPREDICTABLE
20280                                                                  0b00RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through transient
20281                                                                  0b0100      Device-nGnRE memory     Normal memory, Inner Non-Cacheable
20282                                                                  0b01RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back transient
20283                                                                  0b1000      Device-nGRE memory      Normal Memory, Inner Write-through non-transient
20284                                                                  (RW=00)
20285                                                                  0b10RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-through non-transient
20286                                                                  0b1100      Device-GRE memory       Normal Memory, Inner Write-back non-transient (RW=00)
20287                                                                  0b11RW0b00   UNPREDICTABLE  Normal Memory, Inner Write-back non-transient
20288 
20289                                                                  R = Inner Read Allocate Policy, W = Inner Write Allocate
20290                                                                      Policy.
20291 
20292                                                                  ARMv7's Strongly-ordered and Device memory types have been
20293                                                                      renamed to Device-nGnRnE and Device-nGnRE in ARMv8.
20294 
20295                                                                  The R and W bits in some Attr\<n\> fields have the following
20296                                                                      meanings:
20297 
20298                                                                  R or W      Meaning
20299                                                                  0 = Do not allocate.
20300                                                                  1 = Allocate. */
20301 #endif /* Word 0 - End */
20302     } cn9;
20303 };
20304 typedef union bdk_ap_mair_elx bdk_ap_mair_elx_t;
20305 
20306 static inline uint64_t BDK_AP_MAIR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_MAIR_ELX(unsigned long a)20307 static inline uint64_t BDK_AP_MAIR_ELX(unsigned long a)
20308 {
20309     if ((a>=1)&&(a<=3))
20310         return 0x3000a020000ll + 0ll * ((a) & 0x3);
20311     __bdk_csr_fatal("AP_MAIR_ELX", 1, a, 0, 0, 0);
20312 }
20313 
20314 #define typedef_BDK_AP_MAIR_ELX(a) bdk_ap_mair_elx_t
20315 #define bustype_BDK_AP_MAIR_ELX(a) BDK_CSR_TYPE_SYSREG
20316 #define basename_BDK_AP_MAIR_ELX(a) "AP_MAIR_ELX"
20317 #define busnum_BDK_AP_MAIR_ELX(a) (a)
20318 #define arguments_BDK_AP_MAIR_ELX(a) (a),-1,-1,-1
20319 
20320 /**
20321  * Register (SYSREG) ap_mair_el12
20322  *
20323  * AP Memory Attribute Indirection Register
20324  * Alias of ESR_EL1 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
20325  */
20326 union bdk_ap_mair_el12
20327 {
20328     uint64_t u;
20329     struct bdk_ap_mair_el12_s
20330     {
20331 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20332         uint64_t reserved_0_63         : 64;
20333 #else /* Word 0 - Little Endian */
20334         uint64_t reserved_0_63         : 64;
20335 #endif /* Word 0 - End */
20336     } s;
20337     /* struct bdk_ap_mair_el12_s cn; */
20338 };
20339 typedef union bdk_ap_mair_el12 bdk_ap_mair_el12_t;
20340 
20341 #define BDK_AP_MAIR_EL12 BDK_AP_MAIR_EL12_FUNC()
20342 static inline uint64_t BDK_AP_MAIR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_MAIR_EL12_FUNC(void)20343 static inline uint64_t BDK_AP_MAIR_EL12_FUNC(void)
20344 {
20345     return 0x3050a020000ll;
20346 }
20347 
20348 #define typedef_BDK_AP_MAIR_EL12 bdk_ap_mair_el12_t
20349 #define bustype_BDK_AP_MAIR_EL12 BDK_CSR_TYPE_SYSREG
20350 #define basename_BDK_AP_MAIR_EL12 "AP_MAIR_EL12"
20351 #define busnum_BDK_AP_MAIR_EL12 0
20352 #define arguments_BDK_AP_MAIR_EL12 -1,-1,-1,-1
20353 
20354 /**
20355  * Register (SYSREG) ap_mdccint_el1
20356  *
20357  * AP Monitor Debug Comms Channel Interrupt Enable Register
20358  * Enables interrupt requests to be signaled based on the DCC
20359  *     status flags.
20360  */
20361 union bdk_ap_mdccint_el1
20362 {
20363     uint32_t u;
20364     struct bdk_ap_mdccint_el1_s
20365     {
20366 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20367         uint32_t reserved_31           : 1;
20368         uint32_t rx                    : 1;  /**< [ 30: 30](R/W) DCC interrupt request enable control for DTRRX. Enables a
20369                                                                      common COMMIRQ interrupt request to be signaled based on the
20370                                                                      DCC status flags.
20371 
20372                                                                  If legacy COMMRX and COMMTX signals are implemented, then
20373                                                                      these are not affected by the value of this bit.
20374                                                                  0 = No interrupt request generated by DTRRX.
20375                                                                  1 = Interrupt request will be generated on RXfull == 1. */
20376         uint32_t tx                    : 1;  /**< [ 29: 29](R/W) DCC interrupt request enable control for DTRTX. Enables a
20377                                                                      common COMMIRQ interrupt request to be signaled based on the
20378                                                                      DCC status flags.
20379 
20380                                                                  If legacy COMMRX and COMMTX signals are implemented, then
20381                                                                      these are not affected by the value of this bit.
20382                                                                  0 = No interrupt request generated by DTRTX.
20383                                                                  1 = Interrupt request will be generated on TXfull == 0. */
20384         uint32_t reserved_0_28         : 29;
20385 #else /* Word 0 - Little Endian */
20386         uint32_t reserved_0_28         : 29;
20387         uint32_t tx                    : 1;  /**< [ 29: 29](R/W) DCC interrupt request enable control for DTRTX. Enables a
20388                                                                      common COMMIRQ interrupt request to be signaled based on the
20389                                                                      DCC status flags.
20390 
20391                                                                  If legacy COMMRX and COMMTX signals are implemented, then
20392                                                                      these are not affected by the value of this bit.
20393                                                                  0 = No interrupt request generated by DTRTX.
20394                                                                  1 = Interrupt request will be generated on TXfull == 0. */
20395         uint32_t rx                    : 1;  /**< [ 30: 30](R/W) DCC interrupt request enable control for DTRRX. Enables a
20396                                                                      common COMMIRQ interrupt request to be signaled based on the
20397                                                                      DCC status flags.
20398 
20399                                                                  If legacy COMMRX and COMMTX signals are implemented, then
20400                                                                      these are not affected by the value of this bit.
20401                                                                  0 = No interrupt request generated by DTRRX.
20402                                                                  1 = Interrupt request will be generated on RXfull == 1. */
20403         uint32_t reserved_31           : 1;
20404 #endif /* Word 0 - End */
20405     } s;
20406     /* struct bdk_ap_mdccint_el1_s cn; */
20407 };
20408 typedef union bdk_ap_mdccint_el1 bdk_ap_mdccint_el1_t;
20409 
20410 #define BDK_AP_MDCCINT_EL1 BDK_AP_MDCCINT_EL1_FUNC()
20411 static inline uint64_t BDK_AP_MDCCINT_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_MDCCINT_EL1_FUNC(void)20412 static inline uint64_t BDK_AP_MDCCINT_EL1_FUNC(void)
20413 {
20414     return 0x20000020000ll;
20415 }
20416 
20417 #define typedef_BDK_AP_MDCCINT_EL1 bdk_ap_mdccint_el1_t
20418 #define bustype_BDK_AP_MDCCINT_EL1 BDK_CSR_TYPE_SYSREG
20419 #define basename_BDK_AP_MDCCINT_EL1 "AP_MDCCINT_EL1"
20420 #define busnum_BDK_AP_MDCCINT_EL1 0
20421 #define arguments_BDK_AP_MDCCINT_EL1 -1,-1,-1,-1
20422 
20423 /**
20424  * Register (SYSREG) ap_mdccsr_el0
20425  *
20426  * AP Monitor Debug Comms Channel Status Register
20427  * Main control register for the debug implementation, containing
20428  *     flow-control flags for the DCC. This is an internal, read-only
20429  *     view.
20430  */
20431 union bdk_ap_mdccsr_el0
20432 {
20433     uint32_t u;
20434     struct bdk_ap_mdccsr_el0_s
20435     {
20436 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20437         uint32_t reserved_31           : 1;
20438         uint32_t rxfull                : 1;  /**< [ 30: 30](RO) DTRRX full. Read-only view of the equivalent bit in the EDSCR. */
20439         uint32_t txfull                : 1;  /**< [ 29: 29](RO) DTRTX full. Read-only view of the equivalent bit in the EDSCR. */
20440         uint32_t reserved_0_28         : 29;
20441 #else /* Word 0 - Little Endian */
20442         uint32_t reserved_0_28         : 29;
20443         uint32_t txfull                : 1;  /**< [ 29: 29](RO) DTRTX full. Read-only view of the equivalent bit in the EDSCR. */
20444         uint32_t rxfull                : 1;  /**< [ 30: 30](RO) DTRRX full. Read-only view of the equivalent bit in the EDSCR. */
20445         uint32_t reserved_31           : 1;
20446 #endif /* Word 0 - End */
20447     } s;
20448     struct bdk_ap_mdccsr_el0_cn
20449     {
20450 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20451         uint32_t reserved_31           : 1;
20452         uint32_t rxfull                : 1;  /**< [ 30: 30](RO) DTRRX full. Read-only view of the equivalent bit in the EDSCR. */
20453         uint32_t txfull                : 1;  /**< [ 29: 29](RO) DTRTX full. Read-only view of the equivalent bit in the EDSCR. */
20454         uint32_t reserved_19_28        : 10;
20455         uint32_t reserved_15_18        : 4;
20456         uint32_t reserved_13_14        : 2;
20457         uint32_t reserved_12           : 1;
20458         uint32_t reserved_6_11         : 6;
20459         uint32_t reserved_2_5          : 4;
20460         uint32_t reserved_0_1          : 2;
20461 #else /* Word 0 - Little Endian */
20462         uint32_t reserved_0_1          : 2;
20463         uint32_t reserved_2_5          : 4;
20464         uint32_t reserved_6_11         : 6;
20465         uint32_t reserved_12           : 1;
20466         uint32_t reserved_13_14        : 2;
20467         uint32_t reserved_15_18        : 4;
20468         uint32_t reserved_19_28        : 10;
20469         uint32_t txfull                : 1;  /**< [ 29: 29](RO) DTRTX full. Read-only view of the equivalent bit in the EDSCR. */
20470         uint32_t rxfull                : 1;  /**< [ 30: 30](RO) DTRRX full. Read-only view of the equivalent bit in the EDSCR. */
20471         uint32_t reserved_31           : 1;
20472 #endif /* Word 0 - End */
20473     } cn;
20474 };
20475 typedef union bdk_ap_mdccsr_el0 bdk_ap_mdccsr_el0_t;
20476 
20477 #define BDK_AP_MDCCSR_EL0 BDK_AP_MDCCSR_EL0_FUNC()
20478 static inline uint64_t BDK_AP_MDCCSR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_MDCCSR_EL0_FUNC(void)20479 static inline uint64_t BDK_AP_MDCCSR_EL0_FUNC(void)
20480 {
20481     return 0x20300010000ll;
20482 }
20483 
20484 #define typedef_BDK_AP_MDCCSR_EL0 bdk_ap_mdccsr_el0_t
20485 #define bustype_BDK_AP_MDCCSR_EL0 BDK_CSR_TYPE_SYSREG
20486 #define basename_BDK_AP_MDCCSR_EL0 "AP_MDCCSR_EL0"
20487 #define busnum_BDK_AP_MDCCSR_EL0 0
20488 #define arguments_BDK_AP_MDCCSR_EL0 -1,-1,-1,-1
20489 
20490 /**
20491  * Register (SYSREG) ap_mdcr_el2
20492  *
20493  * AP Monitor Debug Configuration EL2 Register
20494  * Provides configuration options for the Virtualization
20495  *     extensions to self-hosted debug and the Performance Monitors
20496  *     extension.
20497  */
20498 union bdk_ap_mdcr_el2
20499 {
20500     uint32_t u;
20501     struct bdk_ap_mdcr_el2_s
20502     {
20503 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20504         uint32_t reserved_18_31        : 14;
20505         uint32_t hpmd                  : 1;  /**< [ 17: 17](R/W) v8.1: Hyp performance monitors disable. This prohibits event counting
20506                                                                  at EL2.
20507                                                                  0 = Event counting allowed at EL2.
20508                                                                  1 = Event counting prohibited at EL2, unless overridden by
20509                                                                          the authentication interface.
20510 
20511                                                                  Note: This behavior is independent of the value of the AP_HCR_EL2[E2H]
20512                                                                  bit.
20513                                                                  This control applies only to:
20514                                                                  The counters in the range [0.[HPMN]).
20515                                                                  If AP_PMCR_EL0[DP] is set to 1, AP_PMCCNTR_EL0.
20516                                                                  The other event counters and, if AP_PMCR_EL0[DP] is set to 0,
20517                                                                  AP_PMCCNTR_EL0 are unaffected.
20518 
20519                                                                  On Warm reset, the field resets to 0. */
20520         uint32_t reserved_15_16        : 2;
20521         uint32_t tpms                  : 1;  /**< [ 14: 14](R/W) Trap Performance Monitor Sampling. Controls access to Statistical Profiling control
20522                                                                  registers from Non-secure EL1 and EL0.
20523                                                                    0 = Do not trap statistical profiling controls to EL2.
20524                                                                    1 = Accesses to statistical profiling controls at nonsecure EL1 generate a Trap
20525                                                                  exception to EL2. */
20526         uint32_t e2pb                  : 2;  /**< [ 13: 12](R/W) EL2 Profiling Buffer. Controls the owning translation regime and access to Profiling
20527                                                                  Buffer control registers from nonsecure EL1.
20528                                                                    00 = Profiling Buffer uses the EL2 stage 1 translation regime. Accesses to Profiling
20529                                                                  Buffer controls at nonsecure EL1 generate a Trap exception to EL2.
20530                                                                    10 = Profiling Buffer uses the EL1&0 stage 1 translation regime. Accesses to Profiling
20531                                                                  Buffer controls at nonsecure EL1 generate a Trap exception to EL2.
20532                                                                    11 = Profiling Buffer uses the EL1&0 stage 1 translation regime. Accesses to Profiling
20533                                                                  Buffer controls at nonsecure EL1 are not trapped to EL2. */
20534         uint32_t tdra                  : 1;  /**< [ 11: 11](R/W) Trap debug ROM address register access.
20535 
20536                                                                  When this bit is set to 1, any access to the following
20537                                                                      registers from EL1 or EL0 is trapped to EL2:
20538 
20539                                                                  AArch32: DBGDRAR, DBGDSAR.
20540 
20541                                                                  AArch64: AP_MDRAR_EL1.
20542 
20543                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20544                                                                      ignored and treated as though it is 1 other than for the value
20545                                                                      read back from AP_MDCR_EL2.
20546 
20547                                                                  0 = Has no effect on accesses to debug ROM address registers from
20548                                                                      EL1 and EL0.
20549                                                                  1 = Trap valid EL1 and EL0 access to debug ROM address registers
20550                                                                      to EL2. */
20551         uint32_t tdosa                 : 1;  /**< [ 10: 10](R/W) Trap debug OS-related register access.
20552                                                                  When this bit is set to 1, any access to the following
20553                                                                      registers from EL1 or EL0 is trapped to EL2:
20554 
20555                                                                  AArch32: DBGOSLAR, DBGOSLSR, DBGOSDLR, DBGPRCR.
20556 
20557                                                                  AArch64: AP_OSLAR_EL1, AP_OSLSR_EL1, AP_OSDLR_EL1, AP_DBGPRCR_EL1.
20558 
20559                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20560                                                                      ignored and treated as though it is 1 other than for the value
20561                                                                      read back from AP_MDCR_EL2.
20562                                                                  0 = Has no effect on accesses to OS-related debug registers.
20563                                                                  1 = Trap valid accesses to OS-related debug registers to EL2. */
20564         uint32_t tda                   : 1;  /**< [  9:  9](R/W) Trap debug access.
20565 
20566                                                                  When this bit is set to 1, any valid nonsecure access to the
20567                                                                      debug registers from EL1 or EL0, other than the registers
20568                                                                      trapped by the TDRA and TDOSA bits, is trapped to EL2.
20569 
20570                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20571                                                                      ignored and treated as though it is 1 other than for the value
20572                                                                      read back from AP_MDCR_EL2.
20573                                                                  0 = Has no effect on accesses to debug registers.
20574                                                                  1 = Trap valid nonsecure accesses to debug registers to EL2. */
20575         uint32_t tde                   : 1;  /**< [  8:  8](R/W) Route Software debug exceptions from nonsecure EL1 and EL0 to
20576                                                                      EL2. Also enables traps on all debug register accesses to EL2.
20577                                                                  If AP_HCR_EL2[TGE] == 1, then this bit is ignored and treated as
20578                                                                      though it is 1 other than for the value read back from
20579                                                                      AP_MDCR_EL2. */
20580         uint32_t hpme                  : 1;  /**< [  7:  7](R/W) Hypervisor Performance Monitors Enable.
20581                                                                  When this bit is set to 1, the Performance Monitors counters
20582                                                                      that are reserved for use from EL2 or Secure state are
20583                                                                      enabled. For more information see the description of the HPMN
20584                                                                      field.
20585                                                                  If the Performance Monitors extension is not implemented, this
20586                                                                      field is RES0.
20587                                                                  0 = EL2 Performance Monitors disabled.
20588                                                                  1 = EL2 Performance Monitors enabled. */
20589         uint32_t tpm                   : 1;  /**< [  6:  6](R/W) Trap Performance Monitors accesses.
20590                                                                  If the Performance Monitors extension is not implemented, this
20591                                                                      field is RES0.
20592                                                                  0 = Has no effect on Performance Monitors accesses.
20593                                                                  1 = Trap nonsecure EL0 and EL1 accesses to Performance Monitors
20594                                                                      registers that are not unallocated to EL2. */
20595         uint32_t tpmcr                 : 1;  /**< [  5:  5](R/W) Trap AP_PMCR_EL0 accesses.
20596                                                                  If the Performance Monitors extension is not implemented, this
20597                                                                      field is RES0.
20598                                                                  0 = Has no effect on AP_PMCR_EL0 accesses.
20599                                                                  1 = Trap nonsecure EL0 and EL1 accesses to AP_PMCR_EL0 to EL2. */
20600         uint32_t hpmn                  : 5;  /**< [  4:  0](R/W) Defines the number of Performance Monitors counters that are
20601                                                                      accessible from nonsecure EL0 and EL1 modes.
20602 
20603                                                                  If the Performance Monitors extension is not implemented, this
20604                                                                      field is RES0.
20605 
20606                                                                  In nonsecure state, HPMN divides the Performance Monitors
20607                                                                      counters as follows. For counter n in nonsecure state:
20608 
20609                                                                   If n is in the range 0\<=n\<HPMN, the counter is accessible
20610                                                                      from EL1 and EL2, and from EL0 if permitted by AP_PMUSERENR_EL0.
20611                                                                      AP_PMCR_EL0[E] enables the operation of counters in this range.
20612 
20613                                                                   If n is in the range HPMN\<=n\< AP_PMCR_EL0[N], the counter is
20614                                                                      accessible only from EL2. AP_MDCR_EL2[HPME] enables the operation
20615                                                                      of counters in this range.
20616 
20617                                                                  If this field is set to 0, or to a value larger than
20618                                                                      AP_PMCR_EL0[N], then the behavior in nonsecure EL0 and EL1 is
20619                                                                      CONSTRAINED UNPREDICTABLE, and one of the following must
20620                                                                      happen:
20621 
20622                                                                   The number of counters accessible is an UNKNOWN nonzero
20623                                                                      value less than AP_PMCR_EL0[N].
20624 
20625                                                                   There is no access to any counters.
20626 
20627                                                                  For reads of AP_MDCR_EL2[HPMN] by EL2 or higher, if this field is
20628                                                                      set to 0 or to a value larger than AP_PMCR_EL0[N], the processor
20629                                                                      must return a CONSTRAINED UNPREDICTABLE value being one of:
20630                                                                    AP_PMCR_EL0[N].
20631 
20632                                                                   The value that was written to AP_MDCR_EL2[HPMN].
20633                                                                   (The value that was written to AP_MDCR_EL2[HPMN]) modulo
20634                                                                      22^(h), where h is the smallest number of bits required
20635                                                                      for a value in the range 0 to  AP_PMCR_EL0[N]. */
20636 #else /* Word 0 - Little Endian */
20637         uint32_t hpmn                  : 5;  /**< [  4:  0](R/W) Defines the number of Performance Monitors counters that are
20638                                                                      accessible from nonsecure EL0 and EL1 modes.
20639 
20640                                                                  If the Performance Monitors extension is not implemented, this
20641                                                                      field is RES0.
20642 
20643                                                                  In nonsecure state, HPMN divides the Performance Monitors
20644                                                                      counters as follows. For counter n in nonsecure state:
20645 
20646                                                                   If n is in the range 0\<=n\<HPMN, the counter is accessible
20647                                                                      from EL1 and EL2, and from EL0 if permitted by AP_PMUSERENR_EL0.
20648                                                                      AP_PMCR_EL0[E] enables the operation of counters in this range.
20649 
20650                                                                   If n is in the range HPMN\<=n\< AP_PMCR_EL0[N], the counter is
20651                                                                      accessible only from EL2. AP_MDCR_EL2[HPME] enables the operation
20652                                                                      of counters in this range.
20653 
20654                                                                  If this field is set to 0, or to a value larger than
20655                                                                      AP_PMCR_EL0[N], then the behavior in nonsecure EL0 and EL1 is
20656                                                                      CONSTRAINED UNPREDICTABLE, and one of the following must
20657                                                                      happen:
20658 
20659                                                                   The number of counters accessible is an UNKNOWN nonzero
20660                                                                      value less than AP_PMCR_EL0[N].
20661 
20662                                                                   There is no access to any counters.
20663 
20664                                                                  For reads of AP_MDCR_EL2[HPMN] by EL2 or higher, if this field is
20665                                                                      set to 0 or to a value larger than AP_PMCR_EL0[N], the processor
20666                                                                      must return a CONSTRAINED UNPREDICTABLE value being one of:
20667                                                                    AP_PMCR_EL0[N].
20668 
20669                                                                   The value that was written to AP_MDCR_EL2[HPMN].
20670                                                                   (The value that was written to AP_MDCR_EL2[HPMN]) modulo
20671                                                                      22^(h), where h is the smallest number of bits required
20672                                                                      for a value in the range 0 to  AP_PMCR_EL0[N]. */
20673         uint32_t tpmcr                 : 1;  /**< [  5:  5](R/W) Trap AP_PMCR_EL0 accesses.
20674                                                                  If the Performance Monitors extension is not implemented, this
20675                                                                      field is RES0.
20676                                                                  0 = Has no effect on AP_PMCR_EL0 accesses.
20677                                                                  1 = Trap nonsecure EL0 and EL1 accesses to AP_PMCR_EL0 to EL2. */
20678         uint32_t tpm                   : 1;  /**< [  6:  6](R/W) Trap Performance Monitors accesses.
20679                                                                  If the Performance Monitors extension is not implemented, this
20680                                                                      field is RES0.
20681                                                                  0 = Has no effect on Performance Monitors accesses.
20682                                                                  1 = Trap nonsecure EL0 and EL1 accesses to Performance Monitors
20683                                                                      registers that are not unallocated to EL2. */
20684         uint32_t hpme                  : 1;  /**< [  7:  7](R/W) Hypervisor Performance Monitors Enable.
20685                                                                  When this bit is set to 1, the Performance Monitors counters
20686                                                                      that are reserved for use from EL2 or Secure state are
20687                                                                      enabled. For more information see the description of the HPMN
20688                                                                      field.
20689                                                                  If the Performance Monitors extension is not implemented, this
20690                                                                      field is RES0.
20691                                                                  0 = EL2 Performance Monitors disabled.
20692                                                                  1 = EL2 Performance Monitors enabled. */
20693         uint32_t tde                   : 1;  /**< [  8:  8](R/W) Route Software debug exceptions from nonsecure EL1 and EL0 to
20694                                                                      EL2. Also enables traps on all debug register accesses to EL2.
20695                                                                  If AP_HCR_EL2[TGE] == 1, then this bit is ignored and treated as
20696                                                                      though it is 1 other than for the value read back from
20697                                                                      AP_MDCR_EL2. */
20698         uint32_t tda                   : 1;  /**< [  9:  9](R/W) Trap debug access.
20699 
20700                                                                  When this bit is set to 1, any valid nonsecure access to the
20701                                                                      debug registers from EL1 or EL0, other than the registers
20702                                                                      trapped by the TDRA and TDOSA bits, is trapped to EL2.
20703 
20704                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20705                                                                      ignored and treated as though it is 1 other than for the value
20706                                                                      read back from AP_MDCR_EL2.
20707                                                                  0 = Has no effect on accesses to debug registers.
20708                                                                  1 = Trap valid nonsecure accesses to debug registers to EL2. */
20709         uint32_t tdosa                 : 1;  /**< [ 10: 10](R/W) Trap debug OS-related register access.
20710                                                                  When this bit is set to 1, any access to the following
20711                                                                      registers from EL1 or EL0 is trapped to EL2:
20712 
20713                                                                  AArch32: DBGOSLAR, DBGOSLSR, DBGOSDLR, DBGPRCR.
20714 
20715                                                                  AArch64: AP_OSLAR_EL1, AP_OSLSR_EL1, AP_OSDLR_EL1, AP_DBGPRCR_EL1.
20716 
20717                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20718                                                                      ignored and treated as though it is 1 other than for the value
20719                                                                      read back from AP_MDCR_EL2.
20720                                                                  0 = Has no effect on accesses to OS-related debug registers.
20721                                                                  1 = Trap valid accesses to OS-related debug registers to EL2. */
20722         uint32_t tdra                  : 1;  /**< [ 11: 11](R/W) Trap debug ROM address register access.
20723 
20724                                                                  When this bit is set to 1, any access to the following
20725                                                                      registers from EL1 or EL0 is trapped to EL2:
20726 
20727                                                                  AArch32: DBGDRAR, DBGDSAR.
20728 
20729                                                                  AArch64: AP_MDRAR_EL1.
20730 
20731                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20732                                                                      ignored and treated as though it is 1 other than for the value
20733                                                                      read back from AP_MDCR_EL2.
20734 
20735                                                                  0 = Has no effect on accesses to debug ROM address registers from
20736                                                                      EL1 and EL0.
20737                                                                  1 = Trap valid EL1 and EL0 access to debug ROM address registers
20738                                                                      to EL2. */
20739         uint32_t e2pb                  : 2;  /**< [ 13: 12](R/W) EL2 Profiling Buffer. Controls the owning translation regime and access to Profiling
20740                                                                  Buffer control registers from nonsecure EL1.
20741                                                                    00 = Profiling Buffer uses the EL2 stage 1 translation regime. Accesses to Profiling
20742                                                                  Buffer controls at nonsecure EL1 generate a Trap exception to EL2.
20743                                                                    10 = Profiling Buffer uses the EL1&0 stage 1 translation regime. Accesses to Profiling
20744                                                                  Buffer controls at nonsecure EL1 generate a Trap exception to EL2.
20745                                                                    11 = Profiling Buffer uses the EL1&0 stage 1 translation regime. Accesses to Profiling
20746                                                                  Buffer controls at nonsecure EL1 are not trapped to EL2. */
20747         uint32_t tpms                  : 1;  /**< [ 14: 14](R/W) Trap Performance Monitor Sampling. Controls access to Statistical Profiling control
20748                                                                  registers from Non-secure EL1 and EL0.
20749                                                                    0 = Do not trap statistical profiling controls to EL2.
20750                                                                    1 = Accesses to statistical profiling controls at nonsecure EL1 generate a Trap
20751                                                                  exception to EL2. */
20752         uint32_t reserved_15_16        : 2;
20753         uint32_t hpmd                  : 1;  /**< [ 17: 17](R/W) v8.1: Hyp performance monitors disable. This prohibits event counting
20754                                                                  at EL2.
20755                                                                  0 = Event counting allowed at EL2.
20756                                                                  1 = Event counting prohibited at EL2, unless overridden by
20757                                                                          the authentication interface.
20758 
20759                                                                  Note: This behavior is independent of the value of the AP_HCR_EL2[E2H]
20760                                                                  bit.
20761                                                                  This control applies only to:
20762                                                                  The counters in the range [0.[HPMN]).
20763                                                                  If AP_PMCR_EL0[DP] is set to 1, AP_PMCCNTR_EL0.
20764                                                                  The other event counters and, if AP_PMCR_EL0[DP] is set to 0,
20765                                                                  AP_PMCCNTR_EL0 are unaffected.
20766 
20767                                                                  On Warm reset, the field resets to 0. */
20768         uint32_t reserved_18_31        : 14;
20769 #endif /* Word 0 - End */
20770     } s;
20771     struct bdk_ap_mdcr_el2_cn8
20772     {
20773 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20774         uint32_t reserved_18_31        : 14;
20775         uint32_t hpmd                  : 1;  /**< [ 17: 17](R/W) v8.1: Hyp performance monitors disable. This prohibits event counting
20776                                                                  at EL2.
20777                                                                  0 = Event counting allowed at EL2.
20778                                                                  1 = Event counting prohibited at EL2, unless overridden by
20779                                                                          the authentication interface.
20780 
20781                                                                  Note: This behavior is independent of the value of the AP_HCR_EL2[E2H]
20782                                                                  bit.
20783                                                                  This control applies only to:
20784                                                                  The counters in the range [0.[HPMN]).
20785                                                                  If AP_PMCR_EL0[DP] is set to 1, AP_PMCCNTR_EL0.
20786                                                                  The other event counters and, if AP_PMCR_EL0[DP] is set to 0,
20787                                                                  AP_PMCCNTR_EL0 are unaffected.
20788 
20789                                                                  On Warm reset, the field resets to 0. */
20790         uint32_t reserved_12_16        : 5;
20791         uint32_t tdra                  : 1;  /**< [ 11: 11](R/W) Trap debug ROM address register access.
20792 
20793                                                                  When this bit is set to 1, any access to the following
20794                                                                      registers from EL1 or EL0 is trapped to EL2:
20795 
20796                                                                  AArch32: DBGDRAR, DBGDSAR.
20797 
20798                                                                  AArch64: AP_MDRAR_EL1.
20799 
20800                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20801                                                                      ignored and treated as though it is 1 other than for the value
20802                                                                      read back from AP_MDCR_EL2.
20803 
20804                                                                  0 = Has no effect on accesses to debug ROM address registers from
20805                                                                      EL1 and EL0.
20806                                                                  1 = Trap valid EL1 and EL0 access to debug ROM address registers
20807                                                                      to EL2. */
20808         uint32_t tdosa                 : 1;  /**< [ 10: 10](R/W) Trap debug OS-related register access.
20809                                                                  When this bit is set to 1, any access to the following
20810                                                                      registers from EL1 or EL0 is trapped to EL2:
20811 
20812                                                                  AArch32: DBGOSLAR, DBGOSLSR, DBGOSDLR, DBGPRCR.
20813 
20814                                                                  AArch64: AP_OSLAR_EL1, AP_OSLSR_EL1, AP_OSDLR_EL1, AP_DBGPRCR_EL1.
20815 
20816                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20817                                                                      ignored and treated as though it is 1 other than for the value
20818                                                                      read back from AP_MDCR_EL2.
20819                                                                  0 = Has no effect on accesses to OS-related debug registers.
20820                                                                  1 = Trap valid accesses to OS-related debug registers to EL2. */
20821         uint32_t tda                   : 1;  /**< [  9:  9](R/W) Trap debug access.
20822 
20823                                                                  When this bit is set to 1, any valid nonsecure access to the
20824                                                                      debug registers from EL1 or EL0, other than the registers
20825                                                                      trapped by the TDRA and TDOSA bits, is trapped to EL2.
20826 
20827                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20828                                                                      ignored and treated as though it is 1 other than for the value
20829                                                                      read back from AP_MDCR_EL2.
20830                                                                  0 = Has no effect on accesses to debug registers.
20831                                                                  1 = Trap valid nonsecure accesses to debug registers to EL2. */
20832         uint32_t tde                   : 1;  /**< [  8:  8](R/W) Route Software debug exceptions from nonsecure EL1 and EL0 to
20833                                                                      EL2. Also enables traps on all debug register accesses to EL2.
20834                                                                  If AP_HCR_EL2[TGE] == 1, then this bit is ignored and treated as
20835                                                                      though it is 1 other than for the value read back from
20836                                                                      AP_MDCR_EL2. */
20837         uint32_t hpme                  : 1;  /**< [  7:  7](R/W) Hypervisor Performance Monitors Enable.
20838                                                                  When this bit is set to 1, the Performance Monitors counters
20839                                                                      that are reserved for use from EL2 or Secure state are
20840                                                                      enabled. For more information see the description of the HPMN
20841                                                                      field.
20842                                                                  If the Performance Monitors extension is not implemented, this
20843                                                                      field is RES0.
20844                                                                  0 = EL2 Performance Monitors disabled.
20845                                                                  1 = EL2 Performance Monitors enabled. */
20846         uint32_t tpm                   : 1;  /**< [  6:  6](R/W) Trap Performance Monitors accesses.
20847                                                                  If the Performance Monitors extension is not implemented, this
20848                                                                      field is RES0.
20849                                                                  0 = Has no effect on Performance Monitors accesses.
20850                                                                  1 = Trap nonsecure EL0 and EL1 accesses to Performance Monitors
20851                                                                      registers that are not unallocated to EL2. */
20852         uint32_t tpmcr                 : 1;  /**< [  5:  5](R/W) Trap AP_PMCR_EL0 accesses.
20853                                                                  If the Performance Monitors extension is not implemented, this
20854                                                                      field is RES0.
20855                                                                  0 = Has no effect on AP_PMCR_EL0 accesses.
20856                                                                  1 = Trap nonsecure EL0 and EL1 accesses to AP_PMCR_EL0 to EL2. */
20857         uint32_t hpmn                  : 5;  /**< [  4:  0](R/W) Defines the number of Performance Monitors counters that are
20858                                                                      accessible from nonsecure EL0 and EL1 modes.
20859 
20860                                                                  If the Performance Monitors extension is not implemented, this
20861                                                                      field is RES0.
20862 
20863                                                                  In nonsecure state, HPMN divides the Performance Monitors
20864                                                                      counters as follows. For counter n in nonsecure state:
20865 
20866                                                                   If n is in the range 0\<=n\<HPMN, the counter is accessible
20867                                                                      from EL1 and EL2, and from EL0 if permitted by AP_PMUSERENR_EL0.
20868                                                                      AP_PMCR_EL0[E] enables the operation of counters in this range.
20869 
20870                                                                   If n is in the range HPMN\<=n\< AP_PMCR_EL0[N], the counter is
20871                                                                      accessible only from EL2. AP_MDCR_EL2[HPME] enables the operation
20872                                                                      of counters in this range.
20873 
20874                                                                  If this field is set to 0, or to a value larger than
20875                                                                      AP_PMCR_EL0[N], then the behavior in nonsecure EL0 and EL1 is
20876                                                                      CONSTRAINED UNPREDICTABLE, and one of the following must
20877                                                                      happen:
20878 
20879                                                                   The number of counters accessible is an UNKNOWN nonzero
20880                                                                      value less than AP_PMCR_EL0[N].
20881 
20882                                                                   There is no access to any counters.
20883 
20884                                                                  For reads of AP_MDCR_EL2[HPMN] by EL2 or higher, if this field is
20885                                                                      set to 0 or to a value larger than AP_PMCR_EL0[N], the processor
20886                                                                      must return a CONSTRAINED UNPREDICTABLE value being one of:
20887                                                                    AP_PMCR_EL0[N].
20888 
20889                                                                   The value that was written to AP_MDCR_EL2[HPMN].
20890                                                                   (The value that was written to AP_MDCR_EL2[HPMN]) modulo
20891                                                                      22^(h), where h is the smallest number of bits required
20892                                                                      for a value in the range 0 to  AP_PMCR_EL0[N]. */
20893 #else /* Word 0 - Little Endian */
20894         uint32_t hpmn                  : 5;  /**< [  4:  0](R/W) Defines the number of Performance Monitors counters that are
20895                                                                      accessible from nonsecure EL0 and EL1 modes.
20896 
20897                                                                  If the Performance Monitors extension is not implemented, this
20898                                                                      field is RES0.
20899 
20900                                                                  In nonsecure state, HPMN divides the Performance Monitors
20901                                                                      counters as follows. For counter n in nonsecure state:
20902 
20903                                                                   If n is in the range 0\<=n\<HPMN, the counter is accessible
20904                                                                      from EL1 and EL2, and from EL0 if permitted by AP_PMUSERENR_EL0.
20905                                                                      AP_PMCR_EL0[E] enables the operation of counters in this range.
20906 
20907                                                                   If n is in the range HPMN\<=n\< AP_PMCR_EL0[N], the counter is
20908                                                                      accessible only from EL2. AP_MDCR_EL2[HPME] enables the operation
20909                                                                      of counters in this range.
20910 
20911                                                                  If this field is set to 0, or to a value larger than
20912                                                                      AP_PMCR_EL0[N], then the behavior in nonsecure EL0 and EL1 is
20913                                                                      CONSTRAINED UNPREDICTABLE, and one of the following must
20914                                                                      happen:
20915 
20916                                                                   The number of counters accessible is an UNKNOWN nonzero
20917                                                                      value less than AP_PMCR_EL0[N].
20918 
20919                                                                   There is no access to any counters.
20920 
20921                                                                  For reads of AP_MDCR_EL2[HPMN] by EL2 or higher, if this field is
20922                                                                      set to 0 or to a value larger than AP_PMCR_EL0[N], the processor
20923                                                                      must return a CONSTRAINED UNPREDICTABLE value being one of:
20924                                                                    AP_PMCR_EL0[N].
20925 
20926                                                                   The value that was written to AP_MDCR_EL2[HPMN].
20927                                                                   (The value that was written to AP_MDCR_EL2[HPMN]) modulo
20928                                                                      22^(h), where h is the smallest number of bits required
20929                                                                      for a value in the range 0 to  AP_PMCR_EL0[N]. */
20930         uint32_t tpmcr                 : 1;  /**< [  5:  5](R/W) Trap AP_PMCR_EL0 accesses.
20931                                                                  If the Performance Monitors extension is not implemented, this
20932                                                                      field is RES0.
20933                                                                  0 = Has no effect on AP_PMCR_EL0 accesses.
20934                                                                  1 = Trap nonsecure EL0 and EL1 accesses to AP_PMCR_EL0 to EL2. */
20935         uint32_t tpm                   : 1;  /**< [  6:  6](R/W) Trap Performance Monitors accesses.
20936                                                                  If the Performance Monitors extension is not implemented, this
20937                                                                      field is RES0.
20938                                                                  0 = Has no effect on Performance Monitors accesses.
20939                                                                  1 = Trap nonsecure EL0 and EL1 accesses to Performance Monitors
20940                                                                      registers that are not unallocated to EL2. */
20941         uint32_t hpme                  : 1;  /**< [  7:  7](R/W) Hypervisor Performance Monitors Enable.
20942                                                                  When this bit is set to 1, the Performance Monitors counters
20943                                                                      that are reserved for use from EL2 or Secure state are
20944                                                                      enabled. For more information see the description of the HPMN
20945                                                                      field.
20946                                                                  If the Performance Monitors extension is not implemented, this
20947                                                                      field is RES0.
20948                                                                  0 = EL2 Performance Monitors disabled.
20949                                                                  1 = EL2 Performance Monitors enabled. */
20950         uint32_t tde                   : 1;  /**< [  8:  8](R/W) Route Software debug exceptions from nonsecure EL1 and EL0 to
20951                                                                      EL2. Also enables traps on all debug register accesses to EL2.
20952                                                                  If AP_HCR_EL2[TGE] == 1, then this bit is ignored and treated as
20953                                                                      though it is 1 other than for the value read back from
20954                                                                      AP_MDCR_EL2. */
20955         uint32_t tda                   : 1;  /**< [  9:  9](R/W) Trap debug access.
20956 
20957                                                                  When this bit is set to 1, any valid nonsecure access to the
20958                                                                      debug registers from EL1 or EL0, other than the registers
20959                                                                      trapped by the TDRA and TDOSA bits, is trapped to EL2.
20960 
20961                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20962                                                                      ignored and treated as though it is 1 other than for the value
20963                                                                      read back from AP_MDCR_EL2.
20964                                                                  0 = Has no effect on accesses to debug registers.
20965                                                                  1 = Trap valid nonsecure accesses to debug registers to EL2. */
20966         uint32_t tdosa                 : 1;  /**< [ 10: 10](R/W) Trap debug OS-related register access.
20967                                                                  When this bit is set to 1, any access to the following
20968                                                                      registers from EL1 or EL0 is trapped to EL2:
20969 
20970                                                                  AArch32: DBGOSLAR, DBGOSLSR, DBGOSDLR, DBGPRCR.
20971 
20972                                                                  AArch64: AP_OSLAR_EL1, AP_OSLSR_EL1, AP_OSDLR_EL1, AP_DBGPRCR_EL1.
20973 
20974                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20975                                                                      ignored and treated as though it is 1 other than for the value
20976                                                                      read back from AP_MDCR_EL2.
20977                                                                  0 = Has no effect on accesses to OS-related debug registers.
20978                                                                  1 = Trap valid accesses to OS-related debug registers to EL2. */
20979         uint32_t tdra                  : 1;  /**< [ 11: 11](R/W) Trap debug ROM address register access.
20980 
20981                                                                  When this bit is set to 1, any access to the following
20982                                                                      registers from EL1 or EL0 is trapped to EL2:
20983 
20984                                                                  AArch32: DBGDRAR, DBGDSAR.
20985 
20986                                                                  AArch64: AP_MDRAR_EL1.
20987 
20988                                                                  If AP_HCR_EL2[TGE] == 1 or AP_MDCR_EL2[TDE] == 1, then this bit is
20989                                                                      ignored and treated as though it is 1 other than for the value
20990                                                                      read back from AP_MDCR_EL2.
20991 
20992                                                                  0 = Has no effect on accesses to debug ROM address registers from
20993                                                                      EL1 and EL0.
20994                                                                  1 = Trap valid EL1 and EL0 access to debug ROM address registers
20995                                                                      to EL2. */
20996         uint32_t reserved_12_16        : 5;
20997         uint32_t hpmd                  : 1;  /**< [ 17: 17](R/W) v8.1: Hyp performance monitors disable. This prohibits event counting
20998                                                                  at EL2.
20999                                                                  0 = Event counting allowed at EL2.
21000                                                                  1 = Event counting prohibited at EL2, unless overridden by
21001                                                                          the authentication interface.
21002 
21003                                                                  Note: This behavior is independent of the value of the AP_HCR_EL2[E2H]
21004                                                                  bit.
21005                                                                  This control applies only to:
21006                                                                  The counters in the range [0.[HPMN]).
21007                                                                  If AP_PMCR_EL0[DP] is set to 1, AP_PMCCNTR_EL0.
21008                                                                  The other event counters and, if AP_PMCR_EL0[DP] is set to 0,
21009                                                                  AP_PMCCNTR_EL0 are unaffected.
21010 
21011                                                                  On Warm reset, the field resets to 0. */
21012         uint32_t reserved_18_31        : 14;
21013 #endif /* Word 0 - End */
21014     } cn8;
21015     /* struct bdk_ap_mdcr_el2_s cn9; */
21016 };
21017 typedef union bdk_ap_mdcr_el2 bdk_ap_mdcr_el2_t;
21018 
21019 #define BDK_AP_MDCR_EL2 BDK_AP_MDCR_EL2_FUNC()
21020 static inline uint64_t BDK_AP_MDCR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_MDCR_EL2_FUNC(void)21021 static inline uint64_t BDK_AP_MDCR_EL2_FUNC(void)
21022 {
21023     return 0x30401010100ll;
21024 }
21025 
21026 #define typedef_BDK_AP_MDCR_EL2 bdk_ap_mdcr_el2_t
21027 #define bustype_BDK_AP_MDCR_EL2 BDK_CSR_TYPE_SYSREG
21028 #define basename_BDK_AP_MDCR_EL2 "AP_MDCR_EL2"
21029 #define busnum_BDK_AP_MDCR_EL2 0
21030 #define arguments_BDK_AP_MDCR_EL2 -1,-1,-1,-1
21031 
21032 /**
21033  * Register (SYSREG) ap_mdcr_el3
21034  *
21035  * AP Monitor Debug Configuration EL3 Register
21036  * Provides configuration options for the Security extensions to
21037  *     self-hosted debug.
21038  */
21039 union bdk_ap_mdcr_el3
21040 {
21041     uint32_t u;
21042     struct bdk_ap_mdcr_el3_s
21043     {
21044 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21045         uint32_t reserved_22_31        : 10;
21046         uint32_t epmad                 : 1;  /**< [ 21: 21](R/W) External debugger access to Performance Monitors registers
21047                                                                      disabled. This disables access to these registers by an
21048                                                                      external debugger:
21049                                                                  0 = Access to Performance Monitors registers from external
21050                                                                      debugger is permitted.
21051                                                                  1 = Access to Performance Monitors registers from external
21052                                                                      debugger is disabled, unless overridden by authentication
21053                                                                      interface. */
21054         uint32_t edad                  : 1;  /**< [ 20: 20](R/W) External debugger access to breakpoint and watchpoint
21055                                                                      registers disabled. This disables access to these registers by
21056                                                                      an external debugger:
21057                                                                  0 = Access to breakpoint and watchpoint registers from external
21058                                                                      debugger is permitted.
21059                                                                  1 = Access to breakpoint and watchpoint registers from external
21060                                                                      debugger is disabled, unless overridden by authentication
21061                                                                      interface. */
21062         uint32_t reserved_18_19        : 2;
21063         uint32_t spme                  : 1;  /**< [ 17: 17](R/W) Secure performance monitors enable. This allows event counting
21064                                                                      in Secure state:
21065                                                                  0 = Event counting prohibited in Secure state, unless overridden
21066                                                                      by the authentication interface.
21067                                                                  1 = Event counting allowed in Secure state. */
21068         uint32_t sdd                   : 1;  /**< [ 16: 16](R/W) AArch64 secure self-hosted invasive debug disable. Disables
21069                                                                      Software debug exceptions in Secure state, other than Software
21070                                                                      breakpoint instruction.
21071                                                                  SDD only applies when both of the following are true:
21072                                                                   The processor is executing in Secure state.
21073                                                                   Secure EL1 is using AArch64.
21074                                                                  0 = Taking Software debug events as debug exceptions is permitted
21075                                                                      from Secure EL0 and EL1, if enabled by the relevant AP_MDSCR_EL1
21076                                                                      and PSTATE[D] flags.
21077                                                                  1 = Software debug events, other than software breakpoint
21078                                                                      instruction debug events, are disabled from all Exception
21079                                                                      levels in Secure state. */
21080         uint32_t reserved_14_15        : 2;
21081         uint32_t nspb                  : 2;  /**< [ 13: 12](R/W) Non-secure profiling buffer. Controls the owning translation regime and accesses to
21082                                                                  Statistical
21083                                                                  Profiling and profiling buffer control registers.
21084                                                                    0x0 = Profiling buffer uses secure virtual addresses. Statistical profiling enabled in
21085                                                                  Secure state and disabled in Non-secure state. Accesses to Statistical profiling and
21086                                                                  Profiling Buffer controls at EL2 and EL1 in both security states generate Trap exceptions
21087                                                                  to EL3.
21088                                                                    0x1 = Profiling buffer uses secure virtual addresses. Statistical profiling enabled in
21089                                                                  Secure state and disabled in Non-secure state. Accesses to Statistical profiling and
21090                                                                  Profiling Buffer controls in Nonsecure state generate Trap exceptions to EL3.
21091                                                                    0x2 = Profiling buffer uses nonsecure virtual addresses. Statistical profiling enabled
21092                                                                  in Non-secure state and disabled in Secure state. Accesses to Statistical Profiling and
21093                                                                  Profiling Buffer controls at EL2 and EL1 in both security states generate Trap exceptions
21094                                                                  to EL3.
21095                                                                    0x3 = Profiling buffer uses nonsecure virtual addresses. Statistical profiling enabled
21096                                                                  in Non-secure state and disabled in secure state. Accesses to Statistical Profiling and
21097                                                                  Profiling Buffer controls at Secure EL1 generate Trap exceptions to EL3.
21098 
21099                                                                  If EL3 is not implemented and the PE executes in Non-secure state, the PE behaves as if
21100                                                                  NSPB = 0x3.
21101                                                                  If EL3 is not implemented and the PE executes in Secure state, the PE behaves as if NSPB
21102                                                                  = 0x1. */
21103         uint32_t reserved_11           : 1;
21104         uint32_t tdosa                 : 1;  /**< [ 10: 10](R/W) Trap debug OS-related register access.
21105                                                                  When this bit is set to 1, any access to the following
21106                                                                      registers from EL2 or below is trapped to EL3:
21107 
21108                                                                  AArch32: DBGOSLAR, DBGOSLSR, DBGOSDLR, DBGPRCR.
21109 
21110                                                                  AArch64: AP_OSLAR_EL1, AP_OSLSR_EL1, AP_OSDLR_EL1, AP_DBGPRCR_EL1.
21111 
21112                                                                  0 = Has no effect on accesses to OS-related debug registers.
21113                                                                  1 = Trap valid accesses to OS-related debug registers to EL3. */
21114         uint32_t tda                   : 1;  /**< [  9:  9](R/W) Trap debug access.
21115                                                                  When this bit is set to 1, any valid nonsecure access to the
21116                                                                      debug registers from EL2 or below, other than the registers
21117                                                                      trapped by the TDRA and TDOSA bits, is trapped to EL3.
21118                                                                  0 = Has no effect on accesses to debug registers.
21119                                                                  1 = Trap valid nonsecure accesses to debug registers to EL3. */
21120         uint32_t reserved_7_8          : 2;
21121         uint32_t tpm                   : 1;  /**< [  6:  6](R/W) Trap Performance Monitors accesses.
21122                                                                  If the Performance Monitors extension is not implemented, this
21123                                                                      field is RES0.
21124                                                                  0 = Has no effect on Performance Monitors accesses.
21125                                                                  1 = Trap nonsecure EL0, EL1 and EL2 accesses to Performance
21126                                                                      Monitors registers that are not unallocated, or trapped to a
21127                                                                      lower Exception level, to EL3. */
21128         uint32_t reserved_0_5          : 6;
21129 #else /* Word 0 - Little Endian */
21130         uint32_t reserved_0_5          : 6;
21131         uint32_t tpm                   : 1;  /**< [  6:  6](R/W) Trap Performance Monitors accesses.
21132                                                                  If the Performance Monitors extension is not implemented, this
21133                                                                      field is RES0.
21134                                                                  0 = Has no effect on Performance Monitors accesses.
21135                                                                  1 = Trap nonsecure EL0, EL1 and EL2 accesses to Performance
21136                                                                      Monitors registers that are not unallocated, or trapped to a
21137                                                                      lower Exception level, to EL3. */
21138         uint32_t reserved_7_8          : 2;
21139         uint32_t tda                   : 1;  /**< [  9:  9](R/W) Trap debug access.
21140                                                                  When this bit is set to 1, any valid nonsecure access to the
21141                                                                      debug registers from EL2 or below, other than the registers
21142                                                                      trapped by the TDRA and TDOSA bits, is trapped to EL3.
21143                                                                  0 = Has no effect on accesses to debug registers.
21144                                                                  1 = Trap valid nonsecure accesses to debug registers to EL3. */
21145         uint32_t tdosa                 : 1;  /**< [ 10: 10](R/W) Trap debug OS-related register access.
21146                                                                  When this bit is set to 1, any access to the following
21147                                                                      registers from EL2 or below is trapped to EL3:
21148 
21149                                                                  AArch32: DBGOSLAR, DBGOSLSR, DBGOSDLR, DBGPRCR.
21150 
21151                                                                  AArch64: AP_OSLAR_EL1, AP_OSLSR_EL1, AP_OSDLR_EL1, AP_DBGPRCR_EL1.
21152 
21153                                                                  0 = Has no effect on accesses to OS-related debug registers.
21154                                                                  1 = Trap valid accesses to OS-related debug registers to EL3. */
21155         uint32_t reserved_11           : 1;
21156         uint32_t nspb                  : 2;  /**< [ 13: 12](R/W) Non-secure profiling buffer. Controls the owning translation regime and accesses to
21157                                                                  Statistical
21158                                                                  Profiling and profiling buffer control registers.
21159                                                                    0x0 = Profiling buffer uses secure virtual addresses. Statistical profiling enabled in
21160                                                                  Secure state and disabled in Non-secure state. Accesses to Statistical profiling and
21161                                                                  Profiling Buffer controls at EL2 and EL1 in both security states generate Trap exceptions
21162                                                                  to EL3.
21163                                                                    0x1 = Profiling buffer uses secure virtual addresses. Statistical profiling enabled in
21164                                                                  Secure state and disabled in Non-secure state. Accesses to Statistical profiling and
21165                                                                  Profiling Buffer controls in Nonsecure state generate Trap exceptions to EL3.
21166                                                                    0x2 = Profiling buffer uses nonsecure virtual addresses. Statistical profiling enabled
21167                                                                  in Non-secure state and disabled in Secure state. Accesses to Statistical Profiling and
21168                                                                  Profiling Buffer controls at EL2 and EL1 in both security states generate Trap exceptions
21169                                                                  to EL3.
21170                                                                    0x3 = Profiling buffer uses nonsecure virtual addresses. Statistical profiling enabled
21171                                                                  in Non-secure state and disabled in secure state. Accesses to Statistical Profiling and
21172                                                                  Profiling Buffer controls at Secure EL1 generate Trap exceptions to EL3.
21173 
21174                                                                  If EL3 is not implemented and the PE executes in Non-secure state, the PE behaves as if
21175                                                                  NSPB = 0x3.
21176                                                                  If EL3 is not implemented and the PE executes in Secure state, the PE behaves as if NSPB
21177                                                                  = 0x1. */
21178         uint32_t reserved_14_15        : 2;
21179         uint32_t sdd                   : 1;  /**< [ 16: 16](R/W) AArch64 secure self-hosted invasive debug disable. Disables
21180                                                                      Software debug exceptions in Secure state, other than Software
21181                                                                      breakpoint instruction.
21182                                                                  SDD only applies when both of the following are true:
21183                                                                   The processor is executing in Secure state.
21184                                                                   Secure EL1 is using AArch64.
21185                                                                  0 = Taking Software debug events as debug exceptions is permitted
21186                                                                      from Secure EL0 and EL1, if enabled by the relevant AP_MDSCR_EL1
21187                                                                      and PSTATE[D] flags.
21188                                                                  1 = Software debug events, other than software breakpoint
21189                                                                      instruction debug events, are disabled from all Exception
21190                                                                      levels in Secure state. */
21191         uint32_t spme                  : 1;  /**< [ 17: 17](R/W) Secure performance monitors enable. This allows event counting
21192                                                                      in Secure state:
21193                                                                  0 = Event counting prohibited in Secure state, unless overridden
21194                                                                      by the authentication interface.
21195                                                                  1 = Event counting allowed in Secure state. */
21196         uint32_t reserved_18_19        : 2;
21197         uint32_t edad                  : 1;  /**< [ 20: 20](R/W) External debugger access to breakpoint and watchpoint
21198                                                                      registers disabled. This disables access to these registers by
21199                                                                      an external debugger:
21200                                                                  0 = Access to breakpoint and watchpoint registers from external
21201                                                                      debugger is permitted.
21202                                                                  1 = Access to breakpoint and watchpoint registers from external
21203                                                                      debugger is disabled, unless overridden by authentication
21204                                                                      interface. */
21205         uint32_t epmad                 : 1;  /**< [ 21: 21](R/W) External debugger access to Performance Monitors registers
21206                                                                      disabled. This disables access to these registers by an
21207                                                                      external debugger:
21208                                                                  0 = Access to Performance Monitors registers from external
21209                                                                      debugger is permitted.
21210                                                                  1 = Access to Performance Monitors registers from external
21211                                                                      debugger is disabled, unless overridden by authentication
21212                                                                      interface. */
21213         uint32_t reserved_22_31        : 10;
21214 #endif /* Word 0 - End */
21215     } s;
21216     struct bdk_ap_mdcr_el3_cn8
21217     {
21218 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21219         uint32_t reserved_22_31        : 10;
21220         uint32_t epmad                 : 1;  /**< [ 21: 21](R/W) External debugger access to Performance Monitors registers
21221                                                                      disabled. This disables access to these registers by an
21222                                                                      external debugger:
21223                                                                  0 = Access to Performance Monitors registers from external
21224                                                                      debugger is permitted.
21225                                                                  1 = Access to Performance Monitors registers from external
21226                                                                      debugger is disabled, unless overridden by authentication
21227                                                                      interface. */
21228         uint32_t edad                  : 1;  /**< [ 20: 20](R/W) External debugger access to breakpoint and watchpoint
21229                                                                      registers disabled. This disables access to these registers by
21230                                                                      an external debugger:
21231                                                                  0 = Access to breakpoint and watchpoint registers from external
21232                                                                      debugger is permitted.
21233                                                                  1 = Access to breakpoint and watchpoint registers from external
21234                                                                      debugger is disabled, unless overridden by authentication
21235                                                                      interface. */
21236         uint32_t reserved_18_19        : 2;
21237         uint32_t spme                  : 1;  /**< [ 17: 17](R/W) Secure performance monitors enable. This allows event counting
21238                                                                      in Secure state:
21239                                                                  0 = Event counting prohibited in Secure state, unless overridden
21240                                                                      by the authentication interface.
21241                                                                  1 = Event counting allowed in Secure state. */
21242         uint32_t sdd                   : 1;  /**< [ 16: 16](R/W) AArch64 secure self-hosted invasive debug disable. Disables
21243                                                                      Software debug exceptions in Secure state, other than Software
21244                                                                      breakpoint instruction.
21245                                                                  SDD only applies when both of the following are true:
21246                                                                   The processor is executing in Secure state.
21247                                                                   Secure EL1 is using AArch64.
21248                                                                  0 = Taking Software debug events as debug exceptions is permitted
21249                                                                      from Secure EL0 and EL1, if enabled by the relevant AP_MDSCR_EL1
21250                                                                      and PSTATE[D] flags.
21251                                                                  1 = Software debug events, other than software breakpoint
21252                                                                      instruction debug events, are disabled from all Exception
21253                                                                      levels in Secure state. */
21254         uint32_t reserved_14_15        : 2;
21255         uint32_t reserved_11_13        : 3;
21256         uint32_t tdosa                 : 1;  /**< [ 10: 10](R/W) Trap debug OS-related register access.
21257                                                                  When this bit is set to 1, any access to the following
21258                                                                      registers from EL2 or below is trapped to EL3:
21259 
21260                                                                  AArch32: DBGOSLAR, DBGOSLSR, DBGOSDLR, DBGPRCR.
21261 
21262                                                                  AArch64: AP_OSLAR_EL1, AP_OSLSR_EL1, AP_OSDLR_EL1, AP_DBGPRCR_EL1.
21263 
21264                                                                  0 = Has no effect on accesses to OS-related debug registers.
21265                                                                  1 = Trap valid accesses to OS-related debug registers to EL3. */
21266         uint32_t tda                   : 1;  /**< [  9:  9](R/W) Trap debug access.
21267                                                                  When this bit is set to 1, any valid nonsecure access to the
21268                                                                      debug registers from EL2 or below, other than the registers
21269                                                                      trapped by the TDRA and TDOSA bits, is trapped to EL3.
21270                                                                  0 = Has no effect on accesses to debug registers.
21271                                                                  1 = Trap valid nonsecure accesses to debug registers to EL3. */
21272         uint32_t reserved_7_8          : 2;
21273         uint32_t tpm                   : 1;  /**< [  6:  6](R/W) Trap Performance Monitors accesses.
21274                                                                  If the Performance Monitors extension is not implemented, this
21275                                                                      field is RES0.
21276                                                                  0 = Has no effect on Performance Monitors accesses.
21277                                                                  1 = Trap nonsecure EL0, EL1 and EL2 accesses to Performance
21278                                                                      Monitors registers that are not unallocated, or trapped to a
21279                                                                      lower Exception level, to EL3. */
21280         uint32_t reserved_0_5          : 6;
21281 #else /* Word 0 - Little Endian */
21282         uint32_t reserved_0_5          : 6;
21283         uint32_t tpm                   : 1;  /**< [  6:  6](R/W) Trap Performance Monitors accesses.
21284                                                                  If the Performance Monitors extension is not implemented, this
21285                                                                      field is RES0.
21286                                                                  0 = Has no effect on Performance Monitors accesses.
21287                                                                  1 = Trap nonsecure EL0, EL1 and EL2 accesses to Performance
21288                                                                      Monitors registers that are not unallocated, or trapped to a
21289                                                                      lower Exception level, to EL3. */
21290         uint32_t reserved_7_8          : 2;
21291         uint32_t tda                   : 1;  /**< [  9:  9](R/W) Trap debug access.
21292                                                                  When this bit is set to 1, any valid nonsecure access to the
21293                                                                      debug registers from EL2 or below, other than the registers
21294                                                                      trapped by the TDRA and TDOSA bits, is trapped to EL3.
21295                                                                  0 = Has no effect on accesses to debug registers.
21296                                                                  1 = Trap valid nonsecure accesses to debug registers to EL3. */
21297         uint32_t tdosa                 : 1;  /**< [ 10: 10](R/W) Trap debug OS-related register access.
21298                                                                  When this bit is set to 1, any access to the following
21299                                                                      registers from EL2 or below is trapped to EL3:
21300 
21301                                                                  AArch32: DBGOSLAR, DBGOSLSR, DBGOSDLR, DBGPRCR.
21302 
21303                                                                  AArch64: AP_OSLAR_EL1, AP_OSLSR_EL1, AP_OSDLR_EL1, AP_DBGPRCR_EL1.
21304 
21305                                                                  0 = Has no effect on accesses to OS-related debug registers.
21306                                                                  1 = Trap valid accesses to OS-related debug registers to EL3. */
21307         uint32_t reserved_11_13        : 3;
21308         uint32_t reserved_14_15        : 2;
21309         uint32_t sdd                   : 1;  /**< [ 16: 16](R/W) AArch64 secure self-hosted invasive debug disable. Disables
21310                                                                      Software debug exceptions in Secure state, other than Software
21311                                                                      breakpoint instruction.
21312                                                                  SDD only applies when both of the following are true:
21313                                                                   The processor is executing in Secure state.
21314                                                                   Secure EL1 is using AArch64.
21315                                                                  0 = Taking Software debug events as debug exceptions is permitted
21316                                                                      from Secure EL0 and EL1, if enabled by the relevant AP_MDSCR_EL1
21317                                                                      and PSTATE[D] flags.
21318                                                                  1 = Software debug events, other than software breakpoint
21319                                                                      instruction debug events, are disabled from all Exception
21320                                                                      levels in Secure state. */
21321         uint32_t spme                  : 1;  /**< [ 17: 17](R/W) Secure performance monitors enable. This allows event counting
21322                                                                      in Secure state:
21323                                                                  0 = Event counting prohibited in Secure state, unless overridden
21324                                                                      by the authentication interface.
21325                                                                  1 = Event counting allowed in Secure state. */
21326         uint32_t reserved_18_19        : 2;
21327         uint32_t edad                  : 1;  /**< [ 20: 20](R/W) External debugger access to breakpoint and watchpoint
21328                                                                      registers disabled. This disables access to these registers by
21329                                                                      an external debugger:
21330                                                                  0 = Access to breakpoint and watchpoint registers from external
21331                                                                      debugger is permitted.
21332                                                                  1 = Access to breakpoint and watchpoint registers from external
21333                                                                      debugger is disabled, unless overridden by authentication
21334                                                                      interface. */
21335         uint32_t epmad                 : 1;  /**< [ 21: 21](R/W) External debugger access to Performance Monitors registers
21336                                                                      disabled. This disables access to these registers by an
21337                                                                      external debugger:
21338                                                                  0 = Access to Performance Monitors registers from external
21339                                                                      debugger is permitted.
21340                                                                  1 = Access to Performance Monitors registers from external
21341                                                                      debugger is disabled, unless overridden by authentication
21342                                                                      interface. */
21343         uint32_t reserved_22_31        : 10;
21344 #endif /* Word 0 - End */
21345     } cn8;
21346     /* struct bdk_ap_mdcr_el3_s cn9; */
21347 };
21348 typedef union bdk_ap_mdcr_el3 bdk_ap_mdcr_el3_t;
21349 
21350 #define BDK_AP_MDCR_EL3 BDK_AP_MDCR_EL3_FUNC()
21351 static inline uint64_t BDK_AP_MDCR_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_MDCR_EL3_FUNC(void)21352 static inline uint64_t BDK_AP_MDCR_EL3_FUNC(void)
21353 {
21354     return 0x30601030100ll;
21355 }
21356 
21357 #define typedef_BDK_AP_MDCR_EL3 bdk_ap_mdcr_el3_t
21358 #define bustype_BDK_AP_MDCR_EL3 BDK_CSR_TYPE_SYSREG
21359 #define basename_BDK_AP_MDCR_EL3 "AP_MDCR_EL3"
21360 #define busnum_BDK_AP_MDCR_EL3 0
21361 #define arguments_BDK_AP_MDCR_EL3 -1,-1,-1,-1
21362 
21363 /**
21364  * Register (SYSREG) ap_mdrar_el1
21365  *
21366  * AP Monitor Debug ROM Address Register
21367  * Defines the base physical address of a 4KB-aligned memory-
21368  *     mapped debug component, usually a ROM table that locates and
21369  *     describes the memory-mapped debug components in the system.
21370  */
21371 union bdk_ap_mdrar_el1
21372 {
21373     uint64_t u;
21374     struct bdk_ap_mdrar_el1_s
21375     {
21376 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21377         uint64_t reserved_48_63        : 16;
21378         uint64_t romaddr               : 36; /**< [ 47: 12](RO) Bits[P-1:12] of the ROM table physical address, where P is the
21379                                                                      physical address size in bits (up to 48 bits) as stored in
21380                                                                      AP_ID_AA64MMFR0_EL1. If P is less than 48, bits[47:P] of this
21381                                                                      register are RES0.
21382 
21383                                                                  Bits [11:0] of the ROM table physical address are zero.
21384 
21385                                                                  If EL3 is implemented, ROMADDR is an address in nonsecure
21386                                                                      memory. Whether the ROM table is also accessible in Secure
21387                                                                      memory is implementation defined. */
21388         uint64_t reserved_2_11         : 10;
21389         uint64_t valid                 : 2;  /**< [  1:  0](RO) This field indicates whether the ROM Table address is valid.
21390 
21391                                                                  0x0 = ROM Table address is not valid
21392                                                                  0x3 = ROM Table address is valid. */
21393 #else /* Word 0 - Little Endian */
21394         uint64_t valid                 : 2;  /**< [  1:  0](RO) This field indicates whether the ROM Table address is valid.
21395 
21396                                                                  0x0 = ROM Table address is not valid
21397                                                                  0x3 = ROM Table address is valid. */
21398         uint64_t reserved_2_11         : 10;
21399         uint64_t romaddr               : 36; /**< [ 47: 12](RO) Bits[P-1:12] of the ROM table physical address, where P is the
21400                                                                      physical address size in bits (up to 48 bits) as stored in
21401                                                                      AP_ID_AA64MMFR0_EL1. If P is less than 48, bits[47:P] of this
21402                                                                      register are RES0.
21403 
21404                                                                  Bits [11:0] of the ROM table physical address are zero.
21405 
21406                                                                  If EL3 is implemented, ROMADDR is an address in nonsecure
21407                                                                      memory. Whether the ROM table is also accessible in Secure
21408                                                                      memory is implementation defined. */
21409         uint64_t reserved_48_63        : 16;
21410 #endif /* Word 0 - End */
21411     } s;
21412     /* struct bdk_ap_mdrar_el1_s cn; */
21413 };
21414 typedef union bdk_ap_mdrar_el1 bdk_ap_mdrar_el1_t;
21415 
21416 #define BDK_AP_MDRAR_EL1 BDK_AP_MDRAR_EL1_FUNC()
21417 static inline uint64_t BDK_AP_MDRAR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_MDRAR_EL1_FUNC(void)21418 static inline uint64_t BDK_AP_MDRAR_EL1_FUNC(void)
21419 {
21420     return 0x20001000000ll;
21421 }
21422 
21423 #define typedef_BDK_AP_MDRAR_EL1 bdk_ap_mdrar_el1_t
21424 #define bustype_BDK_AP_MDRAR_EL1 BDK_CSR_TYPE_SYSREG
21425 #define basename_BDK_AP_MDRAR_EL1 "AP_MDRAR_EL1"
21426 #define busnum_BDK_AP_MDRAR_EL1 0
21427 #define arguments_BDK_AP_MDRAR_EL1 -1,-1,-1,-1
21428 
21429 /**
21430  * Register (SYSREG) ap_mdscr_el1
21431  *
21432  * AP Monitor Debug System Control Register
21433  * Main control register for the debug implementation.
21434  */
21435 union bdk_ap_mdscr_el1
21436 {
21437     uint32_t u;
21438     struct bdk_ap_mdscr_el1_s
21439     {
21440 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21441         uint32_t reserved_31           : 1;
21442         uint32_t rxfull                : 1;  /**< [ 30: 30](R/W) Used for save/restore of EDSCR[RXfull].
21443                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21444                                                                      is RO, and software must treat it as UNK/SBZP.
21445 
21446                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21447                                                                      RW. */
21448         uint32_t txfull                : 1;  /**< [ 29: 29](R/W) Used for save/restore of EDSCR[TXfull].
21449                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21450                                                                      is RO, and software must treat it as UNK/SBZP.
21451 
21452                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21453                                                                      RW. */
21454         uint32_t reserved_28           : 1;
21455         uint32_t rxo                   : 1;  /**< [ 27: 27](R/W) Used for save/restore of EDSCR[RXO].
21456                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21457                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21458                                                                      policy for writes.
21459 
21460                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21461                                                                      RW. */
21462         uint32_t txu                   : 1;  /**< [ 26: 26](R/W) Used for save/restore of EDSCR[TXU].
21463                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21464                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21465                                                                      policy for writes.
21466 
21467                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21468                                                                      RW. */
21469         uint32_t reserved_24_25        : 2;
21470         uint32_t intdis                : 2;  /**< [ 23: 22](R/W) Used for save/restore of EDSCR[INTdis].
21471                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this field
21472                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21473                                                                      policy for writes.
21474 
21475                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this field
21476                                                                      is RW. */
21477         uint32_t tda                   : 1;  /**< [ 21: 21](R/W) Used for save/restore of EDSCR[TDA].
21478                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21479                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21480                                                                      policy for writes.
21481 
21482                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21483                                                                      RW. */
21484         uint32_t reserved_20           : 1;
21485         uint32_t sc2                   : 1;  /**< [ 19: 19](R/W) Used for save/restore of EDSCR[SC2].
21486 
21487                                                                  When AP_OSLSR_EL1[OSLK] = 0 (the OS lock is unlocked), this bit is
21488                                                                  read-only. Software must treat it as unknown and use an SBZP policy for writes.
21489 
21490                                                                  When AP_OSLSR_EL1[OSLK] = 1 (the OS lock is locked), this bit is R/W. */
21491         uint32_t reserved_16_18        : 3;
21492         uint32_t mde                   : 1;  /**< [ 15: 15](R/W) Monitor debug events. Enable Breakpoint, Watchpoint, and
21493                                                                      Vector catch debug exceptions.
21494                                                                  0 = Breakpoint, Watchpoint, and Vector catch debug exceptions
21495                                                                      disabled.
21496                                                                  1 = Breakpoint, Watchpoint, and Vector catch debug exceptions
21497                                                                      enabled. */
21498         uint32_t hde                   : 1;  /**< [ 14: 14](R/W) Used for save/restore of EDSCR[HDE].
21499 
21500                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21501                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21502                                                                      policy for writes.
21503 
21504                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21505                                                                      RW. */
21506         uint32_t kde                   : 1;  /**< [ 13: 13](R/W) Local (kernel) debug enable. If EL{d} is using
21507                                                                      AArch64, enable Software debug events within EL{d}.
21508 
21509                                                                  RES0 if EL{d} is using AArch32.
21510                                                                  0 = Software debug events, other than Software breakpoint
21511                                                                      instructions, disabled within EL{d}.
21512                                                                  1 = Software debug events enabled within EL{d}. */
21513         uint32_t tdcc                  : 1;  /**< [ 12: 12](R/W) Trap Debug Communications Channel access. When set, any EL0
21514                                                                      access to the following registers is trapped to EL1:
21515 
21516                                                                  AArch32: DBGDIDR, DBGDRAR, DBGDSAR, DBGDSCRint, DBGDTRTXint,
21517                                                                      DBGDTRRXint.
21518 
21519                                                                  AArch64: AP_MDCCSR_EL0, AP_DBGDTR_EL0, AP_DBGDTRTX_EL0, AP_DBGDTRRX_EL0. */
21520         uint32_t reserved_7_11         : 5;
21521         uint32_t err                   : 1;  /**< [  6:  6](R/W) Used for save/restore of EDSCR[ERR].
21522 
21523                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21524                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21525                                                                      policy for writes.
21526 
21527                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21528                                                                      RW. */
21529         uint32_t reserved_1_5          : 5;
21530         uint32_t ss                    : 1;  /**< [  0:  0](R/W) Software step control bit. If EL{d} is using AArch64,
21531                                                                      enable Software step.
21532                                                                  RES0 if EL{d} is using AArch32.
21533                                                                  0 = Software step disabled
21534                                                                  1 = Software step enabled. */
21535 #else /* Word 0 - Little Endian */
21536         uint32_t ss                    : 1;  /**< [  0:  0](R/W) Software step control bit. If EL{d} is using AArch64,
21537                                                                      enable Software step.
21538                                                                  RES0 if EL{d} is using AArch32.
21539                                                                  0 = Software step disabled
21540                                                                  1 = Software step enabled. */
21541         uint32_t reserved_1_5          : 5;
21542         uint32_t err                   : 1;  /**< [  6:  6](R/W) Used for save/restore of EDSCR[ERR].
21543 
21544                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21545                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21546                                                                      policy for writes.
21547 
21548                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21549                                                                      RW. */
21550         uint32_t reserved_7_11         : 5;
21551         uint32_t tdcc                  : 1;  /**< [ 12: 12](R/W) Trap Debug Communications Channel access. When set, any EL0
21552                                                                      access to the following registers is trapped to EL1:
21553 
21554                                                                  AArch32: DBGDIDR, DBGDRAR, DBGDSAR, DBGDSCRint, DBGDTRTXint,
21555                                                                      DBGDTRRXint.
21556 
21557                                                                  AArch64: AP_MDCCSR_EL0, AP_DBGDTR_EL0, AP_DBGDTRTX_EL0, AP_DBGDTRRX_EL0. */
21558         uint32_t kde                   : 1;  /**< [ 13: 13](R/W) Local (kernel) debug enable. If EL{d} is using
21559                                                                      AArch64, enable Software debug events within EL{d}.
21560 
21561                                                                  RES0 if EL{d} is using AArch32.
21562                                                                  0 = Software debug events, other than Software breakpoint
21563                                                                      instructions, disabled within EL{d}.
21564                                                                  1 = Software debug events enabled within EL{d}. */
21565         uint32_t hde                   : 1;  /**< [ 14: 14](R/W) Used for save/restore of EDSCR[HDE].
21566 
21567                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21568                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21569                                                                      policy for writes.
21570 
21571                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21572                                                                      RW. */
21573         uint32_t mde                   : 1;  /**< [ 15: 15](R/W) Monitor debug events. Enable Breakpoint, Watchpoint, and
21574                                                                      Vector catch debug exceptions.
21575                                                                  0 = Breakpoint, Watchpoint, and Vector catch debug exceptions
21576                                                                      disabled.
21577                                                                  1 = Breakpoint, Watchpoint, and Vector catch debug exceptions
21578                                                                      enabled. */
21579         uint32_t reserved_16_18        : 3;
21580         uint32_t sc2                   : 1;  /**< [ 19: 19](R/W) Used for save/restore of EDSCR[SC2].
21581 
21582                                                                  When AP_OSLSR_EL1[OSLK] = 0 (the OS lock is unlocked), this bit is
21583                                                                  read-only. Software must treat it as unknown and use an SBZP policy for writes.
21584 
21585                                                                  When AP_OSLSR_EL1[OSLK] = 1 (the OS lock is locked), this bit is R/W. */
21586         uint32_t reserved_20           : 1;
21587         uint32_t tda                   : 1;  /**< [ 21: 21](R/W) Used for save/restore of EDSCR[TDA].
21588                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21589                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21590                                                                      policy for writes.
21591 
21592                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21593                                                                      RW. */
21594         uint32_t intdis                : 2;  /**< [ 23: 22](R/W) Used for save/restore of EDSCR[INTdis].
21595                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this field
21596                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21597                                                                      policy for writes.
21598 
21599                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this field
21600                                                                      is RW. */
21601         uint32_t reserved_24_25        : 2;
21602         uint32_t txu                   : 1;  /**< [ 26: 26](R/W) Used for save/restore of EDSCR[TXU].
21603                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21604                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21605                                                                      policy for writes.
21606 
21607                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21608                                                                      RW. */
21609         uint32_t rxo                   : 1;  /**< [ 27: 27](R/W) Used for save/restore of EDSCR[RXO].
21610                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21611                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21612                                                                      policy for writes.
21613 
21614                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21615                                                                      RW. */
21616         uint32_t reserved_28           : 1;
21617         uint32_t txfull                : 1;  /**< [ 29: 29](R/W) Used for save/restore of EDSCR[TXfull].
21618                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21619                                                                      is RO, and software must treat it as UNK/SBZP.
21620 
21621                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21622                                                                      RW. */
21623         uint32_t rxfull                : 1;  /**< [ 30: 30](R/W) Used for save/restore of EDSCR[RXfull].
21624                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21625                                                                      is RO, and software must treat it as UNK/SBZP.
21626 
21627                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21628                                                                      RW. */
21629         uint32_t reserved_31           : 1;
21630 #endif /* Word 0 - End */
21631     } s;
21632     struct bdk_ap_mdscr_el1_cn88xxp1
21633     {
21634 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21635         uint32_t reserved_31           : 1;
21636         uint32_t rxfull                : 1;  /**< [ 30: 30](R/W) Used for save/restore of EDSCR[RXfull].
21637                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21638                                                                      is RO, and software must treat it as UNK/SBZP.
21639 
21640                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21641                                                                      RW. */
21642         uint32_t txfull                : 1;  /**< [ 29: 29](R/W) Used for save/restore of EDSCR[TXfull].
21643                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21644                                                                      is RO, and software must treat it as UNK/SBZP.
21645 
21646                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21647                                                                      RW. */
21648         uint32_t reserved_28           : 1;
21649         uint32_t rxo                   : 1;  /**< [ 27: 27](R/W) Used for save/restore of EDSCR[RXO].
21650                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21651                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21652                                                                      policy for writes.
21653 
21654                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21655                                                                      RW. */
21656         uint32_t txu                   : 1;  /**< [ 26: 26](R/W) Used for save/restore of EDSCR[TXU].
21657                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21658                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21659                                                                      policy for writes.
21660 
21661                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21662                                                                      RW. */
21663         uint32_t reserved_24_25        : 2;
21664         uint32_t intdis                : 2;  /**< [ 23: 22](R/W) Used for save/restore of EDSCR[INTdis].
21665                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this field
21666                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21667                                                                      policy for writes.
21668 
21669                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this field
21670                                                                      is RW. */
21671         uint32_t tda                   : 1;  /**< [ 21: 21](R/W) Used for save/restore of EDSCR[TDA].
21672                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21673                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21674                                                                      policy for writes.
21675 
21676                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21677                                                                      RW. */
21678         uint32_t reserved_20           : 1;
21679         uint32_t reserved_19           : 1;
21680         uint32_t reserved_16_18        : 3;
21681         uint32_t mde                   : 1;  /**< [ 15: 15](R/W) Monitor debug events. Enable Breakpoint, Watchpoint, and
21682                                                                      Vector catch debug exceptions.
21683                                                                  0 = Breakpoint, Watchpoint, and Vector catch debug exceptions
21684                                                                      disabled.
21685                                                                  1 = Breakpoint, Watchpoint, and Vector catch debug exceptions
21686                                                                      enabled. */
21687         uint32_t hde                   : 1;  /**< [ 14: 14](R/W) Used for save/restore of EDSCR[HDE].
21688 
21689                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21690                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21691                                                                      policy for writes.
21692 
21693                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21694                                                                      RW. */
21695         uint32_t kde                   : 1;  /**< [ 13: 13](R/W) Local (kernel) debug enable. If EL{d} is using
21696                                                                      AArch64, enable Software debug events within EL{d}.
21697 
21698                                                                  RES0 if EL{d} is using AArch32.
21699                                                                  0 = Software debug events, other than Software breakpoint
21700                                                                      instructions, disabled within EL{d}.
21701                                                                  1 = Software debug events enabled within EL{d}. */
21702         uint32_t tdcc                  : 1;  /**< [ 12: 12](R/W) Trap Debug Communications Channel access. When set, any EL0
21703                                                                      access to the following registers is trapped to EL1:
21704 
21705                                                                  AArch32: DBGDIDR, DBGDRAR, DBGDSAR, DBGDSCRint, DBGDTRTXint,
21706                                                                      DBGDTRRXint.
21707 
21708                                                                  AArch64: AP_MDCCSR_EL0, AP_DBGDTR_EL0, AP_DBGDTRTX_EL0, AP_DBGDTRRX_EL0. */
21709         uint32_t reserved_7_11         : 5;
21710         uint32_t err                   : 1;  /**< [  6:  6](R/W) Used for save/restore of EDSCR[ERR].
21711 
21712                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21713                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21714                                                                      policy for writes.
21715 
21716                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21717                                                                      RW. */
21718         uint32_t reserved_1_5          : 5;
21719         uint32_t ss                    : 1;  /**< [  0:  0](R/W) Software step control bit. If EL{d} is using AArch64,
21720                                                                      enable Software step.
21721                                                                  RES0 if EL{d} is using AArch32.
21722                                                                  0 = Software step disabled
21723                                                                  1 = Software step enabled. */
21724 #else /* Word 0 - Little Endian */
21725         uint32_t ss                    : 1;  /**< [  0:  0](R/W) Software step control bit. If EL{d} is using AArch64,
21726                                                                      enable Software step.
21727                                                                  RES0 if EL{d} is using AArch32.
21728                                                                  0 = Software step disabled
21729                                                                  1 = Software step enabled. */
21730         uint32_t reserved_1_5          : 5;
21731         uint32_t err                   : 1;  /**< [  6:  6](R/W) Used for save/restore of EDSCR[ERR].
21732 
21733                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21734                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21735                                                                      policy for writes.
21736 
21737                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21738                                                                      RW. */
21739         uint32_t reserved_7_11         : 5;
21740         uint32_t tdcc                  : 1;  /**< [ 12: 12](R/W) Trap Debug Communications Channel access. When set, any EL0
21741                                                                      access to the following registers is trapped to EL1:
21742 
21743                                                                  AArch32: DBGDIDR, DBGDRAR, DBGDSAR, DBGDSCRint, DBGDTRTXint,
21744                                                                      DBGDTRRXint.
21745 
21746                                                                  AArch64: AP_MDCCSR_EL0, AP_DBGDTR_EL0, AP_DBGDTRTX_EL0, AP_DBGDTRRX_EL0. */
21747         uint32_t kde                   : 1;  /**< [ 13: 13](R/W) Local (kernel) debug enable. If EL{d} is using
21748                                                                      AArch64, enable Software debug events within EL{d}.
21749 
21750                                                                  RES0 if EL{d} is using AArch32.
21751                                                                  0 = Software debug events, other than Software breakpoint
21752                                                                      instructions, disabled within EL{d}.
21753                                                                  1 = Software debug events enabled within EL{d}. */
21754         uint32_t hde                   : 1;  /**< [ 14: 14](R/W) Used for save/restore of EDSCR[HDE].
21755 
21756                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21757                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21758                                                                      policy for writes.
21759 
21760                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21761                                                                      RW. */
21762         uint32_t mde                   : 1;  /**< [ 15: 15](R/W) Monitor debug events. Enable Breakpoint, Watchpoint, and
21763                                                                      Vector catch debug exceptions.
21764                                                                  0 = Breakpoint, Watchpoint, and Vector catch debug exceptions
21765                                                                      disabled.
21766                                                                  1 = Breakpoint, Watchpoint, and Vector catch debug exceptions
21767                                                                      enabled. */
21768         uint32_t reserved_16_18        : 3;
21769         uint32_t reserved_19           : 1;
21770         uint32_t reserved_20           : 1;
21771         uint32_t tda                   : 1;  /**< [ 21: 21](R/W) Used for save/restore of EDSCR[TDA].
21772                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21773                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21774                                                                      policy for writes.
21775 
21776                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21777                                                                      RW. */
21778         uint32_t intdis                : 2;  /**< [ 23: 22](R/W) Used for save/restore of EDSCR[INTdis].
21779                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this field
21780                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21781                                                                      policy for writes.
21782 
21783                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this field
21784                                                                      is RW. */
21785         uint32_t reserved_24_25        : 2;
21786         uint32_t txu                   : 1;  /**< [ 26: 26](R/W) Used for save/restore of EDSCR[TXU].
21787                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21788                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21789                                                                      policy for writes.
21790 
21791                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21792                                                                      RW. */
21793         uint32_t rxo                   : 1;  /**< [ 27: 27](R/W) Used for save/restore of EDSCR[RXO].
21794                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21795                                                                      is RO. Software must treat it as UNKNOWN and use an SBZP
21796                                                                      policy for writes.
21797 
21798                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21799                                                                      RW. */
21800         uint32_t reserved_28           : 1;
21801         uint32_t txfull                : 1;  /**< [ 29: 29](R/W) Used for save/restore of EDSCR[TXfull].
21802                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21803                                                                      is RO, and software must treat it as UNK/SBZP.
21804 
21805                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21806                                                                      RW. */
21807         uint32_t rxfull                : 1;  /**< [ 30: 30](R/W) Used for save/restore of EDSCR[RXfull].
21808                                                                  When AP_OSLSR_EL1[OSLK] == 0 (the OS lock is unlocked), this bit
21809                                                                      is RO, and software must treat it as UNK/SBZP.
21810 
21811                                                                  When AP_OSLSR_EL1[OSLK] == 1 (the OS lock is locked), this bit is
21812                                                                      RW. */
21813         uint32_t reserved_31           : 1;
21814 #endif /* Word 0 - End */
21815     } cn88xxp1;
21816     /* struct bdk_ap_mdscr_el1_s cn9; */
21817     /* struct bdk_ap_mdscr_el1_s cn81xx; */
21818     /* struct bdk_ap_mdscr_el1_s cn83xx; */
21819     /* struct bdk_ap_mdscr_el1_s cn88xxp2; */
21820 };
21821 typedef union bdk_ap_mdscr_el1 bdk_ap_mdscr_el1_t;
21822 
21823 #define BDK_AP_MDSCR_EL1 BDK_AP_MDSCR_EL1_FUNC()
21824 static inline uint64_t BDK_AP_MDSCR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_MDSCR_EL1_FUNC(void)21825 static inline uint64_t BDK_AP_MDSCR_EL1_FUNC(void)
21826 {
21827     return 0x20000020200ll;
21828 }
21829 
21830 #define typedef_BDK_AP_MDSCR_EL1 bdk_ap_mdscr_el1_t
21831 #define bustype_BDK_AP_MDSCR_EL1 BDK_CSR_TYPE_SYSREG
21832 #define basename_BDK_AP_MDSCR_EL1 "AP_MDSCR_EL1"
21833 #define busnum_BDK_AP_MDSCR_EL1 0
21834 #define arguments_BDK_AP_MDSCR_EL1 -1,-1,-1,-1
21835 
21836 /**
21837  * Register (SYSREG) ap_midr_el1
21838  *
21839  * AP Main ID Register
21840  * This register provides identification information for the PE, including an
21841  * implementer code for the device and a device ID number.
21842  */
21843 union bdk_ap_midr_el1
21844 {
21845     uint32_t u;
21846     struct bdk_ap_midr_el1_s
21847     {
21848 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21849         uint32_t implementer           : 8;  /**< [ 31: 24](RO) Implementer code that has been assigned by ARM. Assigned codes include the
21850                                                                  following:
21851                                                                  0x41 = 'A' = ARM Limited.
21852                                                                  0x42 = 'B' = Broadcom Corporation.
21853                                                                  0x43 = 'C' = Cavium Inc.
21854                                                                  0x44 = 'D' = Digital Equipment Corporation.
21855                                                                  0x49 = 'I' = Infineon Technologies AG.
21856                                                                  0x4D = 'M' = Motorola or Freescale Semiconductor Inc.
21857                                                                  0x4E = 'N' = NVIDIA Corporation.
21858                                                                  0x50 = 'P' = Applied Micro Circuits Corporation.
21859                                                                  0x51 = 'Q' = Qualcomm Inc.
21860                                                                  0x56 = 'V' = Marvell International Ltd.
21861                                                                  0x69 = 'i' = Intel Corporation.
21862 
21863                                                                  For CNXXXX, 'C'. */
21864         uint32_t variant               : 4;  /**< [ 23: 20](RO) An implementation defined variant number. Typically, this
21865                                                                      field is used to distinguish between different product
21866                                                                      variants, or major revisions of a product.
21867 
21868                                                                  For CNXXXX this is the major revision field.
21869                                                                  See MIO_FUS_DAT2[CHIP_ID] bits 21..19 for more information. */
21870         uint32_t architecture          : 4;  /**< [ 19: 16](RO) 0x1 = ARMv4.
21871                                                                  0x2 = ARMv4T.
21872                                                                  0x3 = ARMv5 (obsolete).
21873                                                                  0x4 = ARMv5T.
21874                                                                  0x5 = ARMv5TE.
21875                                                                  0x6 = ARMv5TEJ.
21876                                                                  0x7 = ARMv6.
21877                                                                  0xF = Defined by CPUID scheme.
21878 
21879                                                                  For CNXXXX, CPUID scheme. */
21880         uint32_t partnum               : 12; /**< [ 15:  4](RO) An implementation defined primary part number for the device.
21881                                                                  On processors implemented by ARM, if the top four bits of the
21882                                                                      primary part number are 0x00x7.
21883                                                                  Processors implemented by ARM have an Implementer code of 0x41.
21884 
21885                                                                  For CNXXXX, the chip ID. Enumerated by PCC_PROD_E. */
21886         uint32_t revision              : 4;  /**< [  3:  0](RO) An implementation defined revision number for the device.
21887 
21888                                                                  For CNXXXX this is the minor revision field.
21889                                                                  See MIO_FUS_DAT2[CHIP_ID] bits 18..16 for more information. */
21890 #else /* Word 0 - Little Endian */
21891         uint32_t revision              : 4;  /**< [  3:  0](RO) An implementation defined revision number for the device.
21892 
21893                                                                  For CNXXXX this is the minor revision field.
21894                                                                  See MIO_FUS_DAT2[CHIP_ID] bits 18..16 for more information. */
21895         uint32_t partnum               : 12; /**< [ 15:  4](RO) An implementation defined primary part number for the device.
21896                                                                  On processors implemented by ARM, if the top four bits of the
21897                                                                      primary part number are 0x00x7.
21898                                                                  Processors implemented by ARM have an Implementer code of 0x41.
21899 
21900                                                                  For CNXXXX, the chip ID. Enumerated by PCC_PROD_E. */
21901         uint32_t architecture          : 4;  /**< [ 19: 16](RO) 0x1 = ARMv4.
21902                                                                  0x2 = ARMv4T.
21903                                                                  0x3 = ARMv5 (obsolete).
21904                                                                  0x4 = ARMv5T.
21905                                                                  0x5 = ARMv5TE.
21906                                                                  0x6 = ARMv5TEJ.
21907                                                                  0x7 = ARMv6.
21908                                                                  0xF = Defined by CPUID scheme.
21909 
21910                                                                  For CNXXXX, CPUID scheme. */
21911         uint32_t variant               : 4;  /**< [ 23: 20](RO) An implementation defined variant number. Typically, this
21912                                                                      field is used to distinguish between different product
21913                                                                      variants, or major revisions of a product.
21914 
21915                                                                  For CNXXXX this is the major revision field.
21916                                                                  See MIO_FUS_DAT2[CHIP_ID] bits 21..19 for more information. */
21917         uint32_t implementer           : 8;  /**< [ 31: 24](RO) Implementer code that has been assigned by ARM. Assigned codes include the
21918                                                                  following:
21919                                                                  0x41 = 'A' = ARM Limited.
21920                                                                  0x42 = 'B' = Broadcom Corporation.
21921                                                                  0x43 = 'C' = Cavium Inc.
21922                                                                  0x44 = 'D' = Digital Equipment Corporation.
21923                                                                  0x49 = 'I' = Infineon Technologies AG.
21924                                                                  0x4D = 'M' = Motorola or Freescale Semiconductor Inc.
21925                                                                  0x4E = 'N' = NVIDIA Corporation.
21926                                                                  0x50 = 'P' = Applied Micro Circuits Corporation.
21927                                                                  0x51 = 'Q' = Qualcomm Inc.
21928                                                                  0x56 = 'V' = Marvell International Ltd.
21929                                                                  0x69 = 'i' = Intel Corporation.
21930 
21931                                                                  For CNXXXX, 'C'. */
21932 #endif /* Word 0 - End */
21933     } s;
21934     /* struct bdk_ap_midr_el1_s cn; */
21935 };
21936 typedef union bdk_ap_midr_el1 bdk_ap_midr_el1_t;
21937 
21938 #define BDK_AP_MIDR_EL1 BDK_AP_MIDR_EL1_FUNC()
21939 static inline uint64_t BDK_AP_MIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_MIDR_EL1_FUNC(void)21940 static inline uint64_t BDK_AP_MIDR_EL1_FUNC(void)
21941 {
21942     return 0x30000000000ll;
21943 }
21944 
21945 #define typedef_BDK_AP_MIDR_EL1 bdk_ap_midr_el1_t
21946 #define bustype_BDK_AP_MIDR_EL1 BDK_CSR_TYPE_SYSREG
21947 #define basename_BDK_AP_MIDR_EL1 "AP_MIDR_EL1"
21948 #define busnum_BDK_AP_MIDR_EL1 0
21949 #define arguments_BDK_AP_MIDR_EL1 -1,-1,-1,-1
21950 
21951 /**
21952  * Register (SYSREG) ap_mpidr_el1
21953  *
21954  * AP Multiprocessor Affinity Register
21955  * This register in a multiprocessor system provides an additional PE identification
21956  * mechanism for scheduling purposes, and indicates whether the implementation includes
21957  * the multiprocessing extensions.
21958  */
21959 union bdk_ap_mpidr_el1
21960 {
21961     uint64_t u;
21962     struct bdk_ap_mpidr_el1_s
21963     {
21964 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21965         uint64_t reserved_40_63        : 24;
21966         uint64_t aff3                  : 8;  /**< [ 39: 32](RO) Affinity level 3. Highest level affinity field.
21967 
21968                                                                  Always zero on CNXXXX. */
21969         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
21970         uint64_t u                     : 1;  /**< [ 30: 30](RO) Indicates a uniprocessor system, as distinct from PE 0 in a
21971                                                                      multiprocessor system.
21972                                                                  0 = Processor is part of a multiprocessor system.
21973                                                                  1 = Processor is part of a uniprocessor system. */
21974         uint64_t reserved_25_29        : 5;
21975         uint64_t mt                    : 1;  /**< [ 24: 24](RO) Indicates whether the lowest level of affinity consists of
21976                                                                      logical PEs that are implemented using a multi-threading type
21977                                                                      approach.
21978                                                                  0 = Performance of PEs at the lowest affinity level is largely
21979                                                                      independent.
21980                                                                  1 = Performance of PEs at the lowest affinity level is very
21981                                                                      interdependent. */
21982         uint64_t aff2                  : 8;  /**< [ 23: 16](RO) Affinity level 2. Second highest level affinity field.
21983 
21984                                                                  For CNXXXX, the socket number. */
21985         uint64_t aff1                  : 8;  /**< [ 15:  8](RO) Affinity level 1. Third highest level affinity field.
21986 
21987                                                                  For CNXXXX the processor number upper 2 bits. */
21988         uint64_t aff0                  : 8;  /**< [  7:  0](RO) Affinity level 0. Lowest level affinity field.
21989                                                                  WARNING: The GIC register ICC_SGI{0,1}R_EL1 limits this
21990                                                                  to 0-15 as its a 16 bit mask.
21991 
21992                                                                  For CNXXXX the processor number lower 4 bits. */
21993 #else /* Word 0 - Little Endian */
21994         uint64_t aff0                  : 8;  /**< [  7:  0](RO) Affinity level 0. Lowest level affinity field.
21995                                                                  WARNING: The GIC register ICC_SGI{0,1}R_EL1 limits this
21996                                                                  to 0-15 as its a 16 bit mask.
21997 
21998                                                                  For CNXXXX the processor number lower 4 bits. */
21999         uint64_t aff1                  : 8;  /**< [ 15:  8](RO) Affinity level 1. Third highest level affinity field.
22000 
22001                                                                  For CNXXXX the processor number upper 2 bits. */
22002         uint64_t aff2                  : 8;  /**< [ 23: 16](RO) Affinity level 2. Second highest level affinity field.
22003 
22004                                                                  For CNXXXX, the socket number. */
22005         uint64_t mt                    : 1;  /**< [ 24: 24](RO) Indicates whether the lowest level of affinity consists of
22006                                                                      logical PEs that are implemented using a multi-threading type
22007                                                                      approach.
22008                                                                  0 = Performance of PEs at the lowest affinity level is largely
22009                                                                      independent.
22010                                                                  1 = Performance of PEs at the lowest affinity level is very
22011                                                                      interdependent. */
22012         uint64_t reserved_25_29        : 5;
22013         uint64_t u                     : 1;  /**< [ 30: 30](RO) Indicates a uniprocessor system, as distinct from PE 0 in a
22014                                                                      multiprocessor system.
22015                                                                  0 = Processor is part of a multiprocessor system.
22016                                                                  1 = Processor is part of a uniprocessor system. */
22017         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
22018         uint64_t aff3                  : 8;  /**< [ 39: 32](RO) Affinity level 3. Highest level affinity field.
22019 
22020                                                                  Always zero on CNXXXX. */
22021         uint64_t reserved_40_63        : 24;
22022 #endif /* Word 0 - End */
22023     } s;
22024     /* struct bdk_ap_mpidr_el1_s cn8; */
22025     struct bdk_ap_mpidr_el1_cn9
22026     {
22027 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22028         uint64_t reserved_40_63        : 24;
22029         uint64_t aff3                  : 8;  /**< [ 39: 32](RO) Affinity level 3. Highest level affinity field.
22030 
22031                                                                  Always zero on CNXXXX. */
22032         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
22033         uint64_t u                     : 1;  /**< [ 30: 30](RO) Indicates a uniprocessor system, as distinct from PE 0 in a
22034                                                                      multiprocessor system.
22035                                                                  0 = Processor is part of a multiprocessor system.
22036                                                                  1 = Processor is part of a uniprocessor system. */
22037         uint64_t reserved_25_29        : 5;
22038         uint64_t mt                    : 1;  /**< [ 24: 24](RO) Indicates whether the lowest level of affinity consists of
22039                                                                      logical PEs that are implemented using a multi-threading type
22040                                                                      approach.
22041                                                                  0 = Performance of PEs at the lowest affinity level is largely
22042                                                                      independent.
22043                                                                  1 = Performance of PEs at the lowest affinity level is very
22044                                                                      interdependent. */
22045         uint64_t aff2                  : 8;  /**< [ 23: 16](RO) Affinity level 2. Second highest level affinity field.
22046 
22047                                                                  For CNXXXX, the socket number. */
22048         uint64_t aff1                  : 8;  /**< [ 15:  8](RO) Affinity level 1. Third highest level affinity field.
22049 
22050                                                                  For CN93XX the processor number lower 2 bits. */
22051         uint64_t aff0                  : 8;  /**< [  7:  0](RO) Affinity level 0. Lowest level affinity field.
22052                                                                  WARNING: The GIC register ICC_SGI{0,1}R_EL1 limits this
22053                                                                  to 0-15 as its a 16 bit mask.
22054 
22055                                                                  For CN93XX the processor number upper 3 bits. */
22056 #else /* Word 0 - Little Endian */
22057         uint64_t aff0                  : 8;  /**< [  7:  0](RO) Affinity level 0. Lowest level affinity field.
22058                                                                  WARNING: The GIC register ICC_SGI{0,1}R_EL1 limits this
22059                                                                  to 0-15 as its a 16 bit mask.
22060 
22061                                                                  For CN93XX the processor number upper 3 bits. */
22062         uint64_t aff1                  : 8;  /**< [ 15:  8](RO) Affinity level 1. Third highest level affinity field.
22063 
22064                                                                  For CN93XX the processor number lower 2 bits. */
22065         uint64_t aff2                  : 8;  /**< [ 23: 16](RO) Affinity level 2. Second highest level affinity field.
22066 
22067                                                                  For CNXXXX, the socket number. */
22068         uint64_t mt                    : 1;  /**< [ 24: 24](RO) Indicates whether the lowest level of affinity consists of
22069                                                                      logical PEs that are implemented using a multi-threading type
22070                                                                      approach.
22071                                                                  0 = Performance of PEs at the lowest affinity level is largely
22072                                                                      independent.
22073                                                                  1 = Performance of PEs at the lowest affinity level is very
22074                                                                      interdependent. */
22075         uint64_t reserved_25_29        : 5;
22076         uint64_t u                     : 1;  /**< [ 30: 30](RO) Indicates a uniprocessor system, as distinct from PE 0 in a
22077                                                                      multiprocessor system.
22078                                                                  0 = Processor is part of a multiprocessor system.
22079                                                                  1 = Processor is part of a uniprocessor system. */
22080         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
22081         uint64_t aff3                  : 8;  /**< [ 39: 32](RO) Affinity level 3. Highest level affinity field.
22082 
22083                                                                  Always zero on CNXXXX. */
22084         uint64_t reserved_40_63        : 24;
22085 #endif /* Word 0 - End */
22086     } cn9;
22087 };
22088 typedef union bdk_ap_mpidr_el1 bdk_ap_mpidr_el1_t;
22089 
22090 #define BDK_AP_MPIDR_EL1 BDK_AP_MPIDR_EL1_FUNC()
22091 static inline uint64_t BDK_AP_MPIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_MPIDR_EL1_FUNC(void)22092 static inline uint64_t BDK_AP_MPIDR_EL1_FUNC(void)
22093 {
22094     return 0x30000000500ll;
22095 }
22096 
22097 #define typedef_BDK_AP_MPIDR_EL1 bdk_ap_mpidr_el1_t
22098 #define bustype_BDK_AP_MPIDR_EL1 BDK_CSR_TYPE_SYSREG
22099 #define basename_BDK_AP_MPIDR_EL1 "AP_MPIDR_EL1"
22100 #define busnum_BDK_AP_MPIDR_EL1 0
22101 #define arguments_BDK_AP_MPIDR_EL1 -1,-1,-1,-1
22102 
22103 /**
22104  * Register (SYSREG) ap_mvfr#_el1
22105  *
22106  * AP ARM32 Media and VFP Feature Register
22107  * Describes the features provided by the Advanced SIMD and Floating-point Extensions.
22108  */
22109 union bdk_ap_mvfrx_el1
22110 {
22111     uint32_t u;
22112     struct bdk_ap_mvfrx_el1_s
22113     {
22114 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22115         uint32_t reserved_0_31         : 32;
22116 #else /* Word 0 - Little Endian */
22117         uint32_t reserved_0_31         : 32;
22118 #endif /* Word 0 - End */
22119     } s;
22120     /* struct bdk_ap_mvfrx_el1_s cn; */
22121 };
22122 typedef union bdk_ap_mvfrx_el1 bdk_ap_mvfrx_el1_t;
22123 
22124 static inline uint64_t BDK_AP_MVFRX_EL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_MVFRX_EL1(unsigned long a)22125 static inline uint64_t BDK_AP_MVFRX_EL1(unsigned long a)
22126 {
22127     if (a<=2)
22128         return 0x30000030000ll + 0x100ll * ((a) & 0x3);
22129     __bdk_csr_fatal("AP_MVFRX_EL1", 1, a, 0, 0, 0);
22130 }
22131 
22132 #define typedef_BDK_AP_MVFRX_EL1(a) bdk_ap_mvfrx_el1_t
22133 #define bustype_BDK_AP_MVFRX_EL1(a) BDK_CSR_TYPE_SYSREG
22134 #define basename_BDK_AP_MVFRX_EL1(a) "AP_MVFRX_EL1"
22135 #define busnum_BDK_AP_MVFRX_EL1(a) (a)
22136 #define arguments_BDK_AP_MVFRX_EL1(a) (a),-1,-1,-1
22137 
22138 /**
22139  * Register (SYSREG) ap_nzcv
22140  *
22141  * AP Condition Flags Register
22142  * Allows access to the condition flags.
22143  */
22144 union bdk_ap_nzcv
22145 {
22146     uint32_t u;
22147     struct bdk_ap_nzcv_s
22148     {
22149 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22150         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Negative condition flag. Set to bit[31] of the result of the
22151                                                                      last flag-setting instruction. If the result is regarded as a
22152                                                                      two's complement signed integer, then the processor sets N to
22153                                                                      1 if the result was negative, and sets N to 0 if it was
22154                                                                      positive or zero. */
22155         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Zero condition flag. Set to 1 if the result of the last flag-
22156                                                                      setting instruction was zero, and to 0 otherwise. A result of
22157                                                                      zero often indicates an equal result from a comparison. */
22158         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Carry condition flag. Set to 1 if the last flag-setting
22159                                                                      instruction resulted in a carry condition, for example an
22160                                                                      unsigned overflow on an addition. */
22161         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Overflow condition flag. Set to 1 if the last flag-setting
22162                                                                      instruction resulted in an overflow condition, for example a
22163                                                                      signed overflow on an addition. */
22164         uint32_t reserved_0_27         : 28;
22165 #else /* Word 0 - Little Endian */
22166         uint32_t reserved_0_27         : 28;
22167         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Overflow condition flag. Set to 1 if the last flag-setting
22168                                                                      instruction resulted in an overflow condition, for example a
22169                                                                      signed overflow on an addition. */
22170         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Carry condition flag. Set to 1 if the last flag-setting
22171                                                                      instruction resulted in a carry condition, for example an
22172                                                                      unsigned overflow on an addition. */
22173         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Zero condition flag. Set to 1 if the result of the last flag-
22174                                                                      setting instruction was zero, and to 0 otherwise. A result of
22175                                                                      zero often indicates an equal result from a comparison. */
22176         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Negative condition flag. Set to bit[31] of the result of the
22177                                                                      last flag-setting instruction. If the result is regarded as a
22178                                                                      two's complement signed integer, then the processor sets N to
22179                                                                      1 if the result was negative, and sets N to 0 if it was
22180                                                                      positive or zero. */
22181 #endif /* Word 0 - End */
22182     } s;
22183     /* struct bdk_ap_nzcv_s cn; */
22184 };
22185 typedef union bdk_ap_nzcv bdk_ap_nzcv_t;
22186 
22187 #define BDK_AP_NZCV BDK_AP_NZCV_FUNC()
22188 static inline uint64_t BDK_AP_NZCV_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_NZCV_FUNC(void)22189 static inline uint64_t BDK_AP_NZCV_FUNC(void)
22190 {
22191     return 0x30304020000ll;
22192 }
22193 
22194 #define typedef_BDK_AP_NZCV bdk_ap_nzcv_t
22195 #define bustype_BDK_AP_NZCV BDK_CSR_TYPE_SYSREG
22196 #define basename_BDK_AP_NZCV "AP_NZCV"
22197 #define busnum_BDK_AP_NZCV 0
22198 #define arguments_BDK_AP_NZCV -1,-1,-1,-1
22199 
22200 /**
22201  * Register (SYSREG) ap_osdlr_el1
22202  *
22203  * AP OS Double Lock Register
22204  * Used to control the OS Double Lock.
22205  */
22206 union bdk_ap_osdlr_el1
22207 {
22208     uint32_t u;
22209     struct bdk_ap_osdlr_el1_s
22210     {
22211 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22212         uint32_t reserved_1_31         : 31;
22213         uint32_t dlk                   : 1;  /**< [  0:  0](R/W) OS Double Lock control bit.
22214                                                                  0 = OS Double Lock unlocked.
22215                                                                  1 = OS Double Lock locked, if AP_DBGPRCR_EL1[CORENPDRQ] (Core no
22216                                                                      power-down request) bit is set to 0 and the processor is in
22217                                                                      Non-debug state. */
22218 #else /* Word 0 - Little Endian */
22219         uint32_t dlk                   : 1;  /**< [  0:  0](R/W) OS Double Lock control bit.
22220                                                                  0 = OS Double Lock unlocked.
22221                                                                  1 = OS Double Lock locked, if AP_DBGPRCR_EL1[CORENPDRQ] (Core no
22222                                                                      power-down request) bit is set to 0 and the processor is in
22223                                                                      Non-debug state. */
22224         uint32_t reserved_1_31         : 31;
22225 #endif /* Word 0 - End */
22226     } s;
22227     /* struct bdk_ap_osdlr_el1_s cn; */
22228 };
22229 typedef union bdk_ap_osdlr_el1 bdk_ap_osdlr_el1_t;
22230 
22231 #define BDK_AP_OSDLR_EL1 BDK_AP_OSDLR_EL1_FUNC()
22232 static inline uint64_t BDK_AP_OSDLR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_OSDLR_EL1_FUNC(void)22233 static inline uint64_t BDK_AP_OSDLR_EL1_FUNC(void)
22234 {
22235     return 0x20001030400ll;
22236 }
22237 
22238 #define typedef_BDK_AP_OSDLR_EL1 bdk_ap_osdlr_el1_t
22239 #define bustype_BDK_AP_OSDLR_EL1 BDK_CSR_TYPE_SYSREG
22240 #define basename_BDK_AP_OSDLR_EL1 "AP_OSDLR_EL1"
22241 #define busnum_BDK_AP_OSDLR_EL1 0
22242 #define arguments_BDK_AP_OSDLR_EL1 -1,-1,-1,-1
22243 
22244 /**
22245  * Register (SYSREG) ap_osdtrrx_el1
22246  *
22247  * AP OS Lock Data Transfer Receive Register
22248  * Used for save/restore of AP_DBGDTRRX_EL0. It is a component of
22249  *     the Debug Communications Channel.
22250  */
22251 union bdk_ap_osdtrrx_el1
22252 {
22253     uint32_t u;
22254     struct bdk_ap_osdtrrx_el1_s
22255     {
22256 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22257         uint32_t data                  : 32; /**< [ 31:  0](R/W) Host to target data. One word of data for transfer from the
22258                                                                      debug host to the debug target.
22259                                                                  For the full behavior of the Debug Communications Channel,
22260                                                                      see. */
22261 #else /* Word 0 - Little Endian */
22262         uint32_t data                  : 32; /**< [ 31:  0](R/W) Host to target data. One word of data for transfer from the
22263                                                                      debug host to the debug target.
22264                                                                  For the full behavior of the Debug Communications Channel,
22265                                                                      see. */
22266 #endif /* Word 0 - End */
22267     } s;
22268     /* struct bdk_ap_osdtrrx_el1_s cn; */
22269 };
22270 typedef union bdk_ap_osdtrrx_el1 bdk_ap_osdtrrx_el1_t;
22271 
22272 #define BDK_AP_OSDTRRX_EL1 BDK_AP_OSDTRRX_EL1_FUNC()
22273 static inline uint64_t BDK_AP_OSDTRRX_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_OSDTRRX_EL1_FUNC(void)22274 static inline uint64_t BDK_AP_OSDTRRX_EL1_FUNC(void)
22275 {
22276     return 0x20000000200ll;
22277 }
22278 
22279 #define typedef_BDK_AP_OSDTRRX_EL1 bdk_ap_osdtrrx_el1_t
22280 #define bustype_BDK_AP_OSDTRRX_EL1 BDK_CSR_TYPE_SYSREG
22281 #define basename_BDK_AP_OSDTRRX_EL1 "AP_OSDTRRX_EL1"
22282 #define busnum_BDK_AP_OSDTRRX_EL1 0
22283 #define arguments_BDK_AP_OSDTRRX_EL1 -1,-1,-1,-1
22284 
22285 /**
22286  * Register (SYSREG) ap_osdtrtx_el1
22287  *
22288  * AP OS Lock Data Transfer Transmit Register
22289  * Used for save/restore of AP_DBGDTRTX_EL0. It is a component of
22290  *     the Debug Communications Channel.
22291  */
22292 union bdk_ap_osdtrtx_el1
22293 {
22294     uint32_t u;
22295     struct bdk_ap_osdtrtx_el1_s
22296     {
22297 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22298         uint32_t data                  : 32; /**< [ 31:  0](R/W) Target to host data. One word of data for transfer from the
22299                                                                      debug target to the debug host.
22300                                                                  For the full behavior of the Debug Communications Channel,
22301                                                                      see. */
22302 #else /* Word 0 - Little Endian */
22303         uint32_t data                  : 32; /**< [ 31:  0](R/W) Target to host data. One word of data for transfer from the
22304                                                                      debug target to the debug host.
22305                                                                  For the full behavior of the Debug Communications Channel,
22306                                                                      see. */
22307 #endif /* Word 0 - End */
22308     } s;
22309     /* struct bdk_ap_osdtrtx_el1_s cn; */
22310 };
22311 typedef union bdk_ap_osdtrtx_el1 bdk_ap_osdtrtx_el1_t;
22312 
22313 #define BDK_AP_OSDTRTX_EL1 BDK_AP_OSDTRTX_EL1_FUNC()
22314 static inline uint64_t BDK_AP_OSDTRTX_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_OSDTRTX_EL1_FUNC(void)22315 static inline uint64_t BDK_AP_OSDTRTX_EL1_FUNC(void)
22316 {
22317     return 0x20000030200ll;
22318 }
22319 
22320 #define typedef_BDK_AP_OSDTRTX_EL1 bdk_ap_osdtrtx_el1_t
22321 #define bustype_BDK_AP_OSDTRTX_EL1 BDK_CSR_TYPE_SYSREG
22322 #define basename_BDK_AP_OSDTRTX_EL1 "AP_OSDTRTX_EL1"
22323 #define busnum_BDK_AP_OSDTRTX_EL1 0
22324 #define arguments_BDK_AP_OSDTRTX_EL1 -1,-1,-1,-1
22325 
22326 /**
22327  * Register (SYSREG) ap_oseccr_el1
22328  *
22329  * AP OS Lock Exception Catch Control Register
22330  * Provides a mechanism for an operating system to access the
22331  *     contents of EDECCR that are otherwise invisible to software,
22332  *     so it can save/restore the contents of EDECCR over powerdown
22333  *     on behalf of the external debugger.
22334  */
22335 union bdk_ap_oseccr_el1
22336 {
22337     uint32_t u;
22338     struct bdk_ap_oseccr_el1_s
22339     {
22340 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22341         uint32_t edeccr                : 32; /**< [ 31:  0](R/W) Used for save/restore to EDECCR over powerdown. */
22342 #else /* Word 0 - Little Endian */
22343         uint32_t edeccr                : 32; /**< [ 31:  0](R/W) Used for save/restore to EDECCR over powerdown. */
22344 #endif /* Word 0 - End */
22345     } s;
22346     /* struct bdk_ap_oseccr_el1_s cn; */
22347 };
22348 typedef union bdk_ap_oseccr_el1 bdk_ap_oseccr_el1_t;
22349 
22350 #define BDK_AP_OSECCR_EL1 BDK_AP_OSECCR_EL1_FUNC()
22351 static inline uint64_t BDK_AP_OSECCR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_OSECCR_EL1_FUNC(void)22352 static inline uint64_t BDK_AP_OSECCR_EL1_FUNC(void)
22353 {
22354     return 0x20000060200ll;
22355 }
22356 
22357 #define typedef_BDK_AP_OSECCR_EL1 bdk_ap_oseccr_el1_t
22358 #define bustype_BDK_AP_OSECCR_EL1 BDK_CSR_TYPE_SYSREG
22359 #define basename_BDK_AP_OSECCR_EL1 "AP_OSECCR_EL1"
22360 #define busnum_BDK_AP_OSECCR_EL1 0
22361 #define arguments_BDK_AP_OSECCR_EL1 -1,-1,-1,-1
22362 
22363 /**
22364  * Register (SYSREG) ap_oslar_el1
22365  *
22366  * AP OS Lock Access Register
22367  * Used to lock or unlock the OS lock.
22368  */
22369 union bdk_ap_oslar_el1
22370 {
22371     uint32_t u;
22372     struct bdk_ap_oslar_el1_s
22373     {
22374 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22375         uint32_t reserved_1_31         : 31;
22376         uint32_t oslk                  : 1;  /**< [  0:  0](RO) On writes to AP_OSLAR_EL1, bit[0] is copied to the OS lock.
22377                                                                  Use AP_OSLSR_EL1[OSLK] to check the current status of the lock. */
22378 #else /* Word 0 - Little Endian */
22379         uint32_t oslk                  : 1;  /**< [  0:  0](RO) On writes to AP_OSLAR_EL1, bit[0] is copied to the OS lock.
22380                                                                  Use AP_OSLSR_EL1[OSLK] to check the current status of the lock. */
22381         uint32_t reserved_1_31         : 31;
22382 #endif /* Word 0 - End */
22383     } s;
22384     /* struct bdk_ap_oslar_el1_s cn8; */
22385     struct bdk_ap_oslar_el1_cn9
22386     {
22387 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22388         uint32_t reserved_1_31         : 31;
22389         uint32_t oslk                  : 1;  /**< [  0:  0](WO) On writes to AP_OSLAR_EL1, bit[0] is copied to the OS lock.
22390                                                                  Use AP_OSLSR_EL1[OSLK] to check the current status of the lock. */
22391 #else /* Word 0 - Little Endian */
22392         uint32_t oslk                  : 1;  /**< [  0:  0](WO) On writes to AP_OSLAR_EL1, bit[0] is copied to the OS lock.
22393                                                                  Use AP_OSLSR_EL1[OSLK] to check the current status of the lock. */
22394         uint32_t reserved_1_31         : 31;
22395 #endif /* Word 0 - End */
22396     } cn9;
22397 };
22398 typedef union bdk_ap_oslar_el1 bdk_ap_oslar_el1_t;
22399 
22400 #define BDK_AP_OSLAR_EL1 BDK_AP_OSLAR_EL1_FUNC()
22401 static inline uint64_t BDK_AP_OSLAR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_OSLAR_EL1_FUNC(void)22402 static inline uint64_t BDK_AP_OSLAR_EL1_FUNC(void)
22403 {
22404     return 0x20001000400ll;
22405 }
22406 
22407 #define typedef_BDK_AP_OSLAR_EL1 bdk_ap_oslar_el1_t
22408 #define bustype_BDK_AP_OSLAR_EL1 BDK_CSR_TYPE_SYSREG
22409 #define basename_BDK_AP_OSLAR_EL1 "AP_OSLAR_EL1"
22410 #define busnum_BDK_AP_OSLAR_EL1 0
22411 #define arguments_BDK_AP_OSLAR_EL1 -1,-1,-1,-1
22412 
22413 /**
22414  * Register (SYSREG) ap_oslsr_el1
22415  *
22416  * AP OS Lock Status Register
22417  * Provides the status of the OS lock.
22418  */
22419 union bdk_ap_oslsr_el1
22420 {
22421     uint32_t u;
22422     struct bdk_ap_oslsr_el1_s
22423     {
22424 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22425         uint32_t reserved_4_31         : 28;
22426         uint32_t oslm_high             : 1;  /**< [  3:  3](RO) See below for description of the OSLM field. */
22427         uint32_t ntt                   : 1;  /**< [  2:  2](RO) Not 32-bit access. This bit is always 0. It indicates that a
22428                                                                      32-bit access is needed to write the key to the OS lock access
22429                                                                      register. */
22430         uint32_t oslk                  : 1;  /**< [  1:  1](RO) OS Lock Status.
22431                                                                  The OS Lock is locked and unlocked by writing to the OS Lock
22432                                                                      Access Register.
22433                                                                  0 = OS lock unlocked.
22434                                                                  1 = OS lock locked. */
22435         uint32_t oslm_low              : 1;  /**< [  0:  0](RO) OS lock model implemented. Identifies the form of OS save and
22436                                                                      restore mechanism implemented. In ARMv8 these bits are as
22437                                                                      follows:
22438                                                                  All other values are reserved.
22439                                                                  OSLM0x2 = OS lock implemented. DBGOSSRR not implemented. */
22440 #else /* Word 0 - Little Endian */
22441         uint32_t oslm_low              : 1;  /**< [  0:  0](RO) OS lock model implemented. Identifies the form of OS save and
22442                                                                      restore mechanism implemented. In ARMv8 these bits are as
22443                                                                      follows:
22444                                                                  All other values are reserved.
22445                                                                  OSLM0x2 = OS lock implemented. DBGOSSRR not implemented. */
22446         uint32_t oslk                  : 1;  /**< [  1:  1](RO) OS Lock Status.
22447                                                                  The OS Lock is locked and unlocked by writing to the OS Lock
22448                                                                      Access Register.
22449                                                                  0 = OS lock unlocked.
22450                                                                  1 = OS lock locked. */
22451         uint32_t ntt                   : 1;  /**< [  2:  2](RO) Not 32-bit access. This bit is always 0. It indicates that a
22452                                                                      32-bit access is needed to write the key to the OS lock access
22453                                                                      register. */
22454         uint32_t oslm_high             : 1;  /**< [  3:  3](RO) See below for description of the OSLM field. */
22455         uint32_t reserved_4_31         : 28;
22456 #endif /* Word 0 - End */
22457     } s;
22458     /* struct bdk_ap_oslsr_el1_s cn; */
22459 };
22460 typedef union bdk_ap_oslsr_el1 bdk_ap_oslsr_el1_t;
22461 
22462 #define BDK_AP_OSLSR_EL1 BDK_AP_OSLSR_EL1_FUNC()
22463 static inline uint64_t BDK_AP_OSLSR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_OSLSR_EL1_FUNC(void)22464 static inline uint64_t BDK_AP_OSLSR_EL1_FUNC(void)
22465 {
22466     return 0x20001010400ll;
22467 }
22468 
22469 #define typedef_BDK_AP_OSLSR_EL1 bdk_ap_oslsr_el1_t
22470 #define bustype_BDK_AP_OSLSR_EL1 BDK_CSR_TYPE_SYSREG
22471 #define basename_BDK_AP_OSLSR_EL1 "AP_OSLSR_EL1"
22472 #define busnum_BDK_AP_OSLSR_EL1 0
22473 #define arguments_BDK_AP_OSLSR_EL1 -1,-1,-1,-1
22474 
22475 /**
22476  * Register (SYSREG) ap_pan
22477  *
22478  * AP Privileged Access Never Register
22479  * v8.1: Privileged Access Never bit.
22480  *
22481  * When 0, this bit has no effect on the translation system compared with
22482  * the situation in ARMv8.
22483  *
22484  * When 1, this bit disables data read or data write access from EL1 (or
22485  * EL2 when AP_HCR_EL2[E2H]==1) to a virtual address where access to the
22486  * virtual address at EL0 is permitted at stage 1 by the combination of
22487  * the AP[1] bit and the APTable[0] bits(if appropriate). That is, when
22488  * AP[1]==1 && APTable[0]==0, for all APTable bits associated with that
22489  * virtual address.
22490  *
22491  * The AP_PAN bit has no effect on instruction accesses.
22492  *
22493  * If access is disabled, then the access will give rise to a stage 1
22494  * permission fault, taken in the same way as all other stage 1
22495  * permission faults.
22496  *
22497  * PSTATE[AP_PAN] is copied to SPSR[AP_PAN] on an exception taken from AArch64
22498  * SPSR[AP_PAN] is copied to PSTATE[AP_PAN] on an exception return to AArch64
22499  */
22500 union bdk_ap_pan
22501 {
22502     uint64_t u;
22503     struct bdk_ap_pan_s
22504     {
22505 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22506         uint64_t reserved_23_63        : 41;
22507         uint64_t pan                   : 1;  /**< [ 22: 22](R/W) Privileged Access Never bit. */
22508         uint64_t reserved_0_21         : 22;
22509 #else /* Word 0 - Little Endian */
22510         uint64_t reserved_0_21         : 22;
22511         uint64_t pan                   : 1;  /**< [ 22: 22](R/W) Privileged Access Never bit. */
22512         uint64_t reserved_23_63        : 41;
22513 #endif /* Word 0 - End */
22514     } s;
22515     /* struct bdk_ap_pan_s cn; */
22516 };
22517 typedef union bdk_ap_pan bdk_ap_pan_t;
22518 
22519 #define BDK_AP_PAN BDK_AP_PAN_FUNC()
22520 static inline uint64_t BDK_AP_PAN_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PAN_FUNC(void)22521 static inline uint64_t BDK_AP_PAN_FUNC(void)
22522 {
22523     return 0x30004020300ll;
22524 }
22525 
22526 #define typedef_BDK_AP_PAN bdk_ap_pan_t
22527 #define bustype_BDK_AP_PAN BDK_CSR_TYPE_SYSREG
22528 #define basename_BDK_AP_PAN "AP_PAN"
22529 #define busnum_BDK_AP_PAN 0
22530 #define arguments_BDK_AP_PAN -1,-1,-1,-1
22531 
22532 /**
22533  * Register (SYSREG) ap_par_el1
22534  *
22535  * AP Physical Address Register
22536  * Receives the PA from any address translation operation.
22537  */
22538 union bdk_ap_par_el1
22539 {
22540     uint64_t u;
22541     struct bdk_ap_par_el1_s
22542     {
22543 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22544         uint64_t mair                  : 8;  /**< [ 63: 56](R/W) On success (f=0): Memory Attributes, following the encodings for the MAIR.
22545                                                                  On failure (f=1): Zero. */
22546         uint64_t reserved_52_55        : 4;
22547         uint64_t pa                    : 40; /**< [ 51: 12](R/W) Physical Address. The physical address corresponding to the
22548                                                                      supplied virtual address. This field returns address
22549                                                                      bits \<47:12\>. */
22550         uint64_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
22551         uint64_t reserved_10           : 1;
22552         uint64_t nsec                  : 1;  /**< [  9:  9](R/W) Nonsecure. The NS attribute for a translation table entry
22553                                                                      read from Secure state.
22554                                                                  This bit is UNKNOWN for a translation table entry read from
22555                                                                      nonsecure state. */
22556         uint64_t sha                   : 2;  /**< [  8:  7](R/W) Shareability attribute, from the translation table entry for
22557                                                                      the returned PA.
22558                                                                  0x0 = Non-shareable.
22559                                                                  0x2 = Outer Shareable.
22560                                                                  0x3 = Inner Shareable. */
22561         uint64_t fs                    : 6;  /**< [  6:  1](R/W) On success (f=0): Zero.
22562                                                                  On failure (f=1): Fault Status code shown in the Data Abort. */
22563         uint64_t f                     : 1;  /**< [  0:  0](R/W) Indicates whether the conversion completed successfully.
22564                                                                  0 = VA to PA conversion completed successfully. */
22565 #else /* Word 0 - Little Endian */
22566         uint64_t f                     : 1;  /**< [  0:  0](R/W) Indicates whether the conversion completed successfully.
22567                                                                  0 = VA to PA conversion completed successfully. */
22568         uint64_t fs                    : 6;  /**< [  6:  1](R/W) On success (f=0): Zero.
22569                                                                  On failure (f=1): Fault Status code shown in the Data Abort. */
22570         uint64_t sha                   : 2;  /**< [  8:  7](R/W) Shareability attribute, from the translation table entry for
22571                                                                      the returned PA.
22572                                                                  0x0 = Non-shareable.
22573                                                                  0x2 = Outer Shareable.
22574                                                                  0x3 = Inner Shareable. */
22575         uint64_t nsec                  : 1;  /**< [  9:  9](R/W) Nonsecure. The NS attribute for a translation table entry
22576                                                                      read from Secure state.
22577                                                                  This bit is UNKNOWN for a translation table entry read from
22578                                                                      nonsecure state. */
22579         uint64_t reserved_10           : 1;
22580         uint64_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
22581         uint64_t pa                    : 40; /**< [ 51: 12](R/W) Physical Address. The physical address corresponding to the
22582                                                                      supplied virtual address. This field returns address
22583                                                                      bits \<47:12\>. */
22584         uint64_t reserved_52_55        : 4;
22585         uint64_t mair                  : 8;  /**< [ 63: 56](R/W) On success (f=0): Memory Attributes, following the encodings for the MAIR.
22586                                                                  On failure (f=1): Zero. */
22587 #endif /* Word 0 - End */
22588     } s;
22589     struct bdk_ap_par_el1_cn8
22590     {
22591 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22592         uint64_t mair                  : 8;  /**< [ 63: 56](R/W) On success (f=0): Memory Attributes, following the encodings for the MAIR.
22593                                                                  On failure (f=1): Zero. */
22594         uint64_t reserved_48_55        : 8;
22595         uint64_t pa                    : 36; /**< [ 47: 12](R/W) Physical Address. The physical address corresponding to the
22596                                                                      supplied virtual address. This field returns address
22597                                                                      bits \<47:12\>. */
22598         uint64_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
22599         uint64_t reserved_10           : 1;
22600         uint64_t nsec                  : 1;  /**< [  9:  9](R/W) Nonsecure. The NS attribute for a translation table entry
22601                                                                      read from Secure state.
22602                                                                  This bit is UNKNOWN for a translation table entry read from
22603                                                                      nonsecure state. */
22604         uint64_t sha                   : 2;  /**< [  8:  7](R/W) Shareability attribute, from the translation table entry for
22605                                                                      the returned PA.
22606                                                                  0x0 = Non-shareable.
22607                                                                  0x2 = Outer Shareable.
22608                                                                  0x3 = Inner Shareable. */
22609         uint64_t fs                    : 6;  /**< [  6:  1](R/W) On success (f=0): Zero.
22610                                                                  On failure (f=1): Fault Status code shown in the Data Abort. */
22611         uint64_t f                     : 1;  /**< [  0:  0](R/W) Indicates whether the conversion completed successfully.
22612                                                                  0 = VA to PA conversion completed successfully. */
22613 #else /* Word 0 - Little Endian */
22614         uint64_t f                     : 1;  /**< [  0:  0](R/W) Indicates whether the conversion completed successfully.
22615                                                                  0 = VA to PA conversion completed successfully. */
22616         uint64_t fs                    : 6;  /**< [  6:  1](R/W) On success (f=0): Zero.
22617                                                                  On failure (f=1): Fault Status code shown in the Data Abort. */
22618         uint64_t sha                   : 2;  /**< [  8:  7](R/W) Shareability attribute, from the translation table entry for
22619                                                                      the returned PA.
22620                                                                  0x0 = Non-shareable.
22621                                                                  0x2 = Outer Shareable.
22622                                                                  0x3 = Inner Shareable. */
22623         uint64_t nsec                  : 1;  /**< [  9:  9](R/W) Nonsecure. The NS attribute for a translation table entry
22624                                                                      read from Secure state.
22625                                                                  This bit is UNKNOWN for a translation table entry read from
22626                                                                      nonsecure state. */
22627         uint64_t reserved_10           : 1;
22628         uint64_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
22629         uint64_t pa                    : 36; /**< [ 47: 12](R/W) Physical Address. The physical address corresponding to the
22630                                                                      supplied virtual address. This field returns address
22631                                                                      bits \<47:12\>. */
22632         uint64_t reserved_48_55        : 8;
22633         uint64_t mair                  : 8;  /**< [ 63: 56](R/W) On success (f=0): Memory Attributes, following the encodings for the MAIR.
22634                                                                  On failure (f=1): Zero. */
22635 #endif /* Word 0 - End */
22636     } cn8;
22637     struct bdk_ap_par_el1_cn9
22638     {
22639 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22640         uint64_t mair                  : 8;  /**< [ 63: 56](R/W) On success (f=0): Memory Attributes, following the encodings for the MAIR.
22641                                                                  On failure (f=1): Zero. */
22642         uint64_t reserved_52_55        : 4;
22643         uint64_t pa                    : 40; /**< [ 51: 12](R/W) Physical address. The physical address corresponding to the
22644                                                                  supplied virtual address. This field returns address bits \<51:12\>. */
22645         uint64_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
22646         uint64_t reserved_10           : 1;
22647         uint64_t nsec                  : 1;  /**< [  9:  9](R/W) Nonsecure. The NS attribute for a translation table entry
22648                                                                      read from Secure state.
22649                                                                  This bit is UNKNOWN for a translation table entry read from
22650                                                                      nonsecure state. */
22651         uint64_t sha                   : 2;  /**< [  8:  7](R/W) Shareability attribute, from the translation table entry for
22652                                                                      the returned PA.
22653                                                                  0x0 = Non-shareable.
22654                                                                  0x2 = Outer Shareable.
22655                                                                  0x3 = Inner Shareable. */
22656         uint64_t fs                    : 6;  /**< [  6:  1](R/W) On success (f=0): Zero.
22657                                                                  On failure (f=1): Fault Status code shown in the Data Abort. */
22658         uint64_t f                     : 1;  /**< [  0:  0](R/W) Indicates whether the conversion completed successfully.
22659                                                                  0 = VA to PA conversion completed successfully. */
22660 #else /* Word 0 - Little Endian */
22661         uint64_t f                     : 1;  /**< [  0:  0](R/W) Indicates whether the conversion completed successfully.
22662                                                                  0 = VA to PA conversion completed successfully. */
22663         uint64_t fs                    : 6;  /**< [  6:  1](R/W) On success (f=0): Zero.
22664                                                                  On failure (f=1): Fault Status code shown in the Data Abort. */
22665         uint64_t sha                   : 2;  /**< [  8:  7](R/W) Shareability attribute, from the translation table entry for
22666                                                                      the returned PA.
22667                                                                  0x0 = Non-shareable.
22668                                                                  0x2 = Outer Shareable.
22669                                                                  0x3 = Inner Shareable. */
22670         uint64_t nsec                  : 1;  /**< [  9:  9](R/W) Nonsecure. The NS attribute for a translation table entry
22671                                                                      read from Secure state.
22672                                                                  This bit is UNKNOWN for a translation table entry read from
22673                                                                      nonsecure state. */
22674         uint64_t reserved_10           : 1;
22675         uint64_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
22676         uint64_t pa                    : 40; /**< [ 51: 12](R/W) Physical address. The physical address corresponding to the
22677                                                                  supplied virtual address. This field returns address bits \<51:12\>. */
22678         uint64_t reserved_52_55        : 4;
22679         uint64_t mair                  : 8;  /**< [ 63: 56](R/W) On success (f=0): Memory Attributes, following the encodings for the MAIR.
22680                                                                  On failure (f=1): Zero. */
22681 #endif /* Word 0 - End */
22682     } cn9;
22683 };
22684 typedef union bdk_ap_par_el1 bdk_ap_par_el1_t;
22685 
22686 #define BDK_AP_PAR_EL1 BDK_AP_PAR_EL1_FUNC()
22687 static inline uint64_t BDK_AP_PAR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PAR_EL1_FUNC(void)22688 static inline uint64_t BDK_AP_PAR_EL1_FUNC(void)
22689 {
22690     return 0x30007040000ll;
22691 }
22692 
22693 #define typedef_BDK_AP_PAR_EL1 bdk_ap_par_el1_t
22694 #define bustype_BDK_AP_PAR_EL1 BDK_CSR_TYPE_SYSREG
22695 #define basename_BDK_AP_PAR_EL1 "AP_PAR_EL1"
22696 #define busnum_BDK_AP_PAR_EL1 0
22697 #define arguments_BDK_AP_PAR_EL1 -1,-1,-1,-1
22698 
22699 /**
22700  * Register (SYSREG) ap_pmbidr_el1
22701  *
22702  * AP Profiling Buffer ID Register
22703  * Provides information to software as to whether the buffer can be programmed at the current
22704  * Exception level.
22705  */
22706 union bdk_ap_pmbidr_el1
22707 {
22708     uint64_t u;
22709     struct bdk_ap_pmbidr_el1_s
22710     {
22711 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22712         uint64_t reserved_6_63         : 58;
22713         uint64_t f                     : 1;  /**< [  5:  5](RO) Flag Updates. Defines whether the address translation performed by the profiling buffer
22714                                                                  manages the access flag and dirty bit.
22715                                                                    0 = Accesses to pages not marked with Access Flag and not with dirty bit set will
22716                                                                  generate an Unsupported Access fault if hardware management of those flags is enabled.
22717                                                                    1 = Profiling Buffer address translation manages the access flag and dirty bit in the
22718                                                                  same way as the MMU on this PE. */
22719         uint64_t p                     : 1;  /**< [  4:  4](RO) Prohibited. The profiling buffer is owned by the current or a lower exception level in the
22720                                                                  current security state.
22721                                                                    0 = Profiling buffer is owned by the current or a lower exception level in the current
22722                                                                  security state. This does not mean an access will not be trapped to a higher exception
22723                                                                  level.
22724                                                                    1 = Profiling buffer is owned by a higher exception level or the other security state. */
22725         uint64_t align                 : 4;  /**< [  3:  0](RO) Defines the minimum alignment constraint for PMBPTR_EL1. If this field is non-zero, then
22726                                                                  the PE must pad every record up to a multiple of this size.
22727                                                                    0x0 = Byte.
22728                                                                    0x1 = Halfword. PMBPTR_EL1[0] is RES0.
22729                                                                    0x2 = Word. PMBPTR_EL1[1:0] is RES0.
22730                                                                    0x3 = Doubleword. PMBPTR_EL1[2:0] is RES0.
22731                                                                    ... ...
22732                                                                    0xB = 2KB. PMBPTR_EL1[10:0] is RES0.
22733 
22734                                                                    All other values are reserved. Reserved values might be defined in a future version of
22735                                                                  the architecture. */
22736 #else /* Word 0 - Little Endian */
22737         uint64_t align                 : 4;  /**< [  3:  0](RO) Defines the minimum alignment constraint for PMBPTR_EL1. If this field is non-zero, then
22738                                                                  the PE must pad every record up to a multiple of this size.
22739                                                                    0x0 = Byte.
22740                                                                    0x1 = Halfword. PMBPTR_EL1[0] is RES0.
22741                                                                    0x2 = Word. PMBPTR_EL1[1:0] is RES0.
22742                                                                    0x3 = Doubleword. PMBPTR_EL1[2:0] is RES0.
22743                                                                    ... ...
22744                                                                    0xB = 2KB. PMBPTR_EL1[10:0] is RES0.
22745 
22746                                                                    All other values are reserved. Reserved values might be defined in a future version of
22747                                                                  the architecture. */
22748         uint64_t p                     : 1;  /**< [  4:  4](RO) Prohibited. The profiling buffer is owned by the current or a lower exception level in the
22749                                                                  current security state.
22750                                                                    0 = Profiling buffer is owned by the current or a lower exception level in the current
22751                                                                  security state. This does not mean an access will not be trapped to a higher exception
22752                                                                  level.
22753                                                                    1 = Profiling buffer is owned by a higher exception level or the other security state. */
22754         uint64_t f                     : 1;  /**< [  5:  5](RO) Flag Updates. Defines whether the address translation performed by the profiling buffer
22755                                                                  manages the access flag and dirty bit.
22756                                                                    0 = Accesses to pages not marked with Access Flag and not with dirty bit set will
22757                                                                  generate an Unsupported Access fault if hardware management of those flags is enabled.
22758                                                                    1 = Profiling Buffer address translation manages the access flag and dirty bit in the
22759                                                                  same way as the MMU on this PE. */
22760         uint64_t reserved_6_63         : 58;
22761 #endif /* Word 0 - End */
22762     } s;
22763     /* struct bdk_ap_pmbidr_el1_s cn; */
22764 };
22765 typedef union bdk_ap_pmbidr_el1 bdk_ap_pmbidr_el1_t;
22766 
22767 #define BDK_AP_PMBIDR_EL1 BDK_AP_PMBIDR_EL1_FUNC()
22768 static inline uint64_t BDK_AP_PMBIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMBIDR_EL1_FUNC(void)22769 static inline uint64_t BDK_AP_PMBIDR_EL1_FUNC(void)
22770 {
22771     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
22772         return 0x300090a0700ll;
22773     __bdk_csr_fatal("AP_PMBIDR_EL1", 0, 0, 0, 0, 0);
22774 }
22775 
22776 #define typedef_BDK_AP_PMBIDR_EL1 bdk_ap_pmbidr_el1_t
22777 #define bustype_BDK_AP_PMBIDR_EL1 BDK_CSR_TYPE_SYSREG
22778 #define basename_BDK_AP_PMBIDR_EL1 "AP_PMBIDR_EL1"
22779 #define busnum_BDK_AP_PMBIDR_EL1 0
22780 #define arguments_BDK_AP_PMBIDR_EL1 -1,-1,-1,-1
22781 
22782 /**
22783  * Register (SYSREG) ap_pmblimitr_el1
22784  *
22785  * AP Profiling Buffer Limit Address Register
22786  * Defines the upper limit for the profiling buffer, and enables the profiling buffer.
22787  */
22788 union bdk_ap_pmblimitr_el1
22789 {
22790     uint64_t u;
22791     struct bdk_ap_pmblimitr_el1_s
22792     {
22793 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22794         uint64_t limit                 : 52; /**< [ 63: 12](R/W) Limit address, plus one. Read/write. Defines the limit of the buffer. If the smallest
22795                                                                  implemented translation granule is not 4KB, then bits [N-1:12] are RES0, where N is the
22796                                                                  IMPLEMENTATION DEFINED value, Log2(smallest implemented translation granule). */
22797         uint64_t reserved_3_11         : 9;
22798         uint64_t fm                    : 2;  /**< [  2:  1](R/W) Fill mode.
22799                                                                    0x0 = Stop collection and raise maintenance interrupt on buffer fill.
22800 
22801                                                                  All other values are reserved. If this field is programmed with a reserved value, the PE
22802                                                                  behaves as if this field has a defined value, other than for a direct read of the
22803                                                                  register. Software must not rely on the behavior of reserved values, as they might change
22804                                                                  in a future version of the architecture. */
22805         uint64_t ee                    : 1;  /**< [  0:  0](R/W) Profiling buffer enable.
22806                                                                    0 = All output is discarded.
22807                                                                    1 = Enabled.
22808 
22809                                                                  This bit resets to zero. */
22810 #else /* Word 0 - Little Endian */
22811         uint64_t ee                    : 1;  /**< [  0:  0](R/W) Profiling buffer enable.
22812                                                                    0 = All output is discarded.
22813                                                                    1 = Enabled.
22814 
22815                                                                  This bit resets to zero. */
22816         uint64_t fm                    : 2;  /**< [  2:  1](R/W) Fill mode.
22817                                                                    0x0 = Stop collection and raise maintenance interrupt on buffer fill.
22818 
22819                                                                  All other values are reserved. If this field is programmed with a reserved value, the PE
22820                                                                  behaves as if this field has a defined value, other than for a direct read of the
22821                                                                  register. Software must not rely on the behavior of reserved values, as they might change
22822                                                                  in a future version of the architecture. */
22823         uint64_t reserved_3_11         : 9;
22824         uint64_t limit                 : 52; /**< [ 63: 12](R/W) Limit address, plus one. Read/write. Defines the limit of the buffer. If the smallest
22825                                                                  implemented translation granule is not 4KB, then bits [N-1:12] are RES0, where N is the
22826                                                                  IMPLEMENTATION DEFINED value, Log2(smallest implemented translation granule). */
22827 #endif /* Word 0 - End */
22828     } s;
22829     /* struct bdk_ap_pmblimitr_el1_s cn; */
22830 };
22831 typedef union bdk_ap_pmblimitr_el1 bdk_ap_pmblimitr_el1_t;
22832 
22833 #define BDK_AP_PMBLIMITR_EL1 BDK_AP_PMBLIMITR_EL1_FUNC()
22834 static inline uint64_t BDK_AP_PMBLIMITR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMBLIMITR_EL1_FUNC(void)22835 static inline uint64_t BDK_AP_PMBLIMITR_EL1_FUNC(void)
22836 {
22837     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
22838         return 0x300090a0000ll;
22839     __bdk_csr_fatal("AP_PMBLIMITR_EL1", 0, 0, 0, 0, 0);
22840 }
22841 
22842 #define typedef_BDK_AP_PMBLIMITR_EL1 bdk_ap_pmblimitr_el1_t
22843 #define bustype_BDK_AP_PMBLIMITR_EL1 BDK_CSR_TYPE_SYSREG
22844 #define basename_BDK_AP_PMBLIMITR_EL1 "AP_PMBLIMITR_EL1"
22845 #define busnum_BDK_AP_PMBLIMITR_EL1 0
22846 #define arguments_BDK_AP_PMBLIMITR_EL1 -1,-1,-1,-1
22847 
22848 /**
22849  * Register (SYSREG) ap_pmbptr_el1
22850  *
22851  * AP Profiling Buffer Write Pointer Register
22852  * Defines the current write pointer for the profiling buffer.
22853  */
22854 union bdk_ap_pmbptr_el1
22855 {
22856     uint64_t u;
22857     struct bdk_ap_pmbptr_el1_s
22858     {
22859 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22860         uint64_t ptr                   : 64; /**< [ 63:  0](R/W) Current write address. Defines the virtual address of the next entry to be written to the
22861                                                                  buffer.
22862                                                                  Software must treat bits [M:0] of this register as RES0, where M is defined by
22863                                                                  PMBIDR_EL1.Align. If
22864                                                                  synchronous reporting of external aborts is not supported, then hardware also treats these
22865                                                                  bits as
22866                                                                  RES0. Otherwise, bits [M:0] might contain part of a fault address on a synchronous
22867                                                                  external abort.
22868                                                                  On a management interrupt, PMBPTR_EL1 is frozen. */
22869 #else /* Word 0 - Little Endian */
22870         uint64_t ptr                   : 64; /**< [ 63:  0](R/W) Current write address. Defines the virtual address of the next entry to be written to the
22871                                                                  buffer.
22872                                                                  Software must treat bits [M:0] of this register as RES0, where M is defined by
22873                                                                  PMBIDR_EL1.Align. If
22874                                                                  synchronous reporting of external aborts is not supported, then hardware also treats these
22875                                                                  bits as
22876                                                                  RES0. Otherwise, bits [M:0] might contain part of a fault address on a synchronous
22877                                                                  external abort.
22878                                                                  On a management interrupt, PMBPTR_EL1 is frozen. */
22879 #endif /* Word 0 - End */
22880     } s;
22881     /* struct bdk_ap_pmbptr_el1_s cn; */
22882 };
22883 typedef union bdk_ap_pmbptr_el1 bdk_ap_pmbptr_el1_t;
22884 
22885 #define BDK_AP_PMBPTR_EL1 BDK_AP_PMBPTR_EL1_FUNC()
22886 static inline uint64_t BDK_AP_PMBPTR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMBPTR_EL1_FUNC(void)22887 static inline uint64_t BDK_AP_PMBPTR_EL1_FUNC(void)
22888 {
22889     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
22890         return 0x300090a0100ll;
22891     __bdk_csr_fatal("AP_PMBPTR_EL1", 0, 0, 0, 0, 0);
22892 }
22893 
22894 #define typedef_BDK_AP_PMBPTR_EL1 bdk_ap_pmbptr_el1_t
22895 #define bustype_BDK_AP_PMBPTR_EL1 BDK_CSR_TYPE_SYSREG
22896 #define basename_BDK_AP_PMBPTR_EL1 "AP_PMBPTR_EL1"
22897 #define busnum_BDK_AP_PMBPTR_EL1 0
22898 #define arguments_BDK_AP_PMBPTR_EL1 -1,-1,-1,-1
22899 
22900 /**
22901  * Register (SYSREG) ap_pmbsr_el1
22902  *
22903  * AP Profiling Buffer Status/syndrome Register
22904  * Provides syndrome information to software when the buffer is disabled because the management
22905  * interrupt has been raised.
22906  */
22907 union bdk_ap_pmbsr_el1
22908 {
22909     uint64_t u;
22910     struct bdk_ap_pmbsr_el1_s
22911     {
22912 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22913         uint64_t reserved_32_63        : 32;
22914         uint64_t ec                    : 6;  /**< [ 31: 26](R/W) Exception class.
22915                                                                    000000 = Buffer management event.
22916                                                                    100100 = Data abort on write to buffer.
22917                                                                    100101 = Stage 2 data abort on write to buffer.
22918 
22919                                                                  All other values are reserved. Reserved values might be defined in a future version of the
22920                                                                  architecture. */
22921         uint64_t reserved_20_25        : 6;
22922         uint64_t dl                    : 1;  /**< [ 19: 19](R/W) Partial record lost.
22923                                                                    0 = PMBPTR_EL1 points to the first byte after the last complete record written to the
22924                                                                  buffer.
22925                                                                    1 = Part of a record was lost due to a service event or external abort. PMBPTR_EL1 might
22926                                                                  not point to
22927                                                                    the first byte after the last complete record written to the buffer, and so restarting
22928                                                                  collection might
22929                                                                    result in a data record stream that software cannot parse. All records prior to the last
22930                                                                  record have
22931                                                                    been written to the buffer. */
22932         uint64_t ea                    : 1;  /**< [ 18: 18](R/W) External abort.
22933                                                                    0 = An external abort has not been asserted.
22934                                                                    1 = An external abort has been asserted. */
22935         uint64_t s                     : 1;  /**< [ 17: 17](R/W) Service.
22936                                                                    0 = PMBIRQ has not been asserted.
22937                                                                    1 = PMBIRQ has been asserted. All profiling data has either been written to the buffer
22938                                                                  or discarded. */
22939         uint64_t coll                  : 1;  /**< [ 16: 16](R/W) Collision detected.
22940                                                                    0 = No collision events detected.
22941                                                                    1 = At least one collision event was recorded. */
22942         uint64_t reserved_6_15         : 10;
22943         uint64_t bsc_fsc               : 6;  /**< [  5:  0](R/W) BSC when EC == 0b000000.
22944 
22945                                                                  BSC, bits [5:0], when EC == 0b000000.
22946                                                                  Buffer status code.
22947                                                                    0x0 = Buffer not filled.
22948                                                                    0x1 = Buffer filled.
22949 
22950                                                                  FSC when EC == 0b10010x.
22951                                                                  Fault status code.
22952                                                                    0000xx = Address Size fault, bits [1:0] encode the level.
22953                                                                    0001xx = Translation fault, bits [1:0] encode the level.
22954                                                                    0010xx = Access Flag fault, bits [1:0] encode the level.
22955                                                                    0011xx = Permission fault, bits [1:0] encode the level.
22956                                                                    010000 = Synchronous external abort on write.
22957                                                                    0101xx = Synchronous external abort on page table walk, bits [1:0] encode the level.
22958                                                                    010001 = Asynchronous external abort on write.
22959                                                                    100001 = Alignment fault.
22960                                                                    110000 = TLB Conflict fault.
22961                                                                    110101 = Unsupported Access fault.
22962 
22963                                                                  All other values are reserved. Reserved values might be defined in a future version of
22964                                                                  the architecture. */
22965 #else /* Word 0 - Little Endian */
22966         uint64_t bsc_fsc               : 6;  /**< [  5:  0](R/W) BSC when EC == 0b000000.
22967 
22968                                                                  BSC, bits [5:0], when EC == 0b000000.
22969                                                                  Buffer status code.
22970                                                                    0x0 = Buffer not filled.
22971                                                                    0x1 = Buffer filled.
22972 
22973                                                                  FSC when EC == 0b10010x.
22974                                                                  Fault status code.
22975                                                                    0000xx = Address Size fault, bits [1:0] encode the level.
22976                                                                    0001xx = Translation fault, bits [1:0] encode the level.
22977                                                                    0010xx = Access Flag fault, bits [1:0] encode the level.
22978                                                                    0011xx = Permission fault, bits [1:0] encode the level.
22979                                                                    010000 = Synchronous external abort on write.
22980                                                                    0101xx = Synchronous external abort on page table walk, bits [1:0] encode the level.
22981                                                                    010001 = Asynchronous external abort on write.
22982                                                                    100001 = Alignment fault.
22983                                                                    110000 = TLB Conflict fault.
22984                                                                    110101 = Unsupported Access fault.
22985 
22986                                                                  All other values are reserved. Reserved values might be defined in a future version of
22987                                                                  the architecture. */
22988         uint64_t reserved_6_15         : 10;
22989         uint64_t coll                  : 1;  /**< [ 16: 16](R/W) Collision detected.
22990                                                                    0 = No collision events detected.
22991                                                                    1 = At least one collision event was recorded. */
22992         uint64_t s                     : 1;  /**< [ 17: 17](R/W) Service.
22993                                                                    0 = PMBIRQ has not been asserted.
22994                                                                    1 = PMBIRQ has been asserted. All profiling data has either been written to the buffer
22995                                                                  or discarded. */
22996         uint64_t ea                    : 1;  /**< [ 18: 18](R/W) External abort.
22997                                                                    0 = An external abort has not been asserted.
22998                                                                    1 = An external abort has been asserted. */
22999         uint64_t dl                    : 1;  /**< [ 19: 19](R/W) Partial record lost.
23000                                                                    0 = PMBPTR_EL1 points to the first byte after the last complete record written to the
23001                                                                  buffer.
23002                                                                    1 = Part of a record was lost due to a service event or external abort. PMBPTR_EL1 might
23003                                                                  not point to
23004                                                                    the first byte after the last complete record written to the buffer, and so restarting
23005                                                                  collection might
23006                                                                    result in a data record stream that software cannot parse. All records prior to the last
23007                                                                  record have
23008                                                                    been written to the buffer. */
23009         uint64_t reserved_20_25        : 6;
23010         uint64_t ec                    : 6;  /**< [ 31: 26](R/W) Exception class.
23011                                                                    000000 = Buffer management event.
23012                                                                    100100 = Data abort on write to buffer.
23013                                                                    100101 = Stage 2 data abort on write to buffer.
23014 
23015                                                                  All other values are reserved. Reserved values might be defined in a future version of the
23016                                                                  architecture. */
23017         uint64_t reserved_32_63        : 32;
23018 #endif /* Word 0 - End */
23019     } s;
23020     /* struct bdk_ap_pmbsr_el1_s cn; */
23021 };
23022 typedef union bdk_ap_pmbsr_el1 bdk_ap_pmbsr_el1_t;
23023 
23024 #define BDK_AP_PMBSR_EL1 BDK_AP_PMBSR_EL1_FUNC()
23025 static inline uint64_t BDK_AP_PMBSR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMBSR_EL1_FUNC(void)23026 static inline uint64_t BDK_AP_PMBSR_EL1_FUNC(void)
23027 {
23028     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
23029         return 0x300090a0300ll;
23030     __bdk_csr_fatal("AP_PMBSR_EL1", 0, 0, 0, 0, 0);
23031 }
23032 
23033 #define typedef_BDK_AP_PMBSR_EL1 bdk_ap_pmbsr_el1_t
23034 #define bustype_BDK_AP_PMBSR_EL1 BDK_CSR_TYPE_SYSREG
23035 #define basename_BDK_AP_PMBSR_EL1 "AP_PMBSR_EL1"
23036 #define busnum_BDK_AP_PMBSR_EL1 0
23037 #define arguments_BDK_AP_PMBSR_EL1 -1,-1,-1,-1
23038 
23039 /**
23040  * Register (SYSREG) ap_pmccfiltr_el0
23041  *
23042  * AP Performance Monitors Cycle Count Filter Register
23043  * Determines the modes in which the Cycle Counter, AP_PMCCNTR_EL0,
23044  *     increments.
23045  */
23046 union bdk_ap_pmccfiltr_el0
23047 {
23048     uint32_t u;
23049     struct bdk_ap_pmccfiltr_el0_s
23050     {
23051 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23052         uint32_t p                     : 1;  /**< [ 31: 31](R/W) EL1 modes filtering bit. Controls counting in EL1. If EL3 is
23053                                                                      implemented, then counting in nonsecure EL1 is further
23054                                                                      controlled by the NSK bit.
23055                                                                  0 = Count cycles in EL1.
23056                                                                  1 = Do not count cycles in EL1. */
23057         uint32_t u                     : 1;  /**< [ 30: 30](R/W) EL0 filtering bit. Controls counting in EL0. If EL3 is
23058                                                                      implemented, then counting in nonsecure EL0 is further
23059                                                                      controlled by the NSU bit.
23060                                                                  0 = Count cycles in EL0.
23061                                                                  1 = Do not count cycles in EL0. */
23062         uint32_t nsk                   : 1;  /**< [ 29: 29](R/W) Nonsecure kernel modes filtering bit. Controls counting in
23063                                                                      nonsecure EL1. If EL3 is not implemented, this bit is RES0.
23064                                                                  If the value of this bit is equal to the value of P, cycles in
23065                                                                      nonsecure EL1 are counted.
23066                                                                  Otherwise, cycles in nonsecure EL1 are not counted. */
23067         uint32_t nsu                   : 1;  /**< [ 28: 28](R/W) Nonsecure user modes filtering bit. Controls counting in Non-
23068                                                                      secure EL0. If EL3 is not implemented, this bit is RES0.
23069                                                                  If the value of this bit is equal to the value of U, cycles in
23070                                                                      nonsecure EL0 are counted.
23071                                                                  Otherwise, cycles in nonsecure EL0 are not counted. */
23072         uint32_t nsh                   : 1;  /**< [ 27: 27](R/W) Nonsecure Hyp modes filtering bit. Controls counting in Non-
23073                                                                      secure EL2. If EL2 is not implemented, this bit is RES0.
23074                                                                  0 = Do not count cycles in EL2.
23075                                                                  1 = Count cycles in EL2. */
23076         uint32_t m                     : 1;  /**< [ 26: 26](R/W) Secure EL3 filtering bit. Most applications can ignore this
23077                                                                      bit and set the value to zero. If EL3 is not implemented, this
23078                                                                      bit is RES0.
23079 
23080                                                                  If the value of this bit is equal to the value of P, cycles in
23081                                                                      Secure EL3 are counted.
23082 
23083                                                                  Otherwise, cycles in Secure EL3 are not counted. */
23084         uint32_t reserved_0_25         : 26;
23085 #else /* Word 0 - Little Endian */
23086         uint32_t reserved_0_25         : 26;
23087         uint32_t m                     : 1;  /**< [ 26: 26](R/W) Secure EL3 filtering bit. Most applications can ignore this
23088                                                                      bit and set the value to zero. If EL3 is not implemented, this
23089                                                                      bit is RES0.
23090 
23091                                                                  If the value of this bit is equal to the value of P, cycles in
23092                                                                      Secure EL3 are counted.
23093 
23094                                                                  Otherwise, cycles in Secure EL3 are not counted. */
23095         uint32_t nsh                   : 1;  /**< [ 27: 27](R/W) Nonsecure Hyp modes filtering bit. Controls counting in Non-
23096                                                                      secure EL2. If EL2 is not implemented, this bit is RES0.
23097                                                                  0 = Do not count cycles in EL2.
23098                                                                  1 = Count cycles in EL2. */
23099         uint32_t nsu                   : 1;  /**< [ 28: 28](R/W) Nonsecure user modes filtering bit. Controls counting in Non-
23100                                                                      secure EL0. If EL3 is not implemented, this bit is RES0.
23101                                                                  If the value of this bit is equal to the value of U, cycles in
23102                                                                      nonsecure EL0 are counted.
23103                                                                  Otherwise, cycles in nonsecure EL0 are not counted. */
23104         uint32_t nsk                   : 1;  /**< [ 29: 29](R/W) Nonsecure kernel modes filtering bit. Controls counting in
23105                                                                      nonsecure EL1. If EL3 is not implemented, this bit is RES0.
23106                                                                  If the value of this bit is equal to the value of P, cycles in
23107                                                                      nonsecure EL1 are counted.
23108                                                                  Otherwise, cycles in nonsecure EL1 are not counted. */
23109         uint32_t u                     : 1;  /**< [ 30: 30](R/W) EL0 filtering bit. Controls counting in EL0. If EL3 is
23110                                                                      implemented, then counting in nonsecure EL0 is further
23111                                                                      controlled by the NSU bit.
23112                                                                  0 = Count cycles in EL0.
23113                                                                  1 = Do not count cycles in EL0. */
23114         uint32_t p                     : 1;  /**< [ 31: 31](R/W) EL1 modes filtering bit. Controls counting in EL1. If EL3 is
23115                                                                      implemented, then counting in nonsecure EL1 is further
23116                                                                      controlled by the NSK bit.
23117                                                                  0 = Count cycles in EL1.
23118                                                                  1 = Do not count cycles in EL1. */
23119 #endif /* Word 0 - End */
23120     } s;
23121     /* struct bdk_ap_pmccfiltr_el0_s cn; */
23122 };
23123 typedef union bdk_ap_pmccfiltr_el0 bdk_ap_pmccfiltr_el0_t;
23124 
23125 #define BDK_AP_PMCCFILTR_EL0 BDK_AP_PMCCFILTR_EL0_FUNC()
23126 static inline uint64_t BDK_AP_PMCCFILTR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMCCFILTR_EL0_FUNC(void)23127 static inline uint64_t BDK_AP_PMCCFILTR_EL0_FUNC(void)
23128 {
23129     return 0x3030e0f0700ll;
23130 }
23131 
23132 #define typedef_BDK_AP_PMCCFILTR_EL0 bdk_ap_pmccfiltr_el0_t
23133 #define bustype_BDK_AP_PMCCFILTR_EL0 BDK_CSR_TYPE_SYSREG
23134 #define basename_BDK_AP_PMCCFILTR_EL0 "AP_PMCCFILTR_EL0"
23135 #define busnum_BDK_AP_PMCCFILTR_EL0 0
23136 #define arguments_BDK_AP_PMCCFILTR_EL0 -1,-1,-1,-1
23137 
23138 /**
23139  * Register (SYSREG) ap_pmccntr_el0
23140  *
23141  * AP Performance Monitors Cycle Count Register
23142  * Holds the value of the processor Cycle Counter, CCNT, that
23143  *     counts processor clock cycles.
23144  */
23145 union bdk_ap_pmccntr_el0
23146 {
23147     uint64_t u;
23148     struct bdk_ap_pmccntr_el0_s
23149     {
23150 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23151         uint64_t ccnt                  : 64; /**< [ 63:  0](R/W) Cycle count. Depending on the values of AP_PMCR_EL0.{LC,D}, this
23152                                                                      field increments in one of the following ways:
23153                                                                   Every processor clock cycle.
23154                                                                   Every 64th processor clock cycle.
23155                                                                  This field can be reset to zero by writing 1 to AP_PMCR_EL0[C]. */
23156 #else /* Word 0 - Little Endian */
23157         uint64_t ccnt                  : 64; /**< [ 63:  0](R/W) Cycle count. Depending on the values of AP_PMCR_EL0.{LC,D}, this
23158                                                                      field increments in one of the following ways:
23159                                                                   Every processor clock cycle.
23160                                                                   Every 64th processor clock cycle.
23161                                                                  This field can be reset to zero by writing 1 to AP_PMCR_EL0[C]. */
23162 #endif /* Word 0 - End */
23163     } s;
23164     /* struct bdk_ap_pmccntr_el0_s cn; */
23165 };
23166 typedef union bdk_ap_pmccntr_el0 bdk_ap_pmccntr_el0_t;
23167 
23168 #define BDK_AP_PMCCNTR_EL0 BDK_AP_PMCCNTR_EL0_FUNC()
23169 static inline uint64_t BDK_AP_PMCCNTR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMCCNTR_EL0_FUNC(void)23170 static inline uint64_t BDK_AP_PMCCNTR_EL0_FUNC(void)
23171 {
23172     return 0x303090d0000ll;
23173 }
23174 
23175 #define typedef_BDK_AP_PMCCNTR_EL0 bdk_ap_pmccntr_el0_t
23176 #define bustype_BDK_AP_PMCCNTR_EL0 BDK_CSR_TYPE_SYSREG
23177 #define basename_BDK_AP_PMCCNTR_EL0 "AP_PMCCNTR_EL0"
23178 #define busnum_BDK_AP_PMCCNTR_EL0 0
23179 #define arguments_BDK_AP_PMCCNTR_EL0 -1,-1,-1,-1
23180 
23181 /**
23182  * Register (SYSREG) ap_pmceid0_el0
23183  *
23184  * AP Performance Monitors Common Event Identification Register 0
23185  * Defines which common architectural and common
23186  *     microarchitectural feature events are implemented. If a
23187  *     particular bit is set to 1, then the event for that bit is
23188  *     implemented.
23189  */
23190 union bdk_ap_pmceid0_el0
23191 {
23192     uint64_t u;
23193     struct bdk_ap_pmceid0_el0_s
23194     {
23195 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23196         uint64_t ce                    : 64; /**< [ 63:  0](RO) Common architectural and microarchitectural feature events
23197                                                                      that can be counted by the PMU event counters.
23198                                                                  For each bit described in the following table, the event is
23199                                                                      implemented if the bit is set to 1, or not implemented if the
23200                                                                      bit is set to 0.
23201 
23202                                                                  \<pre\>
23203                                                                  Bit Event number    Event mnemonic
23204                                                                  31  0x01F   L1D_CACHE_ALLOCATE
23205                                                                  30  0x01E   CHAIN
23206                                                                  29  0x01D   BUS_CYCLES
23207                                                                  28  0x01C   TTBR_WRITE_RETIRED
23208                                                                  27  0x01B   INST_SPEC
23209                                                                  26  0x01A   MEMORY_ERROR
23210                                                                  25  0x019   BUS_ACCESS
23211                                                                  24  0x018   L2D_CACHE_WB
23212                                                                  23  0x017   L2D_CACHE_REFILL
23213                                                                  22  0x016   L2D_CACHE
23214                                                                  21  0x015   L1D_CACHE_WB
23215                                                                  20  0x014   L1I_CACHE
23216                                                                  19  0x013   MEM_ACCESS
23217                                                                  18  0x012   BR_PRED
23218                                                                  17  0x011   CPU_CYCLES
23219                                                                  16  0x010   BR_MIS_PRED
23220                                                                  15  0x00F   UNALIGNED_LDST_RETIRED
23221                                                                  14  0x00E   BR_RETURN_RETIRED
23222                                                                  13  0x00D   BR_IMMED_RETIRED
23223                                                                  12  0x00C   PC_WRITE_RETIRED
23224                                                                  11  0x00B   CID_WRITE_RETIRED
23225                                                                  10  0x00A   EXC_RETURN
23226                                                                  9   0x009   EXC_TAKEN
23227                                                                  8   0x008   INST_RETIRED
23228                                                                  7   0x007   ST_RETIRED
23229                                                                  6   0x006   LD_RETIRED
23230                                                                  5   0x005   L1D_TLB_REFILL
23231                                                                  4   0x004   L1D_CACHE
23232                                                                  3   0x003   L1D_CACHE_REFILL
23233                                                                  2   0x002   L1I_TLB_REFILL
23234                                                                  1   0x001   L1I_CACHE_REFILL
23235                                                                  0   0x000   SW_INCR
23236                                                                  \</pre\> */
23237 #else /* Word 0 - Little Endian */
23238         uint64_t ce                    : 64; /**< [ 63:  0](RO) Common architectural and microarchitectural feature events
23239                                                                      that can be counted by the PMU event counters.
23240                                                                  For each bit described in the following table, the event is
23241                                                                      implemented if the bit is set to 1, or not implemented if the
23242                                                                      bit is set to 0.
23243 
23244                                                                  \<pre\>
23245                                                                  Bit Event number    Event mnemonic
23246                                                                  31  0x01F   L1D_CACHE_ALLOCATE
23247                                                                  30  0x01E   CHAIN
23248                                                                  29  0x01D   BUS_CYCLES
23249                                                                  28  0x01C   TTBR_WRITE_RETIRED
23250                                                                  27  0x01B   INST_SPEC
23251                                                                  26  0x01A   MEMORY_ERROR
23252                                                                  25  0x019   BUS_ACCESS
23253                                                                  24  0x018   L2D_CACHE_WB
23254                                                                  23  0x017   L2D_CACHE_REFILL
23255                                                                  22  0x016   L2D_CACHE
23256                                                                  21  0x015   L1D_CACHE_WB
23257                                                                  20  0x014   L1I_CACHE
23258                                                                  19  0x013   MEM_ACCESS
23259                                                                  18  0x012   BR_PRED
23260                                                                  17  0x011   CPU_CYCLES
23261                                                                  16  0x010   BR_MIS_PRED
23262                                                                  15  0x00F   UNALIGNED_LDST_RETIRED
23263                                                                  14  0x00E   BR_RETURN_RETIRED
23264                                                                  13  0x00D   BR_IMMED_RETIRED
23265                                                                  12  0x00C   PC_WRITE_RETIRED
23266                                                                  11  0x00B   CID_WRITE_RETIRED
23267                                                                  10  0x00A   EXC_RETURN
23268                                                                  9   0x009   EXC_TAKEN
23269                                                                  8   0x008   INST_RETIRED
23270                                                                  7   0x007   ST_RETIRED
23271                                                                  6   0x006   LD_RETIRED
23272                                                                  5   0x005   L1D_TLB_REFILL
23273                                                                  4   0x004   L1D_CACHE
23274                                                                  3   0x003   L1D_CACHE_REFILL
23275                                                                  2   0x002   L1I_TLB_REFILL
23276                                                                  1   0x001   L1I_CACHE_REFILL
23277                                                                  0   0x000   SW_INCR
23278                                                                  \</pre\> */
23279 #endif /* Word 0 - End */
23280     } s;
23281     /* struct bdk_ap_pmceid0_el0_s cn8; */
23282     struct bdk_ap_pmceid0_el0_cn9
23283     {
23284 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23285         uint64_t ce                    : 64; /**< [ 63:  0](RO) Common architectural and microarchitectural feature events
23286                                                                      that can be counted by the PMU event counters.
23287                                                                  For each bit described in the following table, the event is
23288                                                                      implemented if the bit is set to 1, or not implemented if the
23289                                                                      bit is set to 0.
23290 
23291                                                                  \<pre\>
23292                                                                  Bit Event number    Event mnemonic
23293                                                                  35  0x4003  SAMPLE_COLLISION.
23294                                                                  34  0x4002  SAMPLE_FILTRATE.
23295                                                                  33  0x4001  SAMPLE_FEED.
23296                                                                  32  0x4000  SAMPLE_POP.
23297                                                                  31  0x01F   L1D_CACHE_ALLOCATE
23298                                                                  30  0x01E   CHAIN
23299                                                                  29  0x01D   BUS_CYCLES
23300                                                                  28  0x01C   TTBR_WRITE_RETIRED
23301                                                                  27  0x01B   INST_SPEC
23302                                                                  26  0x01A   MEMORY_ERROR
23303                                                                  25  0x019   BUS_ACCESS
23304                                                                  24  0x018   L2D_CACHE_WB
23305                                                                  23  0x017   L2D_CACHE_REFILL
23306                                                                  22  0x016   L2D_CACHE
23307                                                                  21  0x015   L1D_CACHE_WB
23308                                                                  20  0x014   L1I_CACHE
23309                                                                  19  0x013   MEM_ACCESS
23310                                                                  18  0x012   BR_PRED
23311                                                                  17  0x011   CPU_CYCLES
23312                                                                  16  0x010   BR_MIS_PRED
23313                                                                  15  0x00F   UNALIGNED_LDST_RETIRED
23314                                                                  14  0x00E   BR_RETURN_RETIRED
23315                                                                  13  0x00D   BR_IMMED_RETIRED
23316                                                                  12  0x00C   PC_WRITE_RETIRED
23317                                                                  11  0x00B   CID_WRITE_RETIRED
23318                                                                  10  0x00A   EXC_RETURN
23319                                                                  9   0x009   EXC_TAKEN
23320                                                                  8   0x008   INST_RETIRED
23321                                                                  7   0x007   ST_RETIRED
23322                                                                  6   0x006   LD_RETIRED
23323                                                                  5   0x005   L1D_TLB_REFILL
23324                                                                  4   0x004   L1D_CACHE
23325                                                                  3   0x003   L1D_CACHE_REFILL
23326                                                                  2   0x002   L1I_TLB_REFILL
23327                                                                  1   0x001   L1I_CACHE_REFILL
23328                                                                  0   0x000   SW_INCR
23329                                                                  \</pre\> */
23330 #else /* Word 0 - Little Endian */
23331         uint64_t ce                    : 64; /**< [ 63:  0](RO) Common architectural and microarchitectural feature events
23332                                                                      that can be counted by the PMU event counters.
23333                                                                  For each bit described in the following table, the event is
23334                                                                      implemented if the bit is set to 1, or not implemented if the
23335                                                                      bit is set to 0.
23336 
23337                                                                  \<pre\>
23338                                                                  Bit Event number    Event mnemonic
23339                                                                  35  0x4003  SAMPLE_COLLISION.
23340                                                                  34  0x4002  SAMPLE_FILTRATE.
23341                                                                  33  0x4001  SAMPLE_FEED.
23342                                                                  32  0x4000  SAMPLE_POP.
23343                                                                  31  0x01F   L1D_CACHE_ALLOCATE
23344                                                                  30  0x01E   CHAIN
23345                                                                  29  0x01D   BUS_CYCLES
23346                                                                  28  0x01C   TTBR_WRITE_RETIRED
23347                                                                  27  0x01B   INST_SPEC
23348                                                                  26  0x01A   MEMORY_ERROR
23349                                                                  25  0x019   BUS_ACCESS
23350                                                                  24  0x018   L2D_CACHE_WB
23351                                                                  23  0x017   L2D_CACHE_REFILL
23352                                                                  22  0x016   L2D_CACHE
23353                                                                  21  0x015   L1D_CACHE_WB
23354                                                                  20  0x014   L1I_CACHE
23355                                                                  19  0x013   MEM_ACCESS
23356                                                                  18  0x012   BR_PRED
23357                                                                  17  0x011   CPU_CYCLES
23358                                                                  16  0x010   BR_MIS_PRED
23359                                                                  15  0x00F   UNALIGNED_LDST_RETIRED
23360                                                                  14  0x00E   BR_RETURN_RETIRED
23361                                                                  13  0x00D   BR_IMMED_RETIRED
23362                                                                  12  0x00C   PC_WRITE_RETIRED
23363                                                                  11  0x00B   CID_WRITE_RETIRED
23364                                                                  10  0x00A   EXC_RETURN
23365                                                                  9   0x009   EXC_TAKEN
23366                                                                  8   0x008   INST_RETIRED
23367                                                                  7   0x007   ST_RETIRED
23368                                                                  6   0x006   LD_RETIRED
23369                                                                  5   0x005   L1D_TLB_REFILL
23370                                                                  4   0x004   L1D_CACHE
23371                                                                  3   0x003   L1D_CACHE_REFILL
23372                                                                  2   0x002   L1I_TLB_REFILL
23373                                                                  1   0x001   L1I_CACHE_REFILL
23374                                                                  0   0x000   SW_INCR
23375                                                                  \</pre\> */
23376 #endif /* Word 0 - End */
23377     } cn9;
23378 };
23379 typedef union bdk_ap_pmceid0_el0 bdk_ap_pmceid0_el0_t;
23380 
23381 #define BDK_AP_PMCEID0_EL0 BDK_AP_PMCEID0_EL0_FUNC()
23382 static inline uint64_t BDK_AP_PMCEID0_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMCEID0_EL0_FUNC(void)23383 static inline uint64_t BDK_AP_PMCEID0_EL0_FUNC(void)
23384 {
23385     return 0x303090c0600ll;
23386 }
23387 
23388 #define typedef_BDK_AP_PMCEID0_EL0 bdk_ap_pmceid0_el0_t
23389 #define bustype_BDK_AP_PMCEID0_EL0 BDK_CSR_TYPE_SYSREG
23390 #define basename_BDK_AP_PMCEID0_EL0 "AP_PMCEID0_EL0"
23391 #define busnum_BDK_AP_PMCEID0_EL0 0
23392 #define arguments_BDK_AP_PMCEID0_EL0 -1,-1,-1,-1
23393 
23394 /**
23395  * Register (SYSREG) ap_pmceid1_el0
23396  *
23397  * AP Performance Monitors Common Event Identification Register 1
23398  * Reserved for future indication of which common architectural
23399  *     and common microarchitectural feature events are implemented.
23400  */
23401 union bdk_ap_pmceid1_el0
23402 {
23403     uint64_t u;
23404     struct bdk_ap_pmceid1_el0_s
23405     {
23406 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23407         uint64_t ce                    : 64; /**< [ 63:  0](RO) Common architectural and microarchitectural feature events
23408                                                                      that can be counted by the PMU event counters.
23409 
23410                                                                  For the bit described in the following table, the event is
23411                                                                      implemented if the bit is set to 1, or not implemented if the
23412                                                                      bit is set to 0.
23413 
23414                                                                  \<pre\>
23415                                                                  Bit Event number    Event mnemonic
23416                                                                  0   0x020   L2D_CACHE_ALLOCATE
23417                                                                  \</pre\> */
23418 #else /* Word 0 - Little Endian */
23419         uint64_t ce                    : 64; /**< [ 63:  0](RO) Common architectural and microarchitectural feature events
23420                                                                      that can be counted by the PMU event counters.
23421 
23422                                                                  For the bit described in the following table, the event is
23423                                                                      implemented if the bit is set to 1, or not implemented if the
23424                                                                      bit is set to 0.
23425 
23426                                                                  \<pre\>
23427                                                                  Bit Event number    Event mnemonic
23428                                                                  0   0x020   L2D_CACHE_ALLOCATE
23429                                                                  \</pre\> */
23430 #endif /* Word 0 - End */
23431     } s;
23432     /* struct bdk_ap_pmceid1_el0_s cn8; */
23433     struct bdk_ap_pmceid1_el0_cn9
23434     {
23435 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23436         uint64_t ce                    : 64; /**< [ 63:  0](RO) Common architectural and microarchitectural feature events
23437                                                                      that can be counted by the PMU event counters.
23438 
23439                                                                  For the bit described in the following table, the event is
23440                                                                      implemented if the bit is set to 1, or not implemented if the
23441                                                                      bit is set to 0.
23442 
23443                                                                  \<pre\>
23444                                                                  Bit Event number    Event mnemonic
23445                                                                    24  0x0038 = REMOTE_ACCESS_RD.
23446                                                                    23  0x0037 = LL_CACHE_MISS_RD.
23447                                                                    22  0x0036 = LL_CACHE_RD.
23448                                                                    21  0x0035 = ITLB_WALK.
23449                                                                    20  0x0034 = DTLB_WALK.
23450                                                                    19  0x0033 = LL_CACHE MISS.
23451                                                                    18  0x0032 = LL_CACHE.
23452                                                                    17  0x0031 = REMOTE_ACCESS.
23453                                                                    16  RAZ
23454                                                                    15  0x002f = L2D_TLB.
23455                                                                    14  0x002e = L2I_TLB_REFILL.
23456                                                                    13  0x002d = L2D_TLB_REFILL.
23457                                                                    8   0x0028 = L2I_CACHE_REFILL.
23458                                                                    7   0x0027 = L2I_CACHE.
23459                                                                    6   0x0026 = L1I_TLB.
23460                                                                    5   0x0025 = L1D_TLB.
23461                                                                    4   0x0024 = STALL_BACKEND.
23462                                                                    3   0x0023 = STALL_FRONTEND.
23463                                                                    2   0x0022 = BR_MIS_PRED_RETIRED.
23464                                                                    1   0x0021 = BR_RETIRED.
23465                                                                    0   0x020   L2D_CACHE_ALLOCATE.
23466                                                                  \</pre\> */
23467 #else /* Word 0 - Little Endian */
23468         uint64_t ce                    : 64; /**< [ 63:  0](RO) Common architectural and microarchitectural feature events
23469                                                                      that can be counted by the PMU event counters.
23470 
23471                                                                  For the bit described in the following table, the event is
23472                                                                      implemented if the bit is set to 1, or not implemented if the
23473                                                                      bit is set to 0.
23474 
23475                                                                  \<pre\>
23476                                                                  Bit Event number    Event mnemonic
23477                                                                    24  0x0038 = REMOTE_ACCESS_RD.
23478                                                                    23  0x0037 = LL_CACHE_MISS_RD.
23479                                                                    22  0x0036 = LL_CACHE_RD.
23480                                                                    21  0x0035 = ITLB_WALK.
23481                                                                    20  0x0034 = DTLB_WALK.
23482                                                                    19  0x0033 = LL_CACHE MISS.
23483                                                                    18  0x0032 = LL_CACHE.
23484                                                                    17  0x0031 = REMOTE_ACCESS.
23485                                                                    16  RAZ
23486                                                                    15  0x002f = L2D_TLB.
23487                                                                    14  0x002e = L2I_TLB_REFILL.
23488                                                                    13  0x002d = L2D_TLB_REFILL.
23489                                                                    8   0x0028 = L2I_CACHE_REFILL.
23490                                                                    7   0x0027 = L2I_CACHE.
23491                                                                    6   0x0026 = L1I_TLB.
23492                                                                    5   0x0025 = L1D_TLB.
23493                                                                    4   0x0024 = STALL_BACKEND.
23494                                                                    3   0x0023 = STALL_FRONTEND.
23495                                                                    2   0x0022 = BR_MIS_PRED_RETIRED.
23496                                                                    1   0x0021 = BR_RETIRED.
23497                                                                    0   0x020   L2D_CACHE_ALLOCATE.
23498                                                                  \</pre\> */
23499 #endif /* Word 0 - End */
23500     } cn9;
23501 };
23502 typedef union bdk_ap_pmceid1_el0 bdk_ap_pmceid1_el0_t;
23503 
23504 #define BDK_AP_PMCEID1_EL0 BDK_AP_PMCEID1_EL0_FUNC()
23505 static inline uint64_t BDK_AP_PMCEID1_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMCEID1_EL0_FUNC(void)23506 static inline uint64_t BDK_AP_PMCEID1_EL0_FUNC(void)
23507 {
23508     return 0x303090c0700ll;
23509 }
23510 
23511 #define typedef_BDK_AP_PMCEID1_EL0 bdk_ap_pmceid1_el0_t
23512 #define bustype_BDK_AP_PMCEID1_EL0 BDK_CSR_TYPE_SYSREG
23513 #define basename_BDK_AP_PMCEID1_EL0 "AP_PMCEID1_EL0"
23514 #define busnum_BDK_AP_PMCEID1_EL0 0
23515 #define arguments_BDK_AP_PMCEID1_EL0 -1,-1,-1,-1
23516 
23517 /**
23518  * Register (SYSREG) ap_pmcntenclr_el0
23519  *
23520  * AP Performance Monitors Count Enable Clear Register
23521  * Disables the Cycle Count Register, AP_PMCCNTR_EL0, and any
23522  *     implemented event counters PMEVCNTR\<x\>. Reading this register
23523  *     shows which counters are enabled.
23524  */
23525 union bdk_ap_pmcntenclr_el0
23526 {
23527     uint32_t u;
23528     struct bdk_ap_pmcntenclr_el0_s
23529     {
23530 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23531         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 disable bit. Disables the cycle counter register.
23532                                                                  0 = When read, means the cycle counter is disabled. When written,
23533                                                                      has no effect.
23534                                                                  1 = When read, means the cycle counter is enabled. When written,
23535                                                                      disables the cycle counter. */
23536         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter disable bit for PMEVCNTR\<x\>.
23537                                                                  Bits [30:N] are RAZ/WI.
23538                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
23539                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
23540                                                                      AP_PMCR_EL0[N].
23541 
23542                                                                  0 = When read, means that PMEVCNTR\<x\> is disabled. When written,
23543                                                                      has no effect.
23544                                                                  1 = When read, means that PMEVCNTR\<x\> is enabled. When written,
23545                                                                      disables PMEVCNTR\<x\>. */
23546 #else /* Word 0 - Little Endian */
23547         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter disable bit for PMEVCNTR\<x\>.
23548                                                                  Bits [30:N] are RAZ/WI.
23549                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
23550                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
23551                                                                      AP_PMCR_EL0[N].
23552 
23553                                                                  0 = When read, means that PMEVCNTR\<x\> is disabled. When written,
23554                                                                      has no effect.
23555                                                                  1 = When read, means that PMEVCNTR\<x\> is enabled. When written,
23556                                                                      disables PMEVCNTR\<x\>. */
23557         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 disable bit. Disables the cycle counter register.
23558                                                                  0 = When read, means the cycle counter is disabled. When written,
23559                                                                      has no effect.
23560                                                                  1 = When read, means the cycle counter is enabled. When written,
23561                                                                      disables the cycle counter. */
23562 #endif /* Word 0 - End */
23563     } s;
23564     /* struct bdk_ap_pmcntenclr_el0_s cn; */
23565 };
23566 typedef union bdk_ap_pmcntenclr_el0 bdk_ap_pmcntenclr_el0_t;
23567 
23568 #define BDK_AP_PMCNTENCLR_EL0 BDK_AP_PMCNTENCLR_EL0_FUNC()
23569 static inline uint64_t BDK_AP_PMCNTENCLR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMCNTENCLR_EL0_FUNC(void)23570 static inline uint64_t BDK_AP_PMCNTENCLR_EL0_FUNC(void)
23571 {
23572     return 0x303090c0200ll;
23573 }
23574 
23575 #define typedef_BDK_AP_PMCNTENCLR_EL0 bdk_ap_pmcntenclr_el0_t
23576 #define bustype_BDK_AP_PMCNTENCLR_EL0 BDK_CSR_TYPE_SYSREG
23577 #define basename_BDK_AP_PMCNTENCLR_EL0 "AP_PMCNTENCLR_EL0"
23578 #define busnum_BDK_AP_PMCNTENCLR_EL0 0
23579 #define arguments_BDK_AP_PMCNTENCLR_EL0 -1,-1,-1,-1
23580 
23581 /**
23582  * Register (SYSREG) ap_pmcntenset_el0
23583  *
23584  * AP Performance Monitors Count Enable Set Register
23585  * Enables the Cycle Count Register, AP_PMCCNTR_EL0, and any
23586  *     implemented event counters PMEVCNTR\<x\>. Reading this register
23587  *     shows which counters are enabled.
23588  */
23589 union bdk_ap_pmcntenset_el0
23590 {
23591     uint32_t u;
23592     struct bdk_ap_pmcntenset_el0_s
23593     {
23594 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23595         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 enable bit. Enables the cycle counter register.
23596                                                                  0 = When read, means the cycle counter is disabled. When written,
23597                                                                      has no effect.
23598                                                                  1 = When read, means the cycle counter is enabled. When written,
23599                                                                      enables the cycle counter. */
23600         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter enable bit for PMEVCNTR\<x\>.
23601                                                                  Bits [30:N] are RAZ/WI.
23602                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
23603                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
23604                                                                      AP_PMCR_EL0[N].
23605 
23606                                                                  0 = When read, means that PMEVCNTR\<x\> is disabled. When written,
23607                                                                      has no effect.
23608                                                                  1 = When read, means that PMEVCNTR\<x\> event counter is enabled.
23609                                                                      When written, enables PMEVCNTR\<x\>. */
23610 #else /* Word 0 - Little Endian */
23611         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter enable bit for PMEVCNTR\<x\>.
23612                                                                  Bits [30:N] are RAZ/WI.
23613                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
23614                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
23615                                                                      AP_PMCR_EL0[N].
23616 
23617                                                                  0 = When read, means that PMEVCNTR\<x\> is disabled. When written,
23618                                                                      has no effect.
23619                                                                  1 = When read, means that PMEVCNTR\<x\> event counter is enabled.
23620                                                                      When written, enables PMEVCNTR\<x\>. */
23621         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 enable bit. Enables the cycle counter register.
23622                                                                  0 = When read, means the cycle counter is disabled. When written,
23623                                                                      has no effect.
23624                                                                  1 = When read, means the cycle counter is enabled. When written,
23625                                                                      enables the cycle counter. */
23626 #endif /* Word 0 - End */
23627     } s;
23628     /* struct bdk_ap_pmcntenset_el0_s cn; */
23629 };
23630 typedef union bdk_ap_pmcntenset_el0 bdk_ap_pmcntenset_el0_t;
23631 
23632 #define BDK_AP_PMCNTENSET_EL0 BDK_AP_PMCNTENSET_EL0_FUNC()
23633 static inline uint64_t BDK_AP_PMCNTENSET_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMCNTENSET_EL0_FUNC(void)23634 static inline uint64_t BDK_AP_PMCNTENSET_EL0_FUNC(void)
23635 {
23636     return 0x303090c0100ll;
23637 }
23638 
23639 #define typedef_BDK_AP_PMCNTENSET_EL0 bdk_ap_pmcntenset_el0_t
23640 #define bustype_BDK_AP_PMCNTENSET_EL0 BDK_CSR_TYPE_SYSREG
23641 #define basename_BDK_AP_PMCNTENSET_EL0 "AP_PMCNTENSET_EL0"
23642 #define busnum_BDK_AP_PMCNTENSET_EL0 0
23643 #define arguments_BDK_AP_PMCNTENSET_EL0 -1,-1,-1,-1
23644 
23645 /**
23646  * Register (SYSREG) ap_pmcr_el0
23647  *
23648  * AP Performance Monitors Control Register
23649  * Provides details of the Performance Monitors implementation,
23650  *     including the number of counters implemented, and configures
23651  *     and controls the counters.
23652  */
23653 union bdk_ap_pmcr_el0
23654 {
23655     uint32_t u;
23656     struct bdk_ap_pmcr_el0_s
23657     {
23658 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23659         uint32_t imp                   : 8;  /**< [ 31: 24](RO) Implementer code. This field is RO with an implementation
23660                                                                      defined value.
23661                                                                  The implementer codes are allocated by ARM. Values have the
23662                                                                      same interpretation as bits [31:24] of the MIDR. */
23663         uint32_t idcode                : 8;  /**< [ 23: 16](RO) Identification code. This field is RO with an implementation
23664                                                                      defined value.
23665                                                                  Each implementer must maintain a list of identification codes
23666                                                                      that is specific to the implementer. A specific implementation
23667                                                                      is identified by the combination of the implementer code and
23668                                                                      the identification code. */
23669         uint32_t n                     : 5;  /**< [ 15: 11](RO) Number of event counters. This field is RO with an
23670                                                                      implementation defined value that indicates the number of
23671                                                                      counters implemented.
23672                                                                  The value of this field is the number of counters implemented.
23673 
23674                                                                  An implementation can implement only the Cycle Count Register,
23675                                                                      AP_PMCCNTR_EL0. This is indicated by a value of0b00000
23676 
23677                                                                  CNXXXX has 6 counters. */
23678         uint32_t reserved_7_10         : 4;
23679         uint32_t lc                    : 1;  /**< [  6:  6](RO) Long cycle counter enable. Determines which AP_PMCCNTR_EL0 bit
23680                                                                      generates an overflow recorded by PMOVSR[31].
23681                                                                  ARM deprecates use of AP_PMCR_EL0[LC] = 0.
23682                                                                  0 = Cycle counter overflow on increment that changes
23683                                                                      AP_PMCCNTR_EL0[31] from 1 to 0.
23684                                                                  1 = Cycle counter overflow on increment that changes
23685                                                                      AP_PMCCNTR_EL0[63] from 1 to 0.
23686 
23687                                                                  CNXXXX doesn't support 32 bit, so this bit is RAO / WI. */
23688         uint32_t dp                    : 1;  /**< [  5:  5](R/W) Disable cycle counter when event counting is prohibited.
23689                                                                  Event counting is prohibited when
23690                                                                      ProfilingProhibited(IsSecure(),PSTATE[EL]) == TRUE.
23691                                                                  0 =  AP_PMCCNTR_EL0, if enabled, counts when event counting is
23692                                                                      prohibited.
23693                                                                  1 =  AP_PMCCNTR_EL0 does not count when event counting is prohibited. */
23694         uint32_t x                     : 1;  /**< [  4:  4](RO) Enable export of events in an implementation defined event
23695                                                                      stream.
23696                                                                  This bit is used to permit events to be exported to another
23697                                                                      debug device, such as an OPTIONAL trace extension, over an
23698                                                                      event bus. If the implementation does not include such an
23699                                                                      event bus, this bit is RAZ/WI.
23700 
23701                                                                  This bit does not affect the generation of Performance
23702                                                                      Monitors overflow interrupt requests or signaling to a cross-
23703                                                                      trigger interface (CTI) that can be implemented as signals
23704                                                                      exported from the processor.
23705 
23706                                                                  If the implementation does not include an exported event
23707                                                                      stream, this bit is RAZ/WI. Otherwise this bit is RW.
23708                                                                  0 = Do not export events.
23709                                                                  1 = Export events where not prohibited.
23710 
23711                                                                  CNXXXX doesn't support export of events. */
23712         uint32_t dd                    : 1;  /**< [  3:  3](RO) Clock divider.
23713                                                                  If AP_PMCR_EL0[LC] == 1, this bit is ignored and the cycle counter
23714                                                                      counts every clock cycle.
23715                                                                  ARM deprecates use of PMCR[D] = 1.
23716                                                                  0 = When enabled, AP_PMCCNTR_EL0 counts every clock cycle.
23717                                                                  1 = When enabled, AP_PMCCNTR_EL0 counts once every 64 clock cycles.
23718 
23719                                                                  CNXXXX doesn't support 32-bit, so this bit is RAZ/WI. */
23720         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cycle counter reset. This bit is WO. The effects of writing to
23721                                                                      this bit are:
23722                                                                  This bit reads as zero.
23723                                                                  Resetting AP_PMCCNTR_EL0 does not clear the AP_PMCCNTR_EL0 overflow
23724                                                                      bit to 0.
23725                                                                  0 = No action.
23726                                                                  1 = Reset AP_PMCCNTR_EL0 to zero. */
23727         uint32_t p                     : 1;  /**< [  1:  1](R/W) Event counter reset. This bit is WO. The effects of writing to
23728                                                                      this bit are:
23729                                                                  This bit reads as zero.
23730                                                                  In nonsecure EL0 and EL1, if EL2 is implemented, a write of 1
23731                                                                      to this bit does not reset event counters that AP_MDCR_EL2[HPMN]
23732                                                                      reserves for EL2 use.
23733                                                                  In EL2 and EL3, a write of 1 to this bit resets all the event
23734                                                                      counters.
23735                                                                  Resetting the event counters does not clear any overflow bits
23736                                                                      to 0.
23737                                                                  0 = No action.
23738                                                                  1 = Reset all event counters accessible in the current EL, not
23739                                                                      including AP_PMCCNTR_EL0, to zero. */
23740         uint32_t ee                    : 1;  /**< [  0:  0](R/W) Enable.
23741                                                                  This bit is RW.
23742                                                                  In nonsecure EL0 and EL1, if EL2 is implemented, this bit
23743                                                                      does not affect the operation of event counters that
23744                                                                      AP_MDCR_EL2[HPMN] reserves for EL2 use.
23745                                                                  0 = All counters, including AP_PMCCNTR_EL0, are disabled.
23746                                                                  1 = All counters are enabled by AP_PMCNTENSET_EL0. */
23747 #else /* Word 0 - Little Endian */
23748         uint32_t ee                    : 1;  /**< [  0:  0](R/W) Enable.
23749                                                                  This bit is RW.
23750                                                                  In nonsecure EL0 and EL1, if EL2 is implemented, this bit
23751                                                                      does not affect the operation of event counters that
23752                                                                      AP_MDCR_EL2[HPMN] reserves for EL2 use.
23753                                                                  0 = All counters, including AP_PMCCNTR_EL0, are disabled.
23754                                                                  1 = All counters are enabled by AP_PMCNTENSET_EL0. */
23755         uint32_t p                     : 1;  /**< [  1:  1](R/W) Event counter reset. This bit is WO. The effects of writing to
23756                                                                      this bit are:
23757                                                                  This bit reads as zero.
23758                                                                  In nonsecure EL0 and EL1, if EL2 is implemented, a write of 1
23759                                                                      to this bit does not reset event counters that AP_MDCR_EL2[HPMN]
23760                                                                      reserves for EL2 use.
23761                                                                  In EL2 and EL3, a write of 1 to this bit resets all the event
23762                                                                      counters.
23763                                                                  Resetting the event counters does not clear any overflow bits
23764                                                                      to 0.
23765                                                                  0 = No action.
23766                                                                  1 = Reset all event counters accessible in the current EL, not
23767                                                                      including AP_PMCCNTR_EL0, to zero. */
23768         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cycle counter reset. This bit is WO. The effects of writing to
23769                                                                      this bit are:
23770                                                                  This bit reads as zero.
23771                                                                  Resetting AP_PMCCNTR_EL0 does not clear the AP_PMCCNTR_EL0 overflow
23772                                                                      bit to 0.
23773                                                                  0 = No action.
23774                                                                  1 = Reset AP_PMCCNTR_EL0 to zero. */
23775         uint32_t dd                    : 1;  /**< [  3:  3](RO) Clock divider.
23776                                                                  If AP_PMCR_EL0[LC] == 1, this bit is ignored and the cycle counter
23777                                                                      counts every clock cycle.
23778                                                                  ARM deprecates use of PMCR[D] = 1.
23779                                                                  0 = When enabled, AP_PMCCNTR_EL0 counts every clock cycle.
23780                                                                  1 = When enabled, AP_PMCCNTR_EL0 counts once every 64 clock cycles.
23781 
23782                                                                  CNXXXX doesn't support 32-bit, so this bit is RAZ/WI. */
23783         uint32_t x                     : 1;  /**< [  4:  4](RO) Enable export of events in an implementation defined event
23784                                                                      stream.
23785                                                                  This bit is used to permit events to be exported to another
23786                                                                      debug device, such as an OPTIONAL trace extension, over an
23787                                                                      event bus. If the implementation does not include such an
23788                                                                      event bus, this bit is RAZ/WI.
23789 
23790                                                                  This bit does not affect the generation of Performance
23791                                                                      Monitors overflow interrupt requests or signaling to a cross-
23792                                                                      trigger interface (CTI) that can be implemented as signals
23793                                                                      exported from the processor.
23794 
23795                                                                  If the implementation does not include an exported event
23796                                                                      stream, this bit is RAZ/WI. Otherwise this bit is RW.
23797                                                                  0 = Do not export events.
23798                                                                  1 = Export events where not prohibited.
23799 
23800                                                                  CNXXXX doesn't support export of events. */
23801         uint32_t dp                    : 1;  /**< [  5:  5](R/W) Disable cycle counter when event counting is prohibited.
23802                                                                  Event counting is prohibited when
23803                                                                      ProfilingProhibited(IsSecure(),PSTATE[EL]) == TRUE.
23804                                                                  0 =  AP_PMCCNTR_EL0, if enabled, counts when event counting is
23805                                                                      prohibited.
23806                                                                  1 =  AP_PMCCNTR_EL0 does not count when event counting is prohibited. */
23807         uint32_t lc                    : 1;  /**< [  6:  6](RO) Long cycle counter enable. Determines which AP_PMCCNTR_EL0 bit
23808                                                                      generates an overflow recorded by PMOVSR[31].
23809                                                                  ARM deprecates use of AP_PMCR_EL0[LC] = 0.
23810                                                                  0 = Cycle counter overflow on increment that changes
23811                                                                      AP_PMCCNTR_EL0[31] from 1 to 0.
23812                                                                  1 = Cycle counter overflow on increment that changes
23813                                                                      AP_PMCCNTR_EL0[63] from 1 to 0.
23814 
23815                                                                  CNXXXX doesn't support 32 bit, so this bit is RAO / WI. */
23816         uint32_t reserved_7_10         : 4;
23817         uint32_t n                     : 5;  /**< [ 15: 11](RO) Number of event counters. This field is RO with an
23818                                                                      implementation defined value that indicates the number of
23819                                                                      counters implemented.
23820                                                                  The value of this field is the number of counters implemented.
23821 
23822                                                                  An implementation can implement only the Cycle Count Register,
23823                                                                      AP_PMCCNTR_EL0. This is indicated by a value of0b00000
23824 
23825                                                                  CNXXXX has 6 counters. */
23826         uint32_t idcode                : 8;  /**< [ 23: 16](RO) Identification code. This field is RO with an implementation
23827                                                                      defined value.
23828                                                                  Each implementer must maintain a list of identification codes
23829                                                                      that is specific to the implementer. A specific implementation
23830                                                                      is identified by the combination of the implementer code and
23831                                                                      the identification code. */
23832         uint32_t imp                   : 8;  /**< [ 31: 24](RO) Implementer code. This field is RO with an implementation
23833                                                                      defined value.
23834                                                                  The implementer codes are allocated by ARM. Values have the
23835                                                                      same interpretation as bits [31:24] of the MIDR. */
23836 #endif /* Word 0 - End */
23837     } s;
23838     /* struct bdk_ap_pmcr_el0_s cn; */
23839 };
23840 typedef union bdk_ap_pmcr_el0 bdk_ap_pmcr_el0_t;
23841 
23842 #define BDK_AP_PMCR_EL0 BDK_AP_PMCR_EL0_FUNC()
23843 static inline uint64_t BDK_AP_PMCR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMCR_EL0_FUNC(void)23844 static inline uint64_t BDK_AP_PMCR_EL0_FUNC(void)
23845 {
23846     return 0x303090c0000ll;
23847 }
23848 
23849 #define typedef_BDK_AP_PMCR_EL0 bdk_ap_pmcr_el0_t
23850 #define bustype_BDK_AP_PMCR_EL0 BDK_CSR_TYPE_SYSREG
23851 #define basename_BDK_AP_PMCR_EL0 "AP_PMCR_EL0"
23852 #define busnum_BDK_AP_PMCR_EL0 0
23853 #define arguments_BDK_AP_PMCR_EL0 -1,-1,-1,-1
23854 
23855 /**
23856  * Register (SYSREG) ap_pmevcntr#_el0
23857  *
23858  * AP Performance Monitors Event Count Registers
23859  * Holds event counter n, which counts events, where n is 0 to
23860  *     30.
23861  */
23862 union bdk_ap_pmevcntrx_el0
23863 {
23864     uint32_t u;
23865     struct bdk_ap_pmevcntrx_el0_s
23866     {
23867 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23868         uint32_t data                  : 32; /**< [ 31:  0](R/W) Event counter n. Value of event counter n, where n is the
23869                                                                      number of this register and is a number from 0 to 30. */
23870 #else /* Word 0 - Little Endian */
23871         uint32_t data                  : 32; /**< [ 31:  0](R/W) Event counter n. Value of event counter n, where n is the
23872                                                                      number of this register and is a number from 0 to 30. */
23873 #endif /* Word 0 - End */
23874     } s;
23875     /* struct bdk_ap_pmevcntrx_el0_s cn; */
23876 };
23877 typedef union bdk_ap_pmevcntrx_el0 bdk_ap_pmevcntrx_el0_t;
23878 
23879 static inline uint64_t BDK_AP_PMEVCNTRX_EL0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_PMEVCNTRX_EL0(unsigned long a)23880 static inline uint64_t BDK_AP_PMEVCNTRX_EL0(unsigned long a)
23881 {
23882     if (a<=30)
23883         return 0x3030e080000ll + 0x100ll * ((a) & 0x1f);
23884     __bdk_csr_fatal("AP_PMEVCNTRX_EL0", 1, a, 0, 0, 0);
23885 }
23886 
23887 #define typedef_BDK_AP_PMEVCNTRX_EL0(a) bdk_ap_pmevcntrx_el0_t
23888 #define bustype_BDK_AP_PMEVCNTRX_EL0(a) BDK_CSR_TYPE_SYSREG
23889 #define basename_BDK_AP_PMEVCNTRX_EL0(a) "AP_PMEVCNTRX_EL0"
23890 #define busnum_BDK_AP_PMEVCNTRX_EL0(a) (a)
23891 #define arguments_BDK_AP_PMEVCNTRX_EL0(a) (a),-1,-1,-1
23892 
23893 /**
23894  * Register (SYSREG) ap_pmevtyper#_el0
23895  *
23896  * AP Performance Monitors Event Type Registers
23897  * Configures event counter n, where n is 0 to 30.
23898  */
23899 union bdk_ap_pmevtyperx_el0
23900 {
23901     uint32_t u;
23902     struct bdk_ap_pmevtyperx_el0_s
23903     {
23904 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23905         uint32_t p                     : 1;  /**< [ 31: 31](R/W) EL1 modes filtering bit. Controls counting in EL1. If EL3 is
23906                                                                      implemented, then counting in nonsecure EL1 is further
23907                                                                      controlled by the NSK bit.
23908                                                                  0 = Count events in EL1.
23909                                                                  1 = Do not count events in EL1. */
23910         uint32_t u                     : 1;  /**< [ 30: 30](R/W) EL0 filtering bit. Controls counting in EL0. If EL3 is
23911                                                                      implemented, then counting in nonsecure EL0 is further
23912                                                                      controlled by the NSU bit.
23913                                                                  0 = Count events in EL0.
23914                                                                  1 = Do not count events in EL0. */
23915         uint32_t nsk                   : 1;  /**< [ 29: 29](R/W) Nonsecure kernel modes filtering bit. Controls counting in
23916                                                                      nonsecure EL1. If EL3 is not implemented, this bit is RES0.
23917                                                                  If the value of this bit is equal to the value of P, events in
23918                                                                      nonsecure EL1 are counted.
23919                                                                  Otherwise, events in nonsecure EL1 are not counted. */
23920         uint32_t nsu                   : 1;  /**< [ 28: 28](R/W) Nonsecure user modes filtering bit. Controls counting in Non-
23921                                                                      secure EL0. If EL3 is not implemented, this bit is RES0.
23922                                                                  If the value of this bit is equal to the value of U, events in
23923                                                                      nonsecure EL0 are counted.
23924                                                                  Otherwise, events in nonsecure EL0 are not counted. */
23925         uint32_t nsh                   : 1;  /**< [ 27: 27](R/W) Nonsecure Hyp modes filtering bit. Controls counting in Non-
23926                                                                      secure EL2. If EL2 is not implemented, this bit is RES0.
23927                                                                  0 = Do not count events in EL2.
23928                                                                  1 = Count events in EL2. */
23929         uint32_t m                     : 1;  /**< [ 26: 26](R/W) Secure EL3 filtering bit. Most applications can ignore this
23930                                                                      bit and set the value to zero. If EL3 is not implemented, this
23931                                                                      bit is RES0.
23932                                                                  If the value of this bit is equal to the value of P, events in
23933                                                                      Secure EL3 are counted.
23934                                                                  Otherwise, events in Secure EL3 are not counted. */
23935         uint32_t reserved_16_25        : 10;
23936         uint32_t evtcount              : 16; /**< [ 15:  0](R/W) Event to count. The event number of the event that is counted
23937                                                                      by event counter PMEVCNTR\<n\>_EL0.
23938                                                                  Software must program this field with an event defined by the
23939                                                                      processor or a common event defined by the architecture.
23940                                                                  If evtCount is programmed to an event that is reserved or not
23941                                                                      implemented, the behavior depends on the event type.
23942 
23943                                                                  For common architectural and microarchitectural events:
23944                                                                   No events are counted.
23945                                                                   The value read back on evtCount is the value written.
23946 
23947                                                                  For implementation defined events:
23948 
23949                                                                   It is UNPREDICTABLE what event, if any, is counted.
23950                                                                      UNPREDICTABLE in this case means the event must not expose
23951                                                                      privileged information.
23952 
23953                                                                   The value read back on evtCount is an UNKNOWN value with the
23954                                                                      same effect.
23955 
23956                                                                  ARM recommends that the behavior across a family of
23957                                                                      implementations is defined such that if a given implementation
23958                                                                      does not include an event from a set of common implementation
23959                                                                      defined events, then no event is counted and the value read
23960                                                                      back on evtCount is the value written.
23961 
23962                                                                  v8.1: Width was extended to 16 bits. */
23963 #else /* Word 0 - Little Endian */
23964         uint32_t evtcount              : 16; /**< [ 15:  0](R/W) Event to count. The event number of the event that is counted
23965                                                                      by event counter PMEVCNTR\<n\>_EL0.
23966                                                                  Software must program this field with an event defined by the
23967                                                                      processor or a common event defined by the architecture.
23968                                                                  If evtCount is programmed to an event that is reserved or not
23969                                                                      implemented, the behavior depends on the event type.
23970 
23971                                                                  For common architectural and microarchitectural events:
23972                                                                   No events are counted.
23973                                                                   The value read back on evtCount is the value written.
23974 
23975                                                                  For implementation defined events:
23976 
23977                                                                   It is UNPREDICTABLE what event, if any, is counted.
23978                                                                      UNPREDICTABLE in this case means the event must not expose
23979                                                                      privileged information.
23980 
23981                                                                   The value read back on evtCount is an UNKNOWN value with the
23982                                                                      same effect.
23983 
23984                                                                  ARM recommends that the behavior across a family of
23985                                                                      implementations is defined such that if a given implementation
23986                                                                      does not include an event from a set of common implementation
23987                                                                      defined events, then no event is counted and the value read
23988                                                                      back on evtCount is the value written.
23989 
23990                                                                  v8.1: Width was extended to 16 bits. */
23991         uint32_t reserved_16_25        : 10;
23992         uint32_t m                     : 1;  /**< [ 26: 26](R/W) Secure EL3 filtering bit. Most applications can ignore this
23993                                                                      bit and set the value to zero. If EL3 is not implemented, this
23994                                                                      bit is RES0.
23995                                                                  If the value of this bit is equal to the value of P, events in
23996                                                                      Secure EL3 are counted.
23997                                                                  Otherwise, events in Secure EL3 are not counted. */
23998         uint32_t nsh                   : 1;  /**< [ 27: 27](R/W) Nonsecure Hyp modes filtering bit. Controls counting in Non-
23999                                                                      secure EL2. If EL2 is not implemented, this bit is RES0.
24000                                                                  0 = Do not count events in EL2.
24001                                                                  1 = Count events in EL2. */
24002         uint32_t nsu                   : 1;  /**< [ 28: 28](R/W) Nonsecure user modes filtering bit. Controls counting in Non-
24003                                                                      secure EL0. If EL3 is not implemented, this bit is RES0.
24004                                                                  If the value of this bit is equal to the value of U, events in
24005                                                                      nonsecure EL0 are counted.
24006                                                                  Otherwise, events in nonsecure EL0 are not counted. */
24007         uint32_t nsk                   : 1;  /**< [ 29: 29](R/W) Nonsecure kernel modes filtering bit. Controls counting in
24008                                                                      nonsecure EL1. If EL3 is not implemented, this bit is RES0.
24009                                                                  If the value of this bit is equal to the value of P, events in
24010                                                                      nonsecure EL1 are counted.
24011                                                                  Otherwise, events in nonsecure EL1 are not counted. */
24012         uint32_t u                     : 1;  /**< [ 30: 30](R/W) EL0 filtering bit. Controls counting in EL0. If EL3 is
24013                                                                      implemented, then counting in nonsecure EL0 is further
24014                                                                      controlled by the NSU bit.
24015                                                                  0 = Count events in EL0.
24016                                                                  1 = Do not count events in EL0. */
24017         uint32_t p                     : 1;  /**< [ 31: 31](R/W) EL1 modes filtering bit. Controls counting in EL1. If EL3 is
24018                                                                      implemented, then counting in nonsecure EL1 is further
24019                                                                      controlled by the NSK bit.
24020                                                                  0 = Count events in EL1.
24021                                                                  1 = Do not count events in EL1. */
24022 #endif /* Word 0 - End */
24023     } s;
24024     /* struct bdk_ap_pmevtyperx_el0_s cn; */
24025 };
24026 typedef union bdk_ap_pmevtyperx_el0 bdk_ap_pmevtyperx_el0_t;
24027 
24028 static inline uint64_t BDK_AP_PMEVTYPERX_EL0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_PMEVTYPERX_EL0(unsigned long a)24029 static inline uint64_t BDK_AP_PMEVTYPERX_EL0(unsigned long a)
24030 {
24031     if (a<=30)
24032         return 0x3030e0c0000ll + 0x100ll * ((a) & 0x1f);
24033     __bdk_csr_fatal("AP_PMEVTYPERX_EL0", 1, a, 0, 0, 0);
24034 }
24035 
24036 #define typedef_BDK_AP_PMEVTYPERX_EL0(a) bdk_ap_pmevtyperx_el0_t
24037 #define bustype_BDK_AP_PMEVTYPERX_EL0(a) BDK_CSR_TYPE_SYSREG
24038 #define basename_BDK_AP_PMEVTYPERX_EL0(a) "AP_PMEVTYPERX_EL0"
24039 #define busnum_BDK_AP_PMEVTYPERX_EL0(a) (a)
24040 #define arguments_BDK_AP_PMEVTYPERX_EL0(a) (a),-1,-1,-1
24041 
24042 /**
24043  * Register (SYSREG) ap_pmintenclr_el1
24044  *
24045  * AP Performance Monitors Interrupt Enable Clear Register
24046  * Disables the generation of interrupt requests on overflows
24047  *     from the Cycle Count Register, AP_PMCCNTR_EL0, and the event
24048  *     counters PMEVCNTR\<n\>_EL0. Reading the register shows which
24049  *     overflow interrupt requests are enabled.
24050  */
24051 union bdk_ap_pmintenclr_el1
24052 {
24053     uint32_t u;
24054     struct bdk_ap_pmintenclr_el1_s
24055     {
24056 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24057         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow interrupt request disable bit. Possible
24058                                                                      values are:
24059                                                                  0 = When read, means the cycle counter overflow interrupt request
24060                                                                      is disabled. When written, has no effect.
24061                                                                  1 = When read, means the cycle counter overflow interrupt request
24062                                                                      is enabled. When written, disables the cycle count overflow
24063                                                                      interrupt request. */
24064         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow interrupt request disable bit for
24065                                                                      PMEVCNTR\<x\>_EL0.
24066                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24067                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24068                                                                      AP_PMCR_EL0[N].
24069                                                                  Bits [30:N] are RAZ/WI.
24070                                                                  0 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24071                                                                      interrupt request is disabled. When written, has no effect.
24072                                                                  1 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24073                                                                      interrupt request is enabled. When written, disables the
24074                                                                      PMEVCNTR\<x\>_EL0 interrupt request. */
24075 #else /* Word 0 - Little Endian */
24076         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow interrupt request disable bit for
24077                                                                      PMEVCNTR\<x\>_EL0.
24078                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24079                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24080                                                                      AP_PMCR_EL0[N].
24081                                                                  Bits [30:N] are RAZ/WI.
24082                                                                  0 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24083                                                                      interrupt request is disabled. When written, has no effect.
24084                                                                  1 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24085                                                                      interrupt request is enabled. When written, disables the
24086                                                                      PMEVCNTR\<x\>_EL0 interrupt request. */
24087         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow interrupt request disable bit. Possible
24088                                                                      values are:
24089                                                                  0 = When read, means the cycle counter overflow interrupt request
24090                                                                      is disabled. When written, has no effect.
24091                                                                  1 = When read, means the cycle counter overflow interrupt request
24092                                                                      is enabled. When written, disables the cycle count overflow
24093                                                                      interrupt request. */
24094 #endif /* Word 0 - End */
24095     } s;
24096     /* struct bdk_ap_pmintenclr_el1_s cn8; */
24097     struct bdk_ap_pmintenclr_el1_cn9
24098     {
24099 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24100         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow interrupt request disable bit.
24101                                                                  0 = When read, means the cycle counter overflow interrupt request
24102                                                                      is disabled. When written, has no effect.
24103                                                                  1 = When read, means the cycle counter overflow interrupt request
24104                                                                      is enabled. When written, disables the cycle count overflow
24105                                                                      interrupt request. */
24106         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow interrupt request disable bit for
24107                                                                      PMEVCNTR\<x\>_EL0.
24108                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24109                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24110                                                                      AP_PMCR_EL0[N].
24111                                                                  Bits [30:N] are RAZ/WI.
24112                                                                  0 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24113                                                                      interrupt request is disabled. When written, has no effect.
24114                                                                  1 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24115                                                                      interrupt request is enabled. When written, disables the
24116                                                                      PMEVCNTR\<x\>_EL0 interrupt request. */
24117 #else /* Word 0 - Little Endian */
24118         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow interrupt request disable bit for
24119                                                                      PMEVCNTR\<x\>_EL0.
24120                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24121                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24122                                                                      AP_PMCR_EL0[N].
24123                                                                  Bits [30:N] are RAZ/WI.
24124                                                                  0 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24125                                                                      interrupt request is disabled. When written, has no effect.
24126                                                                  1 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24127                                                                      interrupt request is enabled. When written, disables the
24128                                                                      PMEVCNTR\<x\>_EL0 interrupt request. */
24129         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow interrupt request disable bit.
24130                                                                  0 = When read, means the cycle counter overflow interrupt request
24131                                                                      is disabled. When written, has no effect.
24132                                                                  1 = When read, means the cycle counter overflow interrupt request
24133                                                                      is enabled. When written, disables the cycle count overflow
24134                                                                      interrupt request. */
24135 #endif /* Word 0 - End */
24136     } cn9;
24137 };
24138 typedef union bdk_ap_pmintenclr_el1 bdk_ap_pmintenclr_el1_t;
24139 
24140 #define BDK_AP_PMINTENCLR_EL1 BDK_AP_PMINTENCLR_EL1_FUNC()
24141 static inline uint64_t BDK_AP_PMINTENCLR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMINTENCLR_EL1_FUNC(void)24142 static inline uint64_t BDK_AP_PMINTENCLR_EL1_FUNC(void)
24143 {
24144     return 0x300090e0200ll;
24145 }
24146 
24147 #define typedef_BDK_AP_PMINTENCLR_EL1 bdk_ap_pmintenclr_el1_t
24148 #define bustype_BDK_AP_PMINTENCLR_EL1 BDK_CSR_TYPE_SYSREG
24149 #define basename_BDK_AP_PMINTENCLR_EL1 "AP_PMINTENCLR_EL1"
24150 #define busnum_BDK_AP_PMINTENCLR_EL1 0
24151 #define arguments_BDK_AP_PMINTENCLR_EL1 -1,-1,-1,-1
24152 
24153 /**
24154  * Register (SYSREG) ap_pmintenset_el1
24155  *
24156  * AP Performance Monitors Interrupt Enable Set Register
24157  * Enables the generation of interrupt requests on overflows from
24158  *     the Cycle Count Register, AP_PMCCNTR_EL0, and the event counters
24159  *     PMEVCNTR\<n\>_EL0. Reading the register shows which overflow
24160  *     interrupt requests are enabled.
24161  */
24162 union bdk_ap_pmintenset_el1
24163 {
24164     uint32_t u;
24165     struct bdk_ap_pmintenset_el1_s
24166     {
24167 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24168         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow interrupt request enable bit. Possible
24169                                                                      values are:
24170                                                                  0 = When read, means the cycle counter overflow interrupt request
24171                                                                      is disabled. When written, has no effect.
24172                                                                  1 = When read, means the cycle counter overflow interrupt request
24173                                                                      is enabled. When written, enables the cycle count overflow
24174                                                                      interrupt request. */
24175         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow interrupt request enable bit for
24176                                                                      PMEVCNTR\<x\>_EL0.
24177 
24178                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24179                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24180                                                                      AP_PMCR_EL0[N].
24181 
24182                                                                  Bits [30:N] are RAZ/WI.
24183 
24184                                                                  0 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24185                                                                      interrupt request is disabled. When written, has no effect.
24186                                                                  1 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24187                                                                      interrupt request is enabled. When written, enables the
24188                                                                      PMEVCNTR\<x\>_EL0 interrupt request. */
24189 #else /* Word 0 - Little Endian */
24190         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow interrupt request enable bit for
24191                                                                      PMEVCNTR\<x\>_EL0.
24192 
24193                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24194                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24195                                                                      AP_PMCR_EL0[N].
24196 
24197                                                                  Bits [30:N] are RAZ/WI.
24198 
24199                                                                  0 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24200                                                                      interrupt request is disabled. When written, has no effect.
24201                                                                  1 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24202                                                                      interrupt request is enabled. When written, enables the
24203                                                                      PMEVCNTR\<x\>_EL0 interrupt request. */
24204         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow interrupt request enable bit. Possible
24205                                                                      values are:
24206                                                                  0 = When read, means the cycle counter overflow interrupt request
24207                                                                      is disabled. When written, has no effect.
24208                                                                  1 = When read, means the cycle counter overflow interrupt request
24209                                                                      is enabled. When written, enables the cycle count overflow
24210                                                                      interrupt request. */
24211 #endif /* Word 0 - End */
24212     } s;
24213     /* struct bdk_ap_pmintenset_el1_s cn8; */
24214     struct bdk_ap_pmintenset_el1_cn9
24215     {
24216 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24217         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow interrupt request enable bit.
24218                                                                  0 = When read, means the cycle counter overflow interrupt request
24219                                                                      is disabled. When written, has no effect.
24220                                                                  1 = When read, means the cycle counter overflow interrupt request
24221                                                                      is enabled. When written, enables the cycle count overflow
24222                                                                      interrupt request. */
24223         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow interrupt request enable bit for
24224                                                                      PMEVCNTR\<x\>_EL0.
24225 
24226                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24227                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24228                                                                      AP_PMCR_EL0[N].
24229 
24230                                                                  Bits [30:N] are RAZ/WI.
24231 
24232                                                                  0 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24233                                                                      interrupt request is disabled. When written, has no effect.
24234                                                                  1 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24235                                                                      interrupt request is enabled. When written, enables the
24236                                                                      PMEVCNTR\<x\>_EL0 interrupt request. */
24237 #else /* Word 0 - Little Endian */
24238         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow interrupt request enable bit for
24239                                                                      PMEVCNTR\<x\>_EL0.
24240 
24241                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24242                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24243                                                                      AP_PMCR_EL0[N].
24244 
24245                                                                  Bits [30:N] are RAZ/WI.
24246 
24247                                                                  0 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24248                                                                      interrupt request is disabled. When written, has no effect.
24249                                                                  1 = When read, means that the PMEVCNTR\<x\>_EL0 event counter
24250                                                                      interrupt request is enabled. When written, enables the
24251                                                                      PMEVCNTR\<x\>_EL0 interrupt request. */
24252         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow interrupt request enable bit.
24253                                                                  0 = When read, means the cycle counter overflow interrupt request
24254                                                                      is disabled. When written, has no effect.
24255                                                                  1 = When read, means the cycle counter overflow interrupt request
24256                                                                      is enabled. When written, enables the cycle count overflow
24257                                                                      interrupt request. */
24258 #endif /* Word 0 - End */
24259     } cn9;
24260 };
24261 typedef union bdk_ap_pmintenset_el1 bdk_ap_pmintenset_el1_t;
24262 
24263 #define BDK_AP_PMINTENSET_EL1 BDK_AP_PMINTENSET_EL1_FUNC()
24264 static inline uint64_t BDK_AP_PMINTENSET_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMINTENSET_EL1_FUNC(void)24265 static inline uint64_t BDK_AP_PMINTENSET_EL1_FUNC(void)
24266 {
24267     return 0x300090e0100ll;
24268 }
24269 
24270 #define typedef_BDK_AP_PMINTENSET_EL1 bdk_ap_pmintenset_el1_t
24271 #define bustype_BDK_AP_PMINTENSET_EL1 BDK_CSR_TYPE_SYSREG
24272 #define basename_BDK_AP_PMINTENSET_EL1 "AP_PMINTENSET_EL1"
24273 #define busnum_BDK_AP_PMINTENSET_EL1 0
24274 #define arguments_BDK_AP_PMINTENSET_EL1 -1,-1,-1,-1
24275 
24276 /**
24277  * Register (SYSREG) ap_pmovsclr_el0
24278  *
24279  * AP Performance Monitors Overflow Flag Status Clear Register
24280  * Contains the state of the overflow bit for the Cycle Count
24281  *     Register, AP_PMCCNTR_EL0, and each of the implemented event
24282  *     counters PMEVCNTR\<x\>. Writing to this register clears these
24283  *     bits.
24284  */
24285 union bdk_ap_pmovsclr_el0
24286 {
24287     uint32_t u;
24288     struct bdk_ap_pmovsclr_el0_s
24289     {
24290 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24291         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow bit.
24292                                                                  AP_PMCR_EL0[LC] is used to control from which bit of AP_PMCCNTR_EL0
24293                                                                      (bit 31 or bit 63) an overflow is detected.
24294                                                                  0 = When read, means the cycle counter has not overflowed. When
24295                                                                      written, has no effect.
24296                                                                  1 = When read, means the cycle counter has overflowed. When
24297                                                                      written, clears the overflow bit to 0. */
24298         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow clear bit for PMEVCNTR\<x\>.
24299                                                                  Bits [30:N] are RAZ/WI.
24300                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24301                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24302                                                                      AP_PMCR_EL0[N].
24303 
24304                                                                  0 = When read, means that PMEVCNTR\<x\> has not overflowed. When
24305                                                                      written, has no effect.
24306                                                                  1 = When read, means that PMEVCNTR\<x\> has overflowed. When
24307                                                                      written, clears the PMEVCNTR\<x\> overflow bit to 0. */
24308 #else /* Word 0 - Little Endian */
24309         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow clear bit for PMEVCNTR\<x\>.
24310                                                                  Bits [30:N] are RAZ/WI.
24311                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24312                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24313                                                                      AP_PMCR_EL0[N].
24314 
24315                                                                  0 = When read, means that PMEVCNTR\<x\> has not overflowed. When
24316                                                                      written, has no effect.
24317                                                                  1 = When read, means that PMEVCNTR\<x\> has overflowed. When
24318                                                                      written, clears the PMEVCNTR\<x\> overflow bit to 0. */
24319         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow bit.
24320                                                                  AP_PMCR_EL0[LC] is used to control from which bit of AP_PMCCNTR_EL0
24321                                                                      (bit 31 or bit 63) an overflow is detected.
24322                                                                  0 = When read, means the cycle counter has not overflowed. When
24323                                                                      written, has no effect.
24324                                                                  1 = When read, means the cycle counter has overflowed. When
24325                                                                      written, clears the overflow bit to 0. */
24326 #endif /* Word 0 - End */
24327     } s;
24328     /* struct bdk_ap_pmovsclr_el0_s cn; */
24329 };
24330 typedef union bdk_ap_pmovsclr_el0 bdk_ap_pmovsclr_el0_t;
24331 
24332 #define BDK_AP_PMOVSCLR_EL0 BDK_AP_PMOVSCLR_EL0_FUNC()
24333 static inline uint64_t BDK_AP_PMOVSCLR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMOVSCLR_EL0_FUNC(void)24334 static inline uint64_t BDK_AP_PMOVSCLR_EL0_FUNC(void)
24335 {
24336     return 0x303090c0300ll;
24337 }
24338 
24339 #define typedef_BDK_AP_PMOVSCLR_EL0 bdk_ap_pmovsclr_el0_t
24340 #define bustype_BDK_AP_PMOVSCLR_EL0 BDK_CSR_TYPE_SYSREG
24341 #define basename_BDK_AP_PMOVSCLR_EL0 "AP_PMOVSCLR_EL0"
24342 #define busnum_BDK_AP_PMOVSCLR_EL0 0
24343 #define arguments_BDK_AP_PMOVSCLR_EL0 -1,-1,-1,-1
24344 
24345 /**
24346  * Register (SYSREG) ap_pmovsset_el0
24347  *
24348  * AP Performance Monitors Overflow Flag Status Set Register
24349  * Sets the state of the overflow bit for the Cycle Count
24350  *     Register, AP_PMCCNTR_EL0, and each of the implemented event
24351  *     counters PMEVCNTR\<x\>.
24352  */
24353 union bdk_ap_pmovsset_el0
24354 {
24355     uint32_t u;
24356     struct bdk_ap_pmovsset_el0_s
24357     {
24358 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24359         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow bit.
24360                                                                  0 = When read, means the cycle counter has not overflowed. When
24361                                                                      written, has no effect.
24362                                                                  1 = When read, means the cycle counter has overflowed. When
24363                                                                      written, sets the overflow bit to 1. */
24364         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow set bit for PMEVCNTR\<x\>.
24365                                                                  Bits [30:N] are RAZ/WI.
24366                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24367                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24368                                                                      AP_PMCR_EL0[N].
24369                                                                  0 = When read, means that PMEVCNTR\<x\> has not overflowed. When
24370                                                                      written, has no effect.
24371                                                                  1 = When read, means that PMEVCNTR\<x\> has overflowed. When
24372                                                                      written, sets the PMEVCNTR\<x\> overflow bit to 1. */
24373 #else /* Word 0 - Little Endian */
24374         uint32_t p                     : 31; /**< [ 30:  0](R/W) Event counter overflow set bit for PMEVCNTR\<x\>.
24375                                                                  Bits [30:N] are RAZ/WI.
24376                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
24377                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in
24378                                                                      AP_PMCR_EL0[N].
24379                                                                  0 = When read, means that PMEVCNTR\<x\> has not overflowed. When
24380                                                                      written, has no effect.
24381                                                                  1 = When read, means that PMEVCNTR\<x\> has overflowed. When
24382                                                                      written, sets the PMEVCNTR\<x\> overflow bit to 1. */
24383         uint32_t cc                    : 1;  /**< [ 31: 31](R/W) AP_PMCCNTR_EL0 overflow bit.
24384                                                                  0 = When read, means the cycle counter has not overflowed. When
24385                                                                      written, has no effect.
24386                                                                  1 = When read, means the cycle counter has overflowed. When
24387                                                                      written, sets the overflow bit to 1. */
24388 #endif /* Word 0 - End */
24389     } s;
24390     /* struct bdk_ap_pmovsset_el0_s cn; */
24391 };
24392 typedef union bdk_ap_pmovsset_el0 bdk_ap_pmovsset_el0_t;
24393 
24394 #define BDK_AP_PMOVSSET_EL0 BDK_AP_PMOVSSET_EL0_FUNC()
24395 static inline uint64_t BDK_AP_PMOVSSET_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMOVSSET_EL0_FUNC(void)24396 static inline uint64_t BDK_AP_PMOVSSET_EL0_FUNC(void)
24397 {
24398     return 0x303090e0300ll;
24399 }
24400 
24401 #define typedef_BDK_AP_PMOVSSET_EL0 bdk_ap_pmovsset_el0_t
24402 #define bustype_BDK_AP_PMOVSSET_EL0 BDK_CSR_TYPE_SYSREG
24403 #define basename_BDK_AP_PMOVSSET_EL0 "AP_PMOVSSET_EL0"
24404 #define busnum_BDK_AP_PMOVSSET_EL0 0
24405 #define arguments_BDK_AP_PMOVSSET_EL0 -1,-1,-1,-1
24406 
24407 /**
24408  * Register (SYSREG) ap_pmscr_el1
24409  *
24410  * AP Statistical Profiling Control Register
24411  * Provides EL1 controls for Statistical Profiling..
24412  */
24413 union bdk_ap_pmscr_el1
24414 {
24415     uint64_t u;
24416     struct bdk_ap_pmscr_el1_s
24417     {
24418 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24419         uint64_t reserved_7_63         : 57;
24420         uint64_t pct                   : 1;  /**< [  6:  6](R/W) Physical timestamp.
24421                                                                    0 = Virtual counter, CNTVCT_EL0, is collected.
24422                                                                    1 = Physical counter, CNTPCT_EL0, is collected.
24423 
24424                                                                  Ignored when the TS bit is 0, at EL2, and in nonsecure state when HCR_EL2[TGE] = 1.
24425                                                                  RES0 in nonsecure state when MDCR_EL2[E2DB] != 0x0 and PMSCR_EL2[PCT ]= 0. */
24426         uint64_t ts                    : 1;  /**< [  5:  5](R/W) Timestamp enable.
24427                                                                    0 = Timestamp sampling disabled.
24428                                                                    1 = Timestamp sampling enabled.
24429 
24430                                                                  Ignored at EL2 and in nonsecure state when HCR_EL2[TGE] = 1. */
24431         uint64_t pa                    : 1;  /**< [  4:  4](R/W) Physical address sample enable.
24432                                                                    0 = Physical addresses are not collected.
24433                                                                    1 = Physical addresses are collected.
24434 
24435                                                                  Ignored at EL2 and in nonsecure state when HCR_EL2[TGE] = 1.
24436                                                                  RES0 in nonsecure state when MDCR_EL2[E2DB] = 0x0 and PMSCR_EL2[PA] = 0. */
24437         uint64_t cx                    : 1;  /**< [  3:  3](R/W) CONTEXTIDR_EL1 sample enable.
24438                                                                    0 = CONTEXTIDR_EL1 is not collected.
24439                                                                    1 = CONTEXTIDR_EL1 is collected.
24440 
24441                                                                  RES0 at EL2 and in nonsecure state when HCR_EL2.TGE = 1. */
24442         uint64_t reserved_2            : 1;
24443         uint64_t e1spe                 : 1;  /**< [  1:  1](R/W) EL1 statistical profiling enable.
24444                                                                    0 = Sampling disabled at EL1.
24445                                                                    1 = Sampling enabled at EL1.
24446 
24447                                                                  Ignored in nonsecure state when HCR_EL2[TGE] = 1. */
24448         uint64_t e0spe                 : 1;  /**< [  0:  0](R/W) EL0 statistical profiling enable.
24449                                                                    0 = Sampling disabled at EL0 when HCR_EL2[TGE] = 0.
24450                                                                    1 = Sampling enabled at EL0 when HCR_EL2[TGE] = 0.
24451 
24452                                                                  Ignored in nonsecure state when HCR_EL2[TGE] = 1. */
24453 #else /* Word 0 - Little Endian */
24454         uint64_t e0spe                 : 1;  /**< [  0:  0](R/W) EL0 statistical profiling enable.
24455                                                                    0 = Sampling disabled at EL0 when HCR_EL2[TGE] = 0.
24456                                                                    1 = Sampling enabled at EL0 when HCR_EL2[TGE] = 0.
24457 
24458                                                                  Ignored in nonsecure state when HCR_EL2[TGE] = 1. */
24459         uint64_t e1spe                 : 1;  /**< [  1:  1](R/W) EL1 statistical profiling enable.
24460                                                                    0 = Sampling disabled at EL1.
24461                                                                    1 = Sampling enabled at EL1.
24462 
24463                                                                  Ignored in nonsecure state when HCR_EL2[TGE] = 1. */
24464         uint64_t reserved_2            : 1;
24465         uint64_t cx                    : 1;  /**< [  3:  3](R/W) CONTEXTIDR_EL1 sample enable.
24466                                                                    0 = CONTEXTIDR_EL1 is not collected.
24467                                                                    1 = CONTEXTIDR_EL1 is collected.
24468 
24469                                                                  RES0 at EL2 and in nonsecure state when HCR_EL2.TGE = 1. */
24470         uint64_t pa                    : 1;  /**< [  4:  4](R/W) Physical address sample enable.
24471                                                                    0 = Physical addresses are not collected.
24472                                                                    1 = Physical addresses are collected.
24473 
24474                                                                  Ignored at EL2 and in nonsecure state when HCR_EL2[TGE] = 1.
24475                                                                  RES0 in nonsecure state when MDCR_EL2[E2DB] = 0x0 and PMSCR_EL2[PA] = 0. */
24476         uint64_t ts                    : 1;  /**< [  5:  5](R/W) Timestamp enable.
24477                                                                    0 = Timestamp sampling disabled.
24478                                                                    1 = Timestamp sampling enabled.
24479 
24480                                                                  Ignored at EL2 and in nonsecure state when HCR_EL2[TGE] = 1. */
24481         uint64_t pct                   : 1;  /**< [  6:  6](R/W) Physical timestamp.
24482                                                                    0 = Virtual counter, CNTVCT_EL0, is collected.
24483                                                                    1 = Physical counter, CNTPCT_EL0, is collected.
24484 
24485                                                                  Ignored when the TS bit is 0, at EL2, and in nonsecure state when HCR_EL2[TGE] = 1.
24486                                                                  RES0 in nonsecure state when MDCR_EL2[E2DB] != 0x0 and PMSCR_EL2[PCT ]= 0. */
24487         uint64_t reserved_7_63         : 57;
24488 #endif /* Word 0 - End */
24489     } s;
24490     /* struct bdk_ap_pmscr_el1_s cn; */
24491 };
24492 typedef union bdk_ap_pmscr_el1 bdk_ap_pmscr_el1_t;
24493 
24494 #define BDK_AP_PMSCR_EL1 BDK_AP_PMSCR_EL1_FUNC()
24495 static inline uint64_t BDK_AP_PMSCR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSCR_EL1_FUNC(void)24496 static inline uint64_t BDK_AP_PMSCR_EL1_FUNC(void)
24497 {
24498     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
24499         return 0x30009090000ll;
24500     __bdk_csr_fatal("AP_PMSCR_EL1", 0, 0, 0, 0, 0);
24501 }
24502 
24503 #define typedef_BDK_AP_PMSCR_EL1 bdk_ap_pmscr_el1_t
24504 #define bustype_BDK_AP_PMSCR_EL1 BDK_CSR_TYPE_SYSREG
24505 #define basename_BDK_AP_PMSCR_EL1 "AP_PMSCR_EL1"
24506 #define busnum_BDK_AP_PMSCR_EL1 0
24507 #define arguments_BDK_AP_PMSCR_EL1 -1,-1,-1,-1
24508 
24509 /**
24510  * Register (SYSREG) ap_pmscr_el12
24511  *
24512  * AP Statistical Profiling Control Register
24513  * Alias of AP_PMSCR_EL1 when accessed at EL2 and AP_HCR_EL2[E2H] is set.
24514  */
24515 union bdk_ap_pmscr_el12
24516 {
24517     uint64_t u;
24518     struct bdk_ap_pmscr_el12_s
24519     {
24520 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24521         uint64_t reserved_0_63         : 64;
24522 #else /* Word 0 - Little Endian */
24523         uint64_t reserved_0_63         : 64;
24524 #endif /* Word 0 - End */
24525     } s;
24526     /* struct bdk_ap_pmscr_el12_s cn; */
24527 };
24528 typedef union bdk_ap_pmscr_el12 bdk_ap_pmscr_el12_t;
24529 
24530 #define BDK_AP_PMSCR_EL12 BDK_AP_PMSCR_EL12_FUNC()
24531 static inline uint64_t BDK_AP_PMSCR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSCR_EL12_FUNC(void)24532 static inline uint64_t BDK_AP_PMSCR_EL12_FUNC(void)
24533 {
24534     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
24535         return 0x30509090000ll;
24536     __bdk_csr_fatal("AP_PMSCR_EL12", 0, 0, 0, 0, 0);
24537 }
24538 
24539 #define typedef_BDK_AP_PMSCR_EL12 bdk_ap_pmscr_el12_t
24540 #define bustype_BDK_AP_PMSCR_EL12 BDK_CSR_TYPE_SYSREG
24541 #define basename_BDK_AP_PMSCR_EL12 "AP_PMSCR_EL12"
24542 #define busnum_BDK_AP_PMSCR_EL12 0
24543 #define arguments_BDK_AP_PMSCR_EL12 -1,-1,-1,-1
24544 
24545 /**
24546  * Register (SYSREG) ap_pmscr_el2
24547  *
24548  * AP Statistical Profiling Control Register
24549  * Provides EL2 controls for Statistical Profiling.
24550  */
24551 union bdk_ap_pmscr_el2
24552 {
24553     uint64_t u;
24554     struct bdk_ap_pmscr_el2_s
24555     {
24556 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24557         uint64_t reserved_7_63         : 57;
24558         uint64_t pct                   : 1;  /**< [  6:  6](R/W) Physical Timestamp.
24559                                                                    0 = Virtual counter, CNTVCT_EL0, is collected.
24560                                                                    1 = Physical counter, CNTPCT_EL0, is collected.
24561 
24562                                                                  Ignored when the TS bit is 0 and in Secure state.
24563                                                                  If MDCR_EL2.E2DB != 0b00, this bit is combined with PMSCR_EL1.PCT to determine which
24564                                                                  counter is collected. See CollectTimeStamp.
24565                                                                  If EL2 is not implemented, the PE behaves as if PCT == 1, other than for a direct read of
24566                                                                  the register. */
24567         uint64_t ts                    : 1;  /**< [  5:  5](R/W) Timestamp Enable.
24568                                                                    0 = Timestamp sampling disabled.
24569                                                                    1 = Timestamp sampling enabled.
24570 
24571                                                                  Ignored in Secure state, and at EL1 and EL0 when HCR_EL2.TGE == 0.
24572                                                                  See CollectTimeStamp. */
24573         uint64_t pa                    : 1;  /**< [  4:  4](R/W) Physical Address Sample Enable.
24574                                                                    0 = Physical addresses are not collected.
24575                                                                    1 = Physical addresses are collected.
24576 
24577                                                                  Ignored when the TS bit is 0 and in Secure state.
24578                                                                  If MDCR_EL2.E2DB != 0b00, this bit is combined with PMSCR_EL1.PA to determine which
24579                                                                  counter is collected. See CollectPhysicalAddress.
24580                                                                  If EL2 is not implemented, the PE behaves as if PA == 1, other than for a direct read of
24581                                                                  the register. */
24582         uint64_t cx                    : 1;  /**< [  3:  3](R/W) CONTEXTIDR_EL2 Sample Enable.
24583                                                                    0 = CONTEXTIDR_EL2 is not collected.
24584                                                                    1 = CONTEXTIDR_EL2 is collected.
24585 
24586                                                                  RES0 in secure state. */
24587         uint64_t reserved_2            : 1;
24588         uint64_t e2spe                 : 1;  /**< [  1:  1](R/W) EL2 statistical profiling enable.
24589                                                                    0 = Sampling disabled at EL2.
24590                                                                    1 = Sampling enabled at EL2.
24591 
24592                                                                  RES0 if MDCR_EL2[E2PB] != 0x0. Ignored in Secure state. */
24593         uint64_t e0hspe                : 1;  /**< [  0:  0](R/W) EL0 statistical profiling enable.
24594                                                                    0 = Sampling disabled at EL0 when HCR_EL2.TGE == 1.
24595                                                                    1 = Sampling enabled at EL0 when HCR_EL2.TGE == 1.
24596 
24597                                                                  RES0 if MDCR_EL2.E2PB != 0x0. Ignored in Secure state and when HCR_EL2[TGE] = 0. */
24598 #else /* Word 0 - Little Endian */
24599         uint64_t e0hspe                : 1;  /**< [  0:  0](R/W) EL0 statistical profiling enable.
24600                                                                    0 = Sampling disabled at EL0 when HCR_EL2.TGE == 1.
24601                                                                    1 = Sampling enabled at EL0 when HCR_EL2.TGE == 1.
24602 
24603                                                                  RES0 if MDCR_EL2.E2PB != 0x0. Ignored in Secure state and when HCR_EL2[TGE] = 0. */
24604         uint64_t e2spe                 : 1;  /**< [  1:  1](R/W) EL2 statistical profiling enable.
24605                                                                    0 = Sampling disabled at EL2.
24606                                                                    1 = Sampling enabled at EL2.
24607 
24608                                                                  RES0 if MDCR_EL2[E2PB] != 0x0. Ignored in Secure state. */
24609         uint64_t reserved_2            : 1;
24610         uint64_t cx                    : 1;  /**< [  3:  3](R/W) CONTEXTIDR_EL2 Sample Enable.
24611                                                                    0 = CONTEXTIDR_EL2 is not collected.
24612                                                                    1 = CONTEXTIDR_EL2 is collected.
24613 
24614                                                                  RES0 in secure state. */
24615         uint64_t pa                    : 1;  /**< [  4:  4](R/W) Physical Address Sample Enable.
24616                                                                    0 = Physical addresses are not collected.
24617                                                                    1 = Physical addresses are collected.
24618 
24619                                                                  Ignored when the TS bit is 0 and in Secure state.
24620                                                                  If MDCR_EL2.E2DB != 0b00, this bit is combined with PMSCR_EL1.PA to determine which
24621                                                                  counter is collected. See CollectPhysicalAddress.
24622                                                                  If EL2 is not implemented, the PE behaves as if PA == 1, other than for a direct read of
24623                                                                  the register. */
24624         uint64_t ts                    : 1;  /**< [  5:  5](R/W) Timestamp Enable.
24625                                                                    0 = Timestamp sampling disabled.
24626                                                                    1 = Timestamp sampling enabled.
24627 
24628                                                                  Ignored in Secure state, and at EL1 and EL0 when HCR_EL2.TGE == 0.
24629                                                                  See CollectTimeStamp. */
24630         uint64_t pct                   : 1;  /**< [  6:  6](R/W) Physical Timestamp.
24631                                                                    0 = Virtual counter, CNTVCT_EL0, is collected.
24632                                                                    1 = Physical counter, CNTPCT_EL0, is collected.
24633 
24634                                                                  Ignored when the TS bit is 0 and in Secure state.
24635                                                                  If MDCR_EL2.E2DB != 0b00, this bit is combined with PMSCR_EL1.PCT to determine which
24636                                                                  counter is collected. See CollectTimeStamp.
24637                                                                  If EL2 is not implemented, the PE behaves as if PCT == 1, other than for a direct read of
24638                                                                  the register. */
24639         uint64_t reserved_7_63         : 57;
24640 #endif /* Word 0 - End */
24641     } s;
24642     /* struct bdk_ap_pmscr_el2_s cn; */
24643 };
24644 typedef union bdk_ap_pmscr_el2 bdk_ap_pmscr_el2_t;
24645 
24646 #define BDK_AP_PMSCR_EL2 BDK_AP_PMSCR_EL2_FUNC()
24647 static inline uint64_t BDK_AP_PMSCR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSCR_EL2_FUNC(void)24648 static inline uint64_t BDK_AP_PMSCR_EL2_FUNC(void)
24649 {
24650     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
24651         return 0x30409090000ll;
24652     __bdk_csr_fatal("AP_PMSCR_EL2", 0, 0, 0, 0, 0);
24653 }
24654 
24655 #define typedef_BDK_AP_PMSCR_EL2 bdk_ap_pmscr_el2_t
24656 #define bustype_BDK_AP_PMSCR_EL2 BDK_CSR_TYPE_SYSREG
24657 #define basename_BDK_AP_PMSCR_EL2 "AP_PMSCR_EL2"
24658 #define busnum_BDK_AP_PMSCR_EL2 0
24659 #define arguments_BDK_AP_PMSCR_EL2 -1,-1,-1,-1
24660 
24661 /**
24662  * Register (SYSREG) ap_pmselr_el0
24663  *
24664  * AP Performance Monitors Event Counter Selection Register
24665  * Selects the current event counter PMEVCNTR\<x\> or the cycle
24666  *     counter, CCNT.
24667  */
24668 union bdk_ap_pmselr_el0
24669 {
24670     uint32_t u;
24671     struct bdk_ap_pmselr_el0_s
24672     {
24673 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24674         uint32_t reserved_5_31         : 27;
24675         uint32_t sel                   : 5;  /**< [  4:  0](R/W) Selects event counter, PMEVCNTR\<x\>, where x is the value held
24676                                                                      in this field. This value identifies which event counter is
24677                                                                      accessed when a subsequent access to AP_PMXEVTYPER_EL0 or
24678                                                                      AP_PMXEVCNTR_EL0 occurs.
24679                                                                  When AP_PMSELR_EL0[SEL] is 0b11111:
24680 
24681                                                                   A read of the AP_PMXEVTYPER_EL0 returns the value of
24682                                                                      AP_PMCCFILTR_EL0.
24683 
24684                                                                   A write of the AP_PMXEVTYPER_EL0 writes to AP_PMCCFILTR_EL0.
24685 
24686                                                                   A read or write of AP_PMXEVCNTR_EL0 has CONSTRAINED
24687                                                                      UNPREDICTABLE effects, that can be one of the following:
24688                                                                      Access to AP_PMXEVCNTR_EL0 is UNdefined.  Access to AP_PMXEVCNTR_EL0
24689                                                                      behaves as a NOP.  Access to AP_PMXEVCNTR_EL0 behaves as if the
24690                                                                      register is RAZ/WI.  Access to AP_PMXEVCNTR_EL0 behaves as if the
24691                                                                      AP_PMSELR_EL0[SEL]     field contains an UNKNOWN value.
24692 
24693                                                                  If this field is set to a value greater than or equal to the
24694                                                                      number of implemented counters, but not equal to 31, the
24695                                                                      results of access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 are
24696                                                                      CONSTRAINED UNPREDICTABLE, and can be one of the following:
24697 
24698                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 is UNdefined.
24699 
24700                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 behaves as a NOP.
24701 
24702                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 behaves as if the
24703                                                                      register is RAZ/WI.
24704 
24705                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 behaves as if the
24706                                                                      AP_PMSELR_EL0[SEL] field contains an UNKNOWN value.
24707 
24708                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 behaves as if the
24709                                                                      AP_PMSELR_EL0[SEL] field contains0b11111 */
24710 #else /* Word 0 - Little Endian */
24711         uint32_t sel                   : 5;  /**< [  4:  0](R/W) Selects event counter, PMEVCNTR\<x\>, where x is the value held
24712                                                                      in this field. This value identifies which event counter is
24713                                                                      accessed when a subsequent access to AP_PMXEVTYPER_EL0 or
24714                                                                      AP_PMXEVCNTR_EL0 occurs.
24715                                                                  When AP_PMSELR_EL0[SEL] is 0b11111:
24716 
24717                                                                   A read of the AP_PMXEVTYPER_EL0 returns the value of
24718                                                                      AP_PMCCFILTR_EL0.
24719 
24720                                                                   A write of the AP_PMXEVTYPER_EL0 writes to AP_PMCCFILTR_EL0.
24721 
24722                                                                   A read or write of AP_PMXEVCNTR_EL0 has CONSTRAINED
24723                                                                      UNPREDICTABLE effects, that can be one of the following:
24724                                                                      Access to AP_PMXEVCNTR_EL0 is UNdefined.  Access to AP_PMXEVCNTR_EL0
24725                                                                      behaves as a NOP.  Access to AP_PMXEVCNTR_EL0 behaves as if the
24726                                                                      register is RAZ/WI.  Access to AP_PMXEVCNTR_EL0 behaves as if the
24727                                                                      AP_PMSELR_EL0[SEL]     field contains an UNKNOWN value.
24728 
24729                                                                  If this field is set to a value greater than or equal to the
24730                                                                      number of implemented counters, but not equal to 31, the
24731                                                                      results of access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 are
24732                                                                      CONSTRAINED UNPREDICTABLE, and can be one of the following:
24733 
24734                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 is UNdefined.
24735 
24736                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 behaves as a NOP.
24737 
24738                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 behaves as if the
24739                                                                      register is RAZ/WI.
24740 
24741                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 behaves as if the
24742                                                                      AP_PMSELR_EL0[SEL] field contains an UNKNOWN value.
24743 
24744                                                                   Access to AP_PMXEVTYPER_EL0 or AP_PMXEVCNTR_EL0 behaves as if the
24745                                                                      AP_PMSELR_EL0[SEL] field contains0b11111 */
24746         uint32_t reserved_5_31         : 27;
24747 #endif /* Word 0 - End */
24748     } s;
24749     /* struct bdk_ap_pmselr_el0_s cn; */
24750 };
24751 typedef union bdk_ap_pmselr_el0 bdk_ap_pmselr_el0_t;
24752 
24753 #define BDK_AP_PMSELR_EL0 BDK_AP_PMSELR_EL0_FUNC()
24754 static inline uint64_t BDK_AP_PMSELR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSELR_EL0_FUNC(void)24755 static inline uint64_t BDK_AP_PMSELR_EL0_FUNC(void)
24756 {
24757     return 0x303090c0500ll;
24758 }
24759 
24760 #define typedef_BDK_AP_PMSELR_EL0 bdk_ap_pmselr_el0_t
24761 #define bustype_BDK_AP_PMSELR_EL0 BDK_CSR_TYPE_SYSREG
24762 #define basename_BDK_AP_PMSELR_EL0 "AP_PMSELR_EL0"
24763 #define busnum_BDK_AP_PMSELR_EL0 0
24764 #define arguments_BDK_AP_PMSELR_EL0 -1,-1,-1,-1
24765 
24766 /**
24767  * Register (SYSREG) ap_pmsevfr_el1
24768  *
24769  * AP Sampling Event Filter Register
24770  * Controls sample filtering by events. The overall filter is the logical AND of these filters.
24771  * For example, if
24772  * E[3] and E[5] are both set to 1, only samples that have both event 3 (Level 1 unified or data
24773  * cache
24774  * refill) and event 5 set (TLB walk) are recorded.
24775  */
24776 union bdk_ap_pmsevfr_el1
24777 {
24778     uint64_t u;
24779     struct bdk_ap_pmsevfr_el1_s
24780     {
24781 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24782         uint64_t e_48_63               : 16; /**< [ 63: 48](R/W) E[\<n\>] is the event filter for event \<n\>. If event \<n\> is not implemented, or filtering on
24783                                                                  event \<n\> is not supported, the corresponding bit is RES0.
24784                                                                    0 = Event \<n\> is ignored.
24785                                                                    1 = Record samples that have event \<n\> == 1.
24786 
24787                                                                  Ignored if PMSCR_EL1[FE] = 0.
24788 
24789                                                                  An implementation defined event might be recorded as a multi-bit field. In this case, if
24790                                                                  the corresponding bits of PMSEVFR_EL1 define an implementation defined filter for the
24791                                                                  event. */
24792         uint64_t reserved_32_47        : 16;
24793         uint64_t e_24_31               : 8;  /**< [ 31: 24](R/W) E[\<n\>] is the event filter for event \<n\>. If event \<n\> is not implemented, or filtering on
24794                                                                  event \<n\> is not supported, the corresponding bit is RES0.
24795                                                                    0 = Event \<n\> is ignored.
24796                                                                    1 = Record samples that have event \<n\> == 1.
24797 
24798                                                                  Ignored if PMSCR_EL1[FE] = 0.
24799 
24800                                                                  An implementation defined event might be recorded as a multi-bit field. In this case, if
24801                                                                  the corresponding bits of PMSEVFR_EL1 define an implementation defined filter for the
24802                                                                  event. */
24803         uint64_t reserved_16_23        : 8;
24804         uint64_t e_12_15               : 4;  /**< [ 15: 12](R/W) E[\<n\>] is the event filter for event \<n\>. If event \<n\> is not implemented, or filtering on
24805                                                                  event \<n\> is not supported, the corresponding bit is RES0.
24806                                                                    0 = Event \<n\> is ignored.
24807                                                                    1 = Record samples that have event \<n\> = 1.
24808 
24809                                                                  Ignored if PMSCR_EL1[FE] = 0.
24810 
24811                                                                  An implementation defined event might be recorded as a multi-bit field. In this case, if
24812                                                                  the corresponding bits of PMSEVFR_EL1 define an implementation defined filter for the
24813                                                                  event. */
24814         uint64_t reserved_8_11         : 4;
24815         uint64_t e_7                   : 1;  /**< [  7:  7](R/W) Mispredicted.
24816                                                                    0 = Mispredicted event is ignored.
24817                                                                    1 = Record samples that have event 7 (Mispredicted) == 1.
24818 
24819                                                                  Ignored if PMSCR_EL1[FE] = 0. */
24820         uint64_t reserved_6            : 1;
24821         uint64_t e_5                   : 1;  /**< [  5:  5](R/W) TLB walk.
24822                                                                    0 = TLB walk event is ignored.
24823                                                                    1 = Record samples that have event 5 (TLB walk) = 1.
24824 
24825                                                                  Ignored if PMSCR_EL1[FE] = 0. */
24826         uint64_t reserved_4            : 1;
24827         uint64_t e_3                   : 1;  /**< [  3:  3](R/W) Level 1 data or unified cache refill.
24828                                                                    0 = Level 1 data or unified cache refill event is ignored.
24829                                                                    1 = Record samples that have event 3 (Level 1 data or unified cache refill) == 1.
24830 
24831                                                                  Ignored if PMSCR_EL1[FE] = 0. */
24832         uint64_t reserved_2            : 1;
24833         uint64_t e_1                   : 1;  /**< [  1:  1](R/W) Architecturally retired.
24834                                                                    0 = Architecturally retired event is ignored.
24835                                                                    1 = Record samples that have event 1 (Architecturally retired) == 1.
24836 
24837                                                                  Ignored if PMSCR_EL1[FE] = 0.
24838 
24839                                                                  If the PE does not support sampling of speculative instructions, E[1] is RES1. */
24840         uint64_t reserved_0            : 1;
24841 #else /* Word 0 - Little Endian */
24842         uint64_t reserved_0            : 1;
24843         uint64_t e_1                   : 1;  /**< [  1:  1](R/W) Architecturally retired.
24844                                                                    0 = Architecturally retired event is ignored.
24845                                                                    1 = Record samples that have event 1 (Architecturally retired) == 1.
24846 
24847                                                                  Ignored if PMSCR_EL1[FE] = 0.
24848 
24849                                                                  If the PE does not support sampling of speculative instructions, E[1] is RES1. */
24850         uint64_t reserved_2            : 1;
24851         uint64_t e_3                   : 1;  /**< [  3:  3](R/W) Level 1 data or unified cache refill.
24852                                                                    0 = Level 1 data or unified cache refill event is ignored.
24853                                                                    1 = Record samples that have event 3 (Level 1 data or unified cache refill) == 1.
24854 
24855                                                                  Ignored if PMSCR_EL1[FE] = 0. */
24856         uint64_t reserved_4            : 1;
24857         uint64_t e_5                   : 1;  /**< [  5:  5](R/W) TLB walk.
24858                                                                    0 = TLB walk event is ignored.
24859                                                                    1 = Record samples that have event 5 (TLB walk) = 1.
24860 
24861                                                                  Ignored if PMSCR_EL1[FE] = 0. */
24862         uint64_t reserved_6            : 1;
24863         uint64_t e_7                   : 1;  /**< [  7:  7](R/W) Mispredicted.
24864                                                                    0 = Mispredicted event is ignored.
24865                                                                    1 = Record samples that have event 7 (Mispredicted) == 1.
24866 
24867                                                                  Ignored if PMSCR_EL1[FE] = 0. */
24868         uint64_t reserved_8_11         : 4;
24869         uint64_t e_12_15               : 4;  /**< [ 15: 12](R/W) E[\<n\>] is the event filter for event \<n\>. If event \<n\> is not implemented, or filtering on
24870                                                                  event \<n\> is not supported, the corresponding bit is RES0.
24871                                                                    0 = Event \<n\> is ignored.
24872                                                                    1 = Record samples that have event \<n\> = 1.
24873 
24874                                                                  Ignored if PMSCR_EL1[FE] = 0.
24875 
24876                                                                  An implementation defined event might be recorded as a multi-bit field. In this case, if
24877                                                                  the corresponding bits of PMSEVFR_EL1 define an implementation defined filter for the
24878                                                                  event. */
24879         uint64_t reserved_16_23        : 8;
24880         uint64_t e_24_31               : 8;  /**< [ 31: 24](R/W) E[\<n\>] is the event filter for event \<n\>. If event \<n\> is not implemented, or filtering on
24881                                                                  event \<n\> is not supported, the corresponding bit is RES0.
24882                                                                    0 = Event \<n\> is ignored.
24883                                                                    1 = Record samples that have event \<n\> == 1.
24884 
24885                                                                  Ignored if PMSCR_EL1[FE] = 0.
24886 
24887                                                                  An implementation defined event might be recorded as a multi-bit field. In this case, if
24888                                                                  the corresponding bits of PMSEVFR_EL1 define an implementation defined filter for the
24889                                                                  event. */
24890         uint64_t reserved_32_47        : 16;
24891         uint64_t e_48_63               : 16; /**< [ 63: 48](R/W) E[\<n\>] is the event filter for event \<n\>. If event \<n\> is not implemented, or filtering on
24892                                                                  event \<n\> is not supported, the corresponding bit is RES0.
24893                                                                    0 = Event \<n\> is ignored.
24894                                                                    1 = Record samples that have event \<n\> == 1.
24895 
24896                                                                  Ignored if PMSCR_EL1[FE] = 0.
24897 
24898                                                                  An implementation defined event might be recorded as a multi-bit field. In this case, if
24899                                                                  the corresponding bits of PMSEVFR_EL1 define an implementation defined filter for the
24900                                                                  event. */
24901 #endif /* Word 0 - End */
24902     } s;
24903     /* struct bdk_ap_pmsevfr_el1_s cn; */
24904 };
24905 typedef union bdk_ap_pmsevfr_el1 bdk_ap_pmsevfr_el1_t;
24906 
24907 #define BDK_AP_PMSEVFR_EL1 BDK_AP_PMSEVFR_EL1_FUNC()
24908 static inline uint64_t BDK_AP_PMSEVFR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSEVFR_EL1_FUNC(void)24909 static inline uint64_t BDK_AP_PMSEVFR_EL1_FUNC(void)
24910 {
24911     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
24912         return 0x30009090500ll;
24913     __bdk_csr_fatal("AP_PMSEVFR_EL1", 0, 0, 0, 0, 0);
24914 }
24915 
24916 #define typedef_BDK_AP_PMSEVFR_EL1 bdk_ap_pmsevfr_el1_t
24917 #define bustype_BDK_AP_PMSEVFR_EL1 BDK_CSR_TYPE_SYSREG
24918 #define basename_BDK_AP_PMSEVFR_EL1 "AP_PMSEVFR_EL1"
24919 #define busnum_BDK_AP_PMSEVFR_EL1 0
24920 #define arguments_BDK_AP_PMSEVFR_EL1 -1,-1,-1,-1
24921 
24922 /**
24923  * Register (SYSREG) ap_pmsfcr_el1
24924  *
24925  * AP Sampling Filter Control Register
24926  * Controls sample filtering. The filter is the logical AND of the FL, FT and FE bits. For
24927  * example, if FE == 1 and FT == 1 only samples including the selected instruction types and the
24928  * selected events will be recorded.
24929  */
24930 union bdk_ap_pmsfcr_el1
24931 {
24932     uint64_t u;
24933     struct bdk_ap_pmsfcr_el1_s
24934     {
24935 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24936         uint64_t reserved_19_63        : 45;
24937         uint64_t st                    : 1;  /**< [ 18: 18](R/W) Store filter enable.
24938                                                                    0 = Do not record store instructions.
24939                                                                    1 = Record all store instructions, including vector stores and all atomic operations.
24940 
24941                                                                  Ignored if [FT] = 0. */
24942         uint64_t ld                    : 1;  /**< [ 17: 17](R/W) Load filter enable.
24943                                                                    0 = Do not record load instructions.
24944                                                                    1 = Record all load instructions, including vector loads and atomic operations that
24945                                                                  return data.
24946 
24947                                                                  Ignored if [FT] = 0. */
24948         uint64_t bb                    : 1;  /**< [ 16: 16](R/W) Branch filter enable.
24949                                                                    0 = Do not record branch instructions.
24950                                                                    1 = Record all branch instructions.
24951 
24952                                                                  Ignored if [FT] = 0. */
24953         uint64_t reserved_3_15         : 13;
24954         uint64_t fl                    : 1;  /**< [  2:  2](R/W) Filter by latency.
24955                                                                    0 = Latency filtering disabled.
24956                                                                    1 = Latency filtering enabled. Samples with a total latency less than
24957                                                                  PMSLATFR_EL1.MINLAT will not be recorded.
24958                                                                  If this bit is set to 1 and PMSLATFR_EL1.MINLAT is zero, it is CONSTRAINED UNPREDICTABLE
24959                                                                  whether no samples are recorded or the FL bit is ignored. */
24960         uint64_t ft                    : 1;  /**< [  1:  1](R/W) Filter by type. The filter is the logical OR of the ST, LD and B bits. For example, if LD
24961                                                                  and ST are both
24962                                                                  set, both load and store instructions are recorded.
24963                                                                    0 = Type filtering disabled.
24964                                                                    1 = Type filtering enabled. Samples not one of the selected instruction types will not
24965                                                                  be recorded.
24966 
24967                                                                  If this bit is set to 1 and the ST, LD, and B bits are all zero, it is constrained
24968                                                                  unpredictable whether no samples are recorded or the FT bit is ignored. */
24969         uint64_t fe                    : 1;  /**< [  0:  0](R/W) Filter by event.
24970                                                                    0 = Event filtering disabled.
24971                                                                    1 = Event filtering enabled. Samples not including the events selected by PMSEVFR_EL1
24972                                                                  will not be recorded.
24973 
24974                                                                  If this bit is set to 1 and PMSEVFR_EL1 is zero, it is constrained unpredictable whether
24975                                                                  no samples are recorded or the FE. */
24976 #else /* Word 0 - Little Endian */
24977         uint64_t fe                    : 1;  /**< [  0:  0](R/W) Filter by event.
24978                                                                    0 = Event filtering disabled.
24979                                                                    1 = Event filtering enabled. Samples not including the events selected by PMSEVFR_EL1
24980                                                                  will not be recorded.
24981 
24982                                                                  If this bit is set to 1 and PMSEVFR_EL1 is zero, it is constrained unpredictable whether
24983                                                                  no samples are recorded or the FE. */
24984         uint64_t ft                    : 1;  /**< [  1:  1](R/W) Filter by type. The filter is the logical OR of the ST, LD and B bits. For example, if LD
24985                                                                  and ST are both
24986                                                                  set, both load and store instructions are recorded.
24987                                                                    0 = Type filtering disabled.
24988                                                                    1 = Type filtering enabled. Samples not one of the selected instruction types will not
24989                                                                  be recorded.
24990 
24991                                                                  If this bit is set to 1 and the ST, LD, and B bits are all zero, it is constrained
24992                                                                  unpredictable whether no samples are recorded or the FT bit is ignored. */
24993         uint64_t fl                    : 1;  /**< [  2:  2](R/W) Filter by latency.
24994                                                                    0 = Latency filtering disabled.
24995                                                                    1 = Latency filtering enabled. Samples with a total latency less than
24996                                                                  PMSLATFR_EL1.MINLAT will not be recorded.
24997                                                                  If this bit is set to 1 and PMSLATFR_EL1.MINLAT is zero, it is CONSTRAINED UNPREDICTABLE
24998                                                                  whether no samples are recorded or the FL bit is ignored. */
24999         uint64_t reserved_3_15         : 13;
25000         uint64_t bb                    : 1;  /**< [ 16: 16](R/W) Branch filter enable.
25001                                                                    0 = Do not record branch instructions.
25002                                                                    1 = Record all branch instructions.
25003 
25004                                                                  Ignored if [FT] = 0. */
25005         uint64_t ld                    : 1;  /**< [ 17: 17](R/W) Load filter enable.
25006                                                                    0 = Do not record load instructions.
25007                                                                    1 = Record all load instructions, including vector loads and atomic operations that
25008                                                                  return data.
25009 
25010                                                                  Ignored if [FT] = 0. */
25011         uint64_t st                    : 1;  /**< [ 18: 18](R/W) Store filter enable.
25012                                                                    0 = Do not record store instructions.
25013                                                                    1 = Record all store instructions, including vector stores and all atomic operations.
25014 
25015                                                                  Ignored if [FT] = 0. */
25016         uint64_t reserved_19_63        : 45;
25017 #endif /* Word 0 - End */
25018     } s;
25019     /* struct bdk_ap_pmsfcr_el1_s cn; */
25020 };
25021 typedef union bdk_ap_pmsfcr_el1 bdk_ap_pmsfcr_el1_t;
25022 
25023 #define BDK_AP_PMSFCR_EL1 BDK_AP_PMSFCR_EL1_FUNC()
25024 static inline uint64_t BDK_AP_PMSFCR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSFCR_EL1_FUNC(void)25025 static inline uint64_t BDK_AP_PMSFCR_EL1_FUNC(void)
25026 {
25027     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
25028         return 0x30009090400ll;
25029     __bdk_csr_fatal("AP_PMSFCR_EL1", 0, 0, 0, 0, 0);
25030 }
25031 
25032 #define typedef_BDK_AP_PMSFCR_EL1 bdk_ap_pmsfcr_el1_t
25033 #define bustype_BDK_AP_PMSFCR_EL1 BDK_CSR_TYPE_SYSREG
25034 #define basename_BDK_AP_PMSFCR_EL1 "AP_PMSFCR_EL1"
25035 #define busnum_BDK_AP_PMSFCR_EL1 0
25036 #define arguments_BDK_AP_PMSFCR_EL1 -1,-1,-1,-1
25037 
25038 /**
25039  * Register (SYSREG) ap_pmsicr_el1
25040  *
25041  * AP Sampling Interval Control Register
25042  * Software must write zero to PMSICR_EL1 before enabling sample profiling for a sampling
25043  * session.
25044  * Software must then treat PMSICR_EL1 as an opaque, 64-bit, read/write register used for context
25045  * switches only.
25046  */
25047 union bdk_ap_pmsicr_el1
25048 {
25049     uint64_t u;
25050     struct bdk_ap_pmsicr_el1_s
25051     {
25052 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25053         uint64_t reserved_0_63         : 64;
25054 #else /* Word 0 - Little Endian */
25055         uint64_t reserved_0_63         : 64;
25056 #endif /* Word 0 - End */
25057     } s;
25058     /* struct bdk_ap_pmsicr_el1_s cn; */
25059 };
25060 typedef union bdk_ap_pmsicr_el1 bdk_ap_pmsicr_el1_t;
25061 
25062 #define BDK_AP_PMSICR_EL1 BDK_AP_PMSICR_EL1_FUNC()
25063 static inline uint64_t BDK_AP_PMSICR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSICR_EL1_FUNC(void)25064 static inline uint64_t BDK_AP_PMSICR_EL1_FUNC(void)
25065 {
25066     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
25067         return 0x30009090200ll;
25068     __bdk_csr_fatal("AP_PMSICR_EL1", 0, 0, 0, 0, 0);
25069 }
25070 
25071 #define typedef_BDK_AP_PMSICR_EL1 bdk_ap_pmsicr_el1_t
25072 #define bustype_BDK_AP_PMSICR_EL1 BDK_CSR_TYPE_SYSREG
25073 #define basename_BDK_AP_PMSICR_EL1 "AP_PMSICR_EL1"
25074 #define busnum_BDK_AP_PMSICR_EL1 0
25075 #define arguments_BDK_AP_PMSICR_EL1 -1,-1,-1,-1
25076 
25077 /**
25078  * Register (SYSREG) ap_pmsidr_el1
25079  *
25080  * AP Sampling Profiling ID Register
25081  * Describes the Statistical Profiling implementation to software.
25082  */
25083 union bdk_ap_pmsidr_el1
25084 {
25085     uint64_t u;
25086     struct bdk_ap_pmsidr_el1_s
25087     {
25088 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25089         uint64_t reserved_20_63        : 44;
25090         uint64_t countsize             : 4;  /**< [ 19: 16](RO) Defines the size of the counters.
25091                                                                    0x2 = 12-bit saturating counters.
25092 
25093                                                                  All other values are reserved. Reserved values might be defined in a future version of the
25094                                                                  architecture. */
25095         uint64_t maxsize               : 4;  /**< [ 15: 12](RO) Defines the largest size for a single record, rounded up to a power-of-two. If this is the
25096                                                                  same as the minimum alignment (PMBIDR_EL1.Align), then each record is exactly this size.
25097                                                                    0x4 = 16 bytes.
25098                                                                    0x5 = 32 bytes.
25099                                                                    0x6 = 64 bytes.
25100                                                                    0x7 = 128 bytes.
25101                                                                    ... .
25102                                                                    0xB = 2 KB.
25103 
25104                                                                  All other values are reserved. Reserved values might be defined in a future version of the
25105                                                                  architecture. */
25106         uint64_t interval              : 4;  /**< [ 11:  8](RO) Recommended minimum sampling interval. This provides guidance from the implementer to the
25107                                                                  smallest minimum sampling interval, N. It is encoded as floor((Log2(N)-8)*2).
25108                                                                    0x0 = 256.
25109                                                                    0x2 = 512.
25110                                                                    0x3 = 724.
25111                                                                    0x4 = 1024.
25112                                                                    0x5 = 1448.
25113                                                                    0x6 = 2048.
25114                                                                    0x7 = 2896.
25115                                                                    0x8 = 4096.
25116 
25117                                                                  All other values are reserved. Reserved values might be defined in a future version of the
25118                                                                  architecture. */
25119         uint64_t llnw                  : 1;  /**< [  7:  7](RO) Last level cache write events. Defines whether Last Level Cache events in the Event packet
25120                                                                  are valid on write operations.
25121                                                                    0 = Last level cache events are valid for write operations.
25122                                                                    1 = Last level cache events are not valid for write operations. */
25123         uint64_t llnr                  : 1;  /**< [  6:  6](RO) Last level cache read events. Defines whether Last Level Cache events in the Event packet
25124                                                                  are valid on read operations.
25125                                                                    0 = Last level cache events are valid for read operations.
25126                                                                    1 = Last level cache events are not valid for read operations. */
25127         uint64_t ernd                  : 1;  /**< [  5:  5](RO) Defines how the random number generator is used in determining the interval between
25128                                                                  samples, when enabled by PMSIRR_EL1[RND].
25129                                                                    0 = The random number is added at the start of the interval, and the sample is taken and
25130                                                                  a new interval started when the combined interval expires.
25131                                                                    1 = The random number is added and the new interval started after the interval
25132                                                                  programmed in PMSIRR_EL1[INTERVAL] expires, and the sample is taken when the random
25133                                                                  interval expires. */
25134         uint64_t lds                   : 1;  /**< [  4:  4](RO) Data source indicator for sampled load instructions.
25135                                                                    0 = Loaded data source not implemented.
25136                                                                    1 = Loaded data source implemented. */
25137         uint64_t archinst              : 1;  /**< [  3:  3](RO) Architectural instruction profiling.
25138                                                                    0 = Micro-op sampling implemented.
25139                                                                    1 = Architecture instruction sampling implemented. */
25140         uint64_t fl                    : 1;  /**< [  2:  2](RO) Filtering by latency. This bit reads as one. */
25141         uint64_t ft                    : 1;  /**< [  1:  1](RO) Filtering by operation type. This bit reads as one. */
25142         uint64_t fe                    : 1;  /**< [  0:  0](RO) Filtering by events. This bit reads as one. */
25143 #else /* Word 0 - Little Endian */
25144         uint64_t fe                    : 1;  /**< [  0:  0](RO) Filtering by events. This bit reads as one. */
25145         uint64_t ft                    : 1;  /**< [  1:  1](RO) Filtering by operation type. This bit reads as one. */
25146         uint64_t fl                    : 1;  /**< [  2:  2](RO) Filtering by latency. This bit reads as one. */
25147         uint64_t archinst              : 1;  /**< [  3:  3](RO) Architectural instruction profiling.
25148                                                                    0 = Micro-op sampling implemented.
25149                                                                    1 = Architecture instruction sampling implemented. */
25150         uint64_t lds                   : 1;  /**< [  4:  4](RO) Data source indicator for sampled load instructions.
25151                                                                    0 = Loaded data source not implemented.
25152                                                                    1 = Loaded data source implemented. */
25153         uint64_t ernd                  : 1;  /**< [  5:  5](RO) Defines how the random number generator is used in determining the interval between
25154                                                                  samples, when enabled by PMSIRR_EL1[RND].
25155                                                                    0 = The random number is added at the start of the interval, and the sample is taken and
25156                                                                  a new interval started when the combined interval expires.
25157                                                                    1 = The random number is added and the new interval started after the interval
25158                                                                  programmed in PMSIRR_EL1[INTERVAL] expires, and the sample is taken when the random
25159                                                                  interval expires. */
25160         uint64_t llnr                  : 1;  /**< [  6:  6](RO) Last level cache read events. Defines whether Last Level Cache events in the Event packet
25161                                                                  are valid on read operations.
25162                                                                    0 = Last level cache events are valid for read operations.
25163                                                                    1 = Last level cache events are not valid for read operations. */
25164         uint64_t llnw                  : 1;  /**< [  7:  7](RO) Last level cache write events. Defines whether Last Level Cache events in the Event packet
25165                                                                  are valid on write operations.
25166                                                                    0 = Last level cache events are valid for write operations.
25167                                                                    1 = Last level cache events are not valid for write operations. */
25168         uint64_t interval              : 4;  /**< [ 11:  8](RO) Recommended minimum sampling interval. This provides guidance from the implementer to the
25169                                                                  smallest minimum sampling interval, N. It is encoded as floor((Log2(N)-8)*2).
25170                                                                    0x0 = 256.
25171                                                                    0x2 = 512.
25172                                                                    0x3 = 724.
25173                                                                    0x4 = 1024.
25174                                                                    0x5 = 1448.
25175                                                                    0x6 = 2048.
25176                                                                    0x7 = 2896.
25177                                                                    0x8 = 4096.
25178 
25179                                                                  All other values are reserved. Reserved values might be defined in a future version of the
25180                                                                  architecture. */
25181         uint64_t maxsize               : 4;  /**< [ 15: 12](RO) Defines the largest size for a single record, rounded up to a power-of-two. If this is the
25182                                                                  same as the minimum alignment (PMBIDR_EL1.Align), then each record is exactly this size.
25183                                                                    0x4 = 16 bytes.
25184                                                                    0x5 = 32 bytes.
25185                                                                    0x6 = 64 bytes.
25186                                                                    0x7 = 128 bytes.
25187                                                                    ... .
25188                                                                    0xB = 2 KB.
25189 
25190                                                                  All other values are reserved. Reserved values might be defined in a future version of the
25191                                                                  architecture. */
25192         uint64_t countsize             : 4;  /**< [ 19: 16](RO) Defines the size of the counters.
25193                                                                    0x2 = 12-bit saturating counters.
25194 
25195                                                                  All other values are reserved. Reserved values might be defined in a future version of the
25196                                                                  architecture. */
25197         uint64_t reserved_20_63        : 44;
25198 #endif /* Word 0 - End */
25199     } s;
25200     /* struct bdk_ap_pmsidr_el1_s cn; */
25201 };
25202 typedef union bdk_ap_pmsidr_el1 bdk_ap_pmsidr_el1_t;
25203 
25204 #define BDK_AP_PMSIDR_EL1 BDK_AP_PMSIDR_EL1_FUNC()
25205 static inline uint64_t BDK_AP_PMSIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSIDR_EL1_FUNC(void)25206 static inline uint64_t BDK_AP_PMSIDR_EL1_FUNC(void)
25207 {
25208     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
25209         return 0x30009090700ll;
25210     __bdk_csr_fatal("AP_PMSIDR_EL1", 0, 0, 0, 0, 0);
25211 }
25212 
25213 #define typedef_BDK_AP_PMSIDR_EL1 bdk_ap_pmsidr_el1_t
25214 #define bustype_BDK_AP_PMSIDR_EL1 BDK_CSR_TYPE_SYSREG
25215 #define basename_BDK_AP_PMSIDR_EL1 "AP_PMSIDR_EL1"
25216 #define busnum_BDK_AP_PMSIDR_EL1 0
25217 #define arguments_BDK_AP_PMSIDR_EL1 -1,-1,-1,-1
25218 
25219 /**
25220  * Register (SYSREG) ap_pmsirr_el1
25221  *
25222  * AP Sampling Interval Reload Register
25223  * Defines the interval between samples.
25224  */
25225 union bdk_ap_pmsirr_el1
25226 {
25227     uint64_t u;
25228     struct bdk_ap_pmsirr_el1_s
25229     {
25230 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25231         uint64_t reserved_32_63        : 32;
25232         uint64_t interval              : 24; /**< [ 31:  8](R/W) Bits [31:8] of the PMSICR_EL1 interval counter reload value. Software must set this to a
25233                                                                  non-zero
25234                                                                  value. If software sets this to zero, an UNKNOWN sampling interval is used. Software
25235                                                                  should set this to
25236                                                                  a value greater than the minimum indicated by PMSIDR_EL1.Interval. */
25237         uint64_t reserved_1_7          : 7;
25238         uint64_t rnd                   : 1;  /**< [  0:  0](R/W) Controls randomization of the sampling interval.
25239                                                                    0 = Disable randomization of sampling interval.
25240                                                                    1 = Add (pseudo-)random jitter to sampling interval.
25241 
25242                                                                  The random number generator is not architected. */
25243 #else /* Word 0 - Little Endian */
25244         uint64_t rnd                   : 1;  /**< [  0:  0](R/W) Controls randomization of the sampling interval.
25245                                                                    0 = Disable randomization of sampling interval.
25246                                                                    1 = Add (pseudo-)random jitter to sampling interval.
25247 
25248                                                                  The random number generator is not architected. */
25249         uint64_t reserved_1_7          : 7;
25250         uint64_t interval              : 24; /**< [ 31:  8](R/W) Bits [31:8] of the PMSICR_EL1 interval counter reload value. Software must set this to a
25251                                                                  non-zero
25252                                                                  value. If software sets this to zero, an UNKNOWN sampling interval is used. Software
25253                                                                  should set this to
25254                                                                  a value greater than the minimum indicated by PMSIDR_EL1.Interval. */
25255         uint64_t reserved_32_63        : 32;
25256 #endif /* Word 0 - End */
25257     } s;
25258     /* struct bdk_ap_pmsirr_el1_s cn; */
25259 };
25260 typedef union bdk_ap_pmsirr_el1 bdk_ap_pmsirr_el1_t;
25261 
25262 #define BDK_AP_PMSIRR_EL1 BDK_AP_PMSIRR_EL1_FUNC()
25263 static inline uint64_t BDK_AP_PMSIRR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSIRR_EL1_FUNC(void)25264 static inline uint64_t BDK_AP_PMSIRR_EL1_FUNC(void)
25265 {
25266     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
25267         return 0x30009090300ll;
25268     __bdk_csr_fatal("AP_PMSIRR_EL1", 0, 0, 0, 0, 0);
25269 }
25270 
25271 #define typedef_BDK_AP_PMSIRR_EL1 bdk_ap_pmsirr_el1_t
25272 #define bustype_BDK_AP_PMSIRR_EL1 BDK_CSR_TYPE_SYSREG
25273 #define basename_BDK_AP_PMSIRR_EL1 "AP_PMSIRR_EL1"
25274 #define busnum_BDK_AP_PMSIRR_EL1 0
25275 #define arguments_BDK_AP_PMSIRR_EL1 -1,-1,-1,-1
25276 
25277 /**
25278  * Register (SYSREG) ap_pmslatfr_el1
25279  *
25280  * AP Sampling Latency Filter Register
25281  * Controls sample filtering by latency.
25282  */
25283 union bdk_ap_pmslatfr_el1
25284 {
25285     uint64_t u;
25286     struct bdk_ap_pmslatfr_el1_s
25287     {
25288 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25289         uint64_t reserved_12_63        : 52;
25290         uint64_t minlat                : 12; /**< [ 11:  0](R/W) Minimum latency. When PMSFCR_EL1.FL == 1, defines the minimum total latency for filtered
25291                                                                  operations. Samples with a total latency less than MINLAT will not be recorded.
25292                                                                  Ignored if PMSFCR_EL1.FL == 0. */
25293 #else /* Word 0 - Little Endian */
25294         uint64_t minlat                : 12; /**< [ 11:  0](R/W) Minimum latency. When PMSFCR_EL1.FL == 1, defines the minimum total latency for filtered
25295                                                                  operations. Samples with a total latency less than MINLAT will not be recorded.
25296                                                                  Ignored if PMSFCR_EL1.FL == 0. */
25297         uint64_t reserved_12_63        : 52;
25298 #endif /* Word 0 - End */
25299     } s;
25300     /* struct bdk_ap_pmslatfr_el1_s cn; */
25301 };
25302 typedef union bdk_ap_pmslatfr_el1 bdk_ap_pmslatfr_el1_t;
25303 
25304 #define BDK_AP_PMSLATFR_EL1 BDK_AP_PMSLATFR_EL1_FUNC()
25305 static inline uint64_t BDK_AP_PMSLATFR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSLATFR_EL1_FUNC(void)25306 static inline uint64_t BDK_AP_PMSLATFR_EL1_FUNC(void)
25307 {
25308     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
25309         return 0x30009090600ll;
25310     __bdk_csr_fatal("AP_PMSLATFR_EL1", 0, 0, 0, 0, 0);
25311 }
25312 
25313 #define typedef_BDK_AP_PMSLATFR_EL1 bdk_ap_pmslatfr_el1_t
25314 #define bustype_BDK_AP_PMSLATFR_EL1 BDK_CSR_TYPE_SYSREG
25315 #define basename_BDK_AP_PMSLATFR_EL1 "AP_PMSLATFR_EL1"
25316 #define busnum_BDK_AP_PMSLATFR_EL1 0
25317 #define arguments_BDK_AP_PMSLATFR_EL1 -1,-1,-1,-1
25318 
25319 /**
25320  * Register (SYSREG) ap_pmswinc_el0
25321  *
25322  * AP Performance Monitors Software Increment Register
25323  * Increments a counter that is configured to count the Software
25324  *     increment event, event 0x0.
25325  */
25326 union bdk_ap_pmswinc_el0
25327 {
25328     uint32_t u;
25329     struct bdk_ap_pmswinc_el0_s
25330     {
25331 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25332         uint32_t reserved_31           : 1;
25333         uint32_t p                     : 31; /**< [ 30:  0](RO) Event counter software increment bit for PMEVCNTR\<x\>.
25334                                                                  Bits [30:N] are RAZ/WI.
25335                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
25336                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in PMCR[N].
25337                                                                  The effects of writing to this bit are:
25338                                                                  0 = No action. The write to this bit is ignored.
25339                                                                  1 = If PMEVCNTR\<x\> is enabled and configured to count the software
25340                                                                      increment event, increments PMEVCNTR\<x\> by 1. If PMEVCNTR\<x\>
25341                                                                      is disabled, or not configured to count the software increment
25342                                                                      event, the write to this bit is ignored. */
25343 #else /* Word 0 - Little Endian */
25344         uint32_t p                     : 31; /**< [ 30:  0](RO) Event counter software increment bit for PMEVCNTR\<x\>.
25345                                                                  Bits [30:N] are RAZ/WI.
25346                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
25347                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in PMCR[N].
25348                                                                  The effects of writing to this bit are:
25349                                                                  0 = No action. The write to this bit is ignored.
25350                                                                  1 = If PMEVCNTR\<x\> is enabled and configured to count the software
25351                                                                      increment event, increments PMEVCNTR\<x\> by 1. If PMEVCNTR\<x\>
25352                                                                      is disabled, or not configured to count the software increment
25353                                                                      event, the write to this bit is ignored. */
25354         uint32_t reserved_31           : 1;
25355 #endif /* Word 0 - End */
25356     } s;
25357     /* struct bdk_ap_pmswinc_el0_s cn8; */
25358     struct bdk_ap_pmswinc_el0_cn9
25359     {
25360 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25361         uint32_t reserved_31           : 1;
25362         uint32_t p                     : 31; /**< [ 30:  0](WO) Event counter software increment bit for PMEVCNTR\<x\>.
25363                                                                  Bits [30:N] are RAZ/WI.
25364                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
25365                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in PMCR[N].
25366                                                                  The effects of writing to this bit are:
25367                                                                  0 = No action. The write to this bit is ignored.
25368                                                                  1 = If PMEVCNTR\<x\> is enabled and configured to count the software
25369                                                                      increment event, increments PMEVCNTR\<x\> by 1. If PMEVCNTR\<x\>
25370                                                                      is disabled, or not configured to count the software increment
25371                                                                      event, the write to this bit is ignored. */
25372 #else /* Word 0 - Little Endian */
25373         uint32_t p                     : 31; /**< [ 30:  0](WO) Event counter software increment bit for PMEVCNTR\<x\>.
25374                                                                  Bits [30:N] are RAZ/WI.
25375                                                                  When EL2 is implemented, in nonsecure EL1 and EL0, N is the
25376                                                                      value in AP_MDCR_EL2[HPMN]. Otherwise, N is the value in PMCR[N].
25377                                                                  The effects of writing to this bit are:
25378                                                                  0 = No action. The write to this bit is ignored.
25379                                                                  1 = If PMEVCNTR\<x\> is enabled and configured to count the software
25380                                                                      increment event, increments PMEVCNTR\<x\> by 1. If PMEVCNTR\<x\>
25381                                                                      is disabled, or not configured to count the software increment
25382                                                                      event, the write to this bit is ignored. */
25383         uint32_t reserved_31           : 1;
25384 #endif /* Word 0 - End */
25385     } cn9;
25386 };
25387 typedef union bdk_ap_pmswinc_el0 bdk_ap_pmswinc_el0_t;
25388 
25389 #define BDK_AP_PMSWINC_EL0 BDK_AP_PMSWINC_EL0_FUNC()
25390 static inline uint64_t BDK_AP_PMSWINC_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMSWINC_EL0_FUNC(void)25391 static inline uint64_t BDK_AP_PMSWINC_EL0_FUNC(void)
25392 {
25393     return 0x303090c0400ll;
25394 }
25395 
25396 #define typedef_BDK_AP_PMSWINC_EL0 bdk_ap_pmswinc_el0_t
25397 #define bustype_BDK_AP_PMSWINC_EL0 BDK_CSR_TYPE_SYSREG
25398 #define basename_BDK_AP_PMSWINC_EL0 "AP_PMSWINC_EL0"
25399 #define busnum_BDK_AP_PMSWINC_EL0 0
25400 #define arguments_BDK_AP_PMSWINC_EL0 -1,-1,-1,-1
25401 
25402 /**
25403  * Register (SYSREG) ap_pmuserenr_el0
25404  *
25405  * AP Performance Monitors User Enable Register
25406  * Enables or disables EL0 access to the Performance Monitors.
25407  */
25408 union bdk_ap_pmuserenr_el0
25409 {
25410     uint32_t u;
25411     struct bdk_ap_pmuserenr_el0_s
25412     {
25413 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25414         uint32_t reserved_4_31         : 28;
25415         uint32_t er                    : 1;  /**< [  3:  3](R/W) Event counter read enable.
25416                                                                  0 = EL0 read access to AP_PMXEVCNTR_EL0 / PMEVCNTR\<n\>_EL0 and
25417                                                                      read/write access to AP_PMSELR_EL0 disabled if AP_PMUSERENR_EL0[EN]
25418                                                                      is also 0.
25419                                                                  1 = EL0 read access to AP_PMXEVCNTR_EL0 / PMEVCNTR\<n\>_EL0 and
25420                                                                      read/write access to AP_PMSELR_EL0 enabled. */
25421         uint32_t cr                    : 1;  /**< [  2:  2](R/W) Cycle counter read enable.
25422                                                                  0 = EL0 read access to AP_PMCCNTR_EL0 disabled if AP_PMUSERENR_EL0[EN] is
25423                                                                      also 0.
25424                                                                  1 = EL0 read access to AP_PMCCNTR_EL0 enabled. */
25425         uint32_t sw                    : 1;  /**< [  1:  1](R/W) Software Increment write enable.
25426                                                                  0 = EL0 write access to AP_PMSWINC_EL0 disabled if AP_PMUSERENR_EL0[EN]
25427                                                                      is also 0.
25428                                                                  1 = EL0 write access to AP_PMSWINC_EL0 enabled. */
25429         uint32_t en                    : 1;  /**< [  0:  0](R/W) EL0 access enable bit.
25430                                                                  0 = EL0 access to the Performance Monitors disabled.
25431                                                                  1 = EL0 access to the Performance Monitors enabled. Can access all
25432                                                                      PMU registers at EL0, except for writes to AP_PMUSERENR_EL0 and
25433                                                                      reads/writes of AP_PMINTENSET_EL1 and AP_PMINTENCLR_EL1. */
25434 #else /* Word 0 - Little Endian */
25435         uint32_t en                    : 1;  /**< [  0:  0](R/W) EL0 access enable bit.
25436                                                                  0 = EL0 access to the Performance Monitors disabled.
25437                                                                  1 = EL0 access to the Performance Monitors enabled. Can access all
25438                                                                      PMU registers at EL0, except for writes to AP_PMUSERENR_EL0 and
25439                                                                      reads/writes of AP_PMINTENSET_EL1 and AP_PMINTENCLR_EL1. */
25440         uint32_t sw                    : 1;  /**< [  1:  1](R/W) Software Increment write enable.
25441                                                                  0 = EL0 write access to AP_PMSWINC_EL0 disabled if AP_PMUSERENR_EL0[EN]
25442                                                                      is also 0.
25443                                                                  1 = EL0 write access to AP_PMSWINC_EL0 enabled. */
25444         uint32_t cr                    : 1;  /**< [  2:  2](R/W) Cycle counter read enable.
25445                                                                  0 = EL0 read access to AP_PMCCNTR_EL0 disabled if AP_PMUSERENR_EL0[EN] is
25446                                                                      also 0.
25447                                                                  1 = EL0 read access to AP_PMCCNTR_EL0 enabled. */
25448         uint32_t er                    : 1;  /**< [  3:  3](R/W) Event counter read enable.
25449                                                                  0 = EL0 read access to AP_PMXEVCNTR_EL0 / PMEVCNTR\<n\>_EL0 and
25450                                                                      read/write access to AP_PMSELR_EL0 disabled if AP_PMUSERENR_EL0[EN]
25451                                                                      is also 0.
25452                                                                  1 = EL0 read access to AP_PMXEVCNTR_EL0 / PMEVCNTR\<n\>_EL0 and
25453                                                                      read/write access to AP_PMSELR_EL0 enabled. */
25454         uint32_t reserved_4_31         : 28;
25455 #endif /* Word 0 - End */
25456     } s;
25457     /* struct bdk_ap_pmuserenr_el0_s cn; */
25458 };
25459 typedef union bdk_ap_pmuserenr_el0 bdk_ap_pmuserenr_el0_t;
25460 
25461 #define BDK_AP_PMUSERENR_EL0 BDK_AP_PMUSERENR_EL0_FUNC()
25462 static inline uint64_t BDK_AP_PMUSERENR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMUSERENR_EL0_FUNC(void)25463 static inline uint64_t BDK_AP_PMUSERENR_EL0_FUNC(void)
25464 {
25465     return 0x303090e0000ll;
25466 }
25467 
25468 #define typedef_BDK_AP_PMUSERENR_EL0 bdk_ap_pmuserenr_el0_t
25469 #define bustype_BDK_AP_PMUSERENR_EL0 BDK_CSR_TYPE_SYSREG
25470 #define basename_BDK_AP_PMUSERENR_EL0 "AP_PMUSERENR_EL0"
25471 #define busnum_BDK_AP_PMUSERENR_EL0 0
25472 #define arguments_BDK_AP_PMUSERENR_EL0 -1,-1,-1,-1
25473 
25474 /**
25475  * Register (SYSREG) ap_pmxevcntr_el0
25476  *
25477  * AP Performance Monitors Selected Event Count Register
25478  * Reads or writes the value of the selected event counter,
25479  *     PMEVCNTR\<x\>_EL0. AP_PMSELR_EL0[SEL] determines which event counter
25480  *     is selected.
25481  */
25482 union bdk_ap_pmxevcntr_el0
25483 {
25484     uint32_t u;
25485     struct bdk_ap_pmxevcntr_el0_s
25486     {
25487 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25488         uint32_t pmevcntr              : 32; /**< [ 31:  0](R/W) Value of the selected event counter, PMEVCNTR\<x\>_EL0, where x
25489                                                                      is the value stored in AP_PMSELR_EL0[SEL]. */
25490 #else /* Word 0 - Little Endian */
25491         uint32_t pmevcntr              : 32; /**< [ 31:  0](R/W) Value of the selected event counter, PMEVCNTR\<x\>_EL0, where x
25492                                                                      is the value stored in AP_PMSELR_EL0[SEL]. */
25493 #endif /* Word 0 - End */
25494     } s;
25495     /* struct bdk_ap_pmxevcntr_el0_s cn; */
25496 };
25497 typedef union bdk_ap_pmxevcntr_el0 bdk_ap_pmxevcntr_el0_t;
25498 
25499 #define BDK_AP_PMXEVCNTR_EL0 BDK_AP_PMXEVCNTR_EL0_FUNC()
25500 static inline uint64_t BDK_AP_PMXEVCNTR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMXEVCNTR_EL0_FUNC(void)25501 static inline uint64_t BDK_AP_PMXEVCNTR_EL0_FUNC(void)
25502 {
25503     return 0x303090d0200ll;
25504 }
25505 
25506 #define typedef_BDK_AP_PMXEVCNTR_EL0 bdk_ap_pmxevcntr_el0_t
25507 #define bustype_BDK_AP_PMXEVCNTR_EL0 BDK_CSR_TYPE_SYSREG
25508 #define basename_BDK_AP_PMXEVCNTR_EL0 "AP_PMXEVCNTR_EL0"
25509 #define busnum_BDK_AP_PMXEVCNTR_EL0 0
25510 #define arguments_BDK_AP_PMXEVCNTR_EL0 -1,-1,-1,-1
25511 
25512 /**
25513  * Register (SYSREG) ap_pmxevtyper_el0
25514  *
25515  * AP Performance Monitors Selected Event Type Register
25516  * When AP_PMSELR_EL0[SEL] selects an event counter, this accesses a
25517  *     PMEVTYPER\<n\>_EL0 register. When AP_PMSELR_EL0[SEL] selects the
25518  *     cycle counter, this accesses AP_PMCCFILTR_EL0.
25519  */
25520 union bdk_ap_pmxevtyper_el0
25521 {
25522     uint32_t u;
25523     struct bdk_ap_pmxevtyper_el0_s
25524     {
25525 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25526         uint32_t data                  : 32; /**< [ 31:  0](R/W) Event type register or AP_PMCCFILTR_EL0.
25527                                                                  When AP_PMSELR_EL0[SEL] == 31, this register accesses
25528                                                                      AP_PMCCFILTR_EL0.
25529                                                                  Otherwise, this register accesses PMEVTYPER\<n\>_EL0 where n is
25530                                                                      the value in AP_PMSELR_EL0[SEL]. */
25531 #else /* Word 0 - Little Endian */
25532         uint32_t data                  : 32; /**< [ 31:  0](R/W) Event type register or AP_PMCCFILTR_EL0.
25533                                                                  When AP_PMSELR_EL0[SEL] == 31, this register accesses
25534                                                                      AP_PMCCFILTR_EL0.
25535                                                                  Otherwise, this register accesses PMEVTYPER\<n\>_EL0 where n is
25536                                                                      the value in AP_PMSELR_EL0[SEL]. */
25537 #endif /* Word 0 - End */
25538     } s;
25539     /* struct bdk_ap_pmxevtyper_el0_s cn; */
25540 };
25541 typedef union bdk_ap_pmxevtyper_el0 bdk_ap_pmxevtyper_el0_t;
25542 
25543 #define BDK_AP_PMXEVTYPER_EL0 BDK_AP_PMXEVTYPER_EL0_FUNC()
25544 static inline uint64_t BDK_AP_PMXEVTYPER_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_PMXEVTYPER_EL0_FUNC(void)25545 static inline uint64_t BDK_AP_PMXEVTYPER_EL0_FUNC(void)
25546 {
25547     return 0x303090d0100ll;
25548 }
25549 
25550 #define typedef_BDK_AP_PMXEVTYPER_EL0 bdk_ap_pmxevtyper_el0_t
25551 #define bustype_BDK_AP_PMXEVTYPER_EL0 BDK_CSR_TYPE_SYSREG
25552 #define basename_BDK_AP_PMXEVTYPER_EL0 "AP_PMXEVTYPER_EL0"
25553 #define busnum_BDK_AP_PMXEVTYPER_EL0 0
25554 #define arguments_BDK_AP_PMXEVTYPER_EL0 -1,-1,-1,-1
25555 
25556 /**
25557  * Register (SYSREG) ap_revidr_el1
25558  *
25559  * AP Revision ID Register
25560  * This register provides implementation-specific minor revision information
25561  * that can only be interpreted in conjunction with AP_MIDR_EL1.
25562  */
25563 union bdk_ap_revidr_el1
25564 {
25565     uint32_t u;
25566     struct bdk_ap_revidr_el1_s
25567     {
25568 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25569         uint32_t reserved_0_31         : 32;
25570 #else /* Word 0 - Little Endian */
25571         uint32_t reserved_0_31         : 32;
25572 #endif /* Word 0 - End */
25573     } s;
25574     /* struct bdk_ap_revidr_el1_s cn; */
25575 };
25576 typedef union bdk_ap_revidr_el1 bdk_ap_revidr_el1_t;
25577 
25578 #define BDK_AP_REVIDR_EL1 BDK_AP_REVIDR_EL1_FUNC()
25579 static inline uint64_t BDK_AP_REVIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_REVIDR_EL1_FUNC(void)25580 static inline uint64_t BDK_AP_REVIDR_EL1_FUNC(void)
25581 {
25582     return 0x30000000600ll;
25583 }
25584 
25585 #define typedef_BDK_AP_REVIDR_EL1 bdk_ap_revidr_el1_t
25586 #define bustype_BDK_AP_REVIDR_EL1 BDK_CSR_TYPE_SYSREG
25587 #define basename_BDK_AP_REVIDR_EL1 "AP_REVIDR_EL1"
25588 #define busnum_BDK_AP_REVIDR_EL1 0
25589 #define arguments_BDK_AP_REVIDR_EL1 -1,-1,-1,-1
25590 
25591 /**
25592  * Register (SYSREG) ap_rmr_el#
25593  *
25594  * AP Reset Management non-EL3 Register
25595  * Reset control for EL1 or EL2. Doesn't exists since EL3 exists.
25596  */
25597 union bdk_ap_rmr_elx
25598 {
25599     uint32_t u;
25600     struct bdk_ap_rmr_elx_s
25601     {
25602 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25603         uint32_t reserved_0_31         : 32;
25604 #else /* Word 0 - Little Endian */
25605         uint32_t reserved_0_31         : 32;
25606 #endif /* Word 0 - End */
25607     } s;
25608     /* struct bdk_ap_rmr_elx_s cn; */
25609 };
25610 typedef union bdk_ap_rmr_elx bdk_ap_rmr_elx_t;
25611 
25612 static inline uint64_t BDK_AP_RMR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_RMR_ELX(unsigned long a)25613 static inline uint64_t BDK_AP_RMR_ELX(unsigned long a)
25614 {
25615     if ((a>=1)&&(a<=2))
25616         return 0x3000c000200ll + 0ll * ((a) & 0x3);
25617     __bdk_csr_fatal("AP_RMR_ELX", 1, a, 0, 0, 0);
25618 }
25619 
25620 #define typedef_BDK_AP_RMR_ELX(a) bdk_ap_rmr_elx_t
25621 #define bustype_BDK_AP_RMR_ELX(a) BDK_CSR_TYPE_SYSREG
25622 #define basename_BDK_AP_RMR_ELX(a) "AP_RMR_ELX"
25623 #define busnum_BDK_AP_RMR_ELX(a) (a)
25624 #define arguments_BDK_AP_RMR_ELX(a) (a),-1,-1,-1
25625 
25626 /**
25627  * Register (SYSREG) ap_rmr_el3
25628  *
25629  * AP Reset Management EL3 Register
25630  * If EL3 is the highest Exception level implemented, and is
25631  *     capable of using both AArch32 and AArch64, controls the
25632  *     Execution state that the processor boots into and allows
25633  *     request of a Warm reset.
25634  *
25635  * Not implemented on CNXXXX - no 32 bit support.
25636  */
25637 union bdk_ap_rmr_el3
25638 {
25639     uint32_t u;
25640     struct bdk_ap_rmr_el3_s
25641     {
25642 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25643         uint32_t reserved_2_31         : 30;
25644         uint32_t rr                    : 1;  /**< [  1:  1](R/W) When set to 1 this bit requests a Warm reset. The bit is
25645                                                                      strictly a request. */
25646         uint32_t aa64                  : 1;  /**< [  0:  0](R/W) Determines which Execution state the processor boots into
25647                                                                      after a Warm reset:
25648                                                                  The reset vector address on reset takes a choice between two
25649                                                                      IMP DEF values, depending on the value in the AA64 bit.
25650                                                                  0 = AArch32.
25651                                                                  1 = AArch64. */
25652 #else /* Word 0 - Little Endian */
25653         uint32_t aa64                  : 1;  /**< [  0:  0](R/W) Determines which Execution state the processor boots into
25654                                                                      after a Warm reset:
25655                                                                  The reset vector address on reset takes a choice between two
25656                                                                      IMP DEF values, depending on the value in the AA64 bit.
25657                                                                  0 = AArch32.
25658                                                                  1 = AArch64. */
25659         uint32_t rr                    : 1;  /**< [  1:  1](R/W) When set to 1 this bit requests a Warm reset. The bit is
25660                                                                      strictly a request. */
25661         uint32_t reserved_2_31         : 30;
25662 #endif /* Word 0 - End */
25663     } s;
25664     /* struct bdk_ap_rmr_el3_s cn8; */
25665     struct bdk_ap_rmr_el3_cn9
25666     {
25667 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25668         uint32_t reserved_2_31         : 30;
25669         uint32_t rr                    : 1;  /**< [  1:  1](RAZ) When set to 1 this bit requests a Warm reset. The bit is
25670                                                                      strictly a request. */
25671         uint32_t aa64                  : 1;  /**< [  0:  0](RAZ) Determines which Execution state the processor boots into
25672                                                                      after a Warm reset:
25673                                                                  The reset vector address on reset takes a choice between two
25674                                                                      IMP DEF values, depending on the value in the AA64 bit.
25675                                                                  0 = AArch32.
25676                                                                  1 = AArch64. */
25677 #else /* Word 0 - Little Endian */
25678         uint32_t aa64                  : 1;  /**< [  0:  0](RAZ) Determines which Execution state the processor boots into
25679                                                                      after a Warm reset:
25680                                                                  The reset vector address on reset takes a choice between two
25681                                                                      IMP DEF values, depending on the value in the AA64 bit.
25682                                                                  0 = AArch32.
25683                                                                  1 = AArch64. */
25684         uint32_t rr                    : 1;  /**< [  1:  1](RAZ) When set to 1 this bit requests a Warm reset. The bit is
25685                                                                      strictly a request. */
25686         uint32_t reserved_2_31         : 30;
25687 #endif /* Word 0 - End */
25688     } cn9;
25689 };
25690 typedef union bdk_ap_rmr_el3 bdk_ap_rmr_el3_t;
25691 
25692 #define BDK_AP_RMR_EL3 BDK_AP_RMR_EL3_FUNC()
25693 static inline uint64_t BDK_AP_RMR_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_RMR_EL3_FUNC(void)25694 static inline uint64_t BDK_AP_RMR_EL3_FUNC(void)
25695 {
25696     return 0x3060c000200ll;
25697 }
25698 
25699 #define typedef_BDK_AP_RMR_EL3 bdk_ap_rmr_el3_t
25700 #define bustype_BDK_AP_RMR_EL3 BDK_CSR_TYPE_SYSREG
25701 #define basename_BDK_AP_RMR_EL3 "AP_RMR_EL3"
25702 #define busnum_BDK_AP_RMR_EL3 0
25703 #define arguments_BDK_AP_RMR_EL3 -1,-1,-1,-1
25704 
25705 /**
25706  * Register (SYSREG) ap_rvbar_el#
25707  *
25708  * AP Reset Vector Base Address non-EL3 Register
25709  * Reset vector for EL1 or EL2. Doesn't exists since EL3 exists.
25710  */
25711 union bdk_ap_rvbar_elx
25712 {
25713     uint64_t u;
25714     struct bdk_ap_rvbar_elx_s
25715     {
25716 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25717         uint64_t reserved_0_63         : 64;
25718 #else /* Word 0 - Little Endian */
25719         uint64_t reserved_0_63         : 64;
25720 #endif /* Word 0 - End */
25721     } s;
25722     /* struct bdk_ap_rvbar_elx_s cn; */
25723 };
25724 typedef union bdk_ap_rvbar_elx bdk_ap_rvbar_elx_t;
25725 
25726 static inline uint64_t BDK_AP_RVBAR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_RVBAR_ELX(unsigned long a)25727 static inline uint64_t BDK_AP_RVBAR_ELX(unsigned long a)
25728 {
25729     if ((a>=1)&&(a<=2))
25730         return 0x3000c000100ll + 0ll * ((a) & 0x3);
25731     __bdk_csr_fatal("AP_RVBAR_ELX", 1, a, 0, 0, 0);
25732 }
25733 
25734 #define typedef_BDK_AP_RVBAR_ELX(a) bdk_ap_rvbar_elx_t
25735 #define bustype_BDK_AP_RVBAR_ELX(a) BDK_CSR_TYPE_SYSREG
25736 #define basename_BDK_AP_RVBAR_ELX(a) "AP_RVBAR_ELX"
25737 #define busnum_BDK_AP_RVBAR_ELX(a) (a)
25738 #define arguments_BDK_AP_RVBAR_ELX(a) (a),-1,-1,-1
25739 
25740 /**
25741  * Register (SYSREG) ap_rvbar_el3
25742  *
25743  * AP Reset Vector Base Address EL3 Register
25744  * If EL3 is the highest exception level implemented, contains
25745  *     the implementation defined address that execution starts from
25746  *     after reset when executing in AArch64 state.
25747  */
25748 union bdk_ap_rvbar_el3
25749 {
25750     uint64_t u;
25751     struct bdk_ap_rvbar_el3_s
25752     {
25753 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25754         uint64_t data                  : 64; /**< [ 63:  0](RO) Reset Vector Base Address. If this Exception level is the
25755                                                                      highest one implemented, this field contains the
25756                                                                      implementation defined address that execution starts from
25757                                                                      after reset when executing in 64-bit state. Bits[1:0] of this
25758                                                                      register are 00, as this address must be aligned, and the
25759                                                                      address must be within the physical address size supported by
25760                                                                      the processor.
25761 
25762                                                                  If this Exception level is not the highest one implemented,
25763                                                                      then this register is not implemented and its encoding is
25764                                                                      UNdefined. */
25765 #else /* Word 0 - Little Endian */
25766         uint64_t data                  : 64; /**< [ 63:  0](RO) Reset Vector Base Address. If this Exception level is the
25767                                                                      highest one implemented, this field contains the
25768                                                                      implementation defined address that execution starts from
25769                                                                      after reset when executing in 64-bit state. Bits[1:0] of this
25770                                                                      register are 00, as this address must be aligned, and the
25771                                                                      address must be within the physical address size supported by
25772                                                                      the processor.
25773 
25774                                                                  If this Exception level is not the highest one implemented,
25775                                                                      then this register is not implemented and its encoding is
25776                                                                      UNdefined. */
25777 #endif /* Word 0 - End */
25778     } s;
25779     /* struct bdk_ap_rvbar_el3_s cn; */
25780 };
25781 typedef union bdk_ap_rvbar_el3 bdk_ap_rvbar_el3_t;
25782 
25783 #define BDK_AP_RVBAR_EL3 BDK_AP_RVBAR_EL3_FUNC()
25784 static inline uint64_t BDK_AP_RVBAR_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_RVBAR_EL3_FUNC(void)25785 static inline uint64_t BDK_AP_RVBAR_EL3_FUNC(void)
25786 {
25787     return 0x3060c000100ll;
25788 }
25789 
25790 #define typedef_BDK_AP_RVBAR_EL3 bdk_ap_rvbar_el3_t
25791 #define bustype_BDK_AP_RVBAR_EL3 BDK_CSR_TYPE_SYSREG
25792 #define basename_BDK_AP_RVBAR_EL3 "AP_RVBAR_EL3"
25793 #define busnum_BDK_AP_RVBAR_EL3 0
25794 #define arguments_BDK_AP_RVBAR_EL3 -1,-1,-1,-1
25795 
25796 /**
25797  * Register (SYSREG) ap_scr_el3
25798  *
25799  * AP Secure Configuration Register
25800  * Defines the configuration of the current Security state. It
25801  *     specifies:
25802  *  The Security state of EL0 and EL1, either Secure or Non-
25803  *     secure.
25804  *  The Execution state at lower Exception levels.
25805  *  Whether IRQ, FIQ, and External Abort interrupts are taken to
25806  *     EL3.
25807  */
25808 union bdk_ap_scr_el3
25809 {
25810     uint32_t u;
25811     struct bdk_ap_scr_el3_s
25812     {
25813 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25814         uint32_t reserved_16_31        : 16;
25815         uint32_t terr                  : 1;  /**< [ 15: 15](R/W) Trap Error record accesses.
25816                                                                    0 = Do not trap accesses to error record registers from EL1 and EL2 to EL3.
25817                                                                    1 = Accesses to the ER* registers from EL1 and EL2 generate a Trap exception to EL3. */
25818         uint32_t tlor                  : 1;  /**< [ 14: 14](R/W) v8.1: Trap access to the LOR
25819                                                                  Registers from EL1 and EL2 to EL3, unless the access has been
25820                                                                  trapped to EL2:
25821                                                                  0 = EL1 and EL2 accesses to the LOR Registers are not trapped to EL3.
25822                                                                  1 = EL1 and EL2 accesses to the LOR Registers are trapped to EL3
25823                                                                      unless the access has been trapped to EL2 as a result of the
25824                                                                      AP_HCR_EL2[TLOR]. */
25825         uint32_t twe                   : 1;  /**< [ 13: 13](R/W) Trap WFE.
25826                                                                  0 = WFE instructions not trapped.
25827                                                                  1 = WFE instructions executed in AArch32 or AArch64 at EL2, EL1,
25828                                                                      or EL0 are trapped to EL3 if the instruction would otherwise
25829                                                                      cause suspension of execution, i.e. if there is not a pending
25830                                                                      WFI wakeup event and the instruciton does not cause another
25831                                                                      exception. */
25832         uint32_t twi                   : 1;  /**< [ 12: 12](R/W) Trap WFI.
25833                                                                  0 = WFI instructions not trapped.
25834                                                                  1 = WFI instructions executed in AArch32 or AArch64 at EL2, EL1,
25835                                                                      or EL0 are trapped to EL3 if the instruction would otherwise
25836                                                                      cause suspension of execution. */
25837         uint32_t st                    : 1;  /**< [ 11: 11](R/W) Enables Secure EL1 access to the AP_CNTPS_TVAL_EL1,
25838                                                                      AP_CNTPS_CTL_EL1, and AP_CNTPS_CVAL_EL1 registers.
25839 
25840                                                                  If this bit is 0 and there is a Secure EL1 access to one of
25841                                                                      the CNTPS registers:
25842                                                                   An exception is taken to EL3.
25843                                                                   The exception class for this exception, as returned in
25844                                                                      ESR_EL3[EC], is 0x18
25845                                                                  0 = These registers are only accessible in EL3.
25846                                                                  1 = These registers are accessible in EL3 and also in EL1 when
25847                                                                      AP_SCR_EL3[NS]==0. */
25848         uint32_t rsvd_10               : 1;  /**< [ 10: 10](RO) Execution state control for lower Exception levels.
25849                                                                  This bit is permitted to be cached in a TLB.
25850                                                                  0 = Lower levels are all AArch32.
25851                                                                  1 = The next lower level is AArch64.
25852 
25853                                                                  If EL2 is present:
25854                                                                   EL2 is AArch64.
25855                                                                   EL2 controls EL1 and EL0 behaviors.
25856 
25857                                                                  If EL2 is not present:
25858                                                                   EL1 is AArch64.
25859                                                                   EL0 is determined by the Execution state described in the
25860                                                                      current process state when executing at EL0. */
25861         uint32_t sif                   : 1;  /**< [  9:  9](R/W) Secure instruction fetch. When the processor is in Secure
25862                                                                      state, this bit disables instruction fetch from nonsecure
25863                                                                      memory.
25864                                                                  This bit is permitted to be cached in a TLB.
25865                                                                  0 = Secure state instruction fetches from nonsecure memory are
25866                                                                      permitted.
25867                                                                  1 = Secure state instruction fetches from nonsecure memory are
25868                                                                      not permitted. */
25869         uint32_t hce                   : 1;  /**< [  8:  8](R/W) Hypervisor Call enable. This bit enables use of the HVC
25870                                                                      instruction from nonsecure EL1 modes.
25871 
25872                                                                  If EL3 is implemented but EL2 is not implemented, this bit is
25873                                                                      RES0.
25874                                                                  0 = HVC instruction is UNdefined in nonsecure EL1 modes, and
25875                                                                      either UNdefined or a NOP in Hyp mode, depending on the
25876                                                                      implementation.
25877                                                                  1 = HVC instruction is enabled in nonsecure EL1 modes, and
25878                                                                      performs a Hypervisor Call. */
25879         uint32_t smd                   : 1;  /**< [  7:  7](R/W) SMC Disable.
25880                                                                  0 = SMC is enabled at EL1, EL2, or EL3.
25881                                                                  1 = SMC is UNdefined at all Exception levels. At EL1 in the Non-
25882                                                                      secure state, the AP_HCR_EL2[TSC] bit has priority over this
25883                                                                      control. */
25884         uint32_t reserved_6            : 1;
25885         uint32_t rsvd_4_5              : 2;  /**< [  5:  4](RO) Reserved 1. */
25886         uint32_t ea                    : 1;  /**< [  3:  3](R/W) External Abort and SError Interrupt Routing.
25887                                                                  0 = External Aborts and SError Interrupts while executing at
25888                                                                      exception levels other than EL3 are not taken in EL3.
25889                                                                  1 = External Aborts and SError Interrupts while executing at all
25890                                                                      exception levels are taken in EL3. */
25891         uint32_t fiq                   : 1;  /**< [  2:  2](R/W) Physical FIQ Routing.
25892                                                                  0 = Physical FIQ while executing at exception levels other than
25893                                                                      EL3 are not taken in EL3.
25894                                                                  1 = Physical FIQ while executing at all exception levels are taken
25895                                                                      in EL3. */
25896         uint32_t irq                   : 1;  /**< [  1:  1](R/W) Physical IRQ Routing.
25897                                                                  0 = Physical IRQ while executing at exception levels other than
25898                                                                      EL3 are not taken in EL3.
25899                                                                  1 = Physical IRQ while executing at all exception levels are taken
25900                                                                      in EL3. */
25901         uint32_t nsec                  : 1;  /**< [  0:  0](R/W) Nonsecure bit.
25902                                                                  0 = Indicates that EL0 and EL1 are in Secure state, and so memory
25903                                                                      accesses from those Exception levels can access Secure memory.
25904                                                                  1 = Indicates that EL0 and EL1 are in nonsecure state, and so
25905                                                                      memory accesses from those Exception levels cannot access
25906                                                                      Secure memory. */
25907 #else /* Word 0 - Little Endian */
25908         uint32_t nsec                  : 1;  /**< [  0:  0](R/W) Nonsecure bit.
25909                                                                  0 = Indicates that EL0 and EL1 are in Secure state, and so memory
25910                                                                      accesses from those Exception levels can access Secure memory.
25911                                                                  1 = Indicates that EL0 and EL1 are in nonsecure state, and so
25912                                                                      memory accesses from those Exception levels cannot access
25913                                                                      Secure memory. */
25914         uint32_t irq                   : 1;  /**< [  1:  1](R/W) Physical IRQ Routing.
25915                                                                  0 = Physical IRQ while executing at exception levels other than
25916                                                                      EL3 are not taken in EL3.
25917                                                                  1 = Physical IRQ while executing at all exception levels are taken
25918                                                                      in EL3. */
25919         uint32_t fiq                   : 1;  /**< [  2:  2](R/W) Physical FIQ Routing.
25920                                                                  0 = Physical FIQ while executing at exception levels other than
25921                                                                      EL3 are not taken in EL3.
25922                                                                  1 = Physical FIQ while executing at all exception levels are taken
25923                                                                      in EL3. */
25924         uint32_t ea                    : 1;  /**< [  3:  3](R/W) External Abort and SError Interrupt Routing.
25925                                                                  0 = External Aborts and SError Interrupts while executing at
25926                                                                      exception levels other than EL3 are not taken in EL3.
25927                                                                  1 = External Aborts and SError Interrupts while executing at all
25928                                                                      exception levels are taken in EL3. */
25929         uint32_t rsvd_4_5              : 2;  /**< [  5:  4](RO) Reserved 1. */
25930         uint32_t reserved_6            : 1;
25931         uint32_t smd                   : 1;  /**< [  7:  7](R/W) SMC Disable.
25932                                                                  0 = SMC is enabled at EL1, EL2, or EL3.
25933                                                                  1 = SMC is UNdefined at all Exception levels. At EL1 in the Non-
25934                                                                      secure state, the AP_HCR_EL2[TSC] bit has priority over this
25935                                                                      control. */
25936         uint32_t hce                   : 1;  /**< [  8:  8](R/W) Hypervisor Call enable. This bit enables use of the HVC
25937                                                                      instruction from nonsecure EL1 modes.
25938 
25939                                                                  If EL3 is implemented but EL2 is not implemented, this bit is
25940                                                                      RES0.
25941                                                                  0 = HVC instruction is UNdefined in nonsecure EL1 modes, and
25942                                                                      either UNdefined or a NOP in Hyp mode, depending on the
25943                                                                      implementation.
25944                                                                  1 = HVC instruction is enabled in nonsecure EL1 modes, and
25945                                                                      performs a Hypervisor Call. */
25946         uint32_t sif                   : 1;  /**< [  9:  9](R/W) Secure instruction fetch. When the processor is in Secure
25947                                                                      state, this bit disables instruction fetch from nonsecure
25948                                                                      memory.
25949                                                                  This bit is permitted to be cached in a TLB.
25950                                                                  0 = Secure state instruction fetches from nonsecure memory are
25951                                                                      permitted.
25952                                                                  1 = Secure state instruction fetches from nonsecure memory are
25953                                                                      not permitted. */
25954         uint32_t rsvd_10               : 1;  /**< [ 10: 10](RO) Execution state control for lower Exception levels.
25955                                                                  This bit is permitted to be cached in a TLB.
25956                                                                  0 = Lower levels are all AArch32.
25957                                                                  1 = The next lower level is AArch64.
25958 
25959                                                                  If EL2 is present:
25960                                                                   EL2 is AArch64.
25961                                                                   EL2 controls EL1 and EL0 behaviors.
25962 
25963                                                                  If EL2 is not present:
25964                                                                   EL1 is AArch64.
25965                                                                   EL0 is determined by the Execution state described in the
25966                                                                      current process state when executing at EL0. */
25967         uint32_t st                    : 1;  /**< [ 11: 11](R/W) Enables Secure EL1 access to the AP_CNTPS_TVAL_EL1,
25968                                                                      AP_CNTPS_CTL_EL1, and AP_CNTPS_CVAL_EL1 registers.
25969 
25970                                                                  If this bit is 0 and there is a Secure EL1 access to one of
25971                                                                      the CNTPS registers:
25972                                                                   An exception is taken to EL3.
25973                                                                   The exception class for this exception, as returned in
25974                                                                      ESR_EL3[EC], is 0x18
25975                                                                  0 = These registers are only accessible in EL3.
25976                                                                  1 = These registers are accessible in EL3 and also in EL1 when
25977                                                                      AP_SCR_EL3[NS]==0. */
25978         uint32_t twi                   : 1;  /**< [ 12: 12](R/W) Trap WFI.
25979                                                                  0 = WFI instructions not trapped.
25980                                                                  1 = WFI instructions executed in AArch32 or AArch64 at EL2, EL1,
25981                                                                      or EL0 are trapped to EL3 if the instruction would otherwise
25982                                                                      cause suspension of execution. */
25983         uint32_t twe                   : 1;  /**< [ 13: 13](R/W) Trap WFE.
25984                                                                  0 = WFE instructions not trapped.
25985                                                                  1 = WFE instructions executed in AArch32 or AArch64 at EL2, EL1,
25986                                                                      or EL0 are trapped to EL3 if the instruction would otherwise
25987                                                                      cause suspension of execution, i.e. if there is not a pending
25988                                                                      WFI wakeup event and the instruciton does not cause another
25989                                                                      exception. */
25990         uint32_t tlor                  : 1;  /**< [ 14: 14](R/W) v8.1: Trap access to the LOR
25991                                                                  Registers from EL1 and EL2 to EL3, unless the access has been
25992                                                                  trapped to EL2:
25993                                                                  0 = EL1 and EL2 accesses to the LOR Registers are not trapped to EL3.
25994                                                                  1 = EL1 and EL2 accesses to the LOR Registers are trapped to EL3
25995                                                                      unless the access has been trapped to EL2 as a result of the
25996                                                                      AP_HCR_EL2[TLOR]. */
25997         uint32_t terr                  : 1;  /**< [ 15: 15](R/W) Trap Error record accesses.
25998                                                                    0 = Do not trap accesses to error record registers from EL1 and EL2 to EL3.
25999                                                                    1 = Accesses to the ER* registers from EL1 and EL2 generate a Trap exception to EL3. */
26000         uint32_t reserved_16_31        : 16;
26001 #endif /* Word 0 - End */
26002     } s;
26003     struct bdk_ap_scr_el3_cn8
26004     {
26005 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26006         uint32_t reserved_15_31        : 17;
26007         uint32_t tlor                  : 1;  /**< [ 14: 14](R/W) v8.1: Trap access to the LOR
26008                                                                  Registers from EL1 and EL2 to EL3, unless the access has been
26009                                                                  trapped to EL2:
26010                                                                  0 = EL1 and EL2 accesses to the LOR Registers are not trapped to EL3.
26011                                                                  1 = EL1 and EL2 accesses to the LOR Registers are trapped to EL3
26012                                                                      unless the access has been trapped to EL2 as a result of the
26013                                                                      AP_HCR_EL2[TLOR]. */
26014         uint32_t twe                   : 1;  /**< [ 13: 13](R/W) Trap WFE.
26015                                                                  0 = WFE instructions not trapped.
26016                                                                  1 = WFE instructions executed in AArch32 or AArch64 at EL2, EL1,
26017                                                                      or EL0 are trapped to EL3 if the instruction would otherwise
26018                                                                      cause suspension of execution, i.e. if there is not a pending
26019                                                                      WFI wakeup event and the instruciton does not cause another
26020                                                                      exception. */
26021         uint32_t twi                   : 1;  /**< [ 12: 12](R/W) Trap WFI.
26022                                                                  0 = WFI instructions not trapped.
26023                                                                  1 = WFI instructions executed in AArch32 or AArch64 at EL2, EL1,
26024                                                                      or EL0 are trapped to EL3 if the instruction would otherwise
26025                                                                      cause suspension of execution. */
26026         uint32_t st                    : 1;  /**< [ 11: 11](R/W) Enables Secure EL1 access to the AP_CNTPS_TVAL_EL1,
26027                                                                      AP_CNTPS_CTL_EL1, and AP_CNTPS_CVAL_EL1 registers.
26028 
26029                                                                  If this bit is 0 and there is a Secure EL1 access to one of
26030                                                                      the CNTPS registers:
26031                                                                   An exception is taken to EL3.
26032                                                                   The exception class for this exception, as returned in
26033                                                                      ESR_EL3[EC], is 0x18
26034                                                                  0 = These registers are only accessible in EL3.
26035                                                                  1 = These registers are accessible in EL3 and also in EL1 when
26036                                                                      AP_SCR_EL3[NS]==0. */
26037         uint32_t rsvd_10               : 1;  /**< [ 10: 10](RO) Execution state control for lower Exception levels.
26038                                                                  This bit is permitted to be cached in a TLB.
26039                                                                  0 = Lower levels are all AArch32.
26040                                                                  1 = The next lower level is AArch64.
26041 
26042                                                                  If EL2 is present:
26043                                                                   EL2 is AArch64.
26044                                                                   EL2 controls EL1 and EL0 behaviors.
26045 
26046                                                                  If EL2 is not present:
26047                                                                   EL1 is AArch64.
26048                                                                   EL0 is determined by the Execution state described in the
26049                                                                      current process state when executing at EL0. */
26050         uint32_t sif                   : 1;  /**< [  9:  9](R/W) Secure instruction fetch. When the processor is in Secure
26051                                                                      state, this bit disables instruction fetch from nonsecure
26052                                                                      memory.
26053                                                                  This bit is permitted to be cached in a TLB.
26054                                                                  0 = Secure state instruction fetches from nonsecure memory are
26055                                                                      permitted.
26056                                                                  1 = Secure state instruction fetches from nonsecure memory are
26057                                                                      not permitted. */
26058         uint32_t hce                   : 1;  /**< [  8:  8](R/W) Hypervisor Call enable. This bit enables use of the HVC
26059                                                                      instruction from nonsecure EL1 modes.
26060 
26061                                                                  If EL3 is implemented but EL2 is not implemented, this bit is
26062                                                                      RES0.
26063                                                                  0 = HVC instruction is UNdefined in nonsecure EL1 modes, and
26064                                                                      either UNdefined or a NOP in Hyp mode, depending on the
26065                                                                      implementation.
26066                                                                  1 = HVC instruction is enabled in nonsecure EL1 modes, and
26067                                                                      performs a Hypervisor Call. */
26068         uint32_t smd                   : 1;  /**< [  7:  7](R/W) SMC Disable.
26069                                                                  0 = SMC is enabled at EL1, EL2, or EL3.
26070                                                                  1 = SMC is UNdefined at all Exception levels. At EL1 in the Non-
26071                                                                      secure state, the AP_HCR_EL2[TSC] bit has priority over this
26072                                                                      control. */
26073         uint32_t reserved_6            : 1;
26074         uint32_t rsvd_4_5              : 2;  /**< [  5:  4](RO) Reserved 1. */
26075         uint32_t ea                    : 1;  /**< [  3:  3](R/W) External Abort and SError Interrupt Routing.
26076                                                                  0 = External Aborts and SError Interrupts while executing at
26077                                                                      exception levels other than EL3 are not taken in EL3.
26078                                                                  1 = External Aborts and SError Interrupts while executing at all
26079                                                                      exception levels are taken in EL3. */
26080         uint32_t fiq                   : 1;  /**< [  2:  2](R/W) Physical FIQ Routing.
26081                                                                  0 = Physical FIQ while executing at exception levels other than
26082                                                                      EL3 are not taken in EL3.
26083                                                                  1 = Physical FIQ while executing at all exception levels are taken
26084                                                                      in EL3. */
26085         uint32_t irq                   : 1;  /**< [  1:  1](R/W) Physical IRQ Routing.
26086                                                                  0 = Physical IRQ while executing at exception levels other than
26087                                                                      EL3 are not taken in EL3.
26088                                                                  1 = Physical IRQ while executing at all exception levels are taken
26089                                                                      in EL3. */
26090         uint32_t nsec                  : 1;  /**< [  0:  0](R/W) Nonsecure bit.
26091                                                                  0 = Indicates that EL0 and EL1 are in Secure state, and so memory
26092                                                                      accesses from those Exception levels can access Secure memory.
26093                                                                  1 = Indicates that EL0 and EL1 are in nonsecure state, and so
26094                                                                      memory accesses from those Exception levels cannot access
26095                                                                      Secure memory. */
26096 #else /* Word 0 - Little Endian */
26097         uint32_t nsec                  : 1;  /**< [  0:  0](R/W) Nonsecure bit.
26098                                                                  0 = Indicates that EL0 and EL1 are in Secure state, and so memory
26099                                                                      accesses from those Exception levels can access Secure memory.
26100                                                                  1 = Indicates that EL0 and EL1 are in nonsecure state, and so
26101                                                                      memory accesses from those Exception levels cannot access
26102                                                                      Secure memory. */
26103         uint32_t irq                   : 1;  /**< [  1:  1](R/W) Physical IRQ Routing.
26104                                                                  0 = Physical IRQ while executing at exception levels other than
26105                                                                      EL3 are not taken in EL3.
26106                                                                  1 = Physical IRQ while executing at all exception levels are taken
26107                                                                      in EL3. */
26108         uint32_t fiq                   : 1;  /**< [  2:  2](R/W) Physical FIQ Routing.
26109                                                                  0 = Physical FIQ while executing at exception levels other than
26110                                                                      EL3 are not taken in EL3.
26111                                                                  1 = Physical FIQ while executing at all exception levels are taken
26112                                                                      in EL3. */
26113         uint32_t ea                    : 1;  /**< [  3:  3](R/W) External Abort and SError Interrupt Routing.
26114                                                                  0 = External Aborts and SError Interrupts while executing at
26115                                                                      exception levels other than EL3 are not taken in EL3.
26116                                                                  1 = External Aborts and SError Interrupts while executing at all
26117                                                                      exception levels are taken in EL3. */
26118         uint32_t rsvd_4_5              : 2;  /**< [  5:  4](RO) Reserved 1. */
26119         uint32_t reserved_6            : 1;
26120         uint32_t smd                   : 1;  /**< [  7:  7](R/W) SMC Disable.
26121                                                                  0 = SMC is enabled at EL1, EL2, or EL3.
26122                                                                  1 = SMC is UNdefined at all Exception levels. At EL1 in the Non-
26123                                                                      secure state, the AP_HCR_EL2[TSC] bit has priority over this
26124                                                                      control. */
26125         uint32_t hce                   : 1;  /**< [  8:  8](R/W) Hypervisor Call enable. This bit enables use of the HVC
26126                                                                      instruction from nonsecure EL1 modes.
26127 
26128                                                                  If EL3 is implemented but EL2 is not implemented, this bit is
26129                                                                      RES0.
26130                                                                  0 = HVC instruction is UNdefined in nonsecure EL1 modes, and
26131                                                                      either UNdefined or a NOP in Hyp mode, depending on the
26132                                                                      implementation.
26133                                                                  1 = HVC instruction is enabled in nonsecure EL1 modes, and
26134                                                                      performs a Hypervisor Call. */
26135         uint32_t sif                   : 1;  /**< [  9:  9](R/W) Secure instruction fetch. When the processor is in Secure
26136                                                                      state, this bit disables instruction fetch from nonsecure
26137                                                                      memory.
26138                                                                  This bit is permitted to be cached in a TLB.
26139                                                                  0 = Secure state instruction fetches from nonsecure memory are
26140                                                                      permitted.
26141                                                                  1 = Secure state instruction fetches from nonsecure memory are
26142                                                                      not permitted. */
26143         uint32_t rsvd_10               : 1;  /**< [ 10: 10](RO) Execution state control for lower Exception levels.
26144                                                                  This bit is permitted to be cached in a TLB.
26145                                                                  0 = Lower levels are all AArch32.
26146                                                                  1 = The next lower level is AArch64.
26147 
26148                                                                  If EL2 is present:
26149                                                                   EL2 is AArch64.
26150                                                                   EL2 controls EL1 and EL0 behaviors.
26151 
26152                                                                  If EL2 is not present:
26153                                                                   EL1 is AArch64.
26154                                                                   EL0 is determined by the Execution state described in the
26155                                                                      current process state when executing at EL0. */
26156         uint32_t st                    : 1;  /**< [ 11: 11](R/W) Enables Secure EL1 access to the AP_CNTPS_TVAL_EL1,
26157                                                                      AP_CNTPS_CTL_EL1, and AP_CNTPS_CVAL_EL1 registers.
26158 
26159                                                                  If this bit is 0 and there is a Secure EL1 access to one of
26160                                                                      the CNTPS registers:
26161                                                                   An exception is taken to EL3.
26162                                                                   The exception class for this exception, as returned in
26163                                                                      ESR_EL3[EC], is 0x18
26164                                                                  0 = These registers are only accessible in EL3.
26165                                                                  1 = These registers are accessible in EL3 and also in EL1 when
26166                                                                      AP_SCR_EL3[NS]==0. */
26167         uint32_t twi                   : 1;  /**< [ 12: 12](R/W) Trap WFI.
26168                                                                  0 = WFI instructions not trapped.
26169                                                                  1 = WFI instructions executed in AArch32 or AArch64 at EL2, EL1,
26170                                                                      or EL0 are trapped to EL3 if the instruction would otherwise
26171                                                                      cause suspension of execution. */
26172         uint32_t twe                   : 1;  /**< [ 13: 13](R/W) Trap WFE.
26173                                                                  0 = WFE instructions not trapped.
26174                                                                  1 = WFE instructions executed in AArch32 or AArch64 at EL2, EL1,
26175                                                                      or EL0 are trapped to EL3 if the instruction would otherwise
26176                                                                      cause suspension of execution, i.e. if there is not a pending
26177                                                                      WFI wakeup event and the instruciton does not cause another
26178                                                                      exception. */
26179         uint32_t tlor                  : 1;  /**< [ 14: 14](R/W) v8.1: Trap access to the LOR
26180                                                                  Registers from EL1 and EL2 to EL3, unless the access has been
26181                                                                  trapped to EL2:
26182                                                                  0 = EL1 and EL2 accesses to the LOR Registers are not trapped to EL3.
26183                                                                  1 = EL1 and EL2 accesses to the LOR Registers are trapped to EL3
26184                                                                      unless the access has been trapped to EL2 as a result of the
26185                                                                      AP_HCR_EL2[TLOR]. */
26186         uint32_t reserved_15_31        : 17;
26187 #endif /* Word 0 - End */
26188     } cn8;
26189     /* struct bdk_ap_scr_el3_s cn9; */
26190 };
26191 typedef union bdk_ap_scr_el3 bdk_ap_scr_el3_t;
26192 
26193 #define BDK_AP_SCR_EL3 BDK_AP_SCR_EL3_FUNC()
26194 static inline uint64_t BDK_AP_SCR_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SCR_EL3_FUNC(void)26195 static inline uint64_t BDK_AP_SCR_EL3_FUNC(void)
26196 {
26197     return 0x30601010000ll;
26198 }
26199 
26200 #define typedef_BDK_AP_SCR_EL3 bdk_ap_scr_el3_t
26201 #define bustype_BDK_AP_SCR_EL3 BDK_CSR_TYPE_SYSREG
26202 #define basename_BDK_AP_SCR_EL3 "AP_SCR_EL3"
26203 #define busnum_BDK_AP_SCR_EL3 0
26204 #define arguments_BDK_AP_SCR_EL3 -1,-1,-1,-1
26205 
26206 /**
26207  * Register (SYSREG) ap_sctlr_el1
26208  *
26209  * AP System Control EL1 Register
26210  * Provides top level control of the system, including its memory
26211  *     system, at EL1.
26212  */
26213 union bdk_ap_sctlr_el1
26214 {
26215     uint32_t u;
26216     struct bdk_ap_sctlr_el1_s
26217     {
26218 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26219         uint32_t reserved_30_31        : 2;
26220         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
26221         uint32_t reserved_27           : 1;
26222         uint32_t uci                   : 1;  /**< [ 26: 26](R/W) When set, enables EL0 access in AArch64 for DC CVAU, DC CIVAC,
26223                                                                      DC CVAC, and IC IVAU instructions. */
26224         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
26225                                                                   Explicit data accesses at EL1.
26226                                                                   Stage 1 translation table walks at EL1 and EL0.
26227 
26228                                                                  If an implementation does not provide Big-endian support, this
26229                                                                      bit is RES0. If it does not provide Little-endian support,
26230                                                                      this bit is RES1.
26231                                                                  The EE bit is permitted to be cached in a TLB.
26232                                                                  0 = Little-endian.
26233                                                                  1 = Big-endian. */
26234         uint32_t e0e                   : 1;  /**< [ 24: 24](R/W) Endianness of explicit data accesses at EL0.
26235 
26236                                                                  If an implementation only supports Little-endian accesses at
26237                                                                      EL0 then this bit is RES0.
26238                                                                  If an implementation only supports Big-endian accesses at EL0
26239                                                                      then this bit is RES1.
26240                                                                  This bit has no effect on the endianness of LDTR* and STTR*
26241                                                                      instructions executed at EL1.
26242                                                                  0 = Explicit data accesses at EL0 are little-endian.
26243                                                                  1 = Explicit data accesses at EL0 are big-endian. */
26244         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
26245                                                                  to the EL1 exception level.
26246                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL1 exception level.
26247                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL1 exception
26248                                                                  level.
26249 
26250                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
26251                                                                  exception level. */
26252         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
26253         uint32_t reserved_21           : 1;
26254         uint32_t rsvd_20               : 1;  /**< [ 20: 20](RO) Reserved 1. */
26255         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
26256                                                                      used to require all memory regions with write permission to be
26257                                                                      treated as XN.
26258                                                                  The WXN bit is permitted to be cached in a TLB.
26259                                                                  0 = Regions with write permission are not forced to XN.
26260                                                                  1 = Regions with write permission are forced to XN. */
26261         uint32_t ntwe                  : 1;  /**< [ 18: 18](R/W) Not trap WFE.
26262                                                                  Conditional WFE instructions that fail their condition do not
26263                                                                      cause an exception if this bit is 0.
26264                                                                  0 = If a WFE instruction executed at EL0 would cause execution to
26265                                                                      be suspended, such as if the event register is not set and
26266                                                                      there is not a pending WFE wakeup event, it is taken as an
26267                                                                      exception to EL1 using the0x1
26268                                                                  1 = WFE instructions are executed as normal. */
26269         uint32_t reserved_17           : 1;
26270         uint32_t ntwi                  : 1;  /**< [ 16: 16](R/W) Not trap WFI.
26271                                                                  Conditional WFI instructions that fail their condition do not
26272                                                                      cause an exception if this bit is 0.
26273                                                                  0 = If a WFI instruction executed at EL0 would cause execution to
26274                                                                      be suspended, such as if there is not a pending WFI wakeup
26275                                                                      event, it is taken as an exception to EL1 using the0x1
26276                                                                  1 = WFI instructions are executed as normal. */
26277         uint32_t uct                   : 1;  /**< [ 15: 15](R/W) When set, enables EL0 access in AArch64 to the AP_CTR_EL0
26278                                                                      register. */
26279         uint32_t dze                   : 1;  /**< [ 14: 14](R/W) Access to DC ZVA instruction at EL0.
26280                                                                  0 = Execution of the DC ZVA instruction is prohibited at EL0, and
26281                                                                      it is treated as UNdefined at EL0.
26282                                                                  1 = Execution of the DC ZVA instruction is allowed at EL0. */
26283         uint32_t reserved_13           : 1;
26284         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
26285                                                                      instruction caches at EL0 and EL1:
26286                                                                  When this bit is 0, all EL1 and EL0 Normal memory instruction
26287                                                                      accesses are Non-cacheable.
26288                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
26289                                                                      EL1&0 translation regime is Cacheable regardless of the value
26290                                                                      of this bit.
26291                                                                  0 = Instruction caches disabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
26292                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
26293                                                                      translation regime are to Normal memory, Outer Shareable,
26294                                                                      Inner Non-cacheable, Outer Non-cacheable.
26295                                                                  1 = Instruction caches enabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
26296                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
26297                                                                      translation regime are to Normal memory, Outer Shareable,
26298                                                                      Inner Write-Through, Outer Write-Through. */
26299         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
26300         uint32_t reserved_10           : 1;
26301         uint32_t uma                   : 1;  /**< [  9:  9](R/W) User Mask Access. Controls access to interrupt masks from EL0,
26302                                                                      when EL0 is using AArch64.
26303                                                                  0 = Disable access to the interrupt masks from EL0.
26304                                                                  1 = Enable access to the interrupt masks from EL0. */
26305         uint32_t rsvd_8                : 1;  /**< [  8:  8](RO) SETEND Disable.
26306                                                                  If an implementation does not support mixed endian operation,
26307                                                                      this bit is RES1.
26308                                                                  0 = The SETEND instruction is available.
26309                                                                  1 = The SETEND instruction is UNALLOCATED.
26310 
26311                                                                  SED: SETEND Disable - Only supported with 32 bit. */
26312         uint32_t rsvd_7                : 1;  /**< [  7:  7](RO) "IT Disable.
26313                                                                  0 = The IT instruction functionality is available.
26314                                                                  1 = It is implementation defined whether the IT instruction is
26315                                                                      treated as either:
26316 
26317                                                                   A 16-bit instruction, which can only be followed by another
26318                                                                      16-bit instruction.
26319 
26320                                                                   The first half of a 32-bit instruction.
26321 
26322                                                                  An implementation might vary dynamically as to whether IT is
26323                                                                      treated as a 16-bit instruction or the first half of a 32-bit
26324                                                                      instruction.
26325                                                                  All encodings of the IT instruction with hw1[3:0]!=1000 are
26326                                                                      UNdefined and treated as unallocated.
26327                                                                  All encodings of the subsequent instruction with the following
26328                                                                      values for hw1 are UNdefined (and treated as unallocated):
26329 
26330                                                                  - 0b11xxxxxxxxxxxxxx: All 32-bit instructions, and the 16-bit
26331                                                                      instructions B, UDF, SVC, LDM, and STM.
26332                                                                  - 0b1x11xxxxxxxxxxxx: All instructions in.
26333                                                                  - 0b1x100xxxxxxxxxxx: ADD Rd, PC, #imm
26334                                                                  - 0b01001xxxxxxxxxxx: LDR Rd, [PC, #imm]
26335                                                                  - 0b0100x1xxx1111xxx: ADD Rdn, PC; CMP Rn, PC; MOV Rd, PC; BX
26336                                                                      PC; BLX PC.
26337                                                                  - 0b010001xx1xxxx111: ADD PC, Rm; CMP PC, Rm; MOV PC, Rm. This
26338                                                                      pattern also covers UNPREDICTABLE cases with BLX Rn.
26339 
26340                                                                  Contrary to the standard treatment of conditional UNdefined
26341                                                                      instructions in the ARM architecture, in this case these
26342                                                                      instructions are always treated as UNdefined, regardless of
26343                                                                      whether the instruction would pass or fail its condition codes
26344                                                                      as a result of being in an IT block.
26345 
26346                                                                  ITD: IT Disable - Only supported with 32 bit." */
26347         uint32_t reserved_5_6          : 2;
26348         uint32_t sa0                   : 1;  /**< [  4:  4](R/W) Stack Alignment Check Enable for EL0. When set, use of the
26349                                                                      stack pointer as the base address in a load/store instruction
26350                                                                      at EL0 must be aligned to a 16-byte boundary, or a Stack
26351                                                                      Alignment Fault exception will be raised. */
26352         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
26353                                                                      pointer as the base address in a load/store instruction at
26354                                                                      this register's Exception level must be aligned to a 16-byte
26355                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
26356         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
26357                                                                      caches at EL0 and EL1:
26358                                                                  When this bit is 0, all EL0 and EL1 Normal memory data
26359                                                                      accesses and all accesses to the EL1&0 stage 1 translation
26360                                                                      tables are Non-cacheable.
26361                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
26362                                                                      EL1&0 translation regime is Cacheable regardless of the value
26363                                                                      of the AP_SCTLR_EL1[C] bit.
26364                                                                  0 = Data and unified caches disabled.
26365                                                                  1 = Data and unified caches enabled. */
26366         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
26367                                                                      fault checking:
26368                                                                  Load/store exclusive and load-acquire/store-release
26369                                                                      instructions have an alignment check regardless of the value
26370                                                                      of the A bit.
26371                                                                  0 = Alignment fault checking disabled.
26372                                                                  Instructions that load or store one or more registers, other
26373                                                                      than load/store exclusive and load-acquire/store-release, do
26374                                                                      not check that the address being accessed is aligned to the
26375                                                                      size of the data element(s) being accessed.
26376                                                                  1 = Alignment fault checking enabled.
26377                                                                  All instructions that load or store one or more registers have
26378                                                                      an alignment check that the address being accessed is aligned
26379                                                                      to the size of the data element(s) being accessed. If this
26380                                                                      check fails it causes an Alignment fault, which is taken as a
26381                                                                      Data Abort exception. */
26382         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL1 and EL0 stage 1 address translation.
26383 
26384                                                                  If AP_HCR_EL2[DC] is set to 1, then in nonsecure state the
26385                                                                      AP_SCTLR_EL1[M] bit behaves as 0 for all purposes other than
26386                                                                      reading the value of the bit.
26387                                                                  0 = EL1 and EL0 stage 1 address translation disabled.
26388                                                                  1 = EL1 and EL0 stage 1 address translation enabled. */
26389 #else /* Word 0 - Little Endian */
26390         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL1 and EL0 stage 1 address translation.
26391 
26392                                                                  If AP_HCR_EL2[DC] is set to 1, then in nonsecure state the
26393                                                                      AP_SCTLR_EL1[M] bit behaves as 0 for all purposes other than
26394                                                                      reading the value of the bit.
26395                                                                  0 = EL1 and EL0 stage 1 address translation disabled.
26396                                                                  1 = EL1 and EL0 stage 1 address translation enabled. */
26397         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
26398                                                                      fault checking:
26399                                                                  Load/store exclusive and load-acquire/store-release
26400                                                                      instructions have an alignment check regardless of the value
26401                                                                      of the A bit.
26402                                                                  0 = Alignment fault checking disabled.
26403                                                                  Instructions that load or store one or more registers, other
26404                                                                      than load/store exclusive and load-acquire/store-release, do
26405                                                                      not check that the address being accessed is aligned to the
26406                                                                      size of the data element(s) being accessed.
26407                                                                  1 = Alignment fault checking enabled.
26408                                                                  All instructions that load or store one or more registers have
26409                                                                      an alignment check that the address being accessed is aligned
26410                                                                      to the size of the data element(s) being accessed. If this
26411                                                                      check fails it causes an Alignment fault, which is taken as a
26412                                                                      Data Abort exception. */
26413         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
26414                                                                      caches at EL0 and EL1:
26415                                                                  When this bit is 0, all EL0 and EL1 Normal memory data
26416                                                                      accesses and all accesses to the EL1&0 stage 1 translation
26417                                                                      tables are Non-cacheable.
26418                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
26419                                                                      EL1&0 translation regime is Cacheable regardless of the value
26420                                                                      of the AP_SCTLR_EL1[C] bit.
26421                                                                  0 = Data and unified caches disabled.
26422                                                                  1 = Data and unified caches enabled. */
26423         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
26424                                                                      pointer as the base address in a load/store instruction at
26425                                                                      this register's Exception level must be aligned to a 16-byte
26426                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
26427         uint32_t sa0                   : 1;  /**< [  4:  4](R/W) Stack Alignment Check Enable for EL0. When set, use of the
26428                                                                      stack pointer as the base address in a load/store instruction
26429                                                                      at EL0 must be aligned to a 16-byte boundary, or a Stack
26430                                                                      Alignment Fault exception will be raised. */
26431         uint32_t reserved_5_6          : 2;
26432         uint32_t rsvd_7                : 1;  /**< [  7:  7](RO) "IT Disable.
26433                                                                  0 = The IT instruction functionality is available.
26434                                                                  1 = It is implementation defined whether the IT instruction is
26435                                                                      treated as either:
26436 
26437                                                                   A 16-bit instruction, which can only be followed by another
26438                                                                      16-bit instruction.
26439 
26440                                                                   The first half of a 32-bit instruction.
26441 
26442                                                                  An implementation might vary dynamically as to whether IT is
26443                                                                      treated as a 16-bit instruction or the first half of a 32-bit
26444                                                                      instruction.
26445                                                                  All encodings of the IT instruction with hw1[3:0]!=1000 are
26446                                                                      UNdefined and treated as unallocated.
26447                                                                  All encodings of the subsequent instruction with the following
26448                                                                      values for hw1 are UNdefined (and treated as unallocated):
26449 
26450                                                                  - 0b11xxxxxxxxxxxxxx: All 32-bit instructions, and the 16-bit
26451                                                                      instructions B, UDF, SVC, LDM, and STM.
26452                                                                  - 0b1x11xxxxxxxxxxxx: All instructions in.
26453                                                                  - 0b1x100xxxxxxxxxxx: ADD Rd, PC, #imm
26454                                                                  - 0b01001xxxxxxxxxxx: LDR Rd, [PC, #imm]
26455                                                                  - 0b0100x1xxx1111xxx: ADD Rdn, PC; CMP Rn, PC; MOV Rd, PC; BX
26456                                                                      PC; BLX PC.
26457                                                                  - 0b010001xx1xxxx111: ADD PC, Rm; CMP PC, Rm; MOV PC, Rm. This
26458                                                                      pattern also covers UNPREDICTABLE cases with BLX Rn.
26459 
26460                                                                  Contrary to the standard treatment of conditional UNdefined
26461                                                                      instructions in the ARM architecture, in this case these
26462                                                                      instructions are always treated as UNdefined, regardless of
26463                                                                      whether the instruction would pass or fail its condition codes
26464                                                                      as a result of being in an IT block.
26465 
26466                                                                  ITD: IT Disable - Only supported with 32 bit." */
26467         uint32_t rsvd_8                : 1;  /**< [  8:  8](RO) SETEND Disable.
26468                                                                  If an implementation does not support mixed endian operation,
26469                                                                      this bit is RES1.
26470                                                                  0 = The SETEND instruction is available.
26471                                                                  1 = The SETEND instruction is UNALLOCATED.
26472 
26473                                                                  SED: SETEND Disable - Only supported with 32 bit. */
26474         uint32_t uma                   : 1;  /**< [  9:  9](R/W) User Mask Access. Controls access to interrupt masks from EL0,
26475                                                                      when EL0 is using AArch64.
26476                                                                  0 = Disable access to the interrupt masks from EL0.
26477                                                                  1 = Enable access to the interrupt masks from EL0. */
26478         uint32_t reserved_10           : 1;
26479         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
26480         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
26481                                                                      instruction caches at EL0 and EL1:
26482                                                                  When this bit is 0, all EL1 and EL0 Normal memory instruction
26483                                                                      accesses are Non-cacheable.
26484                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
26485                                                                      EL1&0 translation regime is Cacheable regardless of the value
26486                                                                      of this bit.
26487                                                                  0 = Instruction caches disabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
26488                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
26489                                                                      translation regime are to Normal memory, Outer Shareable,
26490                                                                      Inner Non-cacheable, Outer Non-cacheable.
26491                                                                  1 = Instruction caches enabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
26492                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
26493                                                                      translation regime are to Normal memory, Outer Shareable,
26494                                                                      Inner Write-Through, Outer Write-Through. */
26495         uint32_t reserved_13           : 1;
26496         uint32_t dze                   : 1;  /**< [ 14: 14](R/W) Access to DC ZVA instruction at EL0.
26497                                                                  0 = Execution of the DC ZVA instruction is prohibited at EL0, and
26498                                                                      it is treated as UNdefined at EL0.
26499                                                                  1 = Execution of the DC ZVA instruction is allowed at EL0. */
26500         uint32_t uct                   : 1;  /**< [ 15: 15](R/W) When set, enables EL0 access in AArch64 to the AP_CTR_EL0
26501                                                                      register. */
26502         uint32_t ntwi                  : 1;  /**< [ 16: 16](R/W) Not trap WFI.
26503                                                                  Conditional WFI instructions that fail their condition do not
26504                                                                      cause an exception if this bit is 0.
26505                                                                  0 = If a WFI instruction executed at EL0 would cause execution to
26506                                                                      be suspended, such as if there is not a pending WFI wakeup
26507                                                                      event, it is taken as an exception to EL1 using the0x1
26508                                                                  1 = WFI instructions are executed as normal. */
26509         uint32_t reserved_17           : 1;
26510         uint32_t ntwe                  : 1;  /**< [ 18: 18](R/W) Not trap WFE.
26511                                                                  Conditional WFE instructions that fail their condition do not
26512                                                                      cause an exception if this bit is 0.
26513                                                                  0 = If a WFE instruction executed at EL0 would cause execution to
26514                                                                      be suspended, such as if the event register is not set and
26515                                                                      there is not a pending WFE wakeup event, it is taken as an
26516                                                                      exception to EL1 using the0x1
26517                                                                  1 = WFE instructions are executed as normal. */
26518         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
26519                                                                      used to require all memory regions with write permission to be
26520                                                                      treated as XN.
26521                                                                  The WXN bit is permitted to be cached in a TLB.
26522                                                                  0 = Regions with write permission are not forced to XN.
26523                                                                  1 = Regions with write permission are forced to XN. */
26524         uint32_t rsvd_20               : 1;  /**< [ 20: 20](RO) Reserved 1. */
26525         uint32_t reserved_21           : 1;
26526         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
26527         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
26528                                                                  to the EL1 exception level.
26529                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL1 exception level.
26530                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL1 exception
26531                                                                  level.
26532 
26533                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
26534                                                                  exception level. */
26535         uint32_t e0e                   : 1;  /**< [ 24: 24](R/W) Endianness of explicit data accesses at EL0.
26536 
26537                                                                  If an implementation only supports Little-endian accesses at
26538                                                                      EL0 then this bit is RES0.
26539                                                                  If an implementation only supports Big-endian accesses at EL0
26540                                                                      then this bit is RES1.
26541                                                                  This bit has no effect on the endianness of LDTR* and STTR*
26542                                                                      instructions executed at EL1.
26543                                                                  0 = Explicit data accesses at EL0 are little-endian.
26544                                                                  1 = Explicit data accesses at EL0 are big-endian. */
26545         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
26546                                                                   Explicit data accesses at EL1.
26547                                                                   Stage 1 translation table walks at EL1 and EL0.
26548 
26549                                                                  If an implementation does not provide Big-endian support, this
26550                                                                      bit is RES0. If it does not provide Little-endian support,
26551                                                                      this bit is RES1.
26552                                                                  The EE bit is permitted to be cached in a TLB.
26553                                                                  0 = Little-endian.
26554                                                                  1 = Big-endian. */
26555         uint32_t uci                   : 1;  /**< [ 26: 26](R/W) When set, enables EL0 access in AArch64 for DC CVAU, DC CIVAC,
26556                                                                      DC CVAC, and IC IVAU instructions. */
26557         uint32_t reserved_27           : 1;
26558         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
26559         uint32_t reserved_30_31        : 2;
26560 #endif /* Word 0 - End */
26561     } s;
26562     struct bdk_ap_sctlr_el1_cn
26563     {
26564 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26565         uint32_t reserved_30_31        : 2;
26566         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
26567         uint32_t reserved_27           : 1;
26568         uint32_t uci                   : 1;  /**< [ 26: 26](R/W) When set, enables EL0 access in AArch64 for DC CVAU, DC CIVAC,
26569                                                                      DC CVAC, and IC IVAU instructions. */
26570         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
26571                                                                   Explicit data accesses at EL1.
26572                                                                   Stage 1 translation table walks at EL1 and EL0.
26573 
26574                                                                  If an implementation does not provide Big-endian support, this
26575                                                                      bit is RES0. If it does not provide Little-endian support,
26576                                                                      this bit is RES1.
26577                                                                  The EE bit is permitted to be cached in a TLB.
26578                                                                  0 = Little-endian.
26579                                                                  1 = Big-endian. */
26580         uint32_t e0e                   : 1;  /**< [ 24: 24](R/W) Endianness of explicit data accesses at EL0.
26581 
26582                                                                  If an implementation only supports Little-endian accesses at
26583                                                                      EL0 then this bit is RES0.
26584                                                                  If an implementation only supports Big-endian accesses at EL0
26585                                                                      then this bit is RES1.
26586                                                                  This bit has no effect on the endianness of LDTR* and STTR*
26587                                                                      instructions executed at EL1.
26588                                                                  0 = Explicit data accesses at EL0 are little-endian.
26589                                                                  1 = Explicit data accesses at EL0 are big-endian. */
26590         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
26591                                                                  to the EL1 exception level.
26592                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL1 exception level.
26593                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL1 exception
26594                                                                  level.
26595 
26596                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
26597                                                                  exception level. */
26598         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
26599         uint32_t reserved_21           : 1;
26600         uint32_t rsvd_20               : 1;  /**< [ 20: 20](RO) Reserved 1. */
26601         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
26602                                                                      used to require all memory regions with write permission to be
26603                                                                      treated as XN.
26604                                                                  The WXN bit is permitted to be cached in a TLB.
26605                                                                  0 = Regions with write permission are not forced to XN.
26606                                                                  1 = Regions with write permission are forced to XN. */
26607         uint32_t ntwe                  : 1;  /**< [ 18: 18](R/W) Not trap WFE.
26608                                                                  Conditional WFE instructions that fail their condition do not
26609                                                                      cause an exception if this bit is 0.
26610                                                                  0 = If a WFE instruction executed at EL0 would cause execution to
26611                                                                      be suspended, such as if the event register is not set and
26612                                                                      there is not a pending WFE wakeup event, it is taken as an
26613                                                                      exception to EL1 using the0x1
26614                                                                  1 = WFE instructions are executed as normal. */
26615         uint32_t reserved_17           : 1;
26616         uint32_t ntwi                  : 1;  /**< [ 16: 16](R/W) Not trap WFI.
26617                                                                  Conditional WFI instructions that fail their condition do not
26618                                                                      cause an exception if this bit is 0.
26619                                                                  0 = If a WFI instruction executed at EL0 would cause execution to
26620                                                                      be suspended, such as if there is not a pending WFI wakeup
26621                                                                      event, it is taken as an exception to EL1 using the0x1
26622                                                                  1 = WFI instructions are executed as normal. */
26623         uint32_t uct                   : 1;  /**< [ 15: 15](R/W) When set, enables EL0 access in AArch64 to the AP_CTR_EL0
26624                                                                      register. */
26625         uint32_t dze                   : 1;  /**< [ 14: 14](R/W) Access to DC ZVA instruction at EL0.
26626                                                                  0 = Execution of the DC ZVA instruction is prohibited at EL0, and
26627                                                                      it is treated as UNdefined at EL0.
26628                                                                  1 = Execution of the DC ZVA instruction is allowed at EL0. */
26629         uint32_t reserved_13           : 1;
26630         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
26631                                                                      instruction caches at EL0 and EL1:
26632                                                                  When this bit is 0, all EL1 and EL0 Normal memory instruction
26633                                                                      accesses are Non-cacheable.
26634                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
26635                                                                      EL1&0 translation regime is Cacheable regardless of the value
26636                                                                      of this bit.
26637                                                                  0 = Instruction caches disabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
26638                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
26639                                                                      translation regime are to Normal memory, Outer Shareable,
26640                                                                      Inner Non-cacheable, Outer Non-cacheable.
26641                                                                  1 = Instruction caches enabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
26642                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
26643                                                                      translation regime are to Normal memory, Outer Shareable,
26644                                                                      Inner Write-Through, Outer Write-Through. */
26645         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
26646         uint32_t reserved_10           : 1;
26647         uint32_t uma                   : 1;  /**< [  9:  9](R/W) User Mask Access. Controls access to interrupt masks from EL0,
26648                                                                      when EL0 is using AArch64.
26649                                                                  0 = Disable access to the interrupt masks from EL0.
26650                                                                  1 = Enable access to the interrupt masks from EL0. */
26651         uint32_t rsvd_8                : 1;  /**< [  8:  8](RO) SETEND Disable.
26652                                                                  If an implementation does not support mixed endian operation,
26653                                                                      this bit is RES1.
26654                                                                  0 = The SETEND instruction is available.
26655                                                                  1 = The SETEND instruction is UNALLOCATED.
26656 
26657                                                                  SED: SETEND Disable - Only supported with 32 bit. */
26658         uint32_t rsvd_7                : 1;  /**< [  7:  7](RO) "IT Disable.
26659                                                                  0 = The IT instruction functionality is available.
26660                                                                  1 = It is implementation defined whether the IT instruction is
26661                                                                      treated as either:
26662 
26663                                                                   A 16-bit instruction, which can only be followed by another
26664                                                                      16-bit instruction.
26665 
26666                                                                   The first half of a 32-bit instruction.
26667 
26668                                                                  An implementation might vary dynamically as to whether IT is
26669                                                                      treated as a 16-bit instruction or the first half of a 32-bit
26670                                                                      instruction.
26671                                                                  All encodings of the IT instruction with hw1[3:0]!=1000 are
26672                                                                      UNdefined and treated as unallocated.
26673                                                                  All encodings of the subsequent instruction with the following
26674                                                                      values for hw1 are UNdefined (and treated as unallocated):
26675 
26676                                                                  - 0b11xxxxxxxxxxxxxx: All 32-bit instructions, and the 16-bit
26677                                                                      instructions B, UDF, SVC, LDM, and STM.
26678                                                                  - 0b1x11xxxxxxxxxxxx: All instructions in.
26679                                                                  - 0b1x100xxxxxxxxxxx: ADD Rd, PC, #imm
26680                                                                  - 0b01001xxxxxxxxxxx: LDR Rd, [PC, #imm]
26681                                                                  - 0b0100x1xxx1111xxx: ADD Rdn, PC; CMP Rn, PC; MOV Rd, PC; BX
26682                                                                      PC; BLX PC.
26683                                                                  - 0b010001xx1xxxx111: ADD PC, Rm; CMP PC, Rm; MOV PC, Rm. This
26684                                                                      pattern also covers UNPREDICTABLE cases with BLX Rn.
26685 
26686                                                                  Contrary to the standard treatment of conditional UNdefined
26687                                                                      instructions in the ARM architecture, in this case these
26688                                                                      instructions are always treated as UNdefined, regardless of
26689                                                                      whether the instruction would pass or fail its condition codes
26690                                                                      as a result of being in an IT block.
26691 
26692                                                                  ITD: IT Disable - Only supported with 32 bit." */
26693         uint32_t reserved_6            : 1;
26694         uint32_t reserved_5            : 1;
26695         uint32_t sa0                   : 1;  /**< [  4:  4](R/W) Stack Alignment Check Enable for EL0. When set, use of the
26696                                                                      stack pointer as the base address in a load/store instruction
26697                                                                      at EL0 must be aligned to a 16-byte boundary, or a Stack
26698                                                                      Alignment Fault exception will be raised. */
26699         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
26700                                                                      pointer as the base address in a load/store instruction at
26701                                                                      this register's Exception level must be aligned to a 16-byte
26702                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
26703         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
26704                                                                      caches at EL0 and EL1:
26705                                                                  When this bit is 0, all EL0 and EL1 Normal memory data
26706                                                                      accesses and all accesses to the EL1&0 stage 1 translation
26707                                                                      tables are Non-cacheable.
26708                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
26709                                                                      EL1&0 translation regime is Cacheable regardless of the value
26710                                                                      of the AP_SCTLR_EL1[C] bit.
26711                                                                  0 = Data and unified caches disabled.
26712                                                                  1 = Data and unified caches enabled. */
26713         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
26714                                                                      fault checking:
26715                                                                  Load/store exclusive and load-acquire/store-release
26716                                                                      instructions have an alignment check regardless of the value
26717                                                                      of the A bit.
26718                                                                  0 = Alignment fault checking disabled.
26719                                                                  Instructions that load or store one or more registers, other
26720                                                                      than load/store exclusive and load-acquire/store-release, do
26721                                                                      not check that the address being accessed is aligned to the
26722                                                                      size of the data element(s) being accessed.
26723                                                                  1 = Alignment fault checking enabled.
26724                                                                  All instructions that load or store one or more registers have
26725                                                                      an alignment check that the address being accessed is aligned
26726                                                                      to the size of the data element(s) being accessed. If this
26727                                                                      check fails it causes an Alignment fault, which is taken as a
26728                                                                      Data Abort exception. */
26729         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL1 and EL0 stage 1 address translation.
26730 
26731                                                                  If AP_HCR_EL2[DC] is set to 1, then in nonsecure state the
26732                                                                      AP_SCTLR_EL1[M] bit behaves as 0 for all purposes other than
26733                                                                      reading the value of the bit.
26734                                                                  0 = EL1 and EL0 stage 1 address translation disabled.
26735                                                                  1 = EL1 and EL0 stage 1 address translation enabled. */
26736 #else /* Word 0 - Little Endian */
26737         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL1 and EL0 stage 1 address translation.
26738 
26739                                                                  If AP_HCR_EL2[DC] is set to 1, then in nonsecure state the
26740                                                                      AP_SCTLR_EL1[M] bit behaves as 0 for all purposes other than
26741                                                                      reading the value of the bit.
26742                                                                  0 = EL1 and EL0 stage 1 address translation disabled.
26743                                                                  1 = EL1 and EL0 stage 1 address translation enabled. */
26744         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
26745                                                                      fault checking:
26746                                                                  Load/store exclusive and load-acquire/store-release
26747                                                                      instructions have an alignment check regardless of the value
26748                                                                      of the A bit.
26749                                                                  0 = Alignment fault checking disabled.
26750                                                                  Instructions that load or store one or more registers, other
26751                                                                      than load/store exclusive and load-acquire/store-release, do
26752                                                                      not check that the address being accessed is aligned to the
26753                                                                      size of the data element(s) being accessed.
26754                                                                  1 = Alignment fault checking enabled.
26755                                                                  All instructions that load or store one or more registers have
26756                                                                      an alignment check that the address being accessed is aligned
26757                                                                      to the size of the data element(s) being accessed. If this
26758                                                                      check fails it causes an Alignment fault, which is taken as a
26759                                                                      Data Abort exception. */
26760         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
26761                                                                      caches at EL0 and EL1:
26762                                                                  When this bit is 0, all EL0 and EL1 Normal memory data
26763                                                                      accesses and all accesses to the EL1&0 stage 1 translation
26764                                                                      tables are Non-cacheable.
26765                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
26766                                                                      EL1&0 translation regime is Cacheable regardless of the value
26767                                                                      of the AP_SCTLR_EL1[C] bit.
26768                                                                  0 = Data and unified caches disabled.
26769                                                                  1 = Data and unified caches enabled. */
26770         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
26771                                                                      pointer as the base address in a load/store instruction at
26772                                                                      this register's Exception level must be aligned to a 16-byte
26773                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
26774         uint32_t sa0                   : 1;  /**< [  4:  4](R/W) Stack Alignment Check Enable for EL0. When set, use of the
26775                                                                      stack pointer as the base address in a load/store instruction
26776                                                                      at EL0 must be aligned to a 16-byte boundary, or a Stack
26777                                                                      Alignment Fault exception will be raised. */
26778         uint32_t reserved_5            : 1;
26779         uint32_t reserved_6            : 1;
26780         uint32_t rsvd_7                : 1;  /**< [  7:  7](RO) "IT Disable.
26781                                                                  0 = The IT instruction functionality is available.
26782                                                                  1 = It is implementation defined whether the IT instruction is
26783                                                                      treated as either:
26784 
26785                                                                   A 16-bit instruction, which can only be followed by another
26786                                                                      16-bit instruction.
26787 
26788                                                                   The first half of a 32-bit instruction.
26789 
26790                                                                  An implementation might vary dynamically as to whether IT is
26791                                                                      treated as a 16-bit instruction or the first half of a 32-bit
26792                                                                      instruction.
26793                                                                  All encodings of the IT instruction with hw1[3:0]!=1000 are
26794                                                                      UNdefined and treated as unallocated.
26795                                                                  All encodings of the subsequent instruction with the following
26796                                                                      values for hw1 are UNdefined (and treated as unallocated):
26797 
26798                                                                  - 0b11xxxxxxxxxxxxxx: All 32-bit instructions, and the 16-bit
26799                                                                      instructions B, UDF, SVC, LDM, and STM.
26800                                                                  - 0b1x11xxxxxxxxxxxx: All instructions in.
26801                                                                  - 0b1x100xxxxxxxxxxx: ADD Rd, PC, #imm
26802                                                                  - 0b01001xxxxxxxxxxx: LDR Rd, [PC, #imm]
26803                                                                  - 0b0100x1xxx1111xxx: ADD Rdn, PC; CMP Rn, PC; MOV Rd, PC; BX
26804                                                                      PC; BLX PC.
26805                                                                  - 0b010001xx1xxxx111: ADD PC, Rm; CMP PC, Rm; MOV PC, Rm. This
26806                                                                      pattern also covers UNPREDICTABLE cases with BLX Rn.
26807 
26808                                                                  Contrary to the standard treatment of conditional UNdefined
26809                                                                      instructions in the ARM architecture, in this case these
26810                                                                      instructions are always treated as UNdefined, regardless of
26811                                                                      whether the instruction would pass or fail its condition codes
26812                                                                      as a result of being in an IT block.
26813 
26814                                                                  ITD: IT Disable - Only supported with 32 bit." */
26815         uint32_t rsvd_8                : 1;  /**< [  8:  8](RO) SETEND Disable.
26816                                                                  If an implementation does not support mixed endian operation,
26817                                                                      this bit is RES1.
26818                                                                  0 = The SETEND instruction is available.
26819                                                                  1 = The SETEND instruction is UNALLOCATED.
26820 
26821                                                                  SED: SETEND Disable - Only supported with 32 bit. */
26822         uint32_t uma                   : 1;  /**< [  9:  9](R/W) User Mask Access. Controls access to interrupt masks from EL0,
26823                                                                      when EL0 is using AArch64.
26824                                                                  0 = Disable access to the interrupt masks from EL0.
26825                                                                  1 = Enable access to the interrupt masks from EL0. */
26826         uint32_t reserved_10           : 1;
26827         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
26828         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
26829                                                                      instruction caches at EL0 and EL1:
26830                                                                  When this bit is 0, all EL1 and EL0 Normal memory instruction
26831                                                                      accesses are Non-cacheable.
26832                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
26833                                                                      EL1&0 translation regime is Cacheable regardless of the value
26834                                                                      of this bit.
26835                                                                  0 = Instruction caches disabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
26836                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
26837                                                                      translation regime are to Normal memory, Outer Shareable,
26838                                                                      Inner Non-cacheable, Outer Non-cacheable.
26839                                                                  1 = Instruction caches enabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
26840                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
26841                                                                      translation regime are to Normal memory, Outer Shareable,
26842                                                                      Inner Write-Through, Outer Write-Through. */
26843         uint32_t reserved_13           : 1;
26844         uint32_t dze                   : 1;  /**< [ 14: 14](R/W) Access to DC ZVA instruction at EL0.
26845                                                                  0 = Execution of the DC ZVA instruction is prohibited at EL0, and
26846                                                                      it is treated as UNdefined at EL0.
26847                                                                  1 = Execution of the DC ZVA instruction is allowed at EL0. */
26848         uint32_t uct                   : 1;  /**< [ 15: 15](R/W) When set, enables EL0 access in AArch64 to the AP_CTR_EL0
26849                                                                      register. */
26850         uint32_t ntwi                  : 1;  /**< [ 16: 16](R/W) Not trap WFI.
26851                                                                  Conditional WFI instructions that fail their condition do not
26852                                                                      cause an exception if this bit is 0.
26853                                                                  0 = If a WFI instruction executed at EL0 would cause execution to
26854                                                                      be suspended, such as if there is not a pending WFI wakeup
26855                                                                      event, it is taken as an exception to EL1 using the0x1
26856                                                                  1 = WFI instructions are executed as normal. */
26857         uint32_t reserved_17           : 1;
26858         uint32_t ntwe                  : 1;  /**< [ 18: 18](R/W) Not trap WFE.
26859                                                                  Conditional WFE instructions that fail their condition do not
26860                                                                      cause an exception if this bit is 0.
26861                                                                  0 = If a WFE instruction executed at EL0 would cause execution to
26862                                                                      be suspended, such as if the event register is not set and
26863                                                                      there is not a pending WFE wakeup event, it is taken as an
26864                                                                      exception to EL1 using the0x1
26865                                                                  1 = WFE instructions are executed as normal. */
26866         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
26867                                                                      used to require all memory regions with write permission to be
26868                                                                      treated as XN.
26869                                                                  The WXN bit is permitted to be cached in a TLB.
26870                                                                  0 = Regions with write permission are not forced to XN.
26871                                                                  1 = Regions with write permission are forced to XN. */
26872         uint32_t rsvd_20               : 1;  /**< [ 20: 20](RO) Reserved 1. */
26873         uint32_t reserved_21           : 1;
26874         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
26875         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
26876                                                                  to the EL1 exception level.
26877                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL1 exception level.
26878                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL1 exception
26879                                                                  level.
26880 
26881                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
26882                                                                  exception level. */
26883         uint32_t e0e                   : 1;  /**< [ 24: 24](R/W) Endianness of explicit data accesses at EL0.
26884 
26885                                                                  If an implementation only supports Little-endian accesses at
26886                                                                      EL0 then this bit is RES0.
26887                                                                  If an implementation only supports Big-endian accesses at EL0
26888                                                                      then this bit is RES1.
26889                                                                  This bit has no effect on the endianness of LDTR* and STTR*
26890                                                                      instructions executed at EL1.
26891                                                                  0 = Explicit data accesses at EL0 are little-endian.
26892                                                                  1 = Explicit data accesses at EL0 are big-endian. */
26893         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
26894                                                                   Explicit data accesses at EL1.
26895                                                                   Stage 1 translation table walks at EL1 and EL0.
26896 
26897                                                                  If an implementation does not provide Big-endian support, this
26898                                                                      bit is RES0. If it does not provide Little-endian support,
26899                                                                      this bit is RES1.
26900                                                                  The EE bit is permitted to be cached in a TLB.
26901                                                                  0 = Little-endian.
26902                                                                  1 = Big-endian. */
26903         uint32_t uci                   : 1;  /**< [ 26: 26](R/W) When set, enables EL0 access in AArch64 for DC CVAU, DC CIVAC,
26904                                                                      DC CVAC, and IC IVAU instructions. */
26905         uint32_t reserved_27           : 1;
26906         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
26907         uint32_t reserved_30_31        : 2;
26908 #endif /* Word 0 - End */
26909     } cn;
26910 };
26911 typedef union bdk_ap_sctlr_el1 bdk_ap_sctlr_el1_t;
26912 
26913 #define BDK_AP_SCTLR_EL1 BDK_AP_SCTLR_EL1_FUNC()
26914 static inline uint64_t BDK_AP_SCTLR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SCTLR_EL1_FUNC(void)26915 static inline uint64_t BDK_AP_SCTLR_EL1_FUNC(void)
26916 {
26917     return 0x30001000000ll;
26918 }
26919 
26920 #define typedef_BDK_AP_SCTLR_EL1 bdk_ap_sctlr_el1_t
26921 #define bustype_BDK_AP_SCTLR_EL1 BDK_CSR_TYPE_SYSREG
26922 #define basename_BDK_AP_SCTLR_EL1 "AP_SCTLR_EL1"
26923 #define busnum_BDK_AP_SCTLR_EL1 0
26924 #define arguments_BDK_AP_SCTLR_EL1 -1,-1,-1,-1
26925 
26926 /**
26927  * Register (SYSREG) ap_sctlr_el12
26928  *
26929  * AP System Control EL1/2 Register
26930  * Alias to allow access to AP_SCTLR_EL1 from EL2 when AP_HCR_EL2[E2H] is set.
26931  */
26932 union bdk_ap_sctlr_el12
26933 {
26934     uint32_t u;
26935     struct bdk_ap_sctlr_el12_s
26936     {
26937 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26938         uint32_t reserved_0_31         : 32;
26939 #else /* Word 0 - Little Endian */
26940         uint32_t reserved_0_31         : 32;
26941 #endif /* Word 0 - End */
26942     } s;
26943     /* struct bdk_ap_sctlr_el12_s cn; */
26944 };
26945 typedef union bdk_ap_sctlr_el12 bdk_ap_sctlr_el12_t;
26946 
26947 #define BDK_AP_SCTLR_EL12 BDK_AP_SCTLR_EL12_FUNC()
26948 static inline uint64_t BDK_AP_SCTLR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SCTLR_EL12_FUNC(void)26949 static inline uint64_t BDK_AP_SCTLR_EL12_FUNC(void)
26950 {
26951     return 0x30501000000ll;
26952 }
26953 
26954 #define typedef_BDK_AP_SCTLR_EL12 bdk_ap_sctlr_el12_t
26955 #define bustype_BDK_AP_SCTLR_EL12 BDK_CSR_TYPE_SYSREG
26956 #define basename_BDK_AP_SCTLR_EL12 "AP_SCTLR_EL12"
26957 #define busnum_BDK_AP_SCTLR_EL12 0
26958 #define arguments_BDK_AP_SCTLR_EL12 -1,-1,-1,-1
26959 
26960 /**
26961  * Register (SYSREG) ap_sctlr_el2
26962  *
26963  * AP System Control Non-E2H Register
26964  * Provides top level control of the system, including its memory
26965  *     system, at EL2.
26966  *
26967  * This register is at the same select as AP_SCTLR_EL2_E2H and is used when E2H=0.
26968  */
26969 union bdk_ap_sctlr_el2
26970 {
26971     uint32_t u;
26972     struct bdk_ap_sctlr_el2_s
26973     {
26974 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26975         uint32_t reserved_30_31        : 2;
26976         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
26977         uint32_t reserved_26_27        : 2;
26978         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
26979                                                                   Explicit data accesses at EL3.
26980                                                                   Stage 1 translation table walks at EL3.
26981 
26982                                                                  If an implementation does not provide Big-endian support, this
26983                                                                      bit is RES0. If it does not provide Little-endian support,
26984                                                                      this bit is RES1.
26985                                                                  The EE bit is permitted to be cached in a TLB.
26986                                                                  0 = Little-endian.
26987                                                                  1 = Big-endian. */
26988         uint32_t reserved_24           : 1;
26989         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
26990                                                                  to the EL* exception level.
26991                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL* exception level.
26992                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL* exception level.
26993 
26994                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
26995                                                                  exception level. */
26996         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
26997         uint32_t reserved_20_21        : 2;
26998         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
26999                                                                      used to require all memory regions with write permission to be
27000                                                                      treated as XN.
27001                                                                  The WXN bit is permitted to be cached in a TLB.
27002                                                                  0 = Regions with write permission are not forced to XN.
27003                                                                  1 = Regions with write permission are forced to XN. */
27004         uint32_t rsvd_18               : 1;  /**< [ 18: 18](RO) Reserved 1. */
27005         uint32_t reserved_17           : 1;
27006         uint32_t rsvd_16               : 1;  /**< [ 16: 16](RO) Reserved 1. */
27007         uint32_t reserved_13_15        : 3;
27008         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
27009                                                                      instruction caches at EL3.
27010                                                                  When this bit is 0, all EL3 Normal memory instruction accesses
27011                                                                      are Non-cacheable. This bit has no effect on the EL1&0 or EL2
27012                                                                      translation regimes.
27013                                                                  0 = Instruction caches disabled at EL3. If AP_SCTLR_EL3[M] is set to
27014                                                                      0, instruction accesses from stage 1 of the EL3 translation
27015                                                                      regime are to Normal memory, Outer Shareable, Inner Non-
27016                                                                      cacheable, Outer Non-cacheable.
27017                                                                  1 = Instruction caches enabled at EL3. If AP_SCTLR_EL3[M] is set to 0,
27018                                                                      instruction accesses from stage 1 of the EL3 translation
27019                                                                      regime are to Normal memory, Outer Shareable, Inner Write-
27020                                                                      Through, Outer Write-Through. */
27021         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
27022         uint32_t reserved_6_10         : 5;
27023         uint32_t rsvd_4_5              : 2;  /**< [  5:  4](RO) Reserved 1. */
27024         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
27025                                                                      pointer as the base address in a load/store instruction at
27026                                                                      this register's Exception level must be aligned to a 16-byte
27027                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
27028         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
27029                                                                      caches at EL3:
27030 
27031                                                                  When this bit is 0, all EL3 Normal memory data accesses and
27032                                                                      all accesses to the EL3 translation tables are Non-cacheable.
27033                                                                      This bit has no effect on the EL1&0 or EL2 translation
27034                                                                      regimes.
27035                                                                  0 = Data and unified caches disabled at EL3.
27036                                                                  1 = Data and unified caches enabled at EL3. */
27037         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
27038                                                                      fault checking:
27039 
27040                                                                  Load/store exclusive and load-acquire/store-release
27041                                                                      instructions have an alignment check regardless of the value
27042                                                                      of the A bit.
27043 
27044                                                                  0 = Alignment fault checking disabled.
27045                                                                  Instructions that load or store one or more registers, other
27046                                                                      than load/store exclusive and load-acquire/store-release, do
27047                                                                      not check that the address being accessed is aligned to the
27048                                                                      size of the data element(s) being accessed.
27049 
27050                                                                  1 = Alignment fault checking enabled.
27051                                                                  All instructions that load or store one or more registers have
27052                                                                      an alignment check that the address being accessed is aligned
27053                                                                      to the size of the data element(s) being accessed. If this
27054                                                                      check fails it causes an Alignment fault, which is taken as a
27055                                                                      Data Abort exception. */
27056         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL3 stage 1 address translation.
27057                                                                  0 = EL3 stage 1 address translation disabled.
27058                                                                  1 = EL3 stage 1 address translation enabled. */
27059 #else /* Word 0 - Little Endian */
27060         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL3 stage 1 address translation.
27061                                                                  0 = EL3 stage 1 address translation disabled.
27062                                                                  1 = EL3 stage 1 address translation enabled. */
27063         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
27064                                                                      fault checking:
27065 
27066                                                                  Load/store exclusive and load-acquire/store-release
27067                                                                      instructions have an alignment check regardless of the value
27068                                                                      of the A bit.
27069 
27070                                                                  0 = Alignment fault checking disabled.
27071                                                                  Instructions that load or store one or more registers, other
27072                                                                      than load/store exclusive and load-acquire/store-release, do
27073                                                                      not check that the address being accessed is aligned to the
27074                                                                      size of the data element(s) being accessed.
27075 
27076                                                                  1 = Alignment fault checking enabled.
27077                                                                  All instructions that load or store one or more registers have
27078                                                                      an alignment check that the address being accessed is aligned
27079                                                                      to the size of the data element(s) being accessed. If this
27080                                                                      check fails it causes an Alignment fault, which is taken as a
27081                                                                      Data Abort exception. */
27082         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
27083                                                                      caches at EL3:
27084 
27085                                                                  When this bit is 0, all EL3 Normal memory data accesses and
27086                                                                      all accesses to the EL3 translation tables are Non-cacheable.
27087                                                                      This bit has no effect on the EL1&0 or EL2 translation
27088                                                                      regimes.
27089                                                                  0 = Data and unified caches disabled at EL3.
27090                                                                  1 = Data and unified caches enabled at EL3. */
27091         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
27092                                                                      pointer as the base address in a load/store instruction at
27093                                                                      this register's Exception level must be aligned to a 16-byte
27094                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
27095         uint32_t rsvd_4_5              : 2;  /**< [  5:  4](RO) Reserved 1. */
27096         uint32_t reserved_6_10         : 5;
27097         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
27098         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
27099                                                                      instruction caches at EL3.
27100                                                                  When this bit is 0, all EL3 Normal memory instruction accesses
27101                                                                      are Non-cacheable. This bit has no effect on the EL1&0 or EL2
27102                                                                      translation regimes.
27103                                                                  0 = Instruction caches disabled at EL3. If AP_SCTLR_EL3[M] is set to
27104                                                                      0, instruction accesses from stage 1 of the EL3 translation
27105                                                                      regime are to Normal memory, Outer Shareable, Inner Non-
27106                                                                      cacheable, Outer Non-cacheable.
27107                                                                  1 = Instruction caches enabled at EL3. If AP_SCTLR_EL3[M] is set to 0,
27108                                                                      instruction accesses from stage 1 of the EL3 translation
27109                                                                      regime are to Normal memory, Outer Shareable, Inner Write-
27110                                                                      Through, Outer Write-Through. */
27111         uint32_t reserved_13_15        : 3;
27112         uint32_t rsvd_16               : 1;  /**< [ 16: 16](RO) Reserved 1. */
27113         uint32_t reserved_17           : 1;
27114         uint32_t rsvd_18               : 1;  /**< [ 18: 18](RO) Reserved 1. */
27115         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
27116                                                                      used to require all memory regions with write permission to be
27117                                                                      treated as XN.
27118                                                                  The WXN bit is permitted to be cached in a TLB.
27119                                                                  0 = Regions with write permission are not forced to XN.
27120                                                                  1 = Regions with write permission are forced to XN. */
27121         uint32_t reserved_20_21        : 2;
27122         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
27123         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
27124                                                                  to the EL* exception level.
27125                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL* exception level.
27126                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL* exception level.
27127 
27128                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
27129                                                                  exception level. */
27130         uint32_t reserved_24           : 1;
27131         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
27132                                                                   Explicit data accesses at EL3.
27133                                                                   Stage 1 translation table walks at EL3.
27134 
27135                                                                  If an implementation does not provide Big-endian support, this
27136                                                                      bit is RES0. If it does not provide Little-endian support,
27137                                                                      this bit is RES1.
27138                                                                  The EE bit is permitted to be cached in a TLB.
27139                                                                  0 = Little-endian.
27140                                                                  1 = Big-endian. */
27141         uint32_t reserved_26_27        : 2;
27142         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
27143         uint32_t reserved_30_31        : 2;
27144 #endif /* Word 0 - End */
27145     } s;
27146     /* struct bdk_ap_sctlr_el2_s cn; */
27147 };
27148 typedef union bdk_ap_sctlr_el2 bdk_ap_sctlr_el2_t;
27149 
27150 #define BDK_AP_SCTLR_EL2 BDK_AP_SCTLR_EL2_FUNC()
27151 static inline uint64_t BDK_AP_SCTLR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SCTLR_EL2_FUNC(void)27152 static inline uint64_t BDK_AP_SCTLR_EL2_FUNC(void)
27153 {
27154     return 0x30401000000ll;
27155 }
27156 
27157 #define typedef_BDK_AP_SCTLR_EL2 bdk_ap_sctlr_el2_t
27158 #define bustype_BDK_AP_SCTLR_EL2 BDK_CSR_TYPE_SYSREG
27159 #define basename_BDK_AP_SCTLR_EL2 "AP_SCTLR_EL2"
27160 #define busnum_BDK_AP_SCTLR_EL2 0
27161 #define arguments_BDK_AP_SCTLR_EL2 -1,-1,-1,-1
27162 
27163 /**
27164  * Register (SYSREG) ap_sctlr_el2_e2h
27165  *
27166  * AP System Control E2H Register
27167  * Provides top level control of the system, including its memory
27168  *     system, at EL2.
27169  *
27170  * This register is at the same select as AP_SCTLR_EL2 and is used when E2H=1.
27171  */
27172 union bdk_ap_sctlr_el2_e2h
27173 {
27174     uint32_t u;
27175     struct bdk_ap_sctlr_el2_e2h_s
27176     {
27177 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27178         uint32_t reserved_30_31        : 2;
27179         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
27180         uint32_t reserved_27           : 1;
27181         uint32_t uci                   : 1;  /**< [ 26: 26](R/W) When set, enables EL0 access in AArch64 for DC CVAU, DC CIVAC,
27182                                                                      DC CVAC, and IC IVAU instructions. */
27183         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
27184                                                                   Explicit data accesses at EL1.
27185                                                                   Stage 1 translation table walks at EL1 and EL0.
27186 
27187                                                                  If an implementation does not provide Big-endian support, this
27188                                                                      bit is RES0. If it does not provide Little-endian support,
27189                                                                      this bit is RES1.
27190 
27191                                                                  The EE bit is permitted to be cached in a TLB.
27192 
27193                                                                  0 = Little-endian.
27194                                                                  1 = Big-endian. */
27195         uint32_t e0e                   : 1;  /**< [ 24: 24](R/W) Endianness of explicit data accesses at EL0.
27196 
27197                                                                  If an implementation only supports Little-endian accesses at
27198                                                                      EL0 then this bit is RES0.
27199 
27200                                                                  If an implementation only supports Big-endian accesses at EL0
27201                                                                      then this bit is RES1.
27202 
27203                                                                  This bit has no effect on the endianness of LDTR* and STTR*
27204                                                                      instructions executed at EL1.
27205 
27206                                                                  0 = Explicit data accesses at EL0 are little-endian.
27207                                                                  1 = Explicit data accesses at EL0 are big-endian. */
27208         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
27209                                                                  to the EL1 exception level.
27210                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL1 exception level
27211                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL1 exception
27212                                                                  level
27213 
27214                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
27215                                                                  exception level. */
27216         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
27217         uint32_t reserved_21           : 1;
27218         uint32_t rsvd_20               : 1;  /**< [ 20: 20](RO) Reserved 1. */
27219         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
27220                                                                      used to require all memory regions with write permission to be
27221                                                                      treated as XN.
27222 
27223                                                                  The WXN bit is permitted to be cached in a TLB.
27224 
27225                                                                  0 = Regions with write permission are not forced to XN.
27226                                                                  1 = Regions with write permission are forced to XN. */
27227         uint32_t ntwe                  : 1;  /**< [ 18: 18](R/W) Not trap WFE.
27228                                                                  Conditional WFE instructions that fail their condition do not
27229                                                                      cause an exception if this bit is 0.
27230                                                                  0 = If a WFE instruction executed at EL0 would cause execution to
27231                                                                      be suspended, such as if the event register is not set and
27232                                                                      there is not a pending WFE wakeup event, it is taken as an
27233                                                                      exception to EL1 using the0x1
27234                                                                  1 = WFE instructions are executed as normal. */
27235         uint32_t reserved_17           : 1;
27236         uint32_t ntwi                  : 1;  /**< [ 16: 16](R/W) Not trap WFI.
27237                                                                  Conditional WFI instructions that fail their condition do not
27238                                                                      cause an exception if this bit is 0.
27239                                                                  0 = If a WFI instruction executed at EL0 would cause execution to
27240                                                                      be suspended, such as if there is not a pending WFI wakeup
27241                                                                      event, it is taken as an exception to EL1 using the0x1
27242                                                                  1 = WFI instructions are executed as normal. */
27243         uint32_t uct                   : 1;  /**< [ 15: 15](R/W) When set, enables EL0 access in AArch64 to the AP_CTR_EL0
27244                                                                      register. */
27245         uint32_t dze                   : 1;  /**< [ 14: 14](R/W) Access to DC ZVA instruction at EL0.
27246                                                                  0 = Execution of the DC ZVA instruction is prohibited at EL0, and
27247                                                                      it is treated as undefined at EL0.
27248                                                                  1 = Execution of the DC ZVA instruction is allowed at EL0. */
27249         uint32_t reserved_13           : 1;
27250         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
27251                                                                      instruction caches at EL0 and EL1:
27252                                                                  When this bit is 0, all EL1 and EL0 Normal memory instruction
27253                                                                      accesses are Non-cacheable.
27254                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
27255                                                                      EL1&0 translation regime is Cacheable regardless of the value
27256                                                                      of this bit.
27257                                                                  0 = Instruction caches disabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
27258                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
27259                                                                      translation regime are to Normal memory, Outer Shareable,
27260                                                                      Inner Non-cacheable, Outer Non-cacheable.
27261                                                                  1 = Instruction caches enabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
27262                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
27263                                                                      translation regime are to Normal memory, Outer Shareable,
27264                                                                      Inner Write-Through, Outer Write-Through. */
27265         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
27266         uint32_t reserved_10           : 1;
27267         uint32_t uma                   : 1;  /**< [  9:  9](R/W) User Mask Access. Controls access to interrupt masks from EL0,
27268                                                                      when EL0 is using AArch64.
27269                                                                  0 = Disable access to the interrupt masks from EL0.
27270                                                                  1 = Enable access to the interrupt masks from EL0. */
27271         uint32_t rsvd_8                : 1;  /**< [  8:  8](RO) SETEND disable.
27272                                                                  If an implementation does not support mixed endian operation,
27273                                                                      this bit is RES1.
27274                                                                  0 = The SETEND instruction is available.
27275                                                                  1 = The SETEND instruction is UNALLOCATED.
27276 
27277                                                                  SED: SETEND Disable - Only supported with 32 bit */
27278         uint32_t rsvd_7                : 1;  /**< [  7:  7](RO) "IT Disable.
27279                                                                  0 = The IT instruction functionality is available.
27280                                                                  1 = It is implementation defined whether the IT instruction is
27281                                                                      treated as either:
27282                                                                  * A 16-bit instruction, which can only be followed by another
27283                                                                      16-bit instruction.
27284                                                                  * The first half of a 32-bit instruction.
27285 
27286                                                                  An implementation might vary dynamically as to whether IT is
27287                                                                      treated as a 16-bit instruction or the first half of a 32-bit
27288                                                                      instruction.
27289 
27290                                                                  All encodings of the IT instruction with hw1[3:0]!=1000 are
27291                                                                      UNdefined and treated as unallocated.
27292 
27293                                                                  All encodings of the subsequent instruction with the following
27294                                                                      values for hw1 are UNdefined (and treated as unallocated):
27295 
27296                                                                  - 0b11xxxxxxxxxxxxxx: All 32-bit instructions, and the 16-bit
27297                                                                      instructions B, UDF, SVC, LDM, and STM.
27298 
27299                                                                  - 0b1x11xxxxxxxxxxxx: All instructions in.
27300 
27301                                                                  - 0b1x100xxxxxxxxxxx: ADD Rd, PC, #imm
27302 
27303                                                                  - 0b01001xxxxxxxxxxx: LDR Rd, [PC, #imm]
27304 
27305                                                                  - 0b0100x1xxx1111xxx: ADD Rdn, PC; CMP Rn, PC; MOV Rd, PC; BX
27306                                                                      PC; BLX PC.
27307 
27308                                                                  - 0b010001xx1xxxx111: ADD PC, Rm; CMP PC, Rm; MOV PC, Rm. This
27309                                                                      pattern also covers UNPREDICTABLE cases with BLX Rn.
27310 
27311                                                                  Contrary to the standard treatment of conditional UNdefined
27312                                                                      instructions in the ARM architecture, in this case these
27313                                                                      instructions are always treated as UNdefined, regardless of
27314                                                                      whether the instruction would pass or fail its condition codes
27315                                                                      as a result of being in an IT block.
27316 
27317                                                                  ITD: IT Disable - Only supported with 32 bit" */
27318         uint32_t reserved_5_6          : 2;
27319         uint32_t sa0                   : 1;  /**< [  4:  4](R/W) Stack Alignment Check Enable for EL0. When set, use of the
27320                                                                      stack pointer as the base address in a load/store instruction
27321                                                                      at EL0 must be aligned to a 16-byte boundary, or a Stack
27322                                                                      Alignment Fault exception will be raised. */
27323         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
27324                                                                      pointer as the base address in a load/store instruction at
27325                                                                      this register's Exception level must be aligned to a 16-byte
27326                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
27327         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
27328                                                                      caches at EL0 and EL1:
27329                                                                  When this bit is 0, all EL0 and EL1 Normal memory data
27330                                                                      accesses and all accesses to the EL1&0 stage 1 translation
27331                                                                      tables are Non-cacheable.
27332                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
27333                                                                      EL1&0 translation regime is Cacheable regardless of the value
27334                                                                      of the AP_SCTLR_EL1[C] bit.
27335                                                                  0 = Data and unified caches disabled.
27336                                                                  1 = Data and unified caches enabled. */
27337         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
27338                                                                      fault checking.
27339 
27340                                                                  Load/store exclusive and load-acquire/store-release
27341                                                                      instructions have an alignment check regardless of the value
27342                                                                      of the A bit.
27343 
27344                                                                  0 = Alignment fault checking disabled.
27345                                                                  Instructions that load or store one or more registers, other
27346                                                                      than load/store exclusive and load-acquire/store-release, do
27347                                                                      not check that the address being accessed is aligned to the
27348                                                                      size of the data element(s) being accessed.
27349 
27350                                                                  1 = Alignment fault checking enabled.
27351                                                                  All instructions that load or store one or more registers have
27352                                                                      an alignment check that the address being accessed is aligned
27353                                                                      to the size of the data element(s) being accessed. If this
27354                                                                      check fails it causes an Alignment fault, which is taken as a
27355                                                                      Data Abort exception. */
27356         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL1 and EL0 stage 1 address translation.
27357 
27358                                                                  If AP_HCR_EL2[DC] is set to 1, then in nonsecure state the
27359                                                                      AP_SCTLR_EL1[M] bit behaves as 0 for all purposes other than
27360                                                                      reading the value of the bit.
27361                                                                  0 = EL1 and EL0 stage 1 address translation disabled.
27362                                                                  1 = EL1 and EL0 stage 1 address translation enabled. */
27363 #else /* Word 0 - Little Endian */
27364         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL1 and EL0 stage 1 address translation.
27365 
27366                                                                  If AP_HCR_EL2[DC] is set to 1, then in nonsecure state the
27367                                                                      AP_SCTLR_EL1[M] bit behaves as 0 for all purposes other than
27368                                                                      reading the value of the bit.
27369                                                                  0 = EL1 and EL0 stage 1 address translation disabled.
27370                                                                  1 = EL1 and EL0 stage 1 address translation enabled. */
27371         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
27372                                                                      fault checking.
27373 
27374                                                                  Load/store exclusive and load-acquire/store-release
27375                                                                      instructions have an alignment check regardless of the value
27376                                                                      of the A bit.
27377 
27378                                                                  0 = Alignment fault checking disabled.
27379                                                                  Instructions that load or store one or more registers, other
27380                                                                      than load/store exclusive and load-acquire/store-release, do
27381                                                                      not check that the address being accessed is aligned to the
27382                                                                      size of the data element(s) being accessed.
27383 
27384                                                                  1 = Alignment fault checking enabled.
27385                                                                  All instructions that load or store one or more registers have
27386                                                                      an alignment check that the address being accessed is aligned
27387                                                                      to the size of the data element(s) being accessed. If this
27388                                                                      check fails it causes an Alignment fault, which is taken as a
27389                                                                      Data Abort exception. */
27390         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
27391                                                                      caches at EL0 and EL1:
27392                                                                  When this bit is 0, all EL0 and EL1 Normal memory data
27393                                                                      accesses and all accesses to the EL1&0 stage 1 translation
27394                                                                      tables are Non-cacheable.
27395                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
27396                                                                      EL1&0 translation regime is Cacheable regardless of the value
27397                                                                      of the AP_SCTLR_EL1[C] bit.
27398                                                                  0 = Data and unified caches disabled.
27399                                                                  1 = Data and unified caches enabled. */
27400         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
27401                                                                      pointer as the base address in a load/store instruction at
27402                                                                      this register's Exception level must be aligned to a 16-byte
27403                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
27404         uint32_t sa0                   : 1;  /**< [  4:  4](R/W) Stack Alignment Check Enable for EL0. When set, use of the
27405                                                                      stack pointer as the base address in a load/store instruction
27406                                                                      at EL0 must be aligned to a 16-byte boundary, or a Stack
27407                                                                      Alignment Fault exception will be raised. */
27408         uint32_t reserved_5_6          : 2;
27409         uint32_t rsvd_7                : 1;  /**< [  7:  7](RO) "IT Disable.
27410                                                                  0 = The IT instruction functionality is available.
27411                                                                  1 = It is implementation defined whether the IT instruction is
27412                                                                      treated as either:
27413                                                                  * A 16-bit instruction, which can only be followed by another
27414                                                                      16-bit instruction.
27415                                                                  * The first half of a 32-bit instruction.
27416 
27417                                                                  An implementation might vary dynamically as to whether IT is
27418                                                                      treated as a 16-bit instruction or the first half of a 32-bit
27419                                                                      instruction.
27420 
27421                                                                  All encodings of the IT instruction with hw1[3:0]!=1000 are
27422                                                                      UNdefined and treated as unallocated.
27423 
27424                                                                  All encodings of the subsequent instruction with the following
27425                                                                      values for hw1 are UNdefined (and treated as unallocated):
27426 
27427                                                                  - 0b11xxxxxxxxxxxxxx: All 32-bit instructions, and the 16-bit
27428                                                                      instructions B, UDF, SVC, LDM, and STM.
27429 
27430                                                                  - 0b1x11xxxxxxxxxxxx: All instructions in.
27431 
27432                                                                  - 0b1x100xxxxxxxxxxx: ADD Rd, PC, #imm
27433 
27434                                                                  - 0b01001xxxxxxxxxxx: LDR Rd, [PC, #imm]
27435 
27436                                                                  - 0b0100x1xxx1111xxx: ADD Rdn, PC; CMP Rn, PC; MOV Rd, PC; BX
27437                                                                      PC; BLX PC.
27438 
27439                                                                  - 0b010001xx1xxxx111: ADD PC, Rm; CMP PC, Rm; MOV PC, Rm. This
27440                                                                      pattern also covers UNPREDICTABLE cases with BLX Rn.
27441 
27442                                                                  Contrary to the standard treatment of conditional UNdefined
27443                                                                      instructions in the ARM architecture, in this case these
27444                                                                      instructions are always treated as UNdefined, regardless of
27445                                                                      whether the instruction would pass or fail its condition codes
27446                                                                      as a result of being in an IT block.
27447 
27448                                                                  ITD: IT Disable - Only supported with 32 bit" */
27449         uint32_t rsvd_8                : 1;  /**< [  8:  8](RO) SETEND disable.
27450                                                                  If an implementation does not support mixed endian operation,
27451                                                                      this bit is RES1.
27452                                                                  0 = The SETEND instruction is available.
27453                                                                  1 = The SETEND instruction is UNALLOCATED.
27454 
27455                                                                  SED: SETEND Disable - Only supported with 32 bit */
27456         uint32_t uma                   : 1;  /**< [  9:  9](R/W) User Mask Access. Controls access to interrupt masks from EL0,
27457                                                                      when EL0 is using AArch64.
27458                                                                  0 = Disable access to the interrupt masks from EL0.
27459                                                                  1 = Enable access to the interrupt masks from EL0. */
27460         uint32_t reserved_10           : 1;
27461         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
27462         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
27463                                                                      instruction caches at EL0 and EL1:
27464                                                                  When this bit is 0, all EL1 and EL0 Normal memory instruction
27465                                                                      accesses are Non-cacheable.
27466                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
27467                                                                      EL1&0 translation regime is Cacheable regardless of the value
27468                                                                      of this bit.
27469                                                                  0 = Instruction caches disabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
27470                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
27471                                                                      translation regime are to Normal memory, Outer Shareable,
27472                                                                      Inner Non-cacheable, Outer Non-cacheable.
27473                                                                  1 = Instruction caches enabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
27474                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
27475                                                                      translation regime are to Normal memory, Outer Shareable,
27476                                                                      Inner Write-Through, Outer Write-Through. */
27477         uint32_t reserved_13           : 1;
27478         uint32_t dze                   : 1;  /**< [ 14: 14](R/W) Access to DC ZVA instruction at EL0.
27479                                                                  0 = Execution of the DC ZVA instruction is prohibited at EL0, and
27480                                                                      it is treated as undefined at EL0.
27481                                                                  1 = Execution of the DC ZVA instruction is allowed at EL0. */
27482         uint32_t uct                   : 1;  /**< [ 15: 15](R/W) When set, enables EL0 access in AArch64 to the AP_CTR_EL0
27483                                                                      register. */
27484         uint32_t ntwi                  : 1;  /**< [ 16: 16](R/W) Not trap WFI.
27485                                                                  Conditional WFI instructions that fail their condition do not
27486                                                                      cause an exception if this bit is 0.
27487                                                                  0 = If a WFI instruction executed at EL0 would cause execution to
27488                                                                      be suspended, such as if there is not a pending WFI wakeup
27489                                                                      event, it is taken as an exception to EL1 using the0x1
27490                                                                  1 = WFI instructions are executed as normal. */
27491         uint32_t reserved_17           : 1;
27492         uint32_t ntwe                  : 1;  /**< [ 18: 18](R/W) Not trap WFE.
27493                                                                  Conditional WFE instructions that fail their condition do not
27494                                                                      cause an exception if this bit is 0.
27495                                                                  0 = If a WFE instruction executed at EL0 would cause execution to
27496                                                                      be suspended, such as if the event register is not set and
27497                                                                      there is not a pending WFE wakeup event, it is taken as an
27498                                                                      exception to EL1 using the0x1
27499                                                                  1 = WFE instructions are executed as normal. */
27500         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
27501                                                                      used to require all memory regions with write permission to be
27502                                                                      treated as XN.
27503 
27504                                                                  The WXN bit is permitted to be cached in a TLB.
27505 
27506                                                                  0 = Regions with write permission are not forced to XN.
27507                                                                  1 = Regions with write permission are forced to XN. */
27508         uint32_t rsvd_20               : 1;  /**< [ 20: 20](RO) Reserved 1. */
27509         uint32_t reserved_21           : 1;
27510         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
27511         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
27512                                                                  to the EL1 exception level.
27513                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL1 exception level
27514                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL1 exception
27515                                                                  level
27516 
27517                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
27518                                                                  exception level. */
27519         uint32_t e0e                   : 1;  /**< [ 24: 24](R/W) Endianness of explicit data accesses at EL0.
27520 
27521                                                                  If an implementation only supports Little-endian accesses at
27522                                                                      EL0 then this bit is RES0.
27523 
27524                                                                  If an implementation only supports Big-endian accesses at EL0
27525                                                                      then this bit is RES1.
27526 
27527                                                                  This bit has no effect on the endianness of LDTR* and STTR*
27528                                                                      instructions executed at EL1.
27529 
27530                                                                  0 = Explicit data accesses at EL0 are little-endian.
27531                                                                  1 = Explicit data accesses at EL0 are big-endian. */
27532         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
27533                                                                   Explicit data accesses at EL1.
27534                                                                   Stage 1 translation table walks at EL1 and EL0.
27535 
27536                                                                  If an implementation does not provide Big-endian support, this
27537                                                                      bit is RES0. If it does not provide Little-endian support,
27538                                                                      this bit is RES1.
27539 
27540                                                                  The EE bit is permitted to be cached in a TLB.
27541 
27542                                                                  0 = Little-endian.
27543                                                                  1 = Big-endian. */
27544         uint32_t uci                   : 1;  /**< [ 26: 26](R/W) When set, enables EL0 access in AArch64 for DC CVAU, DC CIVAC,
27545                                                                      DC CVAC, and IC IVAU instructions. */
27546         uint32_t reserved_27           : 1;
27547         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
27548         uint32_t reserved_30_31        : 2;
27549 #endif /* Word 0 - End */
27550     } s;
27551     struct bdk_ap_sctlr_el2_e2h_cn
27552     {
27553 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27554         uint32_t reserved_30_31        : 2;
27555         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
27556         uint32_t reserved_27           : 1;
27557         uint32_t uci                   : 1;  /**< [ 26: 26](R/W) When set, enables EL0 access in AArch64 for DC CVAU, DC CIVAC,
27558                                                                      DC CVAC, and IC IVAU instructions. */
27559         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
27560                                                                   Explicit data accesses at EL1.
27561                                                                   Stage 1 translation table walks at EL1 and EL0.
27562 
27563                                                                  If an implementation does not provide Big-endian support, this
27564                                                                      bit is RES0. If it does not provide Little-endian support,
27565                                                                      this bit is RES1.
27566 
27567                                                                  The EE bit is permitted to be cached in a TLB.
27568 
27569                                                                  0 = Little-endian.
27570                                                                  1 = Big-endian. */
27571         uint32_t e0e                   : 1;  /**< [ 24: 24](R/W) Endianness of explicit data accesses at EL0.
27572 
27573                                                                  If an implementation only supports Little-endian accesses at
27574                                                                      EL0 then this bit is RES0.
27575 
27576                                                                  If an implementation only supports Big-endian accesses at EL0
27577                                                                      then this bit is RES1.
27578 
27579                                                                  This bit has no effect on the endianness of LDTR* and STTR*
27580                                                                      instructions executed at EL1.
27581 
27582                                                                  0 = Explicit data accesses at EL0 are little-endian.
27583                                                                  1 = Explicit data accesses at EL0 are big-endian. */
27584         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
27585                                                                  to the EL1 exception level.
27586                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL1 exception level
27587                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL1 exception
27588                                                                  level
27589 
27590                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
27591                                                                  exception level. */
27592         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
27593         uint32_t reserved_21           : 1;
27594         uint32_t rsvd_20               : 1;  /**< [ 20: 20](RO) Reserved 1. */
27595         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
27596                                                                      used to require all memory regions with write permission to be
27597                                                                      treated as XN.
27598 
27599                                                                  The WXN bit is permitted to be cached in a TLB.
27600 
27601                                                                  0 = Regions with write permission are not forced to XN.
27602                                                                  1 = Regions with write permission are forced to XN. */
27603         uint32_t ntwe                  : 1;  /**< [ 18: 18](R/W) Not trap WFE.
27604                                                                  Conditional WFE instructions that fail their condition do not
27605                                                                      cause an exception if this bit is 0.
27606                                                                  0 = If a WFE instruction executed at EL0 would cause execution to
27607                                                                      be suspended, such as if the event register is not set and
27608                                                                      there is not a pending WFE wakeup event, it is taken as an
27609                                                                      exception to EL1 using the0x1
27610                                                                  1 = WFE instructions are executed as normal. */
27611         uint32_t reserved_17           : 1;
27612         uint32_t ntwi                  : 1;  /**< [ 16: 16](R/W) Not trap WFI.
27613                                                                  Conditional WFI instructions that fail their condition do not
27614                                                                      cause an exception if this bit is 0.
27615                                                                  0 = If a WFI instruction executed at EL0 would cause execution to
27616                                                                      be suspended, such as if there is not a pending WFI wakeup
27617                                                                      event, it is taken as an exception to EL1 using the0x1
27618                                                                  1 = WFI instructions are executed as normal. */
27619         uint32_t uct                   : 1;  /**< [ 15: 15](R/W) When set, enables EL0 access in AArch64 to the AP_CTR_EL0
27620                                                                      register. */
27621         uint32_t dze                   : 1;  /**< [ 14: 14](R/W) Access to DC ZVA instruction at EL0.
27622                                                                  0 = Execution of the DC ZVA instruction is prohibited at EL0, and
27623                                                                      it is treated as undefined at EL0.
27624                                                                  1 = Execution of the DC ZVA instruction is allowed at EL0. */
27625         uint32_t reserved_13           : 1;
27626         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
27627                                                                      instruction caches at EL0 and EL1:
27628                                                                  When this bit is 0, all EL1 and EL0 Normal memory instruction
27629                                                                      accesses are Non-cacheable.
27630                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
27631                                                                      EL1&0 translation regime is Cacheable regardless of the value
27632                                                                      of this bit.
27633                                                                  0 = Instruction caches disabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
27634                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
27635                                                                      translation regime are to Normal memory, Outer Shareable,
27636                                                                      Inner Non-cacheable, Outer Non-cacheable.
27637                                                                  1 = Instruction caches enabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
27638                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
27639                                                                      translation regime are to Normal memory, Outer Shareable,
27640                                                                      Inner Write-Through, Outer Write-Through. */
27641         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
27642         uint32_t reserved_10           : 1;
27643         uint32_t uma                   : 1;  /**< [  9:  9](R/W) User Mask Access. Controls access to interrupt masks from EL0,
27644                                                                      when EL0 is using AArch64.
27645                                                                  0 = Disable access to the interrupt masks from EL0.
27646                                                                  1 = Enable access to the interrupt masks from EL0. */
27647         uint32_t rsvd_8                : 1;  /**< [  8:  8](RO) SETEND disable.
27648                                                                  If an implementation does not support mixed endian operation,
27649                                                                      this bit is RES1.
27650                                                                  0 = The SETEND instruction is available.
27651                                                                  1 = The SETEND instruction is UNALLOCATED.
27652 
27653                                                                  SED: SETEND Disable - Only supported with 32 bit */
27654         uint32_t rsvd_7                : 1;  /**< [  7:  7](RO) "IT Disable.
27655                                                                  0 = The IT instruction functionality is available.
27656                                                                  1 = It is implementation defined whether the IT instruction is
27657                                                                      treated as either:
27658                                                                  * A 16-bit instruction, which can only be followed by another
27659                                                                      16-bit instruction.
27660                                                                  * The first half of a 32-bit instruction.
27661 
27662                                                                  An implementation might vary dynamically as to whether IT is
27663                                                                      treated as a 16-bit instruction or the first half of a 32-bit
27664                                                                      instruction.
27665 
27666                                                                  All encodings of the IT instruction with hw1[3:0]!=1000 are
27667                                                                      UNdefined and treated as unallocated.
27668 
27669                                                                  All encodings of the subsequent instruction with the following
27670                                                                      values for hw1 are UNdefined (and treated as unallocated):
27671 
27672                                                                  - 0b11xxxxxxxxxxxxxx: All 32-bit instructions, and the 16-bit
27673                                                                      instructions B, UDF, SVC, LDM, and STM.
27674 
27675                                                                  - 0b1x11xxxxxxxxxxxx: All instructions in.
27676 
27677                                                                  - 0b1x100xxxxxxxxxxx: ADD Rd, PC, #imm
27678 
27679                                                                  - 0b01001xxxxxxxxxxx: LDR Rd, [PC, #imm]
27680 
27681                                                                  - 0b0100x1xxx1111xxx: ADD Rdn, PC; CMP Rn, PC; MOV Rd, PC; BX
27682                                                                      PC; BLX PC.
27683 
27684                                                                  - 0b010001xx1xxxx111: ADD PC, Rm; CMP PC, Rm; MOV PC, Rm. This
27685                                                                      pattern also covers UNPREDICTABLE cases with BLX Rn.
27686 
27687                                                                  Contrary to the standard treatment of conditional UNdefined
27688                                                                      instructions in the ARM architecture, in this case these
27689                                                                      instructions are always treated as UNdefined, regardless of
27690                                                                      whether the instruction would pass or fail its condition codes
27691                                                                      as a result of being in an IT block.
27692 
27693                                                                  ITD: IT Disable - Only supported with 32 bit" */
27694         uint32_t reserved_6            : 1;
27695         uint32_t reserved_5            : 1;
27696         uint32_t sa0                   : 1;  /**< [  4:  4](R/W) Stack Alignment Check Enable for EL0. When set, use of the
27697                                                                      stack pointer as the base address in a load/store instruction
27698                                                                      at EL0 must be aligned to a 16-byte boundary, or a Stack
27699                                                                      Alignment Fault exception will be raised. */
27700         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
27701                                                                      pointer as the base address in a load/store instruction at
27702                                                                      this register's Exception level must be aligned to a 16-byte
27703                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
27704         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
27705                                                                      caches at EL0 and EL1:
27706                                                                  When this bit is 0, all EL0 and EL1 Normal memory data
27707                                                                      accesses and all accesses to the EL1&0 stage 1 translation
27708                                                                      tables are Non-cacheable.
27709                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
27710                                                                      EL1&0 translation regime is Cacheable regardless of the value
27711                                                                      of the AP_SCTLR_EL1[C] bit.
27712                                                                  0 = Data and unified caches disabled.
27713                                                                  1 = Data and unified caches enabled. */
27714         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
27715                                                                      fault checking.
27716 
27717                                                                  Load/store exclusive and load-acquire/store-release
27718                                                                      instructions have an alignment check regardless of the value
27719                                                                      of the A bit.
27720 
27721                                                                  0 = Alignment fault checking disabled.
27722                                                                  Instructions that load or store one or more registers, other
27723                                                                      than load/store exclusive and load-acquire/store-release, do
27724                                                                      not check that the address being accessed is aligned to the
27725                                                                      size of the data element(s) being accessed.
27726 
27727                                                                  1 = Alignment fault checking enabled.
27728                                                                  All instructions that load or store one or more registers have
27729                                                                      an alignment check that the address being accessed is aligned
27730                                                                      to the size of the data element(s) being accessed. If this
27731                                                                      check fails it causes an Alignment fault, which is taken as a
27732                                                                      Data Abort exception. */
27733         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL1 and EL0 stage 1 address translation.
27734 
27735                                                                  If AP_HCR_EL2[DC] is set to 1, then in nonsecure state the
27736                                                                      AP_SCTLR_EL1[M] bit behaves as 0 for all purposes other than
27737                                                                      reading the value of the bit.
27738                                                                  0 = EL1 and EL0 stage 1 address translation disabled.
27739                                                                  1 = EL1 and EL0 stage 1 address translation enabled. */
27740 #else /* Word 0 - Little Endian */
27741         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL1 and EL0 stage 1 address translation.
27742 
27743                                                                  If AP_HCR_EL2[DC] is set to 1, then in nonsecure state the
27744                                                                      AP_SCTLR_EL1[M] bit behaves as 0 for all purposes other than
27745                                                                      reading the value of the bit.
27746                                                                  0 = EL1 and EL0 stage 1 address translation disabled.
27747                                                                  1 = EL1 and EL0 stage 1 address translation enabled. */
27748         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
27749                                                                      fault checking.
27750 
27751                                                                  Load/store exclusive and load-acquire/store-release
27752                                                                      instructions have an alignment check regardless of the value
27753                                                                      of the A bit.
27754 
27755                                                                  0 = Alignment fault checking disabled.
27756                                                                  Instructions that load or store one or more registers, other
27757                                                                      than load/store exclusive and load-acquire/store-release, do
27758                                                                      not check that the address being accessed is aligned to the
27759                                                                      size of the data element(s) being accessed.
27760 
27761                                                                  1 = Alignment fault checking enabled.
27762                                                                  All instructions that load or store one or more registers have
27763                                                                      an alignment check that the address being accessed is aligned
27764                                                                      to the size of the data element(s) being accessed. If this
27765                                                                      check fails it causes an Alignment fault, which is taken as a
27766                                                                      Data Abort exception. */
27767         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
27768                                                                      caches at EL0 and EL1:
27769                                                                  When this bit is 0, all EL0 and EL1 Normal memory data
27770                                                                      accesses and all accesses to the EL1&0 stage 1 translation
27771                                                                      tables are Non-cacheable.
27772                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
27773                                                                      EL1&0 translation regime is Cacheable regardless of the value
27774                                                                      of the AP_SCTLR_EL1[C] bit.
27775                                                                  0 = Data and unified caches disabled.
27776                                                                  1 = Data and unified caches enabled. */
27777         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack Alignment Check Enable. When set, use of the stack
27778                                                                      pointer as the base address in a load/store instruction at
27779                                                                      this register's Exception level must be aligned to a 16-byte
27780                                                                      boundary, or a Stack Alignment Fault exception will be raised. */
27781         uint32_t sa0                   : 1;  /**< [  4:  4](R/W) Stack Alignment Check Enable for EL0. When set, use of the
27782                                                                      stack pointer as the base address in a load/store instruction
27783                                                                      at EL0 must be aligned to a 16-byte boundary, or a Stack
27784                                                                      Alignment Fault exception will be raised. */
27785         uint32_t reserved_5            : 1;
27786         uint32_t reserved_6            : 1;
27787         uint32_t rsvd_7                : 1;  /**< [  7:  7](RO) "IT Disable.
27788                                                                  0 = The IT instruction functionality is available.
27789                                                                  1 = It is implementation defined whether the IT instruction is
27790                                                                      treated as either:
27791                                                                  * A 16-bit instruction, which can only be followed by another
27792                                                                      16-bit instruction.
27793                                                                  * The first half of a 32-bit instruction.
27794 
27795                                                                  An implementation might vary dynamically as to whether IT is
27796                                                                      treated as a 16-bit instruction or the first half of a 32-bit
27797                                                                      instruction.
27798 
27799                                                                  All encodings of the IT instruction with hw1[3:0]!=1000 are
27800                                                                      UNdefined and treated as unallocated.
27801 
27802                                                                  All encodings of the subsequent instruction with the following
27803                                                                      values for hw1 are UNdefined (and treated as unallocated):
27804 
27805                                                                  - 0b11xxxxxxxxxxxxxx: All 32-bit instructions, and the 16-bit
27806                                                                      instructions B, UDF, SVC, LDM, and STM.
27807 
27808                                                                  - 0b1x11xxxxxxxxxxxx: All instructions in.
27809 
27810                                                                  - 0b1x100xxxxxxxxxxx: ADD Rd, PC, #imm
27811 
27812                                                                  - 0b01001xxxxxxxxxxx: LDR Rd, [PC, #imm]
27813 
27814                                                                  - 0b0100x1xxx1111xxx: ADD Rdn, PC; CMP Rn, PC; MOV Rd, PC; BX
27815                                                                      PC; BLX PC.
27816 
27817                                                                  - 0b010001xx1xxxx111: ADD PC, Rm; CMP PC, Rm; MOV PC, Rm. This
27818                                                                      pattern also covers UNPREDICTABLE cases with BLX Rn.
27819 
27820                                                                  Contrary to the standard treatment of conditional UNdefined
27821                                                                      instructions in the ARM architecture, in this case these
27822                                                                      instructions are always treated as UNdefined, regardless of
27823                                                                      whether the instruction would pass or fail its condition codes
27824                                                                      as a result of being in an IT block.
27825 
27826                                                                  ITD: IT Disable - Only supported with 32 bit" */
27827         uint32_t rsvd_8                : 1;  /**< [  8:  8](RO) SETEND disable.
27828                                                                  If an implementation does not support mixed endian operation,
27829                                                                      this bit is RES1.
27830                                                                  0 = The SETEND instruction is available.
27831                                                                  1 = The SETEND instruction is UNALLOCATED.
27832 
27833                                                                  SED: SETEND Disable - Only supported with 32 bit */
27834         uint32_t uma                   : 1;  /**< [  9:  9](R/W) User Mask Access. Controls access to interrupt masks from EL0,
27835                                                                      when EL0 is using AArch64.
27836                                                                  0 = Disable access to the interrupt masks from EL0.
27837                                                                  1 = Enable access to the interrupt masks from EL0. */
27838         uint32_t reserved_10           : 1;
27839         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
27840         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
27841                                                                      instruction caches at EL0 and EL1:
27842                                                                  When this bit is 0, all EL1 and EL0 Normal memory instruction
27843                                                                      accesses are Non-cacheable.
27844                                                                  If the AP_HCR_EL2[DC] bit is set to 1, then the nonsecure stage 1
27845                                                                      EL1&0 translation regime is Cacheable regardless of the value
27846                                                                      of this bit.
27847                                                                  0 = Instruction caches disabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
27848                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
27849                                                                      translation regime are to Normal memory, Outer Shareable,
27850                                                                      Inner Non-cacheable, Outer Non-cacheable.
27851                                                                  1 = Instruction caches enabled at EL0 and EL1. If AP_SCTLR_EL1[M] is
27852                                                                      set to 0, instruction accesses from stage 1 of the EL1&0
27853                                                                      translation regime are to Normal memory, Outer Shareable,
27854                                                                      Inner Write-Through, Outer Write-Through. */
27855         uint32_t reserved_13           : 1;
27856         uint32_t dze                   : 1;  /**< [ 14: 14](R/W) Access to DC ZVA instruction at EL0.
27857                                                                  0 = Execution of the DC ZVA instruction is prohibited at EL0, and
27858                                                                      it is treated as undefined at EL0.
27859                                                                  1 = Execution of the DC ZVA instruction is allowed at EL0. */
27860         uint32_t uct                   : 1;  /**< [ 15: 15](R/W) When set, enables EL0 access in AArch64 to the AP_CTR_EL0
27861                                                                      register. */
27862         uint32_t ntwi                  : 1;  /**< [ 16: 16](R/W) Not trap WFI.
27863                                                                  Conditional WFI instructions that fail their condition do not
27864                                                                      cause an exception if this bit is 0.
27865                                                                  0 = If a WFI instruction executed at EL0 would cause execution to
27866                                                                      be suspended, such as if there is not a pending WFI wakeup
27867                                                                      event, it is taken as an exception to EL1 using the0x1
27868                                                                  1 = WFI instructions are executed as normal. */
27869         uint32_t reserved_17           : 1;
27870         uint32_t ntwe                  : 1;  /**< [ 18: 18](R/W) Not trap WFE.
27871                                                                  Conditional WFE instructions that fail their condition do not
27872                                                                      cause an exception if this bit is 0.
27873                                                                  0 = If a WFE instruction executed at EL0 would cause execution to
27874                                                                      be suspended, such as if the event register is not set and
27875                                                                      there is not a pending WFE wakeup event, it is taken as an
27876                                                                      exception to EL1 using the0x1
27877                                                                  1 = WFE instructions are executed as normal. */
27878         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
27879                                                                      used to require all memory regions with write permission to be
27880                                                                      treated as XN.
27881 
27882                                                                  The WXN bit is permitted to be cached in a TLB.
27883 
27884                                                                  0 = Regions with write permission are not forced to XN.
27885                                                                  1 = Regions with write permission are forced to XN. */
27886         uint32_t rsvd_20               : 1;  /**< [ 20: 20](RO) Reserved 1. */
27887         uint32_t reserved_21           : 1;
27888         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
27889         uint32_t span                  : 1;  /**< [ 23: 23](R/W) v8.1: Bit[23]: SPAN set PSTATE/CPSR[AP_PAN] bit on taking an exception
27890                                                                  to the EL1 exception level.
27891                                                                  0 = PSTATE/CPSR[AP_PAN] is set on taking an exception to the EL1 exception level
27892                                                                  1 = PSTATE/CPSR[AP_PAN] is left unchanged on taking an exception to the EL1 exception
27893                                                                  level
27894 
27895                                                                  This bit has no effect on the PSTATE/CPSR[AP_PAN] when taking exceptions to any other
27896                                                                  exception level. */
27897         uint32_t e0e                   : 1;  /**< [ 24: 24](R/W) Endianness of explicit data accesses at EL0.
27898 
27899                                                                  If an implementation only supports Little-endian accesses at
27900                                                                      EL0 then this bit is RES0.
27901 
27902                                                                  If an implementation only supports Big-endian accesses at EL0
27903                                                                      then this bit is RES1.
27904 
27905                                                                  This bit has no effect on the endianness of LDTR* and STTR*
27906                                                                      instructions executed at EL1.
27907 
27908                                                                  0 = Explicit data accesses at EL0 are little-endian.
27909                                                                  1 = Explicit data accesses at EL0 are big-endian. */
27910         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
27911                                                                   Explicit data accesses at EL1.
27912                                                                   Stage 1 translation table walks at EL1 and EL0.
27913 
27914                                                                  If an implementation does not provide Big-endian support, this
27915                                                                      bit is RES0. If it does not provide Little-endian support,
27916                                                                      this bit is RES1.
27917 
27918                                                                  The EE bit is permitted to be cached in a TLB.
27919 
27920                                                                  0 = Little-endian.
27921                                                                  1 = Big-endian. */
27922         uint32_t uci                   : 1;  /**< [ 26: 26](R/W) When set, enables EL0 access in AArch64 for DC CVAU, DC CIVAC,
27923                                                                      DC CVAC, and IC IVAU instructions. */
27924         uint32_t reserved_27           : 1;
27925         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
27926         uint32_t reserved_30_31        : 2;
27927 #endif /* Word 0 - End */
27928     } cn;
27929 };
27930 typedef union bdk_ap_sctlr_el2_e2h bdk_ap_sctlr_el2_e2h_t;
27931 
27932 #define BDK_AP_SCTLR_EL2_E2H BDK_AP_SCTLR_EL2_E2H_FUNC()
27933 static inline uint64_t BDK_AP_SCTLR_EL2_E2H_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SCTLR_EL2_E2H_FUNC(void)27934 static inline uint64_t BDK_AP_SCTLR_EL2_E2H_FUNC(void)
27935 {
27936     return 0x30401000010ll;
27937 }
27938 
27939 #define typedef_BDK_AP_SCTLR_EL2_E2H bdk_ap_sctlr_el2_e2h_t
27940 #define bustype_BDK_AP_SCTLR_EL2_E2H BDK_CSR_TYPE_SYSREG
27941 #define basename_BDK_AP_SCTLR_EL2_E2H "AP_SCTLR_EL2_E2H"
27942 #define busnum_BDK_AP_SCTLR_EL2_E2H 0
27943 #define arguments_BDK_AP_SCTLR_EL2_E2H -1,-1,-1,-1
27944 
27945 /**
27946  * Register (SYSREG) ap_sctlr_el3
27947  *
27948  * AP System Control Register
27949  * Provides top level control of the system, including its memory
27950  *     system, at EL3.
27951  */
27952 union bdk_ap_sctlr_el3
27953 {
27954     uint32_t u;
27955     struct bdk_ap_sctlr_el3_s
27956     {
27957 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27958         uint32_t reserved_30_31        : 2;
27959         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
27960         uint32_t reserved_26_27        : 2;
27961         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
27962                                                                   Explicit data accesses at EL3.
27963                                                                   Stage 1 translation table walks at EL3.
27964 
27965                                                                  If an implementation does not provide Big-endian support, this
27966                                                                      bit is RES0. If it does not provide Little-endian support,
27967                                                                      this bit is RES1.
27968 
27969                                                                  The EE bit is permitted to be cached in a TLB.
27970                                                                  0 = Little-endian.
27971                                                                  1 = Big-endian. */
27972         uint32_t reserved_24           : 1;
27973         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
27974         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
27975         uint32_t reserved_20_21        : 2;
27976         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
27977                                                                      used to require all memory regions with write permission to be
27978                                                                      treated as XN.
27979                                                                  The WXN bit is permitted to be cached in a TLB.
27980                                                                  0 = Regions with write permission are not forced to XN.
27981                                                                  1 = Regions with write permission are forced to XN. */
27982         uint32_t rsvd_18               : 1;  /**< [ 18: 18](RO) Reserved 1. */
27983         uint32_t reserved_17           : 1;
27984         uint32_t rsvd_16               : 1;  /**< [ 16: 16](RO) Reserved 1. */
27985         uint32_t reserved_13_15        : 3;
27986         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
27987                                                                      instruction caches at EL3:
27988 
27989                                                                  When this bit is 0, all EL3 Normal memory instruction accesses
27990                                                                      are Non-cacheable. This bit has no effect on the EL1&0 or EL2
27991                                                                      translation regimes.
27992 
27993                                                                  0 = Instruction caches disabled at EL3. If AP_SCTLR_EL3[M] is set to
27994                                                                      0, instruction accesses from stage 1 of the EL3 translation
27995                                                                      regime are to Normal memory, Outer Shareable, Inner Non-
27996                                                                      cacheable, Outer Non-cacheable.
27997                                                                  1 = Instruction caches enabled at EL3. If AP_SCTLR_EL3[M] is set to 0,
27998                                                                      instruction accesses from stage 1 of the EL3 translation
27999                                                                      regime are to Normal memory, Outer Shareable, Inner Write-
28000                                                                      Through, Outer Write-Through. */
28001         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
28002         uint32_t reserved_6_10         : 5;
28003         uint32_t rsvd_4_5              : 2;  /**< [  5:  4](RO) Reserved 1. */
28004         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack alignment check enable. When set, use of the stack
28005                                                                      pointer as the base address in a load/store instruction at
28006                                                                      this register's exception level must be aligned to a 16-byte
28007                                                                      boundary, or a stack alignment fault exception will be raised. */
28008         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
28009                                                                      caches at EL3.
28010 
28011                                                                  When this bit is 0, all EL3 normal memory data accesses and
28012                                                                      all accesses to the EL3 translation tables are Non-cacheable.
28013                                                                      This bit has no effect on the EL1&0 or EL2 translation
28014                                                                      regimes.
28015 
28016                                                                  0 = Data and unified caches disabled at EL3.
28017                                                                  1 = Data and unified caches enabled at EL3. */
28018         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
28019                                                                      fault checking:
28020 
28021                                                                  Load/store exclusive and load-acquire/store-release
28022                                                                      instructions have an alignment check regardless of the value
28023                                                                      of the A bit.
28024 
28025                                                                  0 = Alignment fault checking disabled.
28026                                                                  Instructions that load or store one or more registers, other
28027                                                                      than load/store exclusive and load-acquire/store-release, do
28028                                                                      not check that the address being accessed is aligned to the
28029                                                                      size of the data element(s) being accessed.
28030 
28031                                                                  1 = Alignment fault checking enabled.
28032                                                                  All instructions that load or store one or more registers have
28033                                                                      an alignment check that the address being accessed is aligned
28034                                                                      to the size of the data element(s) being accessed. If this
28035                                                                      check fails it causes an Alignment fault, which is taken as a
28036                                                                      Data Abort exception. */
28037         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL3 stage 1 address translation.
28038                                                                  0 = EL3 stage 1 address translation disabled.
28039                                                                  1 = EL3 stage 1 address translation enabled. */
28040 #else /* Word 0 - Little Endian */
28041         uint32_t m                     : 1;  /**< [  0:  0](R/W) MMU enable for EL3 stage 1 address translation.
28042                                                                  0 = EL3 stage 1 address translation disabled.
28043                                                                  1 = EL3 stage 1 address translation enabled. */
28044         uint32_t aa                    : 1;  /**< [  1:  1](R/W) Alignment check enable. This is the enable bit for Alignment
28045                                                                      fault checking:
28046 
28047                                                                  Load/store exclusive and load-acquire/store-release
28048                                                                      instructions have an alignment check regardless of the value
28049                                                                      of the A bit.
28050 
28051                                                                  0 = Alignment fault checking disabled.
28052                                                                  Instructions that load or store one or more registers, other
28053                                                                      than load/store exclusive and load-acquire/store-release, do
28054                                                                      not check that the address being accessed is aligned to the
28055                                                                      size of the data element(s) being accessed.
28056 
28057                                                                  1 = Alignment fault checking enabled.
28058                                                                  All instructions that load or store one or more registers have
28059                                                                      an alignment check that the address being accessed is aligned
28060                                                                      to the size of the data element(s) being accessed. If this
28061                                                                      check fails it causes an Alignment fault, which is taken as a
28062                                                                      Data Abort exception. */
28063         uint32_t cc                    : 1;  /**< [  2:  2](R/W) Cache enable. This is an enable bit for data and unified
28064                                                                      caches at EL3.
28065 
28066                                                                  When this bit is 0, all EL3 normal memory data accesses and
28067                                                                      all accesses to the EL3 translation tables are Non-cacheable.
28068                                                                      This bit has no effect on the EL1&0 or EL2 translation
28069                                                                      regimes.
28070 
28071                                                                  0 = Data and unified caches disabled at EL3.
28072                                                                  1 = Data and unified caches enabled at EL3. */
28073         uint32_t sa                    : 1;  /**< [  3:  3](R/W) Stack alignment check enable. When set, use of the stack
28074                                                                      pointer as the base address in a load/store instruction at
28075                                                                      this register's exception level must be aligned to a 16-byte
28076                                                                      boundary, or a stack alignment fault exception will be raised. */
28077         uint32_t rsvd_4_5              : 2;  /**< [  5:  4](RO) Reserved 1. */
28078         uint32_t reserved_6_10         : 5;
28079         uint32_t rsvd_11               : 1;  /**< [ 11: 11](RO) Reserved 1. */
28080         uint32_t i                     : 1;  /**< [ 12: 12](R/W) Instruction cache enable. This is an enable bit for
28081                                                                      instruction caches at EL3:
28082 
28083                                                                  When this bit is 0, all EL3 Normal memory instruction accesses
28084                                                                      are Non-cacheable. This bit has no effect on the EL1&0 or EL2
28085                                                                      translation regimes.
28086 
28087                                                                  0 = Instruction caches disabled at EL3. If AP_SCTLR_EL3[M] is set to
28088                                                                      0, instruction accesses from stage 1 of the EL3 translation
28089                                                                      regime are to Normal memory, Outer Shareable, Inner Non-
28090                                                                      cacheable, Outer Non-cacheable.
28091                                                                  1 = Instruction caches enabled at EL3. If AP_SCTLR_EL3[M] is set to 0,
28092                                                                      instruction accesses from stage 1 of the EL3 translation
28093                                                                      regime are to Normal memory, Outer Shareable, Inner Write-
28094                                                                      Through, Outer Write-Through. */
28095         uint32_t reserved_13_15        : 3;
28096         uint32_t rsvd_16               : 1;  /**< [ 16: 16](RO) Reserved 1. */
28097         uint32_t reserved_17           : 1;
28098         uint32_t rsvd_18               : 1;  /**< [ 18: 18](RO) Reserved 1. */
28099         uint32_t wxn                   : 1;  /**< [ 19: 19](R/W) Write permission implies XN (Execute Never). This bit can be
28100                                                                      used to require all memory regions with write permission to be
28101                                                                      treated as XN.
28102                                                                  The WXN bit is permitted to be cached in a TLB.
28103                                                                  0 = Regions with write permission are not forced to XN.
28104                                                                  1 = Regions with write permission are forced to XN. */
28105         uint32_t reserved_20_21        : 2;
28106         uint32_t rsvd_22               : 1;  /**< [ 22: 22](RO) Reserved 1. */
28107         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
28108         uint32_t reserved_24           : 1;
28109         uint32_t ee                    : 1;  /**< [ 25: 25](R/W) Exception Endianness. This bit controls the endianness for:
28110                                                                   Explicit data accesses at EL3.
28111                                                                   Stage 1 translation table walks at EL3.
28112 
28113                                                                  If an implementation does not provide Big-endian support, this
28114                                                                      bit is RES0. If it does not provide Little-endian support,
28115                                                                      this bit is RES1.
28116 
28117                                                                  The EE bit is permitted to be cached in a TLB.
28118                                                                  0 = Little-endian.
28119                                                                  1 = Big-endian. */
28120         uint32_t reserved_26_27        : 2;
28121         uint32_t rsvd_28_29            : 2;  /**< [ 29: 28](RO) Reserved 1. */
28122         uint32_t reserved_30_31        : 2;
28123 #endif /* Word 0 - End */
28124     } s;
28125     /* struct bdk_ap_sctlr_el3_s cn; */
28126 };
28127 typedef union bdk_ap_sctlr_el3 bdk_ap_sctlr_el3_t;
28128 
28129 #define BDK_AP_SCTLR_EL3 BDK_AP_SCTLR_EL3_FUNC()
28130 static inline uint64_t BDK_AP_SCTLR_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SCTLR_EL3_FUNC(void)28131 static inline uint64_t BDK_AP_SCTLR_EL3_FUNC(void)
28132 {
28133     return 0x30601000000ll;
28134 }
28135 
28136 #define typedef_BDK_AP_SCTLR_EL3 bdk_ap_sctlr_el3_t
28137 #define bustype_BDK_AP_SCTLR_EL3 BDK_CSR_TYPE_SYSREG
28138 #define basename_BDK_AP_SCTLR_EL3 "AP_SCTLR_EL3"
28139 #define busnum_BDK_AP_SCTLR_EL3 0
28140 #define arguments_BDK_AP_SCTLR_EL3 -1,-1,-1,-1
28141 
28142 /**
28143  * Register (SYSREG) ap_sder32_el3
28144  *
28145  * AP AArch32 Secure Debug Enable Register
28146  * Allows access to the AArch32 register SDER from AArch64 state
28147  *     only. Its value has no effect on execution in AArch64 state.
28148  */
28149 union bdk_ap_sder32_el3
28150 {
28151     uint32_t u;
28152     struct bdk_ap_sder32_el3_s
28153     {
28154 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28155         uint32_t reserved_2_31         : 30;
28156         uint32_t suniden               : 1;  /**< [  1:  1](R/W) Secure User Non-Invasive Debug Enable:
28157                                                                  0 = Non-invasive debug not permitted in Secure EL0 mode.
28158                                                                  1 = Non-invasive debug permitted in Secure EL0 mode. */
28159         uint32_t suiden                : 1;  /**< [  0:  0](R/W) Secure User Invasive Debug Enable:
28160                                                                  0 = Invasive debug not permitted in Secure EL0 mode.
28161                                                                  1 = Invasive debug permitted in Secure EL0 mode. */
28162 #else /* Word 0 - Little Endian */
28163         uint32_t suiden                : 1;  /**< [  0:  0](R/W) Secure User Invasive Debug Enable:
28164                                                                  0 = Invasive debug not permitted in Secure EL0 mode.
28165                                                                  1 = Invasive debug permitted in Secure EL0 mode. */
28166         uint32_t suniden               : 1;  /**< [  1:  1](R/W) Secure User Non-Invasive Debug Enable:
28167                                                                  0 = Non-invasive debug not permitted in Secure EL0 mode.
28168                                                                  1 = Non-invasive debug permitted in Secure EL0 mode. */
28169         uint32_t reserved_2_31         : 30;
28170 #endif /* Word 0 - End */
28171     } s;
28172     /* struct bdk_ap_sder32_el3_s cn8; */
28173     struct bdk_ap_sder32_el3_cn9
28174     {
28175 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28176         uint32_t reserved_2_31         : 30;
28177         uint32_t suniden               : 1;  /**< [  1:  1](RAZ) Secure User Non-Invasive Debug Enable:
28178                                                                  0 = Non-invasive debug not permitted in Secure EL0 mode.
28179                                                                  1 = Non-invasive debug permitted in Secure EL0 mode. */
28180         uint32_t suiden                : 1;  /**< [  0:  0](RAZ) Secure User Invasive Debug Enable:
28181                                                                  0 = Invasive debug not permitted in Secure EL0 mode.
28182                                                                  1 = Invasive debug permitted in Secure EL0 mode. */
28183 #else /* Word 0 - Little Endian */
28184         uint32_t suiden                : 1;  /**< [  0:  0](RAZ) Secure User Invasive Debug Enable:
28185                                                                  0 = Invasive debug not permitted in Secure EL0 mode.
28186                                                                  1 = Invasive debug permitted in Secure EL0 mode. */
28187         uint32_t suniden               : 1;  /**< [  1:  1](RAZ) Secure User Non-Invasive Debug Enable:
28188                                                                  0 = Non-invasive debug not permitted in Secure EL0 mode.
28189                                                                  1 = Non-invasive debug permitted in Secure EL0 mode. */
28190         uint32_t reserved_2_31         : 30;
28191 #endif /* Word 0 - End */
28192     } cn9;
28193 };
28194 typedef union bdk_ap_sder32_el3 bdk_ap_sder32_el3_t;
28195 
28196 #define BDK_AP_SDER32_EL3 BDK_AP_SDER32_EL3_FUNC()
28197 static inline uint64_t BDK_AP_SDER32_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SDER32_EL3_FUNC(void)28198 static inline uint64_t BDK_AP_SDER32_EL3_FUNC(void)
28199 {
28200     return 0x30601010100ll;
28201 }
28202 
28203 #define typedef_BDK_AP_SDER32_EL3 bdk_ap_sder32_el3_t
28204 #define bustype_BDK_AP_SDER32_EL3 BDK_CSR_TYPE_SYSREG
28205 #define basename_BDK_AP_SDER32_EL3 "AP_SDER32_EL3"
28206 #define busnum_BDK_AP_SDER32_EL3 0
28207 #define arguments_BDK_AP_SDER32_EL3 -1,-1,-1,-1
28208 
28209 /**
28210  * Register (SYSREG) ap_sp_el0
28211  *
28212  * AP Stack Pointer EL0 Register
28213  * Holds the stack pointer if AP_SPSel[SP] is 0, or the stack pointer
28214  *     for EL0 if AP_SPSel[SP] is 1.
28215  */
28216 union bdk_ap_sp_el0
28217 {
28218     uint64_t u;
28219     struct bdk_ap_sp_el0_s
28220     {
28221 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28222         uint64_t data                  : 64; /**< [ 63:  0](R/W) Stack pointer. */
28223 #else /* Word 0 - Little Endian */
28224         uint64_t data                  : 64; /**< [ 63:  0](R/W) Stack pointer. */
28225 #endif /* Word 0 - End */
28226     } s;
28227     /* struct bdk_ap_sp_el0_s cn; */
28228 };
28229 typedef union bdk_ap_sp_el0 bdk_ap_sp_el0_t;
28230 
28231 #define BDK_AP_SP_EL0 BDK_AP_SP_EL0_FUNC()
28232 static inline uint64_t BDK_AP_SP_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SP_EL0_FUNC(void)28233 static inline uint64_t BDK_AP_SP_EL0_FUNC(void)
28234 {
28235     return 0x30004010000ll;
28236 }
28237 
28238 #define typedef_BDK_AP_SP_EL0 bdk_ap_sp_el0_t
28239 #define bustype_BDK_AP_SP_EL0 BDK_CSR_TYPE_SYSREG
28240 #define basename_BDK_AP_SP_EL0 "AP_SP_EL0"
28241 #define busnum_BDK_AP_SP_EL0 0
28242 #define arguments_BDK_AP_SP_EL0 -1,-1,-1,-1
28243 
28244 /**
28245  * Register (SYSREG) ap_sp_el1
28246  *
28247  * AP Stack Pointer EL1 Register
28248  * Holds the stack pointer for EL1 if AP_SPSel[SP] is 1 (the stack
28249  *     pointer selected is SP_ELx).
28250  */
28251 union bdk_ap_sp_el1
28252 {
28253     uint64_t u;
28254     struct bdk_ap_sp_el1_s
28255     {
28256 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28257         uint64_t data                  : 64; /**< [ 63:  0](R/W) Stack pointer. */
28258 #else /* Word 0 - Little Endian */
28259         uint64_t data                  : 64; /**< [ 63:  0](R/W) Stack pointer. */
28260 #endif /* Word 0 - End */
28261     } s;
28262     /* struct bdk_ap_sp_el1_s cn; */
28263 };
28264 typedef union bdk_ap_sp_el1 bdk_ap_sp_el1_t;
28265 
28266 #define BDK_AP_SP_EL1 BDK_AP_SP_EL1_FUNC()
28267 static inline uint64_t BDK_AP_SP_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SP_EL1_FUNC(void)28268 static inline uint64_t BDK_AP_SP_EL1_FUNC(void)
28269 {
28270     return 0x30404010000ll;
28271 }
28272 
28273 #define typedef_BDK_AP_SP_EL1 bdk_ap_sp_el1_t
28274 #define bustype_BDK_AP_SP_EL1 BDK_CSR_TYPE_SYSREG
28275 #define basename_BDK_AP_SP_EL1 "AP_SP_EL1"
28276 #define busnum_BDK_AP_SP_EL1 0
28277 #define arguments_BDK_AP_SP_EL1 -1,-1,-1,-1
28278 
28279 /**
28280  * Register (SYSREG) ap_sp_el2
28281  *
28282  * AP Stack Pointer EL2 Register
28283  * Holds the stack pointer for EL2 if AP_SPSel[SP] is 1 (the stack
28284  *     pointer selected is SP_ELx).
28285  */
28286 union bdk_ap_sp_el2
28287 {
28288     uint64_t u;
28289     struct bdk_ap_sp_el2_s
28290     {
28291 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28292         uint64_t data                  : 64; /**< [ 63:  0](R/W) Stack pointer. */
28293 #else /* Word 0 - Little Endian */
28294         uint64_t data                  : 64; /**< [ 63:  0](R/W) Stack pointer. */
28295 #endif /* Word 0 - End */
28296     } s;
28297     /* struct bdk_ap_sp_el2_s cn; */
28298 };
28299 typedef union bdk_ap_sp_el2 bdk_ap_sp_el2_t;
28300 
28301 #define BDK_AP_SP_EL2 BDK_AP_SP_EL2_FUNC()
28302 static inline uint64_t BDK_AP_SP_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SP_EL2_FUNC(void)28303 static inline uint64_t BDK_AP_SP_EL2_FUNC(void)
28304 {
28305     return 0x30604010000ll;
28306 }
28307 
28308 #define typedef_BDK_AP_SP_EL2 bdk_ap_sp_el2_t
28309 #define bustype_BDK_AP_SP_EL2 BDK_CSR_TYPE_SYSREG
28310 #define basename_BDK_AP_SP_EL2 "AP_SP_EL2"
28311 #define busnum_BDK_AP_SP_EL2 0
28312 #define arguments_BDK_AP_SP_EL2 -1,-1,-1,-1
28313 
28314 /**
28315  * Register (SYSREG) ap_spsel
28316  *
28317  * AP Stack Pointer Select Register
28318  * Allows the Stack Pointer to be selected between AP_SP_EL0 and
28319  *     SP_ELx.
28320  */
28321 union bdk_ap_spsel
28322 {
28323     uint32_t u;
28324     struct bdk_ap_spsel_s
28325     {
28326 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28327         uint32_t reserved_1_31         : 31;
28328         uint32_t sp                    : 1;  /**< [  0:  0](R/W) Stack pointer to use.
28329                                                                  0 = Use AP_SP_EL0 at all Exception levels.
28330                                                                  1 = Use SP_ELx for Exception level ELx. */
28331 #else /* Word 0 - Little Endian */
28332         uint32_t sp                    : 1;  /**< [  0:  0](R/W) Stack pointer to use.
28333                                                                  0 = Use AP_SP_EL0 at all Exception levels.
28334                                                                  1 = Use SP_ELx for Exception level ELx. */
28335         uint32_t reserved_1_31         : 31;
28336 #endif /* Word 0 - End */
28337     } s;
28338     /* struct bdk_ap_spsel_s cn; */
28339 };
28340 typedef union bdk_ap_spsel bdk_ap_spsel_t;
28341 
28342 #define BDK_AP_SPSEL BDK_AP_SPSEL_FUNC()
28343 static inline uint64_t BDK_AP_SPSEL_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SPSEL_FUNC(void)28344 static inline uint64_t BDK_AP_SPSEL_FUNC(void)
28345 {
28346     return 0x30004020000ll;
28347 }
28348 
28349 #define typedef_BDK_AP_SPSEL bdk_ap_spsel_t
28350 #define bustype_BDK_AP_SPSEL BDK_CSR_TYPE_SYSREG
28351 #define basename_BDK_AP_SPSEL "AP_SPSEL"
28352 #define busnum_BDK_AP_SPSEL 0
28353 #define arguments_BDK_AP_SPSEL -1,-1,-1,-1
28354 
28355 /**
28356  * Register (SYSREG) ap_spsr_abt
28357  *
28358  * AP Saved Program Status Abort-mode Register
28359  * Holds the saved processor state when an exception is taken to
28360  *     Abort mode.
28361  * If EL1 does not support execution in AArch32, this register is RES0.
28362  */
28363 union bdk_ap_spsr_abt
28364 {
28365     uint32_t u;
28366     struct bdk_ap_spsr_abt_s
28367     {
28368 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28369         uint32_t reserved_0_31         : 32;
28370 #else /* Word 0 - Little Endian */
28371         uint32_t reserved_0_31         : 32;
28372 #endif /* Word 0 - End */
28373     } s;
28374     /* struct bdk_ap_spsr_abt_s cn; */
28375 };
28376 typedef union bdk_ap_spsr_abt bdk_ap_spsr_abt_t;
28377 
28378 #define BDK_AP_SPSR_ABT BDK_AP_SPSR_ABT_FUNC()
28379 static inline uint64_t BDK_AP_SPSR_ABT_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SPSR_ABT_FUNC(void)28380 static inline uint64_t BDK_AP_SPSR_ABT_FUNC(void)
28381 {
28382     return 0x30404030100ll;
28383 }
28384 
28385 #define typedef_BDK_AP_SPSR_ABT bdk_ap_spsr_abt_t
28386 #define bustype_BDK_AP_SPSR_ABT BDK_CSR_TYPE_SYSREG
28387 #define basename_BDK_AP_SPSR_ABT "AP_SPSR_ABT"
28388 #define busnum_BDK_AP_SPSR_ABT 0
28389 #define arguments_BDK_AP_SPSR_ABT -1,-1,-1,-1
28390 
28391 /**
28392  * Register (SYSREG) ap_spsr_el#
28393  *
28394  * AP Saved Processor State Register
28395  * Holds the saved processor state when an exception is taken to
28396  *     EL*.
28397  */
28398 union bdk_ap_spsr_elx
28399 {
28400     uint32_t u;
28401     struct bdk_ap_spsr_elx_s
28402     {
28403 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28404         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Set to the value of CPSR[N] on taking an exception to Monitor
28405                                                                      mode, and copied to CPSR[N] on executing an exception return
28406                                                                      operation in Monitor mode. */
28407         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Set to the value of CPSR[Z] on taking an exception to Monitor
28408                                                                      mode, and copied to CPSR[Z] on executing an exception return
28409                                                                      operation in Monitor mode. */
28410         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Set to the value of CPSR[C] on taking an exception to Monitor
28411                                                                      mode, and copied to CPSR[C] on executing an exception return
28412                                                                      operation in Monitor mode. */
28413         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Set to the value of CPSR[V] on taking an exception to Monitor
28414                                                                      mode, and copied to CPSR[V] on executing an exception return
28415                                                                      operation in Monitor mode. */
28416         uint32_t reserved_24_27        : 4;
28417         uint32_t uao                   : 1;  /**< [ 23: 23](R/W) User access override. SPSR_EL[23] only. */
28418         uint32_t pan                   : 1;  /**< [ 22: 22](R/W) 0 = Has no effect on the translation system.
28419                                                                  1 = Disables data read or data write access from EL1 (or EL2
28420                                                                     when AP_HCR_EL2[E2H] == 1 && AP_HCR_EL2[TGE] == 1) to a virtual
28421                                                                     address where access to the virtual address at EL0 is
28422                                                                     permitted at stage 1 by the combination of the AP[1] bit
28423                                                                     and the APTable[0] bits (if appropriate).  That is, when
28424                                                                     AP[1] == 1 && APTable[0] == 0 for all APTable bits
28425                                                                     associated with that virtual address.
28426 
28427                                                                     The AP_PAN bit has no effect on instruction accesses.
28428 
28429                                                                     If access is disabled, then the access will give rise to
28430                                                                     a stage 1 permission fault, taken in the same way as all
28431                                                                     other stage 1 permission faults. */
28432         uint32_t ss                    : 1;  /**< [ 21: 21](R/W) Software step. Indicates whether software step was
28433                                                                  enabled when an exception was taken. */
28434         uint32_t il                    : 1;  /**< [ 20: 20](R/W) The IL bit is added to process state to indicate that on
28435                                                                  exception return or as a result of an explicit change of the
28436                                                                  CPSR mode field in AArch32, an illegal state or mode was
28437                                                                  indicated, as described in section 3.5.6.3. Its value is
28438                                                                  reflected in the SPSR when it is set at a time when the
28439                                                                  process state IL bit was set either:
28440 
28441                                                                  - As a result of an UNdefined exception caused by the process
28442                                                                      state IL bit being set, or
28443 
28444                                                                  - Where execution was pre-empted between setting the process
28445                                                                      state IL bit and an UNdefined exception being taken.
28446 
28447                                                                  The IL bit is added as part of the ARMv8 architecture, but
28448                                                                  applies to execution in both AArch32 and AArch64. It is
28449                                                                  allocated into bit[20] of the SPSR. It is impossible for
28450                                                                  software to observe the value 1 in the CPSR in AArch32, or
28451                                                                  to observe the current Process State value in AArch64. */
28452         uint32_t reserved_10_19        : 10;
28453         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28454         uint32_t aa                    : 1;  /**< [  8:  8](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28455         uint32_t i                     : 1;  /**< [  7:  7](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28456         uint32_t f                     : 1;  /**< [  6:  6](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28457         uint32_t reserved_5            : 1;
28458         uint32_t from32                : 1;  /**< [  4:  4](R/W) 0 = Exception came from 64bit
28459                                                                  1 = Exception came from 32bit
28460                                                                  If 32bit is not implemented, then this causes an illegal state
28461                                                                  exception. */
28462         uint32_t el                    : 2;  /**< [  3:  2](R/W) Current exception level 00 - EL0 01 -EL1, 10 - EL2, 11 - EL3. */
28463         uint32_t reserved_1            : 1;
28464         uint32_t sp                    : 1;  /**< [  0:  0](R/W) AArch64 only - Stack Pointer selection - 0 - SP0, 1 - SPx. */
28465 #else /* Word 0 - Little Endian */
28466         uint32_t sp                    : 1;  /**< [  0:  0](R/W) AArch64 only - Stack Pointer selection - 0 - SP0, 1 - SPx. */
28467         uint32_t reserved_1            : 1;
28468         uint32_t el                    : 2;  /**< [  3:  2](R/W) Current exception level 00 - EL0 01 -EL1, 10 - EL2, 11 - EL3. */
28469         uint32_t from32                : 1;  /**< [  4:  4](R/W) 0 = Exception came from 64bit
28470                                                                  1 = Exception came from 32bit
28471                                                                  If 32bit is not implemented, then this causes an illegal state
28472                                                                  exception. */
28473         uint32_t reserved_5            : 1;
28474         uint32_t f                     : 1;  /**< [  6:  6](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28475         uint32_t i                     : 1;  /**< [  7:  7](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28476         uint32_t aa                    : 1;  /**< [  8:  8](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28477         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28478         uint32_t reserved_10_19        : 10;
28479         uint32_t il                    : 1;  /**< [ 20: 20](R/W) The IL bit is added to process state to indicate that on
28480                                                                  exception return or as a result of an explicit change of the
28481                                                                  CPSR mode field in AArch32, an illegal state or mode was
28482                                                                  indicated, as described in section 3.5.6.3. Its value is
28483                                                                  reflected in the SPSR when it is set at a time when the
28484                                                                  process state IL bit was set either:
28485 
28486                                                                  - As a result of an UNdefined exception caused by the process
28487                                                                      state IL bit being set, or
28488 
28489                                                                  - Where execution was pre-empted between setting the process
28490                                                                      state IL bit and an UNdefined exception being taken.
28491 
28492                                                                  The IL bit is added as part of the ARMv8 architecture, but
28493                                                                  applies to execution in both AArch32 and AArch64. It is
28494                                                                  allocated into bit[20] of the SPSR. It is impossible for
28495                                                                  software to observe the value 1 in the CPSR in AArch32, or
28496                                                                  to observe the current Process State value in AArch64. */
28497         uint32_t ss                    : 1;  /**< [ 21: 21](R/W) Software step. Indicates whether software step was
28498                                                                  enabled when an exception was taken. */
28499         uint32_t pan                   : 1;  /**< [ 22: 22](R/W) 0 = Has no effect on the translation system.
28500                                                                  1 = Disables data read or data write access from EL1 (or EL2
28501                                                                     when AP_HCR_EL2[E2H] == 1 && AP_HCR_EL2[TGE] == 1) to a virtual
28502                                                                     address where access to the virtual address at EL0 is
28503                                                                     permitted at stage 1 by the combination of the AP[1] bit
28504                                                                     and the APTable[0] bits (if appropriate).  That is, when
28505                                                                     AP[1] == 1 && APTable[0] == 0 for all APTable bits
28506                                                                     associated with that virtual address.
28507 
28508                                                                     The AP_PAN bit has no effect on instruction accesses.
28509 
28510                                                                     If access is disabled, then the access will give rise to
28511                                                                     a stage 1 permission fault, taken in the same way as all
28512                                                                     other stage 1 permission faults. */
28513         uint32_t uao                   : 1;  /**< [ 23: 23](R/W) User access override. SPSR_EL[23] only. */
28514         uint32_t reserved_24_27        : 4;
28515         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Set to the value of CPSR[V] on taking an exception to Monitor
28516                                                                      mode, and copied to CPSR[V] on executing an exception return
28517                                                                      operation in Monitor mode. */
28518         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Set to the value of CPSR[C] on taking an exception to Monitor
28519                                                                      mode, and copied to CPSR[C] on executing an exception return
28520                                                                      operation in Monitor mode. */
28521         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Set to the value of CPSR[Z] on taking an exception to Monitor
28522                                                                      mode, and copied to CPSR[Z] on executing an exception return
28523                                                                      operation in Monitor mode. */
28524         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Set to the value of CPSR[N] on taking an exception to Monitor
28525                                                                      mode, and copied to CPSR[N] on executing an exception return
28526                                                                      operation in Monitor mode. */
28527 #endif /* Word 0 - End */
28528     } s;
28529     struct bdk_ap_spsr_elx_cn8
28530     {
28531 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28532         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Set to the value of CPSR[N] on taking an exception to Monitor
28533                                                                      mode, and copied to CPSR[N] on executing an exception return
28534                                                                      operation in Monitor mode. */
28535         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Set to the value of CPSR[Z] on taking an exception to Monitor
28536                                                                      mode, and copied to CPSR[Z] on executing an exception return
28537                                                                      operation in Monitor mode. */
28538         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Set to the value of CPSR[C] on taking an exception to Monitor
28539                                                                      mode, and copied to CPSR[C] on executing an exception return
28540                                                                      operation in Monitor mode. */
28541         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Set to the value of CPSR[V] on taking an exception to Monitor
28542                                                                      mode, and copied to CPSR[V] on executing an exception return
28543                                                                      operation in Monitor mode. */
28544         uint32_t reserved_23_27        : 5;
28545         uint32_t pan                   : 1;  /**< [ 22: 22](R/W) 0 = Has no effect on the translation system.
28546                                                                  1 = Disables data read or data write access from EL1 (or EL2
28547                                                                     when AP_HCR_EL2[E2H] == 1 && AP_HCR_EL2[TGE] == 1) to a virtual
28548                                                                     address where access to the virtual address at EL0 is
28549                                                                     permitted at stage 1 by the combination of the AP[1] bit
28550                                                                     and the APTable[0] bits (if appropriate).  That is, when
28551                                                                     AP[1] == 1 && APTable[0] == 0 for all APTable bits
28552                                                                     associated with that virtual address.
28553 
28554                                                                     The AP_PAN bit has no effect on instruction accesses.
28555 
28556                                                                     If access is disabled, then the access will give rise to
28557                                                                     a stage 1 permission fault, taken in the same way as all
28558                                                                     other stage 1 permission faults. */
28559         uint32_t ss                    : 1;  /**< [ 21: 21](R/W) Software step. Indicates whether software step was
28560                                                                  enabled when an exception was taken. */
28561         uint32_t il                    : 1;  /**< [ 20: 20](R/W) The IL bit is added to process state to indicate that on
28562                                                                  exception return or as a result of an explicit change of the
28563                                                                  CPSR mode field in AArch32, an illegal state or mode was
28564                                                                  indicated, as described in section 3.5.6.3. Its value is
28565                                                                  reflected in the SPSR when it is set at a time when the
28566                                                                  process state IL bit was set either:
28567 
28568                                                                  - As a result of an UNdefined exception caused by the process
28569                                                                      state IL bit being set, or
28570 
28571                                                                  - Where execution was pre-empted between setting the process
28572                                                                      state IL bit and an UNdefined exception being taken.
28573 
28574                                                                  The IL bit is added as part of the ARMv8 architecture, but
28575                                                                  applies to execution in both AArch32 and AArch64. It is
28576                                                                  allocated into bit[20] of the SPSR. It is impossible for
28577                                                                  software to observe the value 1 in the CPSR in AArch32, or
28578                                                                  to observe the current Process State value in AArch64. */
28579         uint32_t reserved_10_19        : 10;
28580         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28581         uint32_t aa                    : 1;  /**< [  8:  8](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28582         uint32_t i                     : 1;  /**< [  7:  7](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28583         uint32_t f                     : 1;  /**< [  6:  6](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28584         uint32_t reserved_5            : 1;
28585         uint32_t from32                : 1;  /**< [  4:  4](R/W) 0 = Exception came from 64bit
28586                                                                  1 = Exception came from 32bit
28587                                                                  If 32bit is not implemented, then this causes an illegal state
28588                                                                  exception. */
28589         uint32_t el                    : 2;  /**< [  3:  2](R/W) Current exception level 00 - EL0 01 -EL1, 10 - EL2, 11 - EL3. */
28590         uint32_t reserved_1            : 1;
28591         uint32_t sp                    : 1;  /**< [  0:  0](R/W) AArch64 only - Stack Pointer selection - 0 - SP0, 1 - SPx. */
28592 #else /* Word 0 - Little Endian */
28593         uint32_t sp                    : 1;  /**< [  0:  0](R/W) AArch64 only - Stack Pointer selection - 0 - SP0, 1 - SPx. */
28594         uint32_t reserved_1            : 1;
28595         uint32_t el                    : 2;  /**< [  3:  2](R/W) Current exception level 00 - EL0 01 -EL1, 10 - EL2, 11 - EL3. */
28596         uint32_t from32                : 1;  /**< [  4:  4](R/W) 0 = Exception came from 64bit
28597                                                                  1 = Exception came from 32bit
28598                                                                  If 32bit is not implemented, then this causes an illegal state
28599                                                                  exception. */
28600         uint32_t reserved_5            : 1;
28601         uint32_t f                     : 1;  /**< [  6:  6](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28602         uint32_t i                     : 1;  /**< [  7:  7](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28603         uint32_t aa                    : 1;  /**< [  8:  8](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28604         uint32_t dd                    : 1;  /**< [  9:  9](R/W) Interrupt masks - can also be accessed as PSTATE[D,A,I,F]. */
28605         uint32_t reserved_10_19        : 10;
28606         uint32_t il                    : 1;  /**< [ 20: 20](R/W) The IL bit is added to process state to indicate that on
28607                                                                  exception return or as a result of an explicit change of the
28608                                                                  CPSR mode field in AArch32, an illegal state or mode was
28609                                                                  indicated, as described in section 3.5.6.3. Its value is
28610                                                                  reflected in the SPSR when it is set at a time when the
28611                                                                  process state IL bit was set either:
28612 
28613                                                                  - As a result of an UNdefined exception caused by the process
28614                                                                      state IL bit being set, or
28615 
28616                                                                  - Where execution was pre-empted between setting the process
28617                                                                      state IL bit and an UNdefined exception being taken.
28618 
28619                                                                  The IL bit is added as part of the ARMv8 architecture, but
28620                                                                  applies to execution in both AArch32 and AArch64. It is
28621                                                                  allocated into bit[20] of the SPSR. It is impossible for
28622                                                                  software to observe the value 1 in the CPSR in AArch32, or
28623                                                                  to observe the current Process State value in AArch64. */
28624         uint32_t ss                    : 1;  /**< [ 21: 21](R/W) Software step. Indicates whether software step was
28625                                                                  enabled when an exception was taken. */
28626         uint32_t pan                   : 1;  /**< [ 22: 22](R/W) 0 = Has no effect on the translation system.
28627                                                                  1 = Disables data read or data write access from EL1 (or EL2
28628                                                                     when AP_HCR_EL2[E2H] == 1 && AP_HCR_EL2[TGE] == 1) to a virtual
28629                                                                     address where access to the virtual address at EL0 is
28630                                                                     permitted at stage 1 by the combination of the AP[1] bit
28631                                                                     and the APTable[0] bits (if appropriate).  That is, when
28632                                                                     AP[1] == 1 && APTable[0] == 0 for all APTable bits
28633                                                                     associated with that virtual address.
28634 
28635                                                                     The AP_PAN bit has no effect on instruction accesses.
28636 
28637                                                                     If access is disabled, then the access will give rise to
28638                                                                     a stage 1 permission fault, taken in the same way as all
28639                                                                     other stage 1 permission faults. */
28640         uint32_t reserved_23_27        : 5;
28641         uint32_t v                     : 1;  /**< [ 28: 28](R/W) Set to the value of CPSR[V] on taking an exception to Monitor
28642                                                                      mode, and copied to CPSR[V] on executing an exception return
28643                                                                      operation in Monitor mode. */
28644         uint32_t cc                    : 1;  /**< [ 29: 29](R/W) Set to the value of CPSR[C] on taking an exception to Monitor
28645                                                                      mode, and copied to CPSR[C] on executing an exception return
28646                                                                      operation in Monitor mode. */
28647         uint32_t z                     : 1;  /**< [ 30: 30](R/W) Set to the value of CPSR[Z] on taking an exception to Monitor
28648                                                                      mode, and copied to CPSR[Z] on executing an exception return
28649                                                                      operation in Monitor mode. */
28650         uint32_t n                     : 1;  /**< [ 31: 31](R/W) Set to the value of CPSR[N] on taking an exception to Monitor
28651                                                                      mode, and copied to CPSR[N] on executing an exception return
28652                                                                      operation in Monitor mode. */
28653 #endif /* Word 0 - End */
28654     } cn8;
28655     /* struct bdk_ap_spsr_elx_s cn9; */
28656 };
28657 typedef union bdk_ap_spsr_elx bdk_ap_spsr_elx_t;
28658 
28659 static inline uint64_t BDK_AP_SPSR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_SPSR_ELX(unsigned long a)28660 static inline uint64_t BDK_AP_SPSR_ELX(unsigned long a)
28661 {
28662     if ((a>=1)&&(a<=3))
28663         return 0x30004000000ll + 0ll * ((a) & 0x3);
28664     __bdk_csr_fatal("AP_SPSR_ELX", 1, a, 0, 0, 0);
28665 }
28666 
28667 #define typedef_BDK_AP_SPSR_ELX(a) bdk_ap_spsr_elx_t
28668 #define bustype_BDK_AP_SPSR_ELX(a) BDK_CSR_TYPE_SYSREG
28669 #define basename_BDK_AP_SPSR_ELX(a) "AP_SPSR_ELX"
28670 #define busnum_BDK_AP_SPSR_ELX(a) (a)
28671 #define arguments_BDK_AP_SPSR_ELX(a) (a),-1,-1,-1
28672 
28673 /**
28674  * Register (SYSREG) ap_spsr_el12
28675  *
28676  * AP Saved Processor State EL2/3 Alias Register
28677  * Allows EL2 and EL3 access to SPSR_EL1 when AP_HCR_EL2[E2H]==1.
28678  */
28679 union bdk_ap_spsr_el12
28680 {
28681     uint32_t u;
28682     struct bdk_ap_spsr_el12_s
28683     {
28684 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28685         uint32_t reserved_0_31         : 32;
28686 #else /* Word 0 - Little Endian */
28687         uint32_t reserved_0_31         : 32;
28688 #endif /* Word 0 - End */
28689     } s;
28690     /* struct bdk_ap_spsr_el12_s cn; */
28691 };
28692 typedef union bdk_ap_spsr_el12 bdk_ap_spsr_el12_t;
28693 
28694 #define BDK_AP_SPSR_EL12 BDK_AP_SPSR_EL12_FUNC()
28695 static inline uint64_t BDK_AP_SPSR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SPSR_EL12_FUNC(void)28696 static inline uint64_t BDK_AP_SPSR_EL12_FUNC(void)
28697 {
28698     return 0x30504000000ll;
28699 }
28700 
28701 #define typedef_BDK_AP_SPSR_EL12 bdk_ap_spsr_el12_t
28702 #define bustype_BDK_AP_SPSR_EL12 BDK_CSR_TYPE_SYSREG
28703 #define basename_BDK_AP_SPSR_EL12 "AP_SPSR_EL12"
28704 #define busnum_BDK_AP_SPSR_EL12 0
28705 #define arguments_BDK_AP_SPSR_EL12 -1,-1,-1,-1
28706 
28707 /**
28708  * Register (SYSREG) ap_spsr_fiq
28709  *
28710  * AP Saved Program Status FIQ-mode Register
28711  * Holds the saved processor state when an exception is taken to
28712  *     FIQ mode.
28713  * If EL1 does not support execution in AArch32, this register is RES0.
28714  */
28715 union bdk_ap_spsr_fiq
28716 {
28717     uint32_t u;
28718     struct bdk_ap_spsr_fiq_s
28719     {
28720 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28721         uint32_t reserved_0_31         : 32;
28722 #else /* Word 0 - Little Endian */
28723         uint32_t reserved_0_31         : 32;
28724 #endif /* Word 0 - End */
28725     } s;
28726     /* struct bdk_ap_spsr_fiq_s cn; */
28727 };
28728 typedef union bdk_ap_spsr_fiq bdk_ap_spsr_fiq_t;
28729 
28730 #define BDK_AP_SPSR_FIQ BDK_AP_SPSR_FIQ_FUNC()
28731 static inline uint64_t BDK_AP_SPSR_FIQ_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SPSR_FIQ_FUNC(void)28732 static inline uint64_t BDK_AP_SPSR_FIQ_FUNC(void)
28733 {
28734     return 0x30404030300ll;
28735 }
28736 
28737 #define typedef_BDK_AP_SPSR_FIQ bdk_ap_spsr_fiq_t
28738 #define bustype_BDK_AP_SPSR_FIQ BDK_CSR_TYPE_SYSREG
28739 #define basename_BDK_AP_SPSR_FIQ "AP_SPSR_FIQ"
28740 #define busnum_BDK_AP_SPSR_FIQ 0
28741 #define arguments_BDK_AP_SPSR_FIQ -1,-1,-1,-1
28742 
28743 /**
28744  * Register (SYSREG) ap_spsr_irq
28745  *
28746  * AP Saved Program Status IRQ-mode Register
28747  * Holds the saved processor state when an exception is taken to
28748  *     IRQ mode.
28749  * If EL1 does not support execution in AArch32, this register is RES0.
28750  */
28751 union bdk_ap_spsr_irq
28752 {
28753     uint32_t u;
28754     struct bdk_ap_spsr_irq_s
28755     {
28756 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28757         uint32_t reserved_0_31         : 32;
28758 #else /* Word 0 - Little Endian */
28759         uint32_t reserved_0_31         : 32;
28760 #endif /* Word 0 - End */
28761     } s;
28762     /* struct bdk_ap_spsr_irq_s cn; */
28763 };
28764 typedef union bdk_ap_spsr_irq bdk_ap_spsr_irq_t;
28765 
28766 #define BDK_AP_SPSR_IRQ BDK_AP_SPSR_IRQ_FUNC()
28767 static inline uint64_t BDK_AP_SPSR_IRQ_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SPSR_IRQ_FUNC(void)28768 static inline uint64_t BDK_AP_SPSR_IRQ_FUNC(void)
28769 {
28770     return 0x30404030000ll;
28771 }
28772 
28773 #define typedef_BDK_AP_SPSR_IRQ bdk_ap_spsr_irq_t
28774 #define bustype_BDK_AP_SPSR_IRQ BDK_CSR_TYPE_SYSREG
28775 #define basename_BDK_AP_SPSR_IRQ "AP_SPSR_IRQ"
28776 #define busnum_BDK_AP_SPSR_IRQ 0
28777 #define arguments_BDK_AP_SPSR_IRQ -1,-1,-1,-1
28778 
28779 /**
28780  * Register (SYSREG) ap_spsr_und
28781  *
28782  * AP Saved Program Status Undefined-mode Register
28783  * Holds the saved processor state when an exception is taken to
28784  *     Undefined mode.
28785  * If EL1 does not support execution in AArch32, this register is RES0.
28786  */
28787 union bdk_ap_spsr_und
28788 {
28789     uint32_t u;
28790     struct bdk_ap_spsr_und_s
28791     {
28792 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28793         uint32_t reserved_0_31         : 32;
28794 #else /* Word 0 - Little Endian */
28795         uint32_t reserved_0_31         : 32;
28796 #endif /* Word 0 - End */
28797     } s;
28798     /* struct bdk_ap_spsr_und_s cn; */
28799 };
28800 typedef union bdk_ap_spsr_und bdk_ap_spsr_und_t;
28801 
28802 #define BDK_AP_SPSR_UND BDK_AP_SPSR_UND_FUNC()
28803 static inline uint64_t BDK_AP_SPSR_UND_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_SPSR_UND_FUNC(void)28804 static inline uint64_t BDK_AP_SPSR_UND_FUNC(void)
28805 {
28806     return 0x30404030200ll;
28807 }
28808 
28809 #define typedef_BDK_AP_SPSR_UND bdk_ap_spsr_und_t
28810 #define bustype_BDK_AP_SPSR_UND BDK_CSR_TYPE_SYSREG
28811 #define basename_BDK_AP_SPSR_UND "AP_SPSR_UND"
28812 #define busnum_BDK_AP_SPSR_UND 0
28813 #define arguments_BDK_AP_SPSR_UND -1,-1,-1,-1
28814 
28815 /**
28816  * Register (SYSREG) ap_tcr_el1
28817  *
28818  * AP Translation Control EL1 Register
28819  * Determines which of the Translation Table Base Registers
28820  *     defined the base address for a translation table walk required
28821  *     for the stage 1 translation of a memory access from EL0 or
28822  *     EL1. Also controls the translation table format and holds
28823  *     cacheability and shareability information.
28824  */
28825 union bdk_ap_tcr_el1
28826 {
28827     uint64_t u;
28828     struct bdk_ap_tcr_el1_s
28829     {
28830 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28831         uint64_t reserved_43_63        : 21;
28832         uint64_t had1                  : 1;  /**< [ 42: 42](R/W) V8.1: Hierarchical Attribute Disable.
28833                                                                  HAD1(bit[42]): Hierarchical Attribute Disable for the TTBR1 region.
28834                                                                  0 = Hierarchical Attributes are enabled.
28835                                                                  1 = Hierarchical Attributes are disabled. */
28836         uint64_t had0                  : 1;  /**< [ 41: 41](R/W) V8.1: Hierarchical Attribute Disable.
28837                                                                  HAD0(bit[41]): Hierarchical Attribute Disable for the TTBR0 region.
28838                                                                  0 = Hierarchical Attributes are enabled.
28839                                                                  1 = Hierarchical Attributes are disabled. */
28840         uint64_t reserved_39_40        : 2;
28841         uint64_t tbi1                  : 1;  /**< [ 38: 38](R/W) Top Byte ignored - indicates whether the top byte of an
28842                                                                      address is used for address match for the AP_TTBR1_EL1 region, or
28843                                                                      ignored and used for tagged addresses.
28844 
28845                                                                  This affects addresses generated in EL0 and EL1 using AArch64
28846                                                                      where the address would be translated by tables pointed to by
28847                                                                      AP_TTBR1_EL1. It has an effect whether the EL1&0 translation
28848                                                                      regime is enabled or not.
28849 
28850                                                                  Additionally, this affects changes to the program counter,
28851                                                                      when TBI1 is 1 and bit [55] of the target address is 1, caused
28852                                                                      by:
28853 
28854                                                                   A branch or procedure return within EL0 or EL1.
28855 
28856                                                                   An exception taken to EL1.
28857 
28858                                                                   An exception return to EL0 or EL1.
28859 
28860                                                                  In these cases bits [63:56] of the address are also set to 1
28861                                                                      before it is stored in the PC.
28862                                                                  0 = Top Byte used in the address calculation.
28863                                                                  1 = Top Byte ignored in the address calculation. */
28864         uint64_t tbi0                  : 1;  /**< [ 37: 37](R/W) Top Byte ignored - indicates whether the top byte of an
28865                                                                      address is used for address match for the AP_TTBR0_EL1 region, or
28866                                                                      ignored and used for tagged addresses.
28867 
28868                                                                  This affects addresses generated in EL0 and EL1 using AArch64
28869                                                                      where the address would be translated by tables pointed to by
28870                                                                      AP_TTBR0_EL1. It has an effect whether the EL1&0 translation
28871                                                                      regime is enabled or not.
28872 
28873                                                                  Additionally, this affects changes to the program counter,
28874                                                                      when TBI0 is 1 and bit [55] of the target address is 0, caused
28875                                                                      by:
28876 
28877                                                                   A branch or procedure return within EL0 or EL1.
28878 
28879                                                                   An exception taken to EL1.
28880 
28881                                                                   An exception return to EL0 or EL1.
28882 
28883                                                                  In these cases bits [63:56] of the address are also set to 0
28884                                                                      before it is stored in the PC.
28885                                                                  0 = Top Byte used in the address calculation.
28886                                                                  1 = Top Byte ignored in the address calculation. */
28887         uint64_t as                    : 1;  /**< [ 36: 36](R/W) ASID Size.
28888                                                                  If the implementation has only 8 bits of ASID, this field is
28889                                                                      RES0.
28890                                                                  0 = 8 bit - the upper 8 bits of AP_TTBR0_EL1 and AP_TTBR1_EL1 are
28891                                                                      ignored by hardware for every purpose except reading back the
28892                                                                      register, and are treated as if they are all zeros for when
28893                                                                      used for allocation and matching entries in the TLB.
28894                                                                  1 = 16 bit - the upper 16 bits of AP_TTBR0_EL1 and AP_TTBR1_EL1 are used
28895                                                                      for allocation and matching in the TLB. */
28896         uint64_t reserved_35           : 1;
28897         uint64_t ips                   : 3;  /**< [ 34: 32](R/W) Intermediate Physical Address Size.
28898                                                                  0x0 = 32 bits, 4GB.
28899                                                                  0x1 = 36 bits, 64GB.
28900                                                                  0x2 = 40 bits, 1TB.
28901                                                                  0x3 = 42 bits, 4TB.
28902                                                                  0x4 = 44 bits, 16TB.
28903                                                                  0x5 = 48 bits, 256TB. */
28904         uint64_t tg1                   : 2;  /**< [ 31: 30](R/W) AP_TTBR1_EL1 Granule size.
28905 
28906                                                                  If the value is programmed to either a reserved value, or a
28907                                                                      size that has not been implemented, then the hardware will
28908                                                                      treat the field as if it has been programmed to an
28909                                                                      implementation defined choice of the sizes that has been
28910                                                                      implemented for all purposes other than the value read back
28911                                                                      from this register.
28912 
28913                                                                  It is implementation defined whether the value read back is
28914                                                                      the value programmed or the value that corresponds to the size
28915                                                                      chosen.
28916 
28917                                                                  0x1 = 16KB
28918                                                                  0x2 = 4KB
28919                                                                  0x3 = 64KB */
28920         uint64_t sh1                   : 2;  /**< [ 29: 28](R/W) Shareability attribute for memory associated with translation
28921                                                                      table walks using AP_TTBR1_EL1.
28922                                                                  0x0 = Non-shareable
28923                                                                  0x2 = Outer Shareable
28924                                                                  0x3 = Inner Shareable */
28925         uint64_t orgn1                 : 2;  /**< [ 27: 26](R/W) Outer cacheability attribute for memory associated with
28926                                                                      translation table walks using AP_TTBR1_EL1.
28927                                                                  0x0 = Normal memory, Outer Non-cacheable
28928                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable
28929                                                                  0x2 = Normal memory, Outer Write-Through Cacheable
28930                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable */
28931         uint64_t irgn1                 : 2;  /**< [ 25: 24](R/W) Inner cacheability attribute for memory associated with
28932                                                                      translation table walks using AP_TTBR1_EL1.
28933                                                                  0x0 = Normal memory, Inner Non-cacheable
28934                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable
28935                                                                  0x2 = Normal memory, Inner Write-Through Cacheable
28936                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable */
28937         uint64_t epd1                  : 1;  /**< [ 23: 23](R/W) Translation table walk disable for translations using
28938                                                                      AP_TTBR1_EL1. This bit controls whether a translation table walk
28939                                                                      is performed on a TLB miss, for an address that is translated
28940                                                                      using AP_TTBR1_EL1. The encoding of this bit is:
28941                                                                  0 = Perform translation table walks using AP_TTBR1_EL1.
28942                                                                  1 = A TLB miss on an address that is translated using AP_TTBR1_EL1
28943                                                                      generates a Translation fault. No translation table walk is
28944                                                                      performed. */
28945         uint64_t a1                    : 1;  /**< [ 22: 22](R/W) Selects whether AP_TTBR0_EL1 or AP_TTBR1_EL1 defines the ASID.
28946                                                                  0 =  AP_TTBR0_EL1[ASID] defines the ASID.
28947                                                                  1 =  AP_TTBR1_EL1[ASID] defines the ASID. */
28948         uint64_t t1sz                  : 6;  /**< [ 21: 16](R/W) The size offset of the memory region addressed by AP_TTBR1_EL1.
28949                                                                      The region size is 22^(64-T1SZ) bytes.
28950                                                                  The maximum and minimum possible values for T1SZ depend on the
28951                                                                      level of translation table and the memory translation granule
28952                                                                      size, as described in the AArch64 Virtual Memory System
28953                                                                      Architecture chapter. */
28954         uint64_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
28955                                                                      address register.
28956 
28957                                                                  If the value is programmed to either a reserved value, or a
28958                                                                      size that has not been implemented, then the hardware will
28959                                                                      treat the field as if it has been programmed to an
28960                                                                      implementation defined choice of the sizes that has been
28961                                                                      implemented for all purposes other than the value read back
28962                                                                      from this register.
28963 
28964                                                                  It is implementation defined whether the value read back is
28965                                                                      the value programmed or the value that corresponds to the size
28966                                                                      chosen.
28967 
28968                                                                  0x0 = 4KB.
28969                                                                  0x1 = 64KB.
28970                                                                  0x2 = 16KB. */
28971         uint64_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
28972                                                                      table walks using AP_TTBR0_EL1.
28973                                                                  0x0 = Non-shareable.
28974                                                                  0x2 = Outer Shareable.
28975                                                                  0x3 = Inner Shareable. */
28976         uint64_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
28977                                                                      translation table walks using AP_TTBR0_EL1.
28978                                                                  0x0 = Normal memory, Outer Non-cacheable.
28979                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
28980                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
28981                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
28982         uint64_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
28983                                                                      translation table walks using AP_TTBR0_EL1.
28984                                                                  0x0 = Normal memory, Inner Non-cacheable.
28985                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
28986                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
28987                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
28988         uint64_t epd0                  : 1;  /**< [  7:  7](R/W) Translation table walk disable for translations using TTBR0.
28989                                                                      This bit controls whether a translation table walk is
28990                                                                      performed on a TLB miss, for an address that is translated
28991                                                                      using TTBR0.
28992                                                                  0 = Perform translation table walks using TTBR0.
28993                                                                  1 = A TLB miss on an address that is translated using TTBR0
28994                                                                      generates a Translation fault. No translation table walk is
28995                                                                      performed. */
28996         uint64_t reserved_6            : 1;
28997         uint64_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL1.
28998                                                                      The region size is 2^(64-T0SZ) bytes.
28999 
29000                                                                  The maximum and minimum possible values for T0SZ depend on the
29001                                                                      level of translation table and the memory translation granule
29002                                                                      size, as described in the AArch64 Virtual Memory System
29003                                                                      Architecture chapter. */
29004 #else /* Word 0 - Little Endian */
29005         uint64_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL1.
29006                                                                      The region size is 2^(64-T0SZ) bytes.
29007 
29008                                                                  The maximum and minimum possible values for T0SZ depend on the
29009                                                                      level of translation table and the memory translation granule
29010                                                                      size, as described in the AArch64 Virtual Memory System
29011                                                                      Architecture chapter. */
29012         uint64_t reserved_6            : 1;
29013         uint64_t epd0                  : 1;  /**< [  7:  7](R/W) Translation table walk disable for translations using TTBR0.
29014                                                                      This bit controls whether a translation table walk is
29015                                                                      performed on a TLB miss, for an address that is translated
29016                                                                      using TTBR0.
29017                                                                  0 = Perform translation table walks using TTBR0.
29018                                                                  1 = A TLB miss on an address that is translated using TTBR0
29019                                                                      generates a Translation fault. No translation table walk is
29020                                                                      performed. */
29021         uint64_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
29022                                                                      translation table walks using AP_TTBR0_EL1.
29023                                                                  0x0 = Normal memory, Inner Non-cacheable.
29024                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
29025                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
29026                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
29027         uint64_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
29028                                                                      translation table walks using AP_TTBR0_EL1.
29029                                                                  0x0 = Normal memory, Outer Non-cacheable.
29030                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
29031                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
29032                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
29033         uint64_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
29034                                                                      table walks using AP_TTBR0_EL1.
29035                                                                  0x0 = Non-shareable.
29036                                                                  0x2 = Outer Shareable.
29037                                                                  0x3 = Inner Shareable. */
29038         uint64_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
29039                                                                      address register.
29040 
29041                                                                  If the value is programmed to either a reserved value, or a
29042                                                                      size that has not been implemented, then the hardware will
29043                                                                      treat the field as if it has been programmed to an
29044                                                                      implementation defined choice of the sizes that has been
29045                                                                      implemented for all purposes other than the value read back
29046                                                                      from this register.
29047 
29048                                                                  It is implementation defined whether the value read back is
29049                                                                      the value programmed or the value that corresponds to the size
29050                                                                      chosen.
29051 
29052                                                                  0x0 = 4KB.
29053                                                                  0x1 = 64KB.
29054                                                                  0x2 = 16KB. */
29055         uint64_t t1sz                  : 6;  /**< [ 21: 16](R/W) The size offset of the memory region addressed by AP_TTBR1_EL1.
29056                                                                      The region size is 22^(64-T1SZ) bytes.
29057                                                                  The maximum and minimum possible values for T1SZ depend on the
29058                                                                      level of translation table and the memory translation granule
29059                                                                      size, as described in the AArch64 Virtual Memory System
29060                                                                      Architecture chapter. */
29061         uint64_t a1                    : 1;  /**< [ 22: 22](R/W) Selects whether AP_TTBR0_EL1 or AP_TTBR1_EL1 defines the ASID.
29062                                                                  0 =  AP_TTBR0_EL1[ASID] defines the ASID.
29063                                                                  1 =  AP_TTBR1_EL1[ASID] defines the ASID. */
29064         uint64_t epd1                  : 1;  /**< [ 23: 23](R/W) Translation table walk disable for translations using
29065                                                                      AP_TTBR1_EL1. This bit controls whether a translation table walk
29066                                                                      is performed on a TLB miss, for an address that is translated
29067                                                                      using AP_TTBR1_EL1. The encoding of this bit is:
29068                                                                  0 = Perform translation table walks using AP_TTBR1_EL1.
29069                                                                  1 = A TLB miss on an address that is translated using AP_TTBR1_EL1
29070                                                                      generates a Translation fault. No translation table walk is
29071                                                                      performed. */
29072         uint64_t irgn1                 : 2;  /**< [ 25: 24](R/W) Inner cacheability attribute for memory associated with
29073                                                                      translation table walks using AP_TTBR1_EL1.
29074                                                                  0x0 = Normal memory, Inner Non-cacheable
29075                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable
29076                                                                  0x2 = Normal memory, Inner Write-Through Cacheable
29077                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable */
29078         uint64_t orgn1                 : 2;  /**< [ 27: 26](R/W) Outer cacheability attribute for memory associated with
29079                                                                      translation table walks using AP_TTBR1_EL1.
29080                                                                  0x0 = Normal memory, Outer Non-cacheable
29081                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable
29082                                                                  0x2 = Normal memory, Outer Write-Through Cacheable
29083                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable */
29084         uint64_t sh1                   : 2;  /**< [ 29: 28](R/W) Shareability attribute for memory associated with translation
29085                                                                      table walks using AP_TTBR1_EL1.
29086                                                                  0x0 = Non-shareable
29087                                                                  0x2 = Outer Shareable
29088                                                                  0x3 = Inner Shareable */
29089         uint64_t tg1                   : 2;  /**< [ 31: 30](R/W) AP_TTBR1_EL1 Granule size.
29090 
29091                                                                  If the value is programmed to either a reserved value, or a
29092                                                                      size that has not been implemented, then the hardware will
29093                                                                      treat the field as if it has been programmed to an
29094                                                                      implementation defined choice of the sizes that has been
29095                                                                      implemented for all purposes other than the value read back
29096                                                                      from this register.
29097 
29098                                                                  It is implementation defined whether the value read back is
29099                                                                      the value programmed or the value that corresponds to the size
29100                                                                      chosen.
29101 
29102                                                                  0x1 = 16KB
29103                                                                  0x2 = 4KB
29104                                                                  0x3 = 64KB */
29105         uint64_t ips                   : 3;  /**< [ 34: 32](R/W) Intermediate Physical Address Size.
29106                                                                  0x0 = 32 bits, 4GB.
29107                                                                  0x1 = 36 bits, 64GB.
29108                                                                  0x2 = 40 bits, 1TB.
29109                                                                  0x3 = 42 bits, 4TB.
29110                                                                  0x4 = 44 bits, 16TB.
29111                                                                  0x5 = 48 bits, 256TB. */
29112         uint64_t reserved_35           : 1;
29113         uint64_t as                    : 1;  /**< [ 36: 36](R/W) ASID Size.
29114                                                                  If the implementation has only 8 bits of ASID, this field is
29115                                                                      RES0.
29116                                                                  0 = 8 bit - the upper 8 bits of AP_TTBR0_EL1 and AP_TTBR1_EL1 are
29117                                                                      ignored by hardware for every purpose except reading back the
29118                                                                      register, and are treated as if they are all zeros for when
29119                                                                      used for allocation and matching entries in the TLB.
29120                                                                  1 = 16 bit - the upper 16 bits of AP_TTBR0_EL1 and AP_TTBR1_EL1 are used
29121                                                                      for allocation and matching in the TLB. */
29122         uint64_t tbi0                  : 1;  /**< [ 37: 37](R/W) Top Byte ignored - indicates whether the top byte of an
29123                                                                      address is used for address match for the AP_TTBR0_EL1 region, or
29124                                                                      ignored and used for tagged addresses.
29125 
29126                                                                  This affects addresses generated in EL0 and EL1 using AArch64
29127                                                                      where the address would be translated by tables pointed to by
29128                                                                      AP_TTBR0_EL1. It has an effect whether the EL1&0 translation
29129                                                                      regime is enabled or not.
29130 
29131                                                                  Additionally, this affects changes to the program counter,
29132                                                                      when TBI0 is 1 and bit [55] of the target address is 0, caused
29133                                                                      by:
29134 
29135                                                                   A branch or procedure return within EL0 or EL1.
29136 
29137                                                                   An exception taken to EL1.
29138 
29139                                                                   An exception return to EL0 or EL1.
29140 
29141                                                                  In these cases bits [63:56] of the address are also set to 0
29142                                                                      before it is stored in the PC.
29143                                                                  0 = Top Byte used in the address calculation.
29144                                                                  1 = Top Byte ignored in the address calculation. */
29145         uint64_t tbi1                  : 1;  /**< [ 38: 38](R/W) Top Byte ignored - indicates whether the top byte of an
29146                                                                      address is used for address match for the AP_TTBR1_EL1 region, or
29147                                                                      ignored and used for tagged addresses.
29148 
29149                                                                  This affects addresses generated in EL0 and EL1 using AArch64
29150                                                                      where the address would be translated by tables pointed to by
29151                                                                      AP_TTBR1_EL1. It has an effect whether the EL1&0 translation
29152                                                                      regime is enabled or not.
29153 
29154                                                                  Additionally, this affects changes to the program counter,
29155                                                                      when TBI1 is 1 and bit [55] of the target address is 1, caused
29156                                                                      by:
29157 
29158                                                                   A branch or procedure return within EL0 or EL1.
29159 
29160                                                                   An exception taken to EL1.
29161 
29162                                                                   An exception return to EL0 or EL1.
29163 
29164                                                                  In these cases bits [63:56] of the address are also set to 1
29165                                                                      before it is stored in the PC.
29166                                                                  0 = Top Byte used in the address calculation.
29167                                                                  1 = Top Byte ignored in the address calculation. */
29168         uint64_t reserved_39_40        : 2;
29169         uint64_t had0                  : 1;  /**< [ 41: 41](R/W) V8.1: Hierarchical Attribute Disable.
29170                                                                  HAD0(bit[41]): Hierarchical Attribute Disable for the TTBR0 region.
29171                                                                  0 = Hierarchical Attributes are enabled.
29172                                                                  1 = Hierarchical Attributes are disabled. */
29173         uint64_t had1                  : 1;  /**< [ 42: 42](R/W) V8.1: Hierarchical Attribute Disable.
29174                                                                  HAD1(bit[42]): Hierarchical Attribute Disable for the TTBR1 region.
29175                                                                  0 = Hierarchical Attributes are enabled.
29176                                                                  1 = Hierarchical Attributes are disabled. */
29177         uint64_t reserved_43_63        : 21;
29178 #endif /* Word 0 - End */
29179     } s;
29180     struct bdk_ap_tcr_el1_cn
29181     {
29182 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
29183         uint64_t reserved_43_63        : 21;
29184         uint64_t had1                  : 1;  /**< [ 42: 42](R/W) V8.1: Hierarchical Attribute Disable.
29185                                                                  HAD1(bit[42]): Hierarchical Attribute Disable for the TTBR1 region.
29186                                                                  0 = Hierarchical Attributes are enabled.
29187                                                                  1 = Hierarchical Attributes are disabled. */
29188         uint64_t had0                  : 1;  /**< [ 41: 41](R/W) V8.1: Hierarchical Attribute Disable.
29189                                                                  HAD0(bit[41]): Hierarchical Attribute Disable for the TTBR0 region.
29190                                                                  0 = Hierarchical Attributes are enabled.
29191                                                                  1 = Hierarchical Attributes are disabled. */
29192         uint64_t reserved_40           : 1;
29193         uint64_t reserved_39           : 1;
29194         uint64_t tbi1                  : 1;  /**< [ 38: 38](R/W) Top Byte ignored - indicates whether the top byte of an
29195                                                                      address is used for address match for the AP_TTBR1_EL1 region, or
29196                                                                      ignored and used for tagged addresses.
29197 
29198                                                                  This affects addresses generated in EL0 and EL1 using AArch64
29199                                                                      where the address would be translated by tables pointed to by
29200                                                                      AP_TTBR1_EL1. It has an effect whether the EL1&0 translation
29201                                                                      regime is enabled or not.
29202 
29203                                                                  Additionally, this affects changes to the program counter,
29204                                                                      when TBI1 is 1 and bit [55] of the target address is 1, caused
29205                                                                      by:
29206 
29207                                                                   A branch or procedure return within EL0 or EL1.
29208 
29209                                                                   An exception taken to EL1.
29210 
29211                                                                   An exception return to EL0 or EL1.
29212 
29213                                                                  In these cases bits [63:56] of the address are also set to 1
29214                                                                      before it is stored in the PC.
29215                                                                  0 = Top Byte used in the address calculation.
29216                                                                  1 = Top Byte ignored in the address calculation. */
29217         uint64_t tbi0                  : 1;  /**< [ 37: 37](R/W) Top Byte ignored - indicates whether the top byte of an
29218                                                                      address is used for address match for the AP_TTBR0_EL1 region, or
29219                                                                      ignored and used for tagged addresses.
29220 
29221                                                                  This affects addresses generated in EL0 and EL1 using AArch64
29222                                                                      where the address would be translated by tables pointed to by
29223                                                                      AP_TTBR0_EL1. It has an effect whether the EL1&0 translation
29224                                                                      regime is enabled or not.
29225 
29226                                                                  Additionally, this affects changes to the program counter,
29227                                                                      when TBI0 is 1 and bit [55] of the target address is 0, caused
29228                                                                      by:
29229 
29230                                                                   A branch or procedure return within EL0 or EL1.
29231 
29232                                                                   An exception taken to EL1.
29233 
29234                                                                   An exception return to EL0 or EL1.
29235 
29236                                                                  In these cases bits [63:56] of the address are also set to 0
29237                                                                      before it is stored in the PC.
29238                                                                  0 = Top Byte used in the address calculation.
29239                                                                  1 = Top Byte ignored in the address calculation. */
29240         uint64_t as                    : 1;  /**< [ 36: 36](R/W) ASID Size.
29241                                                                  If the implementation has only 8 bits of ASID, this field is
29242                                                                      RES0.
29243                                                                  0 = 8 bit - the upper 8 bits of AP_TTBR0_EL1 and AP_TTBR1_EL1 are
29244                                                                      ignored by hardware for every purpose except reading back the
29245                                                                      register, and are treated as if they are all zeros for when
29246                                                                      used for allocation and matching entries in the TLB.
29247                                                                  1 = 16 bit - the upper 16 bits of AP_TTBR0_EL1 and AP_TTBR1_EL1 are used
29248                                                                      for allocation and matching in the TLB. */
29249         uint64_t reserved_35           : 1;
29250         uint64_t ips                   : 3;  /**< [ 34: 32](R/W) Intermediate Physical Address Size.
29251                                                                  0x0 = 32 bits, 4GB.
29252                                                                  0x1 = 36 bits, 64GB.
29253                                                                  0x2 = 40 bits, 1TB.
29254                                                                  0x3 = 42 bits, 4TB.
29255                                                                  0x4 = 44 bits, 16TB.
29256                                                                  0x5 = 48 bits, 256TB. */
29257         uint64_t tg1                   : 2;  /**< [ 31: 30](R/W) AP_TTBR1_EL1 Granule size.
29258 
29259                                                                  If the value is programmed to either a reserved value, or a
29260                                                                      size that has not been implemented, then the hardware will
29261                                                                      treat the field as if it has been programmed to an
29262                                                                      implementation defined choice of the sizes that has been
29263                                                                      implemented for all purposes other than the value read back
29264                                                                      from this register.
29265 
29266                                                                  It is implementation defined whether the value read back is
29267                                                                      the value programmed or the value that corresponds to the size
29268                                                                      chosen.
29269 
29270                                                                  0x1 = 16KB
29271                                                                  0x2 = 4KB
29272                                                                  0x3 = 64KB */
29273         uint64_t sh1                   : 2;  /**< [ 29: 28](R/W) Shareability attribute for memory associated with translation
29274                                                                      table walks using AP_TTBR1_EL1.
29275                                                                  0x0 = Non-shareable
29276                                                                  0x2 = Outer Shareable
29277                                                                  0x3 = Inner Shareable */
29278         uint64_t orgn1                 : 2;  /**< [ 27: 26](R/W) Outer cacheability attribute for memory associated with
29279                                                                      translation table walks using AP_TTBR1_EL1.
29280                                                                  0x0 = Normal memory, Outer Non-cacheable
29281                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable
29282                                                                  0x2 = Normal memory, Outer Write-Through Cacheable
29283                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable */
29284         uint64_t irgn1                 : 2;  /**< [ 25: 24](R/W) Inner cacheability attribute for memory associated with
29285                                                                      translation table walks using AP_TTBR1_EL1.
29286                                                                  0x0 = Normal memory, Inner Non-cacheable
29287                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable
29288                                                                  0x2 = Normal memory, Inner Write-Through Cacheable
29289                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable */
29290         uint64_t epd1                  : 1;  /**< [ 23: 23](R/W) Translation table walk disable for translations using
29291                                                                      AP_TTBR1_EL1. This bit controls whether a translation table walk
29292                                                                      is performed on a TLB miss, for an address that is translated
29293                                                                      using AP_TTBR1_EL1. The encoding of this bit is:
29294                                                                  0 = Perform translation table walks using AP_TTBR1_EL1.
29295                                                                  1 = A TLB miss on an address that is translated using AP_TTBR1_EL1
29296                                                                      generates a Translation fault. No translation table walk is
29297                                                                      performed. */
29298         uint64_t a1                    : 1;  /**< [ 22: 22](R/W) Selects whether AP_TTBR0_EL1 or AP_TTBR1_EL1 defines the ASID.
29299                                                                  0 =  AP_TTBR0_EL1[ASID] defines the ASID.
29300                                                                  1 =  AP_TTBR1_EL1[ASID] defines the ASID. */
29301         uint64_t t1sz                  : 6;  /**< [ 21: 16](R/W) The size offset of the memory region addressed by AP_TTBR1_EL1.
29302                                                                      The region size is 22^(64-T1SZ) bytes.
29303                                                                  The maximum and minimum possible values for T1SZ depend on the
29304                                                                      level of translation table and the memory translation granule
29305                                                                      size, as described in the AArch64 Virtual Memory System
29306                                                                      Architecture chapter. */
29307         uint64_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
29308                                                                      address register.
29309 
29310                                                                  If the value is programmed to either a reserved value, or a
29311                                                                      size that has not been implemented, then the hardware will
29312                                                                      treat the field as if it has been programmed to an
29313                                                                      implementation defined choice of the sizes that has been
29314                                                                      implemented for all purposes other than the value read back
29315                                                                      from this register.
29316 
29317                                                                  It is implementation defined whether the value read back is
29318                                                                      the value programmed or the value that corresponds to the size
29319                                                                      chosen.
29320 
29321                                                                  0x0 = 4KB.
29322                                                                  0x1 = 64KB.
29323                                                                  0x2 = 16KB. */
29324         uint64_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
29325                                                                      table walks using AP_TTBR0_EL1.
29326                                                                  0x0 = Non-shareable.
29327                                                                  0x2 = Outer Shareable.
29328                                                                  0x3 = Inner Shareable. */
29329         uint64_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
29330                                                                      translation table walks using AP_TTBR0_EL1.
29331                                                                  0x0 = Normal memory, Outer Non-cacheable.
29332                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
29333                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
29334                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
29335         uint64_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
29336                                                                      translation table walks using AP_TTBR0_EL1.
29337                                                                  0x0 = Normal memory, Inner Non-cacheable.
29338                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
29339                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
29340                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
29341         uint64_t epd0                  : 1;  /**< [  7:  7](R/W) Translation table walk disable for translations using TTBR0.
29342                                                                      This bit controls whether a translation table walk is
29343                                                                      performed on a TLB miss, for an address that is translated
29344                                                                      using TTBR0.
29345                                                                  0 = Perform translation table walks using TTBR0.
29346                                                                  1 = A TLB miss on an address that is translated using TTBR0
29347                                                                      generates a Translation fault. No translation table walk is
29348                                                                      performed. */
29349         uint64_t reserved_6            : 1;
29350         uint64_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL1.
29351                                                                      The region size is 2^(64-T0SZ) bytes.
29352 
29353                                                                  The maximum and minimum possible values for T0SZ depend on the
29354                                                                      level of translation table and the memory translation granule
29355                                                                      size, as described in the AArch64 Virtual Memory System
29356                                                                      Architecture chapter. */
29357 #else /* Word 0 - Little Endian */
29358         uint64_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL1.
29359                                                                      The region size is 2^(64-T0SZ) bytes.
29360 
29361                                                                  The maximum and minimum possible values for T0SZ depend on the
29362                                                                      level of translation table and the memory translation granule
29363                                                                      size, as described in the AArch64 Virtual Memory System
29364                                                                      Architecture chapter. */
29365         uint64_t reserved_6            : 1;
29366         uint64_t epd0                  : 1;  /**< [  7:  7](R/W) Translation table walk disable for translations using TTBR0.
29367                                                                      This bit controls whether a translation table walk is
29368                                                                      performed on a TLB miss, for an address that is translated
29369                                                                      using TTBR0.
29370                                                                  0 = Perform translation table walks using TTBR0.
29371                                                                  1 = A TLB miss on an address that is translated using TTBR0
29372                                                                      generates a Translation fault. No translation table walk is
29373                                                                      performed. */
29374         uint64_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
29375                                                                      translation table walks using AP_TTBR0_EL1.
29376                                                                  0x0 = Normal memory, Inner Non-cacheable.
29377                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
29378                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
29379                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
29380         uint64_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
29381                                                                      translation table walks using AP_TTBR0_EL1.
29382                                                                  0x0 = Normal memory, Outer Non-cacheable.
29383                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
29384                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
29385                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
29386         uint64_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
29387                                                                      table walks using AP_TTBR0_EL1.
29388                                                                  0x0 = Non-shareable.
29389                                                                  0x2 = Outer Shareable.
29390                                                                  0x3 = Inner Shareable. */
29391         uint64_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
29392                                                                      address register.
29393 
29394                                                                  If the value is programmed to either a reserved value, or a
29395                                                                      size that has not been implemented, then the hardware will
29396                                                                      treat the field as if it has been programmed to an
29397                                                                      implementation defined choice of the sizes that has been
29398                                                                      implemented for all purposes other than the value read back
29399                                                                      from this register.
29400 
29401                                                                  It is implementation defined whether the value read back is
29402                                                                      the value programmed or the value that corresponds to the size
29403                                                                      chosen.
29404 
29405                                                                  0x0 = 4KB.
29406                                                                  0x1 = 64KB.
29407                                                                  0x2 = 16KB. */
29408         uint64_t t1sz                  : 6;  /**< [ 21: 16](R/W) The size offset of the memory region addressed by AP_TTBR1_EL1.
29409                                                                      The region size is 22^(64-T1SZ) bytes.
29410                                                                  The maximum and minimum possible values for T1SZ depend on the
29411                                                                      level of translation table and the memory translation granule
29412                                                                      size, as described in the AArch64 Virtual Memory System
29413                                                                      Architecture chapter. */
29414         uint64_t a1                    : 1;  /**< [ 22: 22](R/W) Selects whether AP_TTBR0_EL1 or AP_TTBR1_EL1 defines the ASID.
29415                                                                  0 =  AP_TTBR0_EL1[ASID] defines the ASID.
29416                                                                  1 =  AP_TTBR1_EL1[ASID] defines the ASID. */
29417         uint64_t epd1                  : 1;  /**< [ 23: 23](R/W) Translation table walk disable for translations using
29418                                                                      AP_TTBR1_EL1. This bit controls whether a translation table walk
29419                                                                      is performed on a TLB miss, for an address that is translated
29420                                                                      using AP_TTBR1_EL1. The encoding of this bit is:
29421                                                                  0 = Perform translation table walks using AP_TTBR1_EL1.
29422                                                                  1 = A TLB miss on an address that is translated using AP_TTBR1_EL1
29423                                                                      generates a Translation fault. No translation table walk is
29424                                                                      performed. */
29425         uint64_t irgn1                 : 2;  /**< [ 25: 24](R/W) Inner cacheability attribute for memory associated with
29426                                                                      translation table walks using AP_TTBR1_EL1.
29427                                                                  0x0 = Normal memory, Inner Non-cacheable
29428                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable
29429                                                                  0x2 = Normal memory, Inner Write-Through Cacheable
29430                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable */
29431         uint64_t orgn1                 : 2;  /**< [ 27: 26](R/W) Outer cacheability attribute for memory associated with
29432                                                                      translation table walks using AP_TTBR1_EL1.
29433                                                                  0x0 = Normal memory, Outer Non-cacheable
29434                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable
29435                                                                  0x2 = Normal memory, Outer Write-Through Cacheable
29436                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable */
29437         uint64_t sh1                   : 2;  /**< [ 29: 28](R/W) Shareability attribute for memory associated with translation
29438                                                                      table walks using AP_TTBR1_EL1.
29439                                                                  0x0 = Non-shareable
29440                                                                  0x2 = Outer Shareable
29441                                                                  0x3 = Inner Shareable */
29442         uint64_t tg1                   : 2;  /**< [ 31: 30](R/W) AP_TTBR1_EL1 Granule size.
29443 
29444                                                                  If the value is programmed to either a reserved value, or a
29445                                                                      size that has not been implemented, then the hardware will
29446                                                                      treat the field as if it has been programmed to an
29447                                                                      implementation defined choice of the sizes that has been
29448                                                                      implemented for all purposes other than the value read back
29449                                                                      from this register.
29450 
29451                                                                  It is implementation defined whether the value read back is
29452                                                                      the value programmed or the value that corresponds to the size
29453                                                                      chosen.
29454 
29455                                                                  0x1 = 16KB
29456                                                                  0x2 = 4KB
29457                                                                  0x3 = 64KB */
29458         uint64_t ips                   : 3;  /**< [ 34: 32](R/W) Intermediate Physical Address Size.
29459                                                                  0x0 = 32 bits, 4GB.
29460                                                                  0x1 = 36 bits, 64GB.
29461                                                                  0x2 = 40 bits, 1TB.
29462                                                                  0x3 = 42 bits, 4TB.
29463                                                                  0x4 = 44 bits, 16TB.
29464                                                                  0x5 = 48 bits, 256TB. */
29465         uint64_t reserved_35           : 1;
29466         uint64_t as                    : 1;  /**< [ 36: 36](R/W) ASID Size.
29467                                                                  If the implementation has only 8 bits of ASID, this field is
29468                                                                      RES0.
29469                                                                  0 = 8 bit - the upper 8 bits of AP_TTBR0_EL1 and AP_TTBR1_EL1 are
29470                                                                      ignored by hardware for every purpose except reading back the
29471                                                                      register, and are treated as if they are all zeros for when
29472                                                                      used for allocation and matching entries in the TLB.
29473                                                                  1 = 16 bit - the upper 16 bits of AP_TTBR0_EL1 and AP_TTBR1_EL1 are used
29474                                                                      for allocation and matching in the TLB. */
29475         uint64_t tbi0                  : 1;  /**< [ 37: 37](R/W) Top Byte ignored - indicates whether the top byte of an
29476                                                                      address is used for address match for the AP_TTBR0_EL1 region, or
29477                                                                      ignored and used for tagged addresses.
29478 
29479                                                                  This affects addresses generated in EL0 and EL1 using AArch64
29480                                                                      where the address would be translated by tables pointed to by
29481                                                                      AP_TTBR0_EL1. It has an effect whether the EL1&0 translation
29482                                                                      regime is enabled or not.
29483 
29484                                                                  Additionally, this affects changes to the program counter,
29485                                                                      when TBI0 is 1 and bit [55] of the target address is 0, caused
29486                                                                      by:
29487 
29488                                                                   A branch or procedure return within EL0 or EL1.
29489 
29490                                                                   An exception taken to EL1.
29491 
29492                                                                   An exception return to EL0 or EL1.
29493 
29494                                                                  In these cases bits [63:56] of the address are also set to 0
29495                                                                      before it is stored in the PC.
29496                                                                  0 = Top Byte used in the address calculation.
29497                                                                  1 = Top Byte ignored in the address calculation. */
29498         uint64_t tbi1                  : 1;  /**< [ 38: 38](R/W) Top Byte ignored - indicates whether the top byte of an
29499                                                                      address is used for address match for the AP_TTBR1_EL1 region, or
29500                                                                      ignored and used for tagged addresses.
29501 
29502                                                                  This affects addresses generated in EL0 and EL1 using AArch64
29503                                                                      where the address would be translated by tables pointed to by
29504                                                                      AP_TTBR1_EL1. It has an effect whether the EL1&0 translation
29505                                                                      regime is enabled or not.
29506 
29507                                                                  Additionally, this affects changes to the program counter,
29508                                                                      when TBI1 is 1 and bit [55] of the target address is 1, caused
29509                                                                      by:
29510 
29511                                                                   A branch or procedure return within EL0 or EL1.
29512 
29513                                                                   An exception taken to EL1.
29514 
29515                                                                   An exception return to EL0 or EL1.
29516 
29517                                                                  In these cases bits [63:56] of the address are also set to 1
29518                                                                      before it is stored in the PC.
29519                                                                  0 = Top Byte used in the address calculation.
29520                                                                  1 = Top Byte ignored in the address calculation. */
29521         uint64_t reserved_39           : 1;
29522         uint64_t reserved_40           : 1;
29523         uint64_t had0                  : 1;  /**< [ 41: 41](R/W) V8.1: Hierarchical Attribute Disable.
29524                                                                  HAD0(bit[41]): Hierarchical Attribute Disable for the TTBR0 region.
29525                                                                  0 = Hierarchical Attributes are enabled.
29526                                                                  1 = Hierarchical Attributes are disabled. */
29527         uint64_t had1                  : 1;  /**< [ 42: 42](R/W) V8.1: Hierarchical Attribute Disable.
29528                                                                  HAD1(bit[42]): Hierarchical Attribute Disable for the TTBR1 region.
29529                                                                  0 = Hierarchical Attributes are enabled.
29530                                                                  1 = Hierarchical Attributes are disabled. */
29531         uint64_t reserved_43_63        : 21;
29532 #endif /* Word 0 - End */
29533     } cn;
29534 };
29535 typedef union bdk_ap_tcr_el1 bdk_ap_tcr_el1_t;
29536 
29537 #define BDK_AP_TCR_EL1 BDK_AP_TCR_EL1_FUNC()
29538 static inline uint64_t BDK_AP_TCR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TCR_EL1_FUNC(void)29539 static inline uint64_t BDK_AP_TCR_EL1_FUNC(void)
29540 {
29541     return 0x30002000200ll;
29542 }
29543 
29544 #define typedef_BDK_AP_TCR_EL1 bdk_ap_tcr_el1_t
29545 #define bustype_BDK_AP_TCR_EL1 BDK_CSR_TYPE_SYSREG
29546 #define basename_BDK_AP_TCR_EL1 "AP_TCR_EL1"
29547 #define busnum_BDK_AP_TCR_EL1 0
29548 #define arguments_BDK_AP_TCR_EL1 -1,-1,-1,-1
29549 
29550 /**
29551  * Register (SYSREG) ap_tcr_el12
29552  *
29553  * AP Translation Control EL1/2 Register
29554  * Alias of AP_TCR_EL1 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
29555  */
29556 union bdk_ap_tcr_el12
29557 {
29558     uint64_t u;
29559     struct bdk_ap_tcr_el12_s
29560     {
29561 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
29562         uint64_t reserved_0_63         : 64;
29563 #else /* Word 0 - Little Endian */
29564         uint64_t reserved_0_63         : 64;
29565 #endif /* Word 0 - End */
29566     } s;
29567     /* struct bdk_ap_tcr_el12_s cn; */
29568 };
29569 typedef union bdk_ap_tcr_el12 bdk_ap_tcr_el12_t;
29570 
29571 #define BDK_AP_TCR_EL12 BDK_AP_TCR_EL12_FUNC()
29572 static inline uint64_t BDK_AP_TCR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TCR_EL12_FUNC(void)29573 static inline uint64_t BDK_AP_TCR_EL12_FUNC(void)
29574 {
29575     return 0x30502000200ll;
29576 }
29577 
29578 #define typedef_BDK_AP_TCR_EL12 bdk_ap_tcr_el12_t
29579 #define bustype_BDK_AP_TCR_EL12 BDK_CSR_TYPE_SYSREG
29580 #define basename_BDK_AP_TCR_EL12 "AP_TCR_EL12"
29581 #define busnum_BDK_AP_TCR_EL12 0
29582 #define arguments_BDK_AP_TCR_EL12 -1,-1,-1,-1
29583 
29584 /**
29585  * Register (SYSREG) ap_tcr_el2
29586  *
29587  * AP Translation Control Non-E2H (EL2) Register
29588  * Controls translation table walks required for the stage 1
29589  *     translation of memory accesses from EL2, and holds
29590  *     cacheability and shareability information for the accesses.
29591  *
29592  * This register is at the same select as AP_TCR_EL2_E2H and is used when E2H=0.
29593  */
29594 union bdk_ap_tcr_el2
29595 {
29596     uint32_t u;
29597     struct bdk_ap_tcr_el2_s
29598     {
29599 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
29600         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
29601         uint32_t reserved_25_30        : 6;
29602         uint32_t had                   : 1;  /**< [ 24: 24](R/W) V8.1: Hierarchical Attribute Disable.
29603                                                                  HAD (bit[24]): Hierarchical Attribute Disable.
29604                                                                  0 = Hierarchical Attributes are enabled.
29605                                                                  1 = Hierarchical Attributes are disabled. */
29606         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
29607         uint32_t reserved_21_22        : 2;
29608         uint32_t tbi                   : 1;  /**< [ 20: 20](R/W) Top Byte ignored - indicates whether the top byte of an
29609                                                                      address is used for address match for the AP_TTBR0_EL3 region, or
29610                                                                      ignored and used for tagged addresses.
29611 
29612                                                                  This affects addresses generated in EL3 using AArch64 where
29613                                                                      the address would be translated by tables pointed to by
29614                                                                      AP_TTBR0_EL3. It has an effect whether the EL3 translation regime
29615                                                                      is enabled or not.
29616 
29617                                                                  Additionally, this affects changes to the program counter,
29618                                                                      when TBI is 1, caused by:
29619                                                                  * A branch or procedure return within EL3.
29620                                                                  * A exception taken to EL3.
29621                                                                  * An exception return to EL3.
29622 
29623                                                                  In these cases bits [63:56] of the address are set to 0 before
29624                                                                      it is stored in the PC.
29625                                                                  0 = Top Byte used in the address calculation.
29626                                                                  1 = Top Byte ignored in the address calculation. */
29627         uint32_t reserved_19           : 1;
29628         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
29629 
29630                                                                  The reserved values behave in the same way as the0b101
29631                                                                  0x0 = 32 bits, 4GB.
29632                                                                  0x1 = 36 bits, 64GB.
29633                                                                  0x2 = 40 bits, 1TB.
29634                                                                  0x3 = 42 bits, 4TB.
29635                                                                  0x4 = 44 bits, 16TB.
29636                                                                  0x5 = 48 bits, 256TB. */
29637         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
29638                                                                      address register.
29639 
29640                                                                  If the value is programmed to either a reserved value, or a
29641                                                                      size that has not been implemented, then the hardware will
29642                                                                      treat the field as if it has been programmed to an
29643                                                                      implementation defined choice of the sizes that has been
29644                                                                      implemented for all purposes other than the value read back
29645                                                                      from this register.
29646 
29647                                                                  It is implementation defined whether the value read back is
29648                                                                      the value programmed or the value that corresponds to the size
29649                                                                      chosen.
29650 
29651                                                                  0x0 = 4KB.
29652                                                                  0x1 = 64KB.
29653                                                                  0x2 = 16KB. */
29654         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
29655                                                                      table walks using AP_TTBR0_EL3.
29656 
29657                                                                  0x0 = Non-shareable.
29658                                                                  0x2 = Outer Shareable.
29659                                                                  0x3 = Inner Shareable. */
29660         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
29661                                                                      translation table walks using AP_TTBR0_EL3.
29662                                                                  0x0 = Normal memory, Outer Non-cacheable.
29663                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
29664                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
29665                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
29666         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
29667                                                                      translation table walks using AP_TTBR0_EL3.
29668                                                                  0x0 = Normal memory, Inner Non-cacheable.
29669                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
29670                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
29671                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
29672         uint32_t reserved_6_7          : 2;
29673         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL3.
29674                                                                      The region size is 22^(64-T0SZ) bytes.
29675 
29676                                                                  The maximum and minimum possible values for T0SZ depend on the
29677                                                                      level of translation table and the memory translation granule
29678                                                                      size, as described in the AArch64 Virtual Memory System
29679                                                                      Architecture chapter. */
29680 #else /* Word 0 - Little Endian */
29681         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL3.
29682                                                                      The region size is 22^(64-T0SZ) bytes.
29683 
29684                                                                  The maximum and minimum possible values for T0SZ depend on the
29685                                                                      level of translation table and the memory translation granule
29686                                                                      size, as described in the AArch64 Virtual Memory System
29687                                                                      Architecture chapter. */
29688         uint32_t reserved_6_7          : 2;
29689         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
29690                                                                      translation table walks using AP_TTBR0_EL3.
29691                                                                  0x0 = Normal memory, Inner Non-cacheable.
29692                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
29693                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
29694                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
29695         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
29696                                                                      translation table walks using AP_TTBR0_EL3.
29697                                                                  0x0 = Normal memory, Outer Non-cacheable.
29698                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
29699                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
29700                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
29701         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
29702                                                                      table walks using AP_TTBR0_EL3.
29703 
29704                                                                  0x0 = Non-shareable.
29705                                                                  0x2 = Outer Shareable.
29706                                                                  0x3 = Inner Shareable. */
29707         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
29708                                                                      address register.
29709 
29710                                                                  If the value is programmed to either a reserved value, or a
29711                                                                      size that has not been implemented, then the hardware will
29712                                                                      treat the field as if it has been programmed to an
29713                                                                      implementation defined choice of the sizes that has been
29714                                                                      implemented for all purposes other than the value read back
29715                                                                      from this register.
29716 
29717                                                                  It is implementation defined whether the value read back is
29718                                                                      the value programmed or the value that corresponds to the size
29719                                                                      chosen.
29720 
29721                                                                  0x0 = 4KB.
29722                                                                  0x1 = 64KB.
29723                                                                  0x2 = 16KB. */
29724         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
29725 
29726                                                                  The reserved values behave in the same way as the0b101
29727                                                                  0x0 = 32 bits, 4GB.
29728                                                                  0x1 = 36 bits, 64GB.
29729                                                                  0x2 = 40 bits, 1TB.
29730                                                                  0x3 = 42 bits, 4TB.
29731                                                                  0x4 = 44 bits, 16TB.
29732                                                                  0x5 = 48 bits, 256TB. */
29733         uint32_t reserved_19           : 1;
29734         uint32_t tbi                   : 1;  /**< [ 20: 20](R/W) Top Byte ignored - indicates whether the top byte of an
29735                                                                      address is used for address match for the AP_TTBR0_EL3 region, or
29736                                                                      ignored and used for tagged addresses.
29737 
29738                                                                  This affects addresses generated in EL3 using AArch64 where
29739                                                                      the address would be translated by tables pointed to by
29740                                                                      AP_TTBR0_EL3. It has an effect whether the EL3 translation regime
29741                                                                      is enabled or not.
29742 
29743                                                                  Additionally, this affects changes to the program counter,
29744                                                                      when TBI is 1, caused by:
29745                                                                  * A branch or procedure return within EL3.
29746                                                                  * A exception taken to EL3.
29747                                                                  * An exception return to EL3.
29748 
29749                                                                  In these cases bits [63:56] of the address are set to 0 before
29750                                                                      it is stored in the PC.
29751                                                                  0 = Top Byte used in the address calculation.
29752                                                                  1 = Top Byte ignored in the address calculation. */
29753         uint32_t reserved_21_22        : 2;
29754         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
29755         uint32_t had                   : 1;  /**< [ 24: 24](R/W) V8.1: Hierarchical Attribute Disable.
29756                                                                  HAD (bit[24]): Hierarchical Attribute Disable.
29757                                                                  0 = Hierarchical Attributes are enabled.
29758                                                                  1 = Hierarchical Attributes are disabled. */
29759         uint32_t reserved_25_30        : 6;
29760         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
29761 #endif /* Word 0 - End */
29762     } s;
29763     struct bdk_ap_tcr_el2_cn
29764     {
29765 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
29766         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
29767         uint32_t reserved_25_30        : 6;
29768         uint32_t had                   : 1;  /**< [ 24: 24](R/W) V8.1: Hierarchical Attribute Disable.
29769                                                                  HAD (bit[24]): Hierarchical Attribute Disable.
29770                                                                  0 = Hierarchical Attributes are enabled.
29771                                                                  1 = Hierarchical Attributes are disabled. */
29772         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
29773         uint32_t reserved_22           : 1;
29774         uint32_t reserved_21           : 1;
29775         uint32_t tbi                   : 1;  /**< [ 20: 20](R/W) Top Byte ignored - indicates whether the top byte of an
29776                                                                      address is used for address match for the AP_TTBR0_EL3 region, or
29777                                                                      ignored and used for tagged addresses.
29778 
29779                                                                  This affects addresses generated in EL3 using AArch64 where
29780                                                                      the address would be translated by tables pointed to by
29781                                                                      AP_TTBR0_EL3. It has an effect whether the EL3 translation regime
29782                                                                      is enabled or not.
29783 
29784                                                                  Additionally, this affects changes to the program counter,
29785                                                                      when TBI is 1, caused by:
29786                                                                  * A branch or procedure return within EL3.
29787                                                                  * A exception taken to EL3.
29788                                                                  * An exception return to EL3.
29789 
29790                                                                  In these cases bits [63:56] of the address are set to 0 before
29791                                                                      it is stored in the PC.
29792                                                                  0 = Top Byte used in the address calculation.
29793                                                                  1 = Top Byte ignored in the address calculation. */
29794         uint32_t reserved_19           : 1;
29795         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
29796 
29797                                                                  The reserved values behave in the same way as the0b101
29798                                                                  0x0 = 32 bits, 4GB.
29799                                                                  0x1 = 36 bits, 64GB.
29800                                                                  0x2 = 40 bits, 1TB.
29801                                                                  0x3 = 42 bits, 4TB.
29802                                                                  0x4 = 44 bits, 16TB.
29803                                                                  0x5 = 48 bits, 256TB. */
29804         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
29805                                                                      address register.
29806 
29807                                                                  If the value is programmed to either a reserved value, or a
29808                                                                      size that has not been implemented, then the hardware will
29809                                                                      treat the field as if it has been programmed to an
29810                                                                      implementation defined choice of the sizes that has been
29811                                                                      implemented for all purposes other than the value read back
29812                                                                      from this register.
29813 
29814                                                                  It is implementation defined whether the value read back is
29815                                                                      the value programmed or the value that corresponds to the size
29816                                                                      chosen.
29817 
29818                                                                  0x0 = 4KB.
29819                                                                  0x1 = 64KB.
29820                                                                  0x2 = 16KB. */
29821         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
29822                                                                      table walks using AP_TTBR0_EL3.
29823 
29824                                                                  0x0 = Non-shareable.
29825                                                                  0x2 = Outer Shareable.
29826                                                                  0x3 = Inner Shareable. */
29827         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
29828                                                                      translation table walks using AP_TTBR0_EL3.
29829                                                                  0x0 = Normal memory, Outer Non-cacheable.
29830                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
29831                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
29832                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
29833         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
29834                                                                      translation table walks using AP_TTBR0_EL3.
29835                                                                  0x0 = Normal memory, Inner Non-cacheable.
29836                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
29837                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
29838                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
29839         uint32_t reserved_6_7          : 2;
29840         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL3.
29841                                                                      The region size is 22^(64-T0SZ) bytes.
29842 
29843                                                                  The maximum and minimum possible values for T0SZ depend on the
29844                                                                      level of translation table and the memory translation granule
29845                                                                      size, as described in the AArch64 Virtual Memory System
29846                                                                      Architecture chapter. */
29847 #else /* Word 0 - Little Endian */
29848         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL3.
29849                                                                      The region size is 22^(64-T0SZ) bytes.
29850 
29851                                                                  The maximum and minimum possible values for T0SZ depend on the
29852                                                                      level of translation table and the memory translation granule
29853                                                                      size, as described in the AArch64 Virtual Memory System
29854                                                                      Architecture chapter. */
29855         uint32_t reserved_6_7          : 2;
29856         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
29857                                                                      translation table walks using AP_TTBR0_EL3.
29858                                                                  0x0 = Normal memory, Inner Non-cacheable.
29859                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
29860                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
29861                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
29862         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
29863                                                                      translation table walks using AP_TTBR0_EL3.
29864                                                                  0x0 = Normal memory, Outer Non-cacheable.
29865                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
29866                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
29867                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
29868         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
29869                                                                      table walks using AP_TTBR0_EL3.
29870 
29871                                                                  0x0 = Non-shareable.
29872                                                                  0x2 = Outer Shareable.
29873                                                                  0x3 = Inner Shareable. */
29874         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
29875                                                                      address register.
29876 
29877                                                                  If the value is programmed to either a reserved value, or a
29878                                                                      size that has not been implemented, then the hardware will
29879                                                                      treat the field as if it has been programmed to an
29880                                                                      implementation defined choice of the sizes that has been
29881                                                                      implemented for all purposes other than the value read back
29882                                                                      from this register.
29883 
29884                                                                  It is implementation defined whether the value read back is
29885                                                                      the value programmed or the value that corresponds to the size
29886                                                                      chosen.
29887 
29888                                                                  0x0 = 4KB.
29889                                                                  0x1 = 64KB.
29890                                                                  0x2 = 16KB. */
29891         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
29892 
29893                                                                  The reserved values behave in the same way as the0b101
29894                                                                  0x0 = 32 bits, 4GB.
29895                                                                  0x1 = 36 bits, 64GB.
29896                                                                  0x2 = 40 bits, 1TB.
29897                                                                  0x3 = 42 bits, 4TB.
29898                                                                  0x4 = 44 bits, 16TB.
29899                                                                  0x5 = 48 bits, 256TB. */
29900         uint32_t reserved_19           : 1;
29901         uint32_t tbi                   : 1;  /**< [ 20: 20](R/W) Top Byte ignored - indicates whether the top byte of an
29902                                                                      address is used for address match for the AP_TTBR0_EL3 region, or
29903                                                                      ignored and used for tagged addresses.
29904 
29905                                                                  This affects addresses generated in EL3 using AArch64 where
29906                                                                      the address would be translated by tables pointed to by
29907                                                                      AP_TTBR0_EL3. It has an effect whether the EL3 translation regime
29908                                                                      is enabled or not.
29909 
29910                                                                  Additionally, this affects changes to the program counter,
29911                                                                      when TBI is 1, caused by:
29912                                                                  * A branch or procedure return within EL3.
29913                                                                  * A exception taken to EL3.
29914                                                                  * An exception return to EL3.
29915 
29916                                                                  In these cases bits [63:56] of the address are set to 0 before
29917                                                                      it is stored in the PC.
29918                                                                  0 = Top Byte used in the address calculation.
29919                                                                  1 = Top Byte ignored in the address calculation. */
29920         uint32_t reserved_21           : 1;
29921         uint32_t reserved_22           : 1;
29922         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
29923         uint32_t had                   : 1;  /**< [ 24: 24](R/W) V8.1: Hierarchical Attribute Disable.
29924                                                                  HAD (bit[24]): Hierarchical Attribute Disable.
29925                                                                  0 = Hierarchical Attributes are enabled.
29926                                                                  1 = Hierarchical Attributes are disabled. */
29927         uint32_t reserved_25_30        : 6;
29928         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
29929 #endif /* Word 0 - End */
29930     } cn;
29931 };
29932 typedef union bdk_ap_tcr_el2 bdk_ap_tcr_el2_t;
29933 
29934 #define BDK_AP_TCR_EL2 BDK_AP_TCR_EL2_FUNC()
29935 static inline uint64_t BDK_AP_TCR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TCR_EL2_FUNC(void)29936 static inline uint64_t BDK_AP_TCR_EL2_FUNC(void)
29937 {
29938     return 0x30402000200ll;
29939 }
29940 
29941 #define typedef_BDK_AP_TCR_EL2 bdk_ap_tcr_el2_t
29942 #define bustype_BDK_AP_TCR_EL2 BDK_CSR_TYPE_SYSREG
29943 #define basename_BDK_AP_TCR_EL2 "AP_TCR_EL2"
29944 #define busnum_BDK_AP_TCR_EL2 0
29945 #define arguments_BDK_AP_TCR_EL2 -1,-1,-1,-1
29946 
29947 /**
29948  * Register (SYSREG) ap_tcr_el2_e2h
29949  *
29950  * AP Translation Control EL2 E2H (v8.1) Register
29951  * [v8.1] Determines which of the Translation Table Base Registers
29952  *     defined the base address for a translation table walk required
29953  *     for the stage 1 translation of a memory access from EL2.  Also
29954  *     controls the translation table format and holds cacheability and
29955  *     shareability information.
29956  *
29957  * This register is at the same select as AP_TCR_EL2 and is used when E2H=1.
29958  */
29959 union bdk_ap_tcr_el2_e2h
29960 {
29961     uint64_t u;
29962     struct bdk_ap_tcr_el2_e2h_s
29963     {
29964 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
29965         uint64_t reserved_43_63        : 21;
29966         uint64_t had1                  : 1;  /**< [ 42: 42](R/W) V8.1: Hierarchical Attribute Disable.
29967                                                                  HAD1(bit[42]): Hierarchical Attribute Disable for the TTBR1 region.
29968                                                                  0 = Hierarchical Attributes are enabled.
29969                                                                  1 = Hierarchical Attributes are disabled. */
29970         uint64_t had0                  : 1;  /**< [ 41: 41](R/W) V8.1: Hierarchical Attribute Disable.
29971                                                                  HAD0(bit[41]): Hierarchical Attribute Disable for the TTBR0 region.
29972                                                                  0 = Hierarchical Attributes are enabled.
29973                                                                  1 = Hierarchical Attributes are disabled. */
29974         uint64_t reserved_39_40        : 2;
29975         uint64_t tbi1                  : 1;  /**< [ 38: 38](R/W) Top Byte ignored - indicates whether the top byte of an
29976                                                                      address is used for address match for the AP_TTBR1_EL2 region, or
29977                                                                      ignored and used for tagged addresses.
29978 
29979                                                                  This affects addresses generated in EL2 using AArch64
29980                                                                      where the address would be translated by tables pointed to by
29981                                                                      AP_TTBR1_EL2. It has an effect whether the EL2 translation
29982                                                                      regime is enabled or not.
29983 
29984                                                                  Additionally, this affects changes to the program counter,
29985                                                                      when TBI1 is 1 and bit [55] of the target address is 1, caused
29986                                                                      by:
29987                                                                  * A branch or procedure return within EL2.
29988                                                                  * An exception taken to EL2.
29989                                                                  * An exception return to EL2.
29990 
29991                                                                  In these cases bits [63:56] of the address are also set to 1
29992                                                                      before it is stored in the PC.
29993                                                                  0 = Top Byte used in the address calculation.
29994                                                                  1 = Top Byte ignored in the address calculation. */
29995         uint64_t tbi0                  : 1;  /**< [ 37: 37](R/W) Top Byte ignored - indicates whether the top byte of an
29996                                                                      address is used for address match for the AP_TTBR0_EL2 region, or
29997                                                                      ignored and used for tagged addresses.
29998 
29999                                                                  This affects addresses generated in EL2 using AArch64
30000                                                                      where the address would be translated by tables pointed to by
30001                                                                      AP_TTBR0_EL2. It has an effect whether the EL2 translation
30002                                                                      regime is enabled or not.
30003 
30004                                                                  Additionally, this affects changes to the program counter,
30005                                                                      when TBI0 is 1 and bit [55] of the target address is 0, caused
30006                                                                      by:
30007                                                                  * A branch or procedure return within EL2.
30008                                                                  * An exception taken to EL2.
30009                                                                  * An exception return to EL2.
30010 
30011                                                                  In these cases bits [63:56] of the address are also set to 0
30012                                                                      before it is stored in the PC.
30013                                                                  0 = Top Byte used in the address calculation.
30014                                                                  1 = Top Byte ignored in the address calculation. */
30015         uint64_t as                    : 1;  /**< [ 36: 36](R/W) ASID Size.
30016                                                                  If the implementation has only 8 bits of ASID, this field is
30017                                                                      RES0.
30018                                                                  0 = 8 bit - the upper 8 bits of AP_TTBR0_EL2 and AP_TTBR1_EL2 are
30019                                                                      ignored by hardware for every purpose except reading back the
30020                                                                      register, and are treated as if they are all zeros for when
30021                                                                      used for allocation and matching entries in the TLB.
30022                                                                  1 = 16 bit - the upper 16 bits of AP_TTBR0_EL2 and AP_TTBR1_EL2 are used
30023                                                                      for allocation and matching in the TLB. */
30024         uint64_t reserved_35           : 1;
30025         uint64_t ips                   : 3;  /**< [ 34: 32](R/W) Intermediate Physical Address Size.
30026                                                                  0x0 = 32 bits, 4GB.
30027                                                                  0x1 = 36 bits, 64GB.
30028                                                                  0x2 = 40 bits, 1TB.
30029                                                                  0x3 = 42 bits, 4TB.
30030                                                                  0x4 = 44 bits, 16TB.
30031                                                                  0x5 = 48 bits, 256TB. */
30032         uint64_t tg1                   : 2;  /**< [ 31: 30](R/W) AP_TTBR1_EL2 Granule size.
30033 
30034                                                                  If the value is programmed to either a reserved value, or a
30035                                                                      size that has not been implemented, then the hardware will
30036                                                                      treat the field as if it has been programmed to an
30037                                                                      implementation defined choice of the sizes that has been
30038                                                                      implemented for all purposes other than the value read back
30039                                                                      from this register.
30040 
30041                                                                  It is implementation defined whether the value read back is
30042                                                                      the value programmed or the value that corresponds to the size
30043                                                                      chosen.
30044 
30045                                                                  0x1 = 16KB.
30046                                                                  0x2 = 4KB.
30047                                                                  0x3 = 64KB. */
30048         uint64_t sh1                   : 2;  /**< [ 29: 28](R/W) Shareability attribute for memory associated with translation
30049                                                                      table walks using AP_TTBR1_EL2.
30050 
30051                                                                  0x0 = Non-shareable.
30052                                                                  0x2 = Outer Shareable.
30053                                                                  0x3 = Inner Shareable. */
30054         uint64_t orgn1                 : 2;  /**< [ 27: 26](R/W) Outer cacheability attribute for memory associated with
30055                                                                      translation table walks using AP_TTBR1_EL2.
30056                                                                  0x0 = Normal memory, Outer Non-cacheable.
30057                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30058                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30059                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30060         uint64_t irgn1                 : 2;  /**< [ 25: 24](R/W) Inner cacheability attribute for memory associated with
30061                                                                      translation table walks using AP_TTBR1_EL2.
30062                                                                  0x0 = Normal memory, Inner Non-cacheable.
30063                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30064                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30065                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30066         uint64_t epd1                  : 1;  /**< [ 23: 23](R/W) Translation table walk disable for translations using
30067                                                                      AP_TTBR1_EL2. This bit controls whether a translation table walk
30068                                                                      is performed on a TLB miss, for an address that is translated
30069                                                                      using AP_TTBR1_EL2. The encoding of this bit is:
30070                                                                  0 = Perform translation table walks using AP_TTBR1_EL2.
30071                                                                  1 = A TLB miss on an address that is translated using AP_TTBR1_EL2
30072                                                                      generates a Translation fault. No translation table walk is
30073                                                                      performed. */
30074         uint64_t a1                    : 1;  /**< [ 22: 22](R/W) Selects whether AP_TTBR0_EL2 or AP_TTBR1_EL2 defines the ASID. The
30075                                                                      encoding of this bit is:
30076                                                                  0 =  AP_TTBR0_EL2[ASID] defines the ASID.
30077                                                                  1 =  AP_TTBR1_EL2[ASID] defines the ASID. */
30078         uint64_t t1sz                  : 6;  /**< [ 21: 16](R/W) The size offset of the memory region addressed by AP_TTBR1_EL2.
30079                                                                      The region size is 22^(64-T1SZ) bytes.
30080                                                                  The maximum and minimum possible values for T1SZ depend on the
30081                                                                      level of translation table and the memory translation granule
30082                                                                      size, as described in the AArch64 Virtual Memory System
30083                                                                      Architecture chapter. */
30084         uint64_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
30085                                                                      address register.
30086 
30087                                                                  If the value is programmed to either a reserved value, or a
30088                                                                      size that has not been implemented, then the hardware will
30089                                                                      treat the field as if it has been programmed to an
30090                                                                      implementation defined choice of the sizes that has been
30091                                                                      implemented for all purposes other than the value read back
30092                                                                      from this register.
30093 
30094                                                                  It is implementation defined whether the value read back is
30095                                                                      the value programmed or the value that corresponds to the size
30096                                                                      chosen.
30097 
30098                                                                  0x0 = 4KB.
30099                                                                  0x1 = 64KB.
30100                                                                  0x2 = 16KB. */
30101         uint64_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
30102                                                                      table walks using AP_TTBR0_EL2.
30103 
30104                                                                  0x0 = Non-shareable.
30105                                                                  0x2 = Outer Shareable.
30106                                                                  0x3 = Inner Shareable. */
30107         uint64_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
30108                                                                      translation table walks using AP_TTBR0_EL2.
30109                                                                  0x0 = Normal memory, Outer Non-cacheable.
30110                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30111                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30112                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30113         uint64_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
30114                                                                      translation table walks using AP_TTBR0_EL2.
30115                                                                  0x0 = Normal memory, Inner Non-cacheable.
30116                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30117                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30118                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30119         uint64_t epd0                  : 1;  /**< [  7:  7](R/W) Translation table walk disable for translations using TTBR0.
30120                                                                      This bit controls whether a translation table walk is
30121                                                                      performed on a TLB miss, for an address that is translated
30122                                                                      using TTBR0. The encoding of this bit is:
30123                                                                  0 = Perform translation table walks using TTBR0.
30124                                                                  1 = A TLB miss on an address that is translated using TTBR0
30125                                                                      generates a Translation fault. No translation table walk is
30126                                                                      performed. */
30127         uint64_t reserved_6            : 1;
30128         uint64_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL2.
30129                                                                      The region size is 22^(64-T0SZ) bytes.
30130                                                                  The maximum and minimum possible values for T0SZ depend on the
30131                                                                      level of translation table and the memory translation granule
30132                                                                      size, as described in the AArch64 Virtual Memory System
30133                                                                      Architecture chapter. */
30134 #else /* Word 0 - Little Endian */
30135         uint64_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL2.
30136                                                                      The region size is 22^(64-T0SZ) bytes.
30137                                                                  The maximum and minimum possible values for T0SZ depend on the
30138                                                                      level of translation table and the memory translation granule
30139                                                                      size, as described in the AArch64 Virtual Memory System
30140                                                                      Architecture chapter. */
30141         uint64_t reserved_6            : 1;
30142         uint64_t epd0                  : 1;  /**< [  7:  7](R/W) Translation table walk disable for translations using TTBR0.
30143                                                                      This bit controls whether a translation table walk is
30144                                                                      performed on a TLB miss, for an address that is translated
30145                                                                      using TTBR0. The encoding of this bit is:
30146                                                                  0 = Perform translation table walks using TTBR0.
30147                                                                  1 = A TLB miss on an address that is translated using TTBR0
30148                                                                      generates a Translation fault. No translation table walk is
30149                                                                      performed. */
30150         uint64_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
30151                                                                      translation table walks using AP_TTBR0_EL2.
30152                                                                  0x0 = Normal memory, Inner Non-cacheable.
30153                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30154                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30155                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30156         uint64_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
30157                                                                      translation table walks using AP_TTBR0_EL2.
30158                                                                  0x0 = Normal memory, Outer Non-cacheable.
30159                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30160                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30161                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30162         uint64_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
30163                                                                      table walks using AP_TTBR0_EL2.
30164 
30165                                                                  0x0 = Non-shareable.
30166                                                                  0x2 = Outer Shareable.
30167                                                                  0x3 = Inner Shareable. */
30168         uint64_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
30169                                                                      address register.
30170 
30171                                                                  If the value is programmed to either a reserved value, or a
30172                                                                      size that has not been implemented, then the hardware will
30173                                                                      treat the field as if it has been programmed to an
30174                                                                      implementation defined choice of the sizes that has been
30175                                                                      implemented for all purposes other than the value read back
30176                                                                      from this register.
30177 
30178                                                                  It is implementation defined whether the value read back is
30179                                                                      the value programmed or the value that corresponds to the size
30180                                                                      chosen.
30181 
30182                                                                  0x0 = 4KB.
30183                                                                  0x1 = 64KB.
30184                                                                  0x2 = 16KB. */
30185         uint64_t t1sz                  : 6;  /**< [ 21: 16](R/W) The size offset of the memory region addressed by AP_TTBR1_EL2.
30186                                                                      The region size is 22^(64-T1SZ) bytes.
30187                                                                  The maximum and minimum possible values for T1SZ depend on the
30188                                                                      level of translation table and the memory translation granule
30189                                                                      size, as described in the AArch64 Virtual Memory System
30190                                                                      Architecture chapter. */
30191         uint64_t a1                    : 1;  /**< [ 22: 22](R/W) Selects whether AP_TTBR0_EL2 or AP_TTBR1_EL2 defines the ASID. The
30192                                                                      encoding of this bit is:
30193                                                                  0 =  AP_TTBR0_EL2[ASID] defines the ASID.
30194                                                                  1 =  AP_TTBR1_EL2[ASID] defines the ASID. */
30195         uint64_t epd1                  : 1;  /**< [ 23: 23](R/W) Translation table walk disable for translations using
30196                                                                      AP_TTBR1_EL2. This bit controls whether a translation table walk
30197                                                                      is performed on a TLB miss, for an address that is translated
30198                                                                      using AP_TTBR1_EL2. The encoding of this bit is:
30199                                                                  0 = Perform translation table walks using AP_TTBR1_EL2.
30200                                                                  1 = A TLB miss on an address that is translated using AP_TTBR1_EL2
30201                                                                      generates a Translation fault. No translation table walk is
30202                                                                      performed. */
30203         uint64_t irgn1                 : 2;  /**< [ 25: 24](R/W) Inner cacheability attribute for memory associated with
30204                                                                      translation table walks using AP_TTBR1_EL2.
30205                                                                  0x0 = Normal memory, Inner Non-cacheable.
30206                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30207                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30208                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30209         uint64_t orgn1                 : 2;  /**< [ 27: 26](R/W) Outer cacheability attribute for memory associated with
30210                                                                      translation table walks using AP_TTBR1_EL2.
30211                                                                  0x0 = Normal memory, Outer Non-cacheable.
30212                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30213                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30214                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30215         uint64_t sh1                   : 2;  /**< [ 29: 28](R/W) Shareability attribute for memory associated with translation
30216                                                                      table walks using AP_TTBR1_EL2.
30217 
30218                                                                  0x0 = Non-shareable.
30219                                                                  0x2 = Outer Shareable.
30220                                                                  0x3 = Inner Shareable. */
30221         uint64_t tg1                   : 2;  /**< [ 31: 30](R/W) AP_TTBR1_EL2 Granule size.
30222 
30223                                                                  If the value is programmed to either a reserved value, or a
30224                                                                      size that has not been implemented, then the hardware will
30225                                                                      treat the field as if it has been programmed to an
30226                                                                      implementation defined choice of the sizes that has been
30227                                                                      implemented for all purposes other than the value read back
30228                                                                      from this register.
30229 
30230                                                                  It is implementation defined whether the value read back is
30231                                                                      the value programmed or the value that corresponds to the size
30232                                                                      chosen.
30233 
30234                                                                  0x1 = 16KB.
30235                                                                  0x2 = 4KB.
30236                                                                  0x3 = 64KB. */
30237         uint64_t ips                   : 3;  /**< [ 34: 32](R/W) Intermediate Physical Address Size.
30238                                                                  0x0 = 32 bits, 4GB.
30239                                                                  0x1 = 36 bits, 64GB.
30240                                                                  0x2 = 40 bits, 1TB.
30241                                                                  0x3 = 42 bits, 4TB.
30242                                                                  0x4 = 44 bits, 16TB.
30243                                                                  0x5 = 48 bits, 256TB. */
30244         uint64_t reserved_35           : 1;
30245         uint64_t as                    : 1;  /**< [ 36: 36](R/W) ASID Size.
30246                                                                  If the implementation has only 8 bits of ASID, this field is
30247                                                                      RES0.
30248                                                                  0 = 8 bit - the upper 8 bits of AP_TTBR0_EL2 and AP_TTBR1_EL2 are
30249                                                                      ignored by hardware for every purpose except reading back the
30250                                                                      register, and are treated as if they are all zeros for when
30251                                                                      used for allocation and matching entries in the TLB.
30252                                                                  1 = 16 bit - the upper 16 bits of AP_TTBR0_EL2 and AP_TTBR1_EL2 are used
30253                                                                      for allocation and matching in the TLB. */
30254         uint64_t tbi0                  : 1;  /**< [ 37: 37](R/W) Top Byte ignored - indicates whether the top byte of an
30255                                                                      address is used for address match for the AP_TTBR0_EL2 region, or
30256                                                                      ignored and used for tagged addresses.
30257 
30258                                                                  This affects addresses generated in EL2 using AArch64
30259                                                                      where the address would be translated by tables pointed to by
30260                                                                      AP_TTBR0_EL2. It has an effect whether the EL2 translation
30261                                                                      regime is enabled or not.
30262 
30263                                                                  Additionally, this affects changes to the program counter,
30264                                                                      when TBI0 is 1 and bit [55] of the target address is 0, caused
30265                                                                      by:
30266                                                                  * A branch or procedure return within EL2.
30267                                                                  * An exception taken to EL2.
30268                                                                  * An exception return to EL2.
30269 
30270                                                                  In these cases bits [63:56] of the address are also set to 0
30271                                                                      before it is stored in the PC.
30272                                                                  0 = Top Byte used in the address calculation.
30273                                                                  1 = Top Byte ignored in the address calculation. */
30274         uint64_t tbi1                  : 1;  /**< [ 38: 38](R/W) Top Byte ignored - indicates whether the top byte of an
30275                                                                      address is used for address match for the AP_TTBR1_EL2 region, or
30276                                                                      ignored and used for tagged addresses.
30277 
30278                                                                  This affects addresses generated in EL2 using AArch64
30279                                                                      where the address would be translated by tables pointed to by
30280                                                                      AP_TTBR1_EL2. It has an effect whether the EL2 translation
30281                                                                      regime is enabled or not.
30282 
30283                                                                  Additionally, this affects changes to the program counter,
30284                                                                      when TBI1 is 1 and bit [55] of the target address is 1, caused
30285                                                                      by:
30286                                                                  * A branch or procedure return within EL2.
30287                                                                  * An exception taken to EL2.
30288                                                                  * An exception return to EL2.
30289 
30290                                                                  In these cases bits [63:56] of the address are also set to 1
30291                                                                      before it is stored in the PC.
30292                                                                  0 = Top Byte used in the address calculation.
30293                                                                  1 = Top Byte ignored in the address calculation. */
30294         uint64_t reserved_39_40        : 2;
30295         uint64_t had0                  : 1;  /**< [ 41: 41](R/W) V8.1: Hierarchical Attribute Disable.
30296                                                                  HAD0(bit[41]): Hierarchical Attribute Disable for the TTBR0 region.
30297                                                                  0 = Hierarchical Attributes are enabled.
30298                                                                  1 = Hierarchical Attributes are disabled. */
30299         uint64_t had1                  : 1;  /**< [ 42: 42](R/W) V8.1: Hierarchical Attribute Disable.
30300                                                                  HAD1(bit[42]): Hierarchical Attribute Disable for the TTBR1 region.
30301                                                                  0 = Hierarchical Attributes are enabled.
30302                                                                  1 = Hierarchical Attributes are disabled. */
30303         uint64_t reserved_43_63        : 21;
30304 #endif /* Word 0 - End */
30305     } s;
30306     struct bdk_ap_tcr_el2_e2h_cn
30307     {
30308 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
30309         uint64_t reserved_43_63        : 21;
30310         uint64_t had1                  : 1;  /**< [ 42: 42](R/W) V8.1: Hierarchical Attribute Disable.
30311                                                                  HAD1(bit[42]): Hierarchical Attribute Disable for the TTBR1 region.
30312                                                                  0 = Hierarchical Attributes are enabled.
30313                                                                  1 = Hierarchical Attributes are disabled. */
30314         uint64_t had0                  : 1;  /**< [ 41: 41](R/W) V8.1: Hierarchical Attribute Disable.
30315                                                                  HAD0(bit[41]): Hierarchical Attribute Disable for the TTBR0 region.
30316                                                                  0 = Hierarchical Attributes are enabled.
30317                                                                  1 = Hierarchical Attributes are disabled. */
30318         uint64_t reserved_40           : 1;
30319         uint64_t reserved_39           : 1;
30320         uint64_t tbi1                  : 1;  /**< [ 38: 38](R/W) Top Byte ignored - indicates whether the top byte of an
30321                                                                      address is used for address match for the AP_TTBR1_EL2 region, or
30322                                                                      ignored and used for tagged addresses.
30323 
30324                                                                  This affects addresses generated in EL2 using AArch64
30325                                                                      where the address would be translated by tables pointed to by
30326                                                                      AP_TTBR1_EL2. It has an effect whether the EL2 translation
30327                                                                      regime is enabled or not.
30328 
30329                                                                  Additionally, this affects changes to the program counter,
30330                                                                      when TBI1 is 1 and bit [55] of the target address is 1, caused
30331                                                                      by:
30332                                                                  * A branch or procedure return within EL2.
30333                                                                  * An exception taken to EL2.
30334                                                                  * An exception return to EL2.
30335 
30336                                                                  In these cases bits [63:56] of the address are also set to 1
30337                                                                      before it is stored in the PC.
30338                                                                  0 = Top Byte used in the address calculation.
30339                                                                  1 = Top Byte ignored in the address calculation. */
30340         uint64_t tbi0                  : 1;  /**< [ 37: 37](R/W) Top Byte ignored - indicates whether the top byte of an
30341                                                                      address is used for address match for the AP_TTBR0_EL2 region, or
30342                                                                      ignored and used for tagged addresses.
30343 
30344                                                                  This affects addresses generated in EL2 using AArch64
30345                                                                      where the address would be translated by tables pointed to by
30346                                                                      AP_TTBR0_EL2. It has an effect whether the EL2 translation
30347                                                                      regime is enabled or not.
30348 
30349                                                                  Additionally, this affects changes to the program counter,
30350                                                                      when TBI0 is 1 and bit [55] of the target address is 0, caused
30351                                                                      by:
30352                                                                  * A branch or procedure return within EL2.
30353                                                                  * An exception taken to EL2.
30354                                                                  * An exception return to EL2.
30355 
30356                                                                  In these cases bits [63:56] of the address are also set to 0
30357                                                                      before it is stored in the PC.
30358                                                                  0 = Top Byte used in the address calculation.
30359                                                                  1 = Top Byte ignored in the address calculation. */
30360         uint64_t as                    : 1;  /**< [ 36: 36](R/W) ASID Size.
30361                                                                  If the implementation has only 8 bits of ASID, this field is
30362                                                                      RES0.
30363                                                                  0 = 8 bit - the upper 8 bits of AP_TTBR0_EL2 and AP_TTBR1_EL2 are
30364                                                                      ignored by hardware for every purpose except reading back the
30365                                                                      register, and are treated as if they are all zeros for when
30366                                                                      used for allocation and matching entries in the TLB.
30367                                                                  1 = 16 bit - the upper 16 bits of AP_TTBR0_EL2 and AP_TTBR1_EL2 are used
30368                                                                      for allocation and matching in the TLB. */
30369         uint64_t reserved_35           : 1;
30370         uint64_t ips                   : 3;  /**< [ 34: 32](R/W) Intermediate Physical Address Size.
30371                                                                  0x0 = 32 bits, 4GB.
30372                                                                  0x1 = 36 bits, 64GB.
30373                                                                  0x2 = 40 bits, 1TB.
30374                                                                  0x3 = 42 bits, 4TB.
30375                                                                  0x4 = 44 bits, 16TB.
30376                                                                  0x5 = 48 bits, 256TB. */
30377         uint64_t tg1                   : 2;  /**< [ 31: 30](R/W) AP_TTBR1_EL2 Granule size.
30378 
30379                                                                  If the value is programmed to either a reserved value, or a
30380                                                                      size that has not been implemented, then the hardware will
30381                                                                      treat the field as if it has been programmed to an
30382                                                                      implementation defined choice of the sizes that has been
30383                                                                      implemented for all purposes other than the value read back
30384                                                                      from this register.
30385 
30386                                                                  It is implementation defined whether the value read back is
30387                                                                      the value programmed or the value that corresponds to the size
30388                                                                      chosen.
30389 
30390                                                                  0x1 = 16KB.
30391                                                                  0x2 = 4KB.
30392                                                                  0x3 = 64KB. */
30393         uint64_t sh1                   : 2;  /**< [ 29: 28](R/W) Shareability attribute for memory associated with translation
30394                                                                      table walks using AP_TTBR1_EL2.
30395 
30396                                                                  0x0 = Non-shareable.
30397                                                                  0x2 = Outer Shareable.
30398                                                                  0x3 = Inner Shareable. */
30399         uint64_t orgn1                 : 2;  /**< [ 27: 26](R/W) Outer cacheability attribute for memory associated with
30400                                                                      translation table walks using AP_TTBR1_EL2.
30401                                                                  0x0 = Normal memory, Outer Non-cacheable.
30402                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30403                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30404                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30405         uint64_t irgn1                 : 2;  /**< [ 25: 24](R/W) Inner cacheability attribute for memory associated with
30406                                                                      translation table walks using AP_TTBR1_EL2.
30407                                                                  0x0 = Normal memory, Inner Non-cacheable.
30408                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30409                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30410                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30411         uint64_t epd1                  : 1;  /**< [ 23: 23](R/W) Translation table walk disable for translations using
30412                                                                      AP_TTBR1_EL2. This bit controls whether a translation table walk
30413                                                                      is performed on a TLB miss, for an address that is translated
30414                                                                      using AP_TTBR1_EL2. The encoding of this bit is:
30415                                                                  0 = Perform translation table walks using AP_TTBR1_EL2.
30416                                                                  1 = A TLB miss on an address that is translated using AP_TTBR1_EL2
30417                                                                      generates a Translation fault. No translation table walk is
30418                                                                      performed. */
30419         uint64_t a1                    : 1;  /**< [ 22: 22](R/W) Selects whether AP_TTBR0_EL2 or AP_TTBR1_EL2 defines the ASID. The
30420                                                                      encoding of this bit is:
30421                                                                  0 =  AP_TTBR0_EL2[ASID] defines the ASID.
30422                                                                  1 =  AP_TTBR1_EL2[ASID] defines the ASID. */
30423         uint64_t t1sz                  : 6;  /**< [ 21: 16](R/W) The size offset of the memory region addressed by AP_TTBR1_EL2.
30424                                                                      The region size is 22^(64-T1SZ) bytes.
30425                                                                  The maximum and minimum possible values for T1SZ depend on the
30426                                                                      level of translation table and the memory translation granule
30427                                                                      size, as described in the AArch64 Virtual Memory System
30428                                                                      Architecture chapter. */
30429         uint64_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
30430                                                                      address register.
30431 
30432                                                                  If the value is programmed to either a reserved value, or a
30433                                                                      size that has not been implemented, then the hardware will
30434                                                                      treat the field as if it has been programmed to an
30435                                                                      implementation defined choice of the sizes that has been
30436                                                                      implemented for all purposes other than the value read back
30437                                                                      from this register.
30438 
30439                                                                  It is implementation defined whether the value read back is
30440                                                                      the value programmed or the value that corresponds to the size
30441                                                                      chosen.
30442 
30443                                                                  0x0 = 4KB.
30444                                                                  0x1 = 64KB.
30445                                                                  0x2 = 16KB. */
30446         uint64_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
30447                                                                      table walks using AP_TTBR0_EL2.
30448 
30449                                                                  0x0 = Non-shareable.
30450                                                                  0x2 = Outer Shareable.
30451                                                                  0x3 = Inner Shareable. */
30452         uint64_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
30453                                                                      translation table walks using AP_TTBR0_EL2.
30454                                                                  0x0 = Normal memory, Outer Non-cacheable.
30455                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30456                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30457                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30458         uint64_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
30459                                                                      translation table walks using AP_TTBR0_EL2.
30460                                                                  0x0 = Normal memory, Inner Non-cacheable.
30461                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30462                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30463                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30464         uint64_t epd0                  : 1;  /**< [  7:  7](R/W) Translation table walk disable for translations using TTBR0.
30465                                                                      This bit controls whether a translation table walk is
30466                                                                      performed on a TLB miss, for an address that is translated
30467                                                                      using TTBR0. The encoding of this bit is:
30468                                                                  0 = Perform translation table walks using TTBR0.
30469                                                                  1 = A TLB miss on an address that is translated using TTBR0
30470                                                                      generates a Translation fault. No translation table walk is
30471                                                                      performed. */
30472         uint64_t reserved_6            : 1;
30473         uint64_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL2.
30474                                                                      The region size is 22^(64-T0SZ) bytes.
30475                                                                  The maximum and minimum possible values for T0SZ depend on the
30476                                                                      level of translation table and the memory translation granule
30477                                                                      size, as described in the AArch64 Virtual Memory System
30478                                                                      Architecture chapter. */
30479 #else /* Word 0 - Little Endian */
30480         uint64_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL2.
30481                                                                      The region size is 22^(64-T0SZ) bytes.
30482                                                                  The maximum and minimum possible values for T0SZ depend on the
30483                                                                      level of translation table and the memory translation granule
30484                                                                      size, as described in the AArch64 Virtual Memory System
30485                                                                      Architecture chapter. */
30486         uint64_t reserved_6            : 1;
30487         uint64_t epd0                  : 1;  /**< [  7:  7](R/W) Translation table walk disable for translations using TTBR0.
30488                                                                      This bit controls whether a translation table walk is
30489                                                                      performed on a TLB miss, for an address that is translated
30490                                                                      using TTBR0. The encoding of this bit is:
30491                                                                  0 = Perform translation table walks using TTBR0.
30492                                                                  1 = A TLB miss on an address that is translated using TTBR0
30493                                                                      generates a Translation fault. No translation table walk is
30494                                                                      performed. */
30495         uint64_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
30496                                                                      translation table walks using AP_TTBR0_EL2.
30497                                                                  0x0 = Normal memory, Inner Non-cacheable.
30498                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30499                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30500                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30501         uint64_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
30502                                                                      translation table walks using AP_TTBR0_EL2.
30503                                                                  0x0 = Normal memory, Outer Non-cacheable.
30504                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30505                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30506                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30507         uint64_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
30508                                                                      table walks using AP_TTBR0_EL2.
30509 
30510                                                                  0x0 = Non-shareable.
30511                                                                  0x2 = Outer Shareable.
30512                                                                  0x3 = Inner Shareable. */
30513         uint64_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
30514                                                                      address register.
30515 
30516                                                                  If the value is programmed to either a reserved value, or a
30517                                                                      size that has not been implemented, then the hardware will
30518                                                                      treat the field as if it has been programmed to an
30519                                                                      implementation defined choice of the sizes that has been
30520                                                                      implemented for all purposes other than the value read back
30521                                                                      from this register.
30522 
30523                                                                  It is implementation defined whether the value read back is
30524                                                                      the value programmed or the value that corresponds to the size
30525                                                                      chosen.
30526 
30527                                                                  0x0 = 4KB.
30528                                                                  0x1 = 64KB.
30529                                                                  0x2 = 16KB. */
30530         uint64_t t1sz                  : 6;  /**< [ 21: 16](R/W) The size offset of the memory region addressed by AP_TTBR1_EL2.
30531                                                                      The region size is 22^(64-T1SZ) bytes.
30532                                                                  The maximum and minimum possible values for T1SZ depend on the
30533                                                                      level of translation table and the memory translation granule
30534                                                                      size, as described in the AArch64 Virtual Memory System
30535                                                                      Architecture chapter. */
30536         uint64_t a1                    : 1;  /**< [ 22: 22](R/W) Selects whether AP_TTBR0_EL2 or AP_TTBR1_EL2 defines the ASID. The
30537                                                                      encoding of this bit is:
30538                                                                  0 =  AP_TTBR0_EL2[ASID] defines the ASID.
30539                                                                  1 =  AP_TTBR1_EL2[ASID] defines the ASID. */
30540         uint64_t epd1                  : 1;  /**< [ 23: 23](R/W) Translation table walk disable for translations using
30541                                                                      AP_TTBR1_EL2. This bit controls whether a translation table walk
30542                                                                      is performed on a TLB miss, for an address that is translated
30543                                                                      using AP_TTBR1_EL2. The encoding of this bit is:
30544                                                                  0 = Perform translation table walks using AP_TTBR1_EL2.
30545                                                                  1 = A TLB miss on an address that is translated using AP_TTBR1_EL2
30546                                                                      generates a Translation fault. No translation table walk is
30547                                                                      performed. */
30548         uint64_t irgn1                 : 2;  /**< [ 25: 24](R/W) Inner cacheability attribute for memory associated with
30549                                                                      translation table walks using AP_TTBR1_EL2.
30550                                                                  0x0 = Normal memory, Inner Non-cacheable.
30551                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30552                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30553                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30554         uint64_t orgn1                 : 2;  /**< [ 27: 26](R/W) Outer cacheability attribute for memory associated with
30555                                                                      translation table walks using AP_TTBR1_EL2.
30556                                                                  0x0 = Normal memory, Outer Non-cacheable.
30557                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30558                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30559                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30560         uint64_t sh1                   : 2;  /**< [ 29: 28](R/W) Shareability attribute for memory associated with translation
30561                                                                      table walks using AP_TTBR1_EL2.
30562 
30563                                                                  0x0 = Non-shareable.
30564                                                                  0x2 = Outer Shareable.
30565                                                                  0x3 = Inner Shareable. */
30566         uint64_t tg1                   : 2;  /**< [ 31: 30](R/W) AP_TTBR1_EL2 Granule size.
30567 
30568                                                                  If the value is programmed to either a reserved value, or a
30569                                                                      size that has not been implemented, then the hardware will
30570                                                                      treat the field as if it has been programmed to an
30571                                                                      implementation defined choice of the sizes that has been
30572                                                                      implemented for all purposes other than the value read back
30573                                                                      from this register.
30574 
30575                                                                  It is implementation defined whether the value read back is
30576                                                                      the value programmed or the value that corresponds to the size
30577                                                                      chosen.
30578 
30579                                                                  0x1 = 16KB.
30580                                                                  0x2 = 4KB.
30581                                                                  0x3 = 64KB. */
30582         uint64_t ips                   : 3;  /**< [ 34: 32](R/W) Intermediate Physical Address Size.
30583                                                                  0x0 = 32 bits, 4GB.
30584                                                                  0x1 = 36 bits, 64GB.
30585                                                                  0x2 = 40 bits, 1TB.
30586                                                                  0x3 = 42 bits, 4TB.
30587                                                                  0x4 = 44 bits, 16TB.
30588                                                                  0x5 = 48 bits, 256TB. */
30589         uint64_t reserved_35           : 1;
30590         uint64_t as                    : 1;  /**< [ 36: 36](R/W) ASID Size.
30591                                                                  If the implementation has only 8 bits of ASID, this field is
30592                                                                      RES0.
30593                                                                  0 = 8 bit - the upper 8 bits of AP_TTBR0_EL2 and AP_TTBR1_EL2 are
30594                                                                      ignored by hardware for every purpose except reading back the
30595                                                                      register, and are treated as if they are all zeros for when
30596                                                                      used for allocation and matching entries in the TLB.
30597                                                                  1 = 16 bit - the upper 16 bits of AP_TTBR0_EL2 and AP_TTBR1_EL2 are used
30598                                                                      for allocation and matching in the TLB. */
30599         uint64_t tbi0                  : 1;  /**< [ 37: 37](R/W) Top Byte ignored - indicates whether the top byte of an
30600                                                                      address is used for address match for the AP_TTBR0_EL2 region, or
30601                                                                      ignored and used for tagged addresses.
30602 
30603                                                                  This affects addresses generated in EL2 using AArch64
30604                                                                      where the address would be translated by tables pointed to by
30605                                                                      AP_TTBR0_EL2. It has an effect whether the EL2 translation
30606                                                                      regime is enabled or not.
30607 
30608                                                                  Additionally, this affects changes to the program counter,
30609                                                                      when TBI0 is 1 and bit [55] of the target address is 0, caused
30610                                                                      by:
30611                                                                  * A branch or procedure return within EL2.
30612                                                                  * An exception taken to EL2.
30613                                                                  * An exception return to EL2.
30614 
30615                                                                  In these cases bits [63:56] of the address are also set to 0
30616                                                                      before it is stored in the PC.
30617                                                                  0 = Top Byte used in the address calculation.
30618                                                                  1 = Top Byte ignored in the address calculation. */
30619         uint64_t tbi1                  : 1;  /**< [ 38: 38](R/W) Top Byte ignored - indicates whether the top byte of an
30620                                                                      address is used for address match for the AP_TTBR1_EL2 region, or
30621                                                                      ignored and used for tagged addresses.
30622 
30623                                                                  This affects addresses generated in EL2 using AArch64
30624                                                                      where the address would be translated by tables pointed to by
30625                                                                      AP_TTBR1_EL2. It has an effect whether the EL2 translation
30626                                                                      regime is enabled or not.
30627 
30628                                                                  Additionally, this affects changes to the program counter,
30629                                                                      when TBI1 is 1 and bit [55] of the target address is 1, caused
30630                                                                      by:
30631                                                                  * A branch or procedure return within EL2.
30632                                                                  * An exception taken to EL2.
30633                                                                  * An exception return to EL2.
30634 
30635                                                                  In these cases bits [63:56] of the address are also set to 1
30636                                                                      before it is stored in the PC.
30637                                                                  0 = Top Byte used in the address calculation.
30638                                                                  1 = Top Byte ignored in the address calculation. */
30639         uint64_t reserved_39           : 1;
30640         uint64_t reserved_40           : 1;
30641         uint64_t had0                  : 1;  /**< [ 41: 41](R/W) V8.1: Hierarchical Attribute Disable.
30642                                                                  HAD0(bit[41]): Hierarchical Attribute Disable for the TTBR0 region.
30643                                                                  0 = Hierarchical Attributes are enabled.
30644                                                                  1 = Hierarchical Attributes are disabled. */
30645         uint64_t had1                  : 1;  /**< [ 42: 42](R/W) V8.1: Hierarchical Attribute Disable.
30646                                                                  HAD1(bit[42]): Hierarchical Attribute Disable for the TTBR1 region.
30647                                                                  0 = Hierarchical Attributes are enabled.
30648                                                                  1 = Hierarchical Attributes are disabled. */
30649         uint64_t reserved_43_63        : 21;
30650 #endif /* Word 0 - End */
30651     } cn;
30652 };
30653 typedef union bdk_ap_tcr_el2_e2h bdk_ap_tcr_el2_e2h_t;
30654 
30655 #define BDK_AP_TCR_EL2_E2H BDK_AP_TCR_EL2_E2H_FUNC()
30656 static inline uint64_t BDK_AP_TCR_EL2_E2H_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TCR_EL2_E2H_FUNC(void)30657 static inline uint64_t BDK_AP_TCR_EL2_E2H_FUNC(void)
30658 {
30659     return 0x30402000210ll;
30660 }
30661 
30662 #define typedef_BDK_AP_TCR_EL2_E2H bdk_ap_tcr_el2_e2h_t
30663 #define bustype_BDK_AP_TCR_EL2_E2H BDK_CSR_TYPE_SYSREG
30664 #define basename_BDK_AP_TCR_EL2_E2H "AP_TCR_EL2_E2H"
30665 #define busnum_BDK_AP_TCR_EL2_E2H 0
30666 #define arguments_BDK_AP_TCR_EL2_E2H -1,-1,-1,-1
30667 
30668 /**
30669  * Register (SYSREG) ap_tcr_el3
30670  *
30671  * AP Translation Control EL3 Registers
30672  * Controls translation table walks required for the stage 1
30673  *     translation of memory accesses from EL3, and holds
30674  *     cacheability and shareability information for the accesses.
30675  */
30676 union bdk_ap_tcr_el3
30677 {
30678     uint32_t u;
30679     struct bdk_ap_tcr_el3_s
30680     {
30681 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
30682         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
30683         uint32_t reserved_25_30        : 6;
30684         uint32_t had                   : 1;  /**< [ 24: 24](R/W) V8.1: Hierarchical Attribute Disable.
30685                                                                  HAD (bit[24]): Hierarchical Attribute Disable.
30686                                                                  0 = Hierarchical Attributes are enabled.
30687                                                                  1 = Hierarchical Attributes are disabled. */
30688         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
30689         uint32_t reserved_21_22        : 2;
30690         uint32_t tbi                   : 1;  /**< [ 20: 20](R/W) Top Byte ignored - indicates whether the top byte of an
30691                                                                      address is used for address match for the AP_TTBR0_EL3 region, or
30692                                                                      ignored and used for tagged addresses.
30693 
30694                                                                  This affects addresses generated in EL3 using AArch64 where
30695                                                                      the address would be translated by tables pointed to by
30696                                                                      AP_TTBR0_EL3. It has an effect whether the EL3 translation regime
30697                                                                      is enabled or not.
30698 
30699                                                                  Additionally, this affects changes to the program counter,
30700                                                                      when TBI is 1, caused by:
30701                                                                  * A branch or procedure return within EL3.
30702                                                                  * A exception taken to EL3.
30703                                                                  * An exception return to EL3.
30704 
30705                                                                  In these cases bits [63:56] of the address are set to 0 before
30706                                                                      it is stored in the PC.
30707                                                                  0 = Top Byte used in the address calculation.
30708                                                                  1 = Top Byte ignored in the address calculation. */
30709         uint32_t reserved_19           : 1;
30710         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
30711 
30712                                                                  The reserved values behave in the same way as the0b101
30713                                                                  0x0 = 32 bits, 4GB.
30714                                                                  0x1 = 36 bits, 64GB.
30715                                                                  0x2 = 40 bits, 1TB.
30716                                                                  0x3 = 42 bits, 4TB.
30717                                                                  0x4 = 44 bits, 16TB.
30718                                                                  0x5 = 48 bits, 256TB. */
30719         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
30720                                                                      address register.
30721 
30722                                                                  If the value is programmed to either a reserved value, or a
30723                                                                      size that has not been implemented, then the hardware will
30724                                                                      treat the field as if it has been programmed to an
30725                                                                      implementation defined choice of the sizes that has been
30726                                                                      implemented for all purposes other than the value read back
30727                                                                      from this register.
30728 
30729                                                                  It is implementation defined whether the value read back is
30730                                                                      the value programmed or the value that corresponds to the size
30731                                                                      chosen.
30732                                                                  0x0 = 4KB.
30733                                                                  0x1 = 64KB.
30734                                                                  0x2 = 16KB. */
30735         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
30736                                                                      table walks using AP_TTBR0_EL3.
30737                                                                  0x0 = Non-shareable.
30738                                                                  0x2 = Outer Shareable.
30739                                                                  0x3 = Inner Shareable. */
30740         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
30741                                                                      translation table walks using AP_TTBR0_EL3.
30742                                                                  0x0 = Normal memory, Outer Non-cacheable.
30743                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30744                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30745                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30746         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
30747                                                                      translation table walks using AP_TTBR0_EL3.
30748                                                                  0x0 = Normal memory, Inner Non-cacheable.
30749                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30750                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30751                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30752         uint32_t reserved_6_7          : 2;
30753         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL3.
30754                                                                      The region size is 22^(64-T0SZ) bytes.
30755                                                                  The maximum and minimum possible values for T0SZ depend on the
30756                                                                      level of translation table and the memory translation granule
30757                                                                      size, as described in the AArch64 Virtual Memory System
30758                                                                      Architecture chapter. */
30759 #else /* Word 0 - Little Endian */
30760         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL3.
30761                                                                      The region size is 22^(64-T0SZ) bytes.
30762                                                                  The maximum and minimum possible values for T0SZ depend on the
30763                                                                      level of translation table and the memory translation granule
30764                                                                      size, as described in the AArch64 Virtual Memory System
30765                                                                      Architecture chapter. */
30766         uint32_t reserved_6_7          : 2;
30767         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
30768                                                                      translation table walks using AP_TTBR0_EL3.
30769                                                                  0x0 = Normal memory, Inner Non-cacheable.
30770                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30771                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30772                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30773         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
30774                                                                      translation table walks using AP_TTBR0_EL3.
30775                                                                  0x0 = Normal memory, Outer Non-cacheable.
30776                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30777                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30778                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30779         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
30780                                                                      table walks using AP_TTBR0_EL3.
30781                                                                  0x0 = Non-shareable.
30782                                                                  0x2 = Outer Shareable.
30783                                                                  0x3 = Inner Shareable. */
30784         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
30785                                                                      address register.
30786 
30787                                                                  If the value is programmed to either a reserved value, or a
30788                                                                      size that has not been implemented, then the hardware will
30789                                                                      treat the field as if it has been programmed to an
30790                                                                      implementation defined choice of the sizes that has been
30791                                                                      implemented for all purposes other than the value read back
30792                                                                      from this register.
30793 
30794                                                                  It is implementation defined whether the value read back is
30795                                                                      the value programmed or the value that corresponds to the size
30796                                                                      chosen.
30797                                                                  0x0 = 4KB.
30798                                                                  0x1 = 64KB.
30799                                                                  0x2 = 16KB. */
30800         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
30801 
30802                                                                  The reserved values behave in the same way as the0b101
30803                                                                  0x0 = 32 bits, 4GB.
30804                                                                  0x1 = 36 bits, 64GB.
30805                                                                  0x2 = 40 bits, 1TB.
30806                                                                  0x3 = 42 bits, 4TB.
30807                                                                  0x4 = 44 bits, 16TB.
30808                                                                  0x5 = 48 bits, 256TB. */
30809         uint32_t reserved_19           : 1;
30810         uint32_t tbi                   : 1;  /**< [ 20: 20](R/W) Top Byte ignored - indicates whether the top byte of an
30811                                                                      address is used for address match for the AP_TTBR0_EL3 region, or
30812                                                                      ignored and used for tagged addresses.
30813 
30814                                                                  This affects addresses generated in EL3 using AArch64 where
30815                                                                      the address would be translated by tables pointed to by
30816                                                                      AP_TTBR0_EL3. It has an effect whether the EL3 translation regime
30817                                                                      is enabled or not.
30818 
30819                                                                  Additionally, this affects changes to the program counter,
30820                                                                      when TBI is 1, caused by:
30821                                                                  * A branch or procedure return within EL3.
30822                                                                  * A exception taken to EL3.
30823                                                                  * An exception return to EL3.
30824 
30825                                                                  In these cases bits [63:56] of the address are set to 0 before
30826                                                                      it is stored in the PC.
30827                                                                  0 = Top Byte used in the address calculation.
30828                                                                  1 = Top Byte ignored in the address calculation. */
30829         uint32_t reserved_21_22        : 2;
30830         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
30831         uint32_t had                   : 1;  /**< [ 24: 24](R/W) V8.1: Hierarchical Attribute Disable.
30832                                                                  HAD (bit[24]): Hierarchical Attribute Disable.
30833                                                                  0 = Hierarchical Attributes are enabled.
30834                                                                  1 = Hierarchical Attributes are disabled. */
30835         uint32_t reserved_25_30        : 6;
30836         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
30837 #endif /* Word 0 - End */
30838     } s;
30839     struct bdk_ap_tcr_el3_cn
30840     {
30841 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
30842         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
30843         uint32_t reserved_25_30        : 6;
30844         uint32_t had                   : 1;  /**< [ 24: 24](R/W) V8.1: Hierarchical Attribute Disable.
30845                                                                  HAD (bit[24]): Hierarchical Attribute Disable.
30846                                                                  0 = Hierarchical Attributes are enabled.
30847                                                                  1 = Hierarchical Attributes are disabled. */
30848         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
30849         uint32_t reserved_22           : 1;
30850         uint32_t reserved_21           : 1;
30851         uint32_t tbi                   : 1;  /**< [ 20: 20](R/W) Top Byte ignored - indicates whether the top byte of an
30852                                                                      address is used for address match for the AP_TTBR0_EL3 region, or
30853                                                                      ignored and used for tagged addresses.
30854 
30855                                                                  This affects addresses generated in EL3 using AArch64 where
30856                                                                      the address would be translated by tables pointed to by
30857                                                                      AP_TTBR0_EL3. It has an effect whether the EL3 translation regime
30858                                                                      is enabled or not.
30859 
30860                                                                  Additionally, this affects changes to the program counter,
30861                                                                      when TBI is 1, caused by:
30862                                                                  * A branch or procedure return within EL3.
30863                                                                  * A exception taken to EL3.
30864                                                                  * An exception return to EL3.
30865 
30866                                                                  In these cases bits [63:56] of the address are set to 0 before
30867                                                                      it is stored in the PC.
30868                                                                  0 = Top Byte used in the address calculation.
30869                                                                  1 = Top Byte ignored in the address calculation. */
30870         uint32_t reserved_19           : 1;
30871         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
30872 
30873                                                                  The reserved values behave in the same way as the0b101
30874                                                                  0x0 = 32 bits, 4GB.
30875                                                                  0x1 = 36 bits, 64GB.
30876                                                                  0x2 = 40 bits, 1TB.
30877                                                                  0x3 = 42 bits, 4TB.
30878                                                                  0x4 = 44 bits, 16TB.
30879                                                                  0x5 = 48 bits, 256TB. */
30880         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
30881                                                                      address register.
30882 
30883                                                                  If the value is programmed to either a reserved value, or a
30884                                                                      size that has not been implemented, then the hardware will
30885                                                                      treat the field as if it has been programmed to an
30886                                                                      implementation defined choice of the sizes that has been
30887                                                                      implemented for all purposes other than the value read back
30888                                                                      from this register.
30889 
30890                                                                  It is implementation defined whether the value read back is
30891                                                                      the value programmed or the value that corresponds to the size
30892                                                                      chosen.
30893                                                                  0x0 = 4KB.
30894                                                                  0x1 = 64KB.
30895                                                                  0x2 = 16KB. */
30896         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
30897                                                                      table walks using AP_TTBR0_EL3.
30898                                                                  0x0 = Non-shareable.
30899                                                                  0x2 = Outer Shareable.
30900                                                                  0x3 = Inner Shareable. */
30901         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
30902                                                                      translation table walks using AP_TTBR0_EL3.
30903                                                                  0x0 = Normal memory, Outer Non-cacheable.
30904                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30905                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30906                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30907         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
30908                                                                      translation table walks using AP_TTBR0_EL3.
30909                                                                  0x0 = Normal memory, Inner Non-cacheable.
30910                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30911                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30912                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30913         uint32_t reserved_6_7          : 2;
30914         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL3.
30915                                                                      The region size is 22^(64-T0SZ) bytes.
30916                                                                  The maximum and minimum possible values for T0SZ depend on the
30917                                                                      level of translation table and the memory translation granule
30918                                                                      size, as described in the AArch64 Virtual Memory System
30919                                                                      Architecture chapter. */
30920 #else /* Word 0 - Little Endian */
30921         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_TTBR0_EL3.
30922                                                                      The region size is 22^(64-T0SZ) bytes.
30923                                                                  The maximum and minimum possible values for T0SZ depend on the
30924                                                                      level of translation table and the memory translation granule
30925                                                                      size, as described in the AArch64 Virtual Memory System
30926                                                                      Architecture chapter. */
30927         uint32_t reserved_6_7          : 2;
30928         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
30929                                                                      translation table walks using AP_TTBR0_EL3.
30930                                                                  0x0 = Normal memory, Inner Non-cacheable.
30931                                                                  0x1 = Normal memory, Inner Write-Back Write-Allocate Cacheable.
30932                                                                  0x2 = Normal memory, Inner Write-Through Cacheable.
30933                                                                  0x3 = Normal memory, Inner Write-Back no Write-Allocate Cacheable. */
30934         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
30935                                                                      translation table walks using AP_TTBR0_EL3.
30936                                                                  0x0 = Normal memory, Outer Non-cacheable.
30937                                                                  0x1 = Normal memory, Outer Write-Back Write-Allocate Cacheable.
30938                                                                  0x2 = Normal memory, Outer Write-Through Cacheable.
30939                                                                  0x3 = Normal memory, Outer Write-Back no Write-Allocate Cacheable. */
30940         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
30941                                                                      table walks using AP_TTBR0_EL3.
30942                                                                  0x0 = Non-shareable.
30943                                                                  0x2 = Outer Shareable.
30944                                                                  0x3 = Inner Shareable. */
30945         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
30946                                                                      address register.
30947 
30948                                                                  If the value is programmed to either a reserved value, or a
30949                                                                      size that has not been implemented, then the hardware will
30950                                                                      treat the field as if it has been programmed to an
30951                                                                      implementation defined choice of the sizes that has been
30952                                                                      implemented for all purposes other than the value read back
30953                                                                      from this register.
30954 
30955                                                                  It is implementation defined whether the value read back is
30956                                                                      the value programmed or the value that corresponds to the size
30957                                                                      chosen.
30958                                                                  0x0 = 4KB.
30959                                                                  0x1 = 64KB.
30960                                                                  0x2 = 16KB. */
30961         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
30962 
30963                                                                  The reserved values behave in the same way as the0b101
30964                                                                  0x0 = 32 bits, 4GB.
30965                                                                  0x1 = 36 bits, 64GB.
30966                                                                  0x2 = 40 bits, 1TB.
30967                                                                  0x3 = 42 bits, 4TB.
30968                                                                  0x4 = 44 bits, 16TB.
30969                                                                  0x5 = 48 bits, 256TB. */
30970         uint32_t reserved_19           : 1;
30971         uint32_t tbi                   : 1;  /**< [ 20: 20](R/W) Top Byte ignored - indicates whether the top byte of an
30972                                                                      address is used for address match for the AP_TTBR0_EL3 region, or
30973                                                                      ignored and used for tagged addresses.
30974 
30975                                                                  This affects addresses generated in EL3 using AArch64 where
30976                                                                      the address would be translated by tables pointed to by
30977                                                                      AP_TTBR0_EL3. It has an effect whether the EL3 translation regime
30978                                                                      is enabled or not.
30979 
30980                                                                  Additionally, this affects changes to the program counter,
30981                                                                      when TBI is 1, caused by:
30982                                                                  * A branch or procedure return within EL3.
30983                                                                  * A exception taken to EL3.
30984                                                                  * An exception return to EL3.
30985 
30986                                                                  In these cases bits [63:56] of the address are set to 0 before
30987                                                                      it is stored in the PC.
30988                                                                  0 = Top Byte used in the address calculation.
30989                                                                  1 = Top Byte ignored in the address calculation. */
30990         uint32_t reserved_21           : 1;
30991         uint32_t reserved_22           : 1;
30992         uint32_t rsvd_23               : 1;  /**< [ 23: 23](RO) Reserved 1. */
30993         uint32_t had                   : 1;  /**< [ 24: 24](R/W) V8.1: Hierarchical Attribute Disable.
30994                                                                  HAD (bit[24]): Hierarchical Attribute Disable.
30995                                                                  0 = Hierarchical Attributes are enabled.
30996                                                                  1 = Hierarchical Attributes are disabled. */
30997         uint32_t reserved_25_30        : 6;
30998         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
30999 #endif /* Word 0 - End */
31000     } cn;
31001 };
31002 typedef union bdk_ap_tcr_el3 bdk_ap_tcr_el3_t;
31003 
31004 #define BDK_AP_TCR_EL3 BDK_AP_TCR_EL3_FUNC()
31005 static inline uint64_t BDK_AP_TCR_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TCR_EL3_FUNC(void)31006 static inline uint64_t BDK_AP_TCR_EL3_FUNC(void)
31007 {
31008     return 0x30602000200ll;
31009 }
31010 
31011 #define typedef_BDK_AP_TCR_EL3 bdk_ap_tcr_el3_t
31012 #define bustype_BDK_AP_TCR_EL3 BDK_CSR_TYPE_SYSREG
31013 #define basename_BDK_AP_TCR_EL3 "AP_TCR_EL3"
31014 #define busnum_BDK_AP_TCR_EL3 0
31015 #define arguments_BDK_AP_TCR_EL3 -1,-1,-1,-1
31016 
31017 /**
31018  * Register (SYSREG) ap_teecr32_el1
31019  *
31020  * AP T32EE Configuration Register
31021  * Allows access to the AArch32 register TEECR from AArch64 state
31022  *     only. Its value has no effect on execution in AArch64 state.
31023  */
31024 union bdk_ap_teecr32_el1
31025 {
31026     uint32_t u;
31027     struct bdk_ap_teecr32_el1_s
31028     {
31029 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31030         uint32_t reserved_1_31         : 31;
31031         uint32_t xed                   : 1;  /**< [  0:  0](R/W) Execution Environment Disable bit. Control unprivileged access
31032                                                                      to TEEHBR.
31033 
31034                                                                  The effects of a write to this register on T32EE configuration
31035                                                                      are only guaranteed to be visible to subsequent instructions
31036                                                                      after the execution of a context synchronization operation.
31037                                                                      However, a read of this register always returns the value most
31038                                                                      recently written to the register.
31039                                                                  0 = Unprivileged access permitted.
31040                                                                  1 = Unprivileged access disabled. */
31041 #else /* Word 0 - Little Endian */
31042         uint32_t xed                   : 1;  /**< [  0:  0](R/W) Execution Environment Disable bit. Control unprivileged access
31043                                                                      to TEEHBR.
31044 
31045                                                                  The effects of a write to this register on T32EE configuration
31046                                                                      are only guaranteed to be visible to subsequent instructions
31047                                                                      after the execution of a context synchronization operation.
31048                                                                      However, a read of this register always returns the value most
31049                                                                      recently written to the register.
31050                                                                  0 = Unprivileged access permitted.
31051                                                                  1 = Unprivileged access disabled. */
31052         uint32_t reserved_1_31         : 31;
31053 #endif /* Word 0 - End */
31054     } s;
31055     /* struct bdk_ap_teecr32_el1_s cn8; */
31056     struct bdk_ap_teecr32_el1_cn9
31057     {
31058 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31059         uint32_t reserved_1_31         : 31;
31060         uint32_t xed                   : 1;  /**< [  0:  0](RAZ) Execution Environment Disable bit. Control unprivileged access
31061                                                                      to TEEHBR.
31062 
31063                                                                  The effects of a write to this register on T32EE configuration
31064                                                                      are only guaranteed to be visible to subsequent instructions
31065                                                                      after the execution of a context synchronization operation.
31066                                                                      However, a read of this register always returns the value most
31067                                                                      recently written to the register.
31068                                                                  0 = Unprivileged access permitted.
31069                                                                  1 = Unprivileged access disabled. */
31070 #else /* Word 0 - Little Endian */
31071         uint32_t xed                   : 1;  /**< [  0:  0](RAZ) Execution Environment Disable bit. Control unprivileged access
31072                                                                      to TEEHBR.
31073 
31074                                                                  The effects of a write to this register on T32EE configuration
31075                                                                      are only guaranteed to be visible to subsequent instructions
31076                                                                      after the execution of a context synchronization operation.
31077                                                                      However, a read of this register always returns the value most
31078                                                                      recently written to the register.
31079                                                                  0 = Unprivileged access permitted.
31080                                                                  1 = Unprivileged access disabled. */
31081         uint32_t reserved_1_31         : 31;
31082 #endif /* Word 0 - End */
31083     } cn9;
31084 };
31085 typedef union bdk_ap_teecr32_el1 bdk_ap_teecr32_el1_t;
31086 
31087 #define BDK_AP_TEECR32_EL1 BDK_AP_TEECR32_EL1_FUNC()
31088 static inline uint64_t BDK_AP_TEECR32_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TEECR32_EL1_FUNC(void)31089 static inline uint64_t BDK_AP_TEECR32_EL1_FUNC(void)
31090 {
31091     return 0x20200000000ll;
31092 }
31093 
31094 #define typedef_BDK_AP_TEECR32_EL1 bdk_ap_teecr32_el1_t
31095 #define bustype_BDK_AP_TEECR32_EL1 BDK_CSR_TYPE_SYSREG
31096 #define basename_BDK_AP_TEECR32_EL1 "AP_TEECR32_EL1"
31097 #define busnum_BDK_AP_TEECR32_EL1 0
31098 #define arguments_BDK_AP_TEECR32_EL1 -1,-1,-1,-1
31099 
31100 /**
31101  * Register (SYSREG) ap_teehbr32_el1
31102  *
31103  * AP T32EE Handler Base Register
31104  * Allows access to the AArch32 register TEEHBR from AArch64
31105  *     state only. Its value has no effect on execution in AArch64
31106  *     state.
31107  */
31108 union bdk_ap_teehbr32_el1
31109 {
31110     uint32_t u;
31111     struct bdk_ap_teehbr32_el1_s
31112     {
31113 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31114         uint32_t handlerbase           : 30; /**< [ 31:  2](R/W) The address of the T32EE Handler_00 implementation. This is
31115                                                                      the address of the first of the T32EE handlers. */
31116         uint32_t reserved_0_1          : 2;
31117 #else /* Word 0 - Little Endian */
31118         uint32_t reserved_0_1          : 2;
31119         uint32_t handlerbase           : 30; /**< [ 31:  2](R/W) The address of the T32EE Handler_00 implementation. This is
31120                                                                      the address of the first of the T32EE handlers. */
31121 #endif /* Word 0 - End */
31122     } s;
31123     /* struct bdk_ap_teehbr32_el1_s cn8; */
31124     struct bdk_ap_teehbr32_el1_cn9
31125     {
31126 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31127         uint32_t handlerbase           : 30; /**< [ 31:  2](RAZ) The address of the T32EE Handler_00 implementation. This is
31128                                                                      the address of the first of the T32EE handlers. */
31129         uint32_t reserved_0_1          : 2;
31130 #else /* Word 0 - Little Endian */
31131         uint32_t reserved_0_1          : 2;
31132         uint32_t handlerbase           : 30; /**< [ 31:  2](RAZ) The address of the T32EE Handler_00 implementation. This is
31133                                                                      the address of the first of the T32EE handlers. */
31134 #endif /* Word 0 - End */
31135     } cn9;
31136 };
31137 typedef union bdk_ap_teehbr32_el1 bdk_ap_teehbr32_el1_t;
31138 
31139 #define BDK_AP_TEEHBR32_EL1 BDK_AP_TEEHBR32_EL1_FUNC()
31140 static inline uint64_t BDK_AP_TEEHBR32_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TEEHBR32_EL1_FUNC(void)31141 static inline uint64_t BDK_AP_TEEHBR32_EL1_FUNC(void)
31142 {
31143     return 0x20201000000ll;
31144 }
31145 
31146 #define typedef_BDK_AP_TEEHBR32_EL1 bdk_ap_teehbr32_el1_t
31147 #define bustype_BDK_AP_TEEHBR32_EL1 BDK_CSR_TYPE_SYSREG
31148 #define basename_BDK_AP_TEEHBR32_EL1 "AP_TEEHBR32_EL1"
31149 #define busnum_BDK_AP_TEEHBR32_EL1 0
31150 #define arguments_BDK_AP_TEEHBR32_EL1 -1,-1,-1,-1
31151 
31152 /**
31153  * Register (SYSREG) ap_tpidr_el#
31154  *
31155  * AP Thread Pointer / ID Register
31156  * Provides a location where software executing at EL3 can store
31157  *     thread identifying information, for OS management purposes.
31158  */
31159 union bdk_ap_tpidr_elx
31160 {
31161     uint64_t u;
31162     struct bdk_ap_tpidr_elx_s
31163     {
31164 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31165         uint64_t data                  : 64; /**< [ 63:  0](R/W) Thread ID. Thread identifying information stored by software
31166                                                                      running at this Exception level. */
31167 #else /* Word 0 - Little Endian */
31168         uint64_t data                  : 64; /**< [ 63:  0](R/W) Thread ID. Thread identifying information stored by software
31169                                                                      running at this Exception level. */
31170 #endif /* Word 0 - End */
31171     } s;
31172     /* struct bdk_ap_tpidr_elx_s cn; */
31173 };
31174 typedef union bdk_ap_tpidr_elx bdk_ap_tpidr_elx_t;
31175 
31176 static inline uint64_t BDK_AP_TPIDR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TPIDR_ELX(unsigned long a)31177 static inline uint64_t BDK_AP_TPIDR_ELX(unsigned long a)
31178 {
31179     if ((a>=2)&&(a<=3))
31180         return 0x3000d000200ll + 0x200000000ll * ((a) & 0x3);
31181     __bdk_csr_fatal("AP_TPIDR_ELX", 1, a, 0, 0, 0);
31182 }
31183 
31184 #define typedef_BDK_AP_TPIDR_ELX(a) bdk_ap_tpidr_elx_t
31185 #define bustype_BDK_AP_TPIDR_ELX(a) BDK_CSR_TYPE_SYSREG
31186 #define basename_BDK_AP_TPIDR_ELX(a) "AP_TPIDR_ELX"
31187 #define busnum_BDK_AP_TPIDR_ELX(a) (a)
31188 #define arguments_BDK_AP_TPIDR_ELX(a) (a),-1,-1,-1
31189 
31190 /**
31191  * Register (SYSREG) ap_tpidr_el0
31192  *
31193  * AP EL0 Read/Write Software Thread ID Register
31194  * Provides a location where software executing at EL0 can store
31195  *     thread identifying information, for OS management purposes.
31196  */
31197 union bdk_ap_tpidr_el0
31198 {
31199     uint64_t u;
31200     struct bdk_ap_tpidr_el0_s
31201     {
31202 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31203         uint64_t data                  : 64; /**< [ 63:  0](R/W) Thread ID. Thread identifying information stored by software
31204                                                                      running at this Exception level. */
31205 #else /* Word 0 - Little Endian */
31206         uint64_t data                  : 64; /**< [ 63:  0](R/W) Thread ID. Thread identifying information stored by software
31207                                                                      running at this Exception level. */
31208 #endif /* Word 0 - End */
31209     } s;
31210     /* struct bdk_ap_tpidr_el0_s cn; */
31211 };
31212 typedef union bdk_ap_tpidr_el0 bdk_ap_tpidr_el0_t;
31213 
31214 #define BDK_AP_TPIDR_EL0 BDK_AP_TPIDR_EL0_FUNC()
31215 static inline uint64_t BDK_AP_TPIDR_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TPIDR_EL0_FUNC(void)31216 static inline uint64_t BDK_AP_TPIDR_EL0_FUNC(void)
31217 {
31218     return 0x3030d000200ll;
31219 }
31220 
31221 #define typedef_BDK_AP_TPIDR_EL0 bdk_ap_tpidr_el0_t
31222 #define bustype_BDK_AP_TPIDR_EL0 BDK_CSR_TYPE_SYSREG
31223 #define basename_BDK_AP_TPIDR_EL0 "AP_TPIDR_EL0"
31224 #define busnum_BDK_AP_TPIDR_EL0 0
31225 #define arguments_BDK_AP_TPIDR_EL0 -1,-1,-1,-1
31226 
31227 /**
31228  * Register (SYSREG) ap_tpidr_el1
31229  *
31230  * AP EL1 Software Thread ID Register
31231  * Provides a location where software executing at EL1 can store
31232  *     thread identifying information, for OS management purposes.
31233  */
31234 union bdk_ap_tpidr_el1
31235 {
31236     uint64_t u;
31237     struct bdk_ap_tpidr_el1_s
31238     {
31239 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31240         uint64_t data                  : 64; /**< [ 63:  0](R/W) Thread ID. Thread identifying information stored by software
31241                                                                      running at this Exception level. */
31242 #else /* Word 0 - Little Endian */
31243         uint64_t data                  : 64; /**< [ 63:  0](R/W) Thread ID. Thread identifying information stored by software
31244                                                                      running at this Exception level. */
31245 #endif /* Word 0 - End */
31246     } s;
31247     /* struct bdk_ap_tpidr_el1_s cn; */
31248 };
31249 typedef union bdk_ap_tpidr_el1 bdk_ap_tpidr_el1_t;
31250 
31251 #define BDK_AP_TPIDR_EL1 BDK_AP_TPIDR_EL1_FUNC()
31252 static inline uint64_t BDK_AP_TPIDR_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TPIDR_EL1_FUNC(void)31253 static inline uint64_t BDK_AP_TPIDR_EL1_FUNC(void)
31254 {
31255     return 0x3000d000400ll;
31256 }
31257 
31258 #define typedef_BDK_AP_TPIDR_EL1 bdk_ap_tpidr_el1_t
31259 #define bustype_BDK_AP_TPIDR_EL1 BDK_CSR_TYPE_SYSREG
31260 #define basename_BDK_AP_TPIDR_EL1 "AP_TPIDR_EL1"
31261 #define busnum_BDK_AP_TPIDR_EL1 0
31262 #define arguments_BDK_AP_TPIDR_EL1 -1,-1,-1,-1
31263 
31264 /**
31265  * Register (SYSREG) ap_tpidrro_el0
31266  *
31267  * AP Thread Pointer / ID Read-Only EL0 Register
31268  * Provides a location where software executing at EL1 or higher
31269  *     can store thread identifying information that is visible to
31270  *     software executing at EL0, for OS management purposes.
31271  */
31272 union bdk_ap_tpidrro_el0
31273 {
31274     uint64_t u;
31275     struct bdk_ap_tpidrro_el0_s
31276     {
31277 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31278         uint64_t data                  : 64; /**< [ 63:  0](R/W) Thread ID. Thread identifying information stored by software
31279                                                                      running at this Exception level. */
31280 #else /* Word 0 - Little Endian */
31281         uint64_t data                  : 64; /**< [ 63:  0](R/W) Thread ID. Thread identifying information stored by software
31282                                                                      running at this Exception level. */
31283 #endif /* Word 0 - End */
31284     } s;
31285     /* struct bdk_ap_tpidrro_el0_s cn; */
31286 };
31287 typedef union bdk_ap_tpidrro_el0 bdk_ap_tpidrro_el0_t;
31288 
31289 #define BDK_AP_TPIDRRO_EL0 BDK_AP_TPIDRRO_EL0_FUNC()
31290 static inline uint64_t BDK_AP_TPIDRRO_EL0_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TPIDRRO_EL0_FUNC(void)31291 static inline uint64_t BDK_AP_TPIDRRO_EL0_FUNC(void)
31292 {
31293     return 0x3030d000300ll;
31294 }
31295 
31296 #define typedef_BDK_AP_TPIDRRO_EL0 bdk_ap_tpidrro_el0_t
31297 #define bustype_BDK_AP_TPIDRRO_EL0 BDK_CSR_TYPE_SYSREG
31298 #define basename_BDK_AP_TPIDRRO_EL0 "AP_TPIDRRO_EL0"
31299 #define busnum_BDK_AP_TPIDRRO_EL0 0
31300 #define arguments_BDK_AP_TPIDRRO_EL0 -1,-1,-1,-1
31301 
31302 /**
31303  * Register (SYSREG) ap_trcacatr#
31304  *
31305  * AP Register
31306  */
31307 union bdk_ap_trcacatrx
31308 {
31309     uint64_t u;
31310     struct bdk_ap_trcacatrx_s
31311     {
31312 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31313         uint64_t reserved_0_63         : 64;
31314 #else /* Word 0 - Little Endian */
31315         uint64_t reserved_0_63         : 64;
31316 #endif /* Word 0 - End */
31317     } s;
31318     /* struct bdk_ap_trcacatrx_s cn; */
31319 };
31320 typedef union bdk_ap_trcacatrx bdk_ap_trcacatrx_t;
31321 
31322 static inline uint64_t BDK_AP_TRCACATRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCACATRX(unsigned long a)31323 static inline uint64_t BDK_AP_TRCACATRX(unsigned long a)
31324 {
31325     if (a<=15)
31326         return 0x20102000200ll + 0x20000ll * ((a) & 0xf);
31327     __bdk_csr_fatal("AP_TRCACATRX", 1, a, 0, 0, 0);
31328 }
31329 
31330 #define typedef_BDK_AP_TRCACATRX(a) bdk_ap_trcacatrx_t
31331 #define bustype_BDK_AP_TRCACATRX(a) BDK_CSR_TYPE_SYSREG
31332 #define basename_BDK_AP_TRCACATRX(a) "AP_TRCACATRX"
31333 #define busnum_BDK_AP_TRCACATRX(a) (a)
31334 #define arguments_BDK_AP_TRCACATRX(a) (a),-1,-1,-1
31335 
31336 /**
31337  * Register (SYSREG) ap_trcacvr#
31338  *
31339  * AP Register
31340  */
31341 union bdk_ap_trcacvrx
31342 {
31343     uint64_t u;
31344     struct bdk_ap_trcacvrx_s
31345     {
31346 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31347         uint64_t reserved_0_63         : 64;
31348 #else /* Word 0 - Little Endian */
31349         uint64_t reserved_0_63         : 64;
31350 #endif /* Word 0 - End */
31351     } s;
31352     /* struct bdk_ap_trcacvrx_s cn; */
31353 };
31354 typedef union bdk_ap_trcacvrx bdk_ap_trcacvrx_t;
31355 
31356 static inline uint64_t BDK_AP_TRCACVRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCACVRX(unsigned long a)31357 static inline uint64_t BDK_AP_TRCACVRX(unsigned long a)
31358 {
31359     if (a<=15)
31360         return 0x20102000000ll + 0x20000ll * ((a) & 0xf);
31361     __bdk_csr_fatal("AP_TRCACVRX", 1, a, 0, 0, 0);
31362 }
31363 
31364 #define typedef_BDK_AP_TRCACVRX(a) bdk_ap_trcacvrx_t
31365 #define bustype_BDK_AP_TRCACVRX(a) BDK_CSR_TYPE_SYSREG
31366 #define basename_BDK_AP_TRCACVRX(a) "AP_TRCACVRX"
31367 #define busnum_BDK_AP_TRCACVRX(a) (a)
31368 #define arguments_BDK_AP_TRCACVRX(a) (a),-1,-1,-1
31369 
31370 /**
31371  * Register (SYSREG) ap_trcauthstatus
31372  *
31373  * AP Register
31374  */
31375 union bdk_ap_trcauthstatus
31376 {
31377     uint64_t u;
31378     struct bdk_ap_trcauthstatus_s
31379     {
31380 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31381         uint64_t reserved_0_63         : 64;
31382 #else /* Word 0 - Little Endian */
31383         uint64_t reserved_0_63         : 64;
31384 #endif /* Word 0 - End */
31385     } s;
31386     /* struct bdk_ap_trcauthstatus_s cn; */
31387 };
31388 typedef union bdk_ap_trcauthstatus bdk_ap_trcauthstatus_t;
31389 
31390 #define BDK_AP_TRCAUTHSTATUS BDK_AP_TRCAUTHSTATUS_FUNC()
31391 static inline uint64_t BDK_AP_TRCAUTHSTATUS_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCAUTHSTATUS_FUNC(void)31392 static inline uint64_t BDK_AP_TRCAUTHSTATUS_FUNC(void)
31393 {
31394     return 0x201070e0600ll;
31395 }
31396 
31397 #define typedef_BDK_AP_TRCAUTHSTATUS bdk_ap_trcauthstatus_t
31398 #define bustype_BDK_AP_TRCAUTHSTATUS BDK_CSR_TYPE_SYSREG
31399 #define basename_BDK_AP_TRCAUTHSTATUS "AP_TRCAUTHSTATUS"
31400 #define busnum_BDK_AP_TRCAUTHSTATUS 0
31401 #define arguments_BDK_AP_TRCAUTHSTATUS -1,-1,-1,-1
31402 
31403 /**
31404  * Register (SYSREG) ap_trcauxctlr
31405  *
31406  * AP Register
31407  */
31408 union bdk_ap_trcauxctlr
31409 {
31410     uint64_t u;
31411     struct bdk_ap_trcauxctlr_s
31412     {
31413 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31414         uint64_t reserved_0_63         : 64;
31415 #else /* Word 0 - Little Endian */
31416         uint64_t reserved_0_63         : 64;
31417 #endif /* Word 0 - End */
31418     } s;
31419     /* struct bdk_ap_trcauxctlr_s cn; */
31420 };
31421 typedef union bdk_ap_trcauxctlr bdk_ap_trcauxctlr_t;
31422 
31423 #define BDK_AP_TRCAUXCTLR BDK_AP_TRCAUXCTLR_FUNC()
31424 static inline uint64_t BDK_AP_TRCAUXCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCAUXCTLR_FUNC(void)31425 static inline uint64_t BDK_AP_TRCAUXCTLR_FUNC(void)
31426 {
31427     return 0x20100060000ll;
31428 }
31429 
31430 #define typedef_BDK_AP_TRCAUXCTLR bdk_ap_trcauxctlr_t
31431 #define bustype_BDK_AP_TRCAUXCTLR BDK_CSR_TYPE_SYSREG
31432 #define basename_BDK_AP_TRCAUXCTLR "AP_TRCAUXCTLR"
31433 #define busnum_BDK_AP_TRCAUXCTLR 0
31434 #define arguments_BDK_AP_TRCAUXCTLR -1,-1,-1,-1
31435 
31436 /**
31437  * Register (SYSREG) ap_trcbbctlr
31438  *
31439  * AP Register
31440  */
31441 union bdk_ap_trcbbctlr
31442 {
31443     uint64_t u;
31444     struct bdk_ap_trcbbctlr_s
31445     {
31446 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31447         uint64_t reserved_0_63         : 64;
31448 #else /* Word 0 - Little Endian */
31449         uint64_t reserved_0_63         : 64;
31450 #endif /* Word 0 - End */
31451     } s;
31452     /* struct bdk_ap_trcbbctlr_s cn; */
31453 };
31454 typedef union bdk_ap_trcbbctlr bdk_ap_trcbbctlr_t;
31455 
31456 #define BDK_AP_TRCBBCTLR BDK_AP_TRCBBCTLR_FUNC()
31457 static inline uint64_t BDK_AP_TRCBBCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCBBCTLR_FUNC(void)31458 static inline uint64_t BDK_AP_TRCBBCTLR_FUNC(void)
31459 {
31460     return 0x201000f0000ll;
31461 }
31462 
31463 #define typedef_BDK_AP_TRCBBCTLR bdk_ap_trcbbctlr_t
31464 #define bustype_BDK_AP_TRCBBCTLR BDK_CSR_TYPE_SYSREG
31465 #define basename_BDK_AP_TRCBBCTLR "AP_TRCBBCTLR"
31466 #define busnum_BDK_AP_TRCBBCTLR 0
31467 #define arguments_BDK_AP_TRCBBCTLR -1,-1,-1,-1
31468 
31469 /**
31470  * Register (SYSREG) ap_trcccctlr
31471  *
31472  * AP Register
31473  */
31474 union bdk_ap_trcccctlr
31475 {
31476     uint64_t u;
31477     struct bdk_ap_trcccctlr_s
31478     {
31479 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31480         uint64_t reserved_0_63         : 64;
31481 #else /* Word 0 - Little Endian */
31482         uint64_t reserved_0_63         : 64;
31483 #endif /* Word 0 - End */
31484     } s;
31485     /* struct bdk_ap_trcccctlr_s cn; */
31486 };
31487 typedef union bdk_ap_trcccctlr bdk_ap_trcccctlr_t;
31488 
31489 #define BDK_AP_TRCCCCTLR BDK_AP_TRCCCCTLR_FUNC()
31490 static inline uint64_t BDK_AP_TRCCCCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCCCCTLR_FUNC(void)31491 static inline uint64_t BDK_AP_TRCCCCTLR_FUNC(void)
31492 {
31493     return 0x201000e0000ll;
31494 }
31495 
31496 #define typedef_BDK_AP_TRCCCCTLR bdk_ap_trcccctlr_t
31497 #define bustype_BDK_AP_TRCCCCTLR BDK_CSR_TYPE_SYSREG
31498 #define basename_BDK_AP_TRCCCCTLR "AP_TRCCCCTLR"
31499 #define busnum_BDK_AP_TRCCCCTLR 0
31500 #define arguments_BDK_AP_TRCCCCTLR -1,-1,-1,-1
31501 
31502 /**
31503  * Register (SYSREG) ap_trccidcctlr#
31504  *
31505  * AP Register
31506  */
31507 union bdk_ap_trccidcctlrx
31508 {
31509     uint64_t u;
31510     struct bdk_ap_trccidcctlrx_s
31511     {
31512 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31513         uint64_t reserved_0_63         : 64;
31514 #else /* Word 0 - Little Endian */
31515         uint64_t reserved_0_63         : 64;
31516 #endif /* Word 0 - End */
31517     } s;
31518     /* struct bdk_ap_trccidcctlrx_s cn; */
31519 };
31520 typedef union bdk_ap_trccidcctlrx bdk_ap_trccidcctlrx_t;
31521 
31522 static inline uint64_t BDK_AP_TRCCIDCCTLRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCCIDCCTLRX(unsigned long a)31523 static inline uint64_t BDK_AP_TRCCIDCCTLRX(unsigned long a)
31524 {
31525     if (a<=1)
31526         return 0x20103000200ll + 0x10000ll * ((a) & 0x1);
31527     __bdk_csr_fatal("AP_TRCCIDCCTLRX", 1, a, 0, 0, 0);
31528 }
31529 
31530 #define typedef_BDK_AP_TRCCIDCCTLRX(a) bdk_ap_trccidcctlrx_t
31531 #define bustype_BDK_AP_TRCCIDCCTLRX(a) BDK_CSR_TYPE_SYSREG
31532 #define basename_BDK_AP_TRCCIDCCTLRX(a) "AP_TRCCIDCCTLRX"
31533 #define busnum_BDK_AP_TRCCIDCCTLRX(a) (a)
31534 #define arguments_BDK_AP_TRCCIDCCTLRX(a) (a),-1,-1,-1
31535 
31536 /**
31537  * Register (SYSREG) ap_trccidcvr#
31538  *
31539  * AP Register
31540  */
31541 union bdk_ap_trccidcvrx
31542 {
31543     uint64_t u;
31544     struct bdk_ap_trccidcvrx_s
31545     {
31546 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31547         uint64_t reserved_0_63         : 64;
31548 #else /* Word 0 - Little Endian */
31549         uint64_t reserved_0_63         : 64;
31550 #endif /* Word 0 - End */
31551     } s;
31552     /* struct bdk_ap_trccidcvrx_s cn; */
31553 };
31554 typedef union bdk_ap_trccidcvrx bdk_ap_trccidcvrx_t;
31555 
31556 static inline uint64_t BDK_AP_TRCCIDCVRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCCIDCVRX(unsigned long a)31557 static inline uint64_t BDK_AP_TRCCIDCVRX(unsigned long a)
31558 {
31559     if (a<=7)
31560         return 0x20103000000ll + 0x20000ll * ((a) & 0x7);
31561     __bdk_csr_fatal("AP_TRCCIDCVRX", 1, a, 0, 0, 0);
31562 }
31563 
31564 #define typedef_BDK_AP_TRCCIDCVRX(a) bdk_ap_trccidcvrx_t
31565 #define bustype_BDK_AP_TRCCIDCVRX(a) BDK_CSR_TYPE_SYSREG
31566 #define basename_BDK_AP_TRCCIDCVRX(a) "AP_TRCCIDCVRX"
31567 #define busnum_BDK_AP_TRCCIDCVRX(a) (a)
31568 #define arguments_BDK_AP_TRCCIDCVRX(a) (a),-1,-1,-1
31569 
31570 /**
31571  * Register (SYSREG) ap_trccidr#
31572  *
31573  * AP Register
31574  */
31575 union bdk_ap_trccidrx
31576 {
31577     uint64_t u;
31578     struct bdk_ap_trccidrx_s
31579     {
31580 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31581         uint64_t reserved_0_63         : 64;
31582 #else /* Word 0 - Little Endian */
31583         uint64_t reserved_0_63         : 64;
31584 #endif /* Word 0 - End */
31585     } s;
31586     /* struct bdk_ap_trccidrx_s cn; */
31587 };
31588 typedef union bdk_ap_trccidrx bdk_ap_trccidrx_t;
31589 
31590 static inline uint64_t BDK_AP_TRCCIDRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCCIDRX(unsigned long a)31591 static inline uint64_t BDK_AP_TRCCIDRX(unsigned long a)
31592 {
31593     if (a<=3)
31594         return 0x201070c0700ll + 0x10000ll * ((a) & 0x3);
31595     __bdk_csr_fatal("AP_TRCCIDRX", 1, a, 0, 0, 0);
31596 }
31597 
31598 #define typedef_BDK_AP_TRCCIDRX(a) bdk_ap_trccidrx_t
31599 #define bustype_BDK_AP_TRCCIDRX(a) BDK_CSR_TYPE_SYSREG
31600 #define basename_BDK_AP_TRCCIDRX(a) "AP_TRCCIDRX"
31601 #define busnum_BDK_AP_TRCCIDRX(a) (a)
31602 #define arguments_BDK_AP_TRCCIDRX(a) (a),-1,-1,-1
31603 
31604 /**
31605  * Register (SYSREG) ap_trcclaimclr
31606  *
31607  * AP Register
31608  */
31609 union bdk_ap_trcclaimclr
31610 {
31611     uint64_t u;
31612     struct bdk_ap_trcclaimclr_s
31613     {
31614 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31615         uint64_t reserved_0_63         : 64;
31616 #else /* Word 0 - Little Endian */
31617         uint64_t reserved_0_63         : 64;
31618 #endif /* Word 0 - End */
31619     } s;
31620     /* struct bdk_ap_trcclaimclr_s cn; */
31621 };
31622 typedef union bdk_ap_trcclaimclr bdk_ap_trcclaimclr_t;
31623 
31624 #define BDK_AP_TRCCLAIMCLR BDK_AP_TRCCLAIMCLR_FUNC()
31625 static inline uint64_t BDK_AP_TRCCLAIMCLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCCLAIMCLR_FUNC(void)31626 static inline uint64_t BDK_AP_TRCCLAIMCLR_FUNC(void)
31627 {
31628     return 0x20107090600ll;
31629 }
31630 
31631 #define typedef_BDK_AP_TRCCLAIMCLR bdk_ap_trcclaimclr_t
31632 #define bustype_BDK_AP_TRCCLAIMCLR BDK_CSR_TYPE_SYSREG
31633 #define basename_BDK_AP_TRCCLAIMCLR "AP_TRCCLAIMCLR"
31634 #define busnum_BDK_AP_TRCCLAIMCLR 0
31635 #define arguments_BDK_AP_TRCCLAIMCLR -1,-1,-1,-1
31636 
31637 /**
31638  * Register (SYSREG) ap_trcclaimset
31639  *
31640  * AP Register
31641  */
31642 union bdk_ap_trcclaimset
31643 {
31644     uint64_t u;
31645     struct bdk_ap_trcclaimset_s
31646     {
31647 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31648         uint64_t reserved_0_63         : 64;
31649 #else /* Word 0 - Little Endian */
31650         uint64_t reserved_0_63         : 64;
31651 #endif /* Word 0 - End */
31652     } s;
31653     /* struct bdk_ap_trcclaimset_s cn; */
31654 };
31655 typedef union bdk_ap_trcclaimset bdk_ap_trcclaimset_t;
31656 
31657 #define BDK_AP_TRCCLAIMSET BDK_AP_TRCCLAIMSET_FUNC()
31658 static inline uint64_t BDK_AP_TRCCLAIMSET_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCCLAIMSET_FUNC(void)31659 static inline uint64_t BDK_AP_TRCCLAIMSET_FUNC(void)
31660 {
31661     return 0x20107080600ll;
31662 }
31663 
31664 #define typedef_BDK_AP_TRCCLAIMSET bdk_ap_trcclaimset_t
31665 #define bustype_BDK_AP_TRCCLAIMSET BDK_CSR_TYPE_SYSREG
31666 #define basename_BDK_AP_TRCCLAIMSET "AP_TRCCLAIMSET"
31667 #define busnum_BDK_AP_TRCCLAIMSET 0
31668 #define arguments_BDK_AP_TRCCLAIMSET -1,-1,-1,-1
31669 
31670 /**
31671  * Register (SYSREG) ap_trccntctlr#
31672  *
31673  * AP Register
31674  */
31675 union bdk_ap_trccntctlrx
31676 {
31677     uint64_t u;
31678     struct bdk_ap_trccntctlrx_s
31679     {
31680 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31681         uint64_t reserved_0_63         : 64;
31682 #else /* Word 0 - Little Endian */
31683         uint64_t reserved_0_63         : 64;
31684 #endif /* Word 0 - End */
31685     } s;
31686     /* struct bdk_ap_trccntctlrx_s cn; */
31687 };
31688 typedef union bdk_ap_trccntctlrx bdk_ap_trccntctlrx_t;
31689 
31690 static inline uint64_t BDK_AP_TRCCNTCTLRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCCNTCTLRX(unsigned long a)31691 static inline uint64_t BDK_AP_TRCCNTCTLRX(unsigned long a)
31692 {
31693     if (a<=3)
31694         return 0x20100040500ll + 0x10000ll * ((a) & 0x3);
31695     __bdk_csr_fatal("AP_TRCCNTCTLRX", 1, a, 0, 0, 0);
31696 }
31697 
31698 #define typedef_BDK_AP_TRCCNTCTLRX(a) bdk_ap_trccntctlrx_t
31699 #define bustype_BDK_AP_TRCCNTCTLRX(a) BDK_CSR_TYPE_SYSREG
31700 #define basename_BDK_AP_TRCCNTCTLRX(a) "AP_TRCCNTCTLRX"
31701 #define busnum_BDK_AP_TRCCNTCTLRX(a) (a)
31702 #define arguments_BDK_AP_TRCCNTCTLRX(a) (a),-1,-1,-1
31703 
31704 /**
31705  * Register (SYSREG) ap_trccntrldvr#
31706  *
31707  * AP Register
31708  */
31709 union bdk_ap_trccntrldvrx
31710 {
31711     uint64_t u;
31712     struct bdk_ap_trccntrldvrx_s
31713     {
31714 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31715         uint64_t reserved_0_63         : 64;
31716 #else /* Word 0 - Little Endian */
31717         uint64_t reserved_0_63         : 64;
31718 #endif /* Word 0 - End */
31719     } s;
31720     /* struct bdk_ap_trccntrldvrx_s cn; */
31721 };
31722 typedef union bdk_ap_trccntrldvrx bdk_ap_trccntrldvrx_t;
31723 
31724 static inline uint64_t BDK_AP_TRCCNTRLDVRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCCNTRLDVRX(unsigned long a)31725 static inline uint64_t BDK_AP_TRCCNTRLDVRX(unsigned long a)
31726 {
31727     if (a<=3)
31728         return 0x20100000500ll + 0x10000ll * ((a) & 0x3);
31729     __bdk_csr_fatal("AP_TRCCNTRLDVRX", 1, a, 0, 0, 0);
31730 }
31731 
31732 #define typedef_BDK_AP_TRCCNTRLDVRX(a) bdk_ap_trccntrldvrx_t
31733 #define bustype_BDK_AP_TRCCNTRLDVRX(a) BDK_CSR_TYPE_SYSREG
31734 #define basename_BDK_AP_TRCCNTRLDVRX(a) "AP_TRCCNTRLDVRX"
31735 #define busnum_BDK_AP_TRCCNTRLDVRX(a) (a)
31736 #define arguments_BDK_AP_TRCCNTRLDVRX(a) (a),-1,-1,-1
31737 
31738 /**
31739  * Register (SYSREG) ap_trccntvr#
31740  *
31741  * AP Register
31742  */
31743 union bdk_ap_trccntvrx
31744 {
31745     uint64_t u;
31746     struct bdk_ap_trccntvrx_s
31747     {
31748 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31749         uint64_t reserved_0_63         : 64;
31750 #else /* Word 0 - Little Endian */
31751         uint64_t reserved_0_63         : 64;
31752 #endif /* Word 0 - End */
31753     } s;
31754     /* struct bdk_ap_trccntvrx_s cn; */
31755 };
31756 typedef union bdk_ap_trccntvrx bdk_ap_trccntvrx_t;
31757 
31758 static inline uint64_t BDK_AP_TRCCNTVRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCCNTVRX(unsigned long a)31759 static inline uint64_t BDK_AP_TRCCNTVRX(unsigned long a)
31760 {
31761     if (a<=3)
31762         return 0x20100080500ll + 0x10000ll * ((a) & 0x3);
31763     __bdk_csr_fatal("AP_TRCCNTVRX", 1, a, 0, 0, 0);
31764 }
31765 
31766 #define typedef_BDK_AP_TRCCNTVRX(a) bdk_ap_trccntvrx_t
31767 #define bustype_BDK_AP_TRCCNTVRX(a) BDK_CSR_TYPE_SYSREG
31768 #define basename_BDK_AP_TRCCNTVRX(a) "AP_TRCCNTVRX"
31769 #define busnum_BDK_AP_TRCCNTVRX(a) (a)
31770 #define arguments_BDK_AP_TRCCNTVRX(a) (a),-1,-1,-1
31771 
31772 /**
31773  * Register (SYSREG) ap_trcconfigr
31774  *
31775  * AP Register
31776  */
31777 union bdk_ap_trcconfigr
31778 {
31779     uint64_t u;
31780     struct bdk_ap_trcconfigr_s
31781     {
31782 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31783         uint64_t reserved_0_63         : 64;
31784 #else /* Word 0 - Little Endian */
31785         uint64_t reserved_0_63         : 64;
31786 #endif /* Word 0 - End */
31787     } s;
31788     /* struct bdk_ap_trcconfigr_s cn; */
31789 };
31790 typedef union bdk_ap_trcconfigr bdk_ap_trcconfigr_t;
31791 
31792 #define BDK_AP_TRCCONFIGR BDK_AP_TRCCONFIGR_FUNC()
31793 static inline uint64_t BDK_AP_TRCCONFIGR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCCONFIGR_FUNC(void)31794 static inline uint64_t BDK_AP_TRCCONFIGR_FUNC(void)
31795 {
31796     return 0x20100040000ll;
31797 }
31798 
31799 #define typedef_BDK_AP_TRCCONFIGR bdk_ap_trcconfigr_t
31800 #define bustype_BDK_AP_TRCCONFIGR BDK_CSR_TYPE_SYSREG
31801 #define basename_BDK_AP_TRCCONFIGR "AP_TRCCONFIGR"
31802 #define busnum_BDK_AP_TRCCONFIGR 0
31803 #define arguments_BDK_AP_TRCCONFIGR -1,-1,-1,-1
31804 
31805 /**
31806  * Register (SYSREG) ap_trcdevaff#
31807  *
31808  * AP Register
31809  */
31810 union bdk_ap_trcdevaffx
31811 {
31812     uint64_t u;
31813     struct bdk_ap_trcdevaffx_s
31814     {
31815 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31816         uint64_t reserved_0_63         : 64;
31817 #else /* Word 0 - Little Endian */
31818         uint64_t reserved_0_63         : 64;
31819 #endif /* Word 0 - End */
31820     } s;
31821     /* struct bdk_ap_trcdevaffx_s cn; */
31822 };
31823 typedef union bdk_ap_trcdevaffx bdk_ap_trcdevaffx_t;
31824 
31825 static inline uint64_t BDK_AP_TRCDEVAFFX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCDEVAFFX(unsigned long a)31826 static inline uint64_t BDK_AP_TRCDEVAFFX(unsigned long a)
31827 {
31828     if (a<=1)
31829         return 0x201070a0600ll + 0x10000ll * ((a) & 0x1);
31830     __bdk_csr_fatal("AP_TRCDEVAFFX", 1, a, 0, 0, 0);
31831 }
31832 
31833 #define typedef_BDK_AP_TRCDEVAFFX(a) bdk_ap_trcdevaffx_t
31834 #define bustype_BDK_AP_TRCDEVAFFX(a) BDK_CSR_TYPE_SYSREG
31835 #define basename_BDK_AP_TRCDEVAFFX(a) "AP_TRCDEVAFFX"
31836 #define busnum_BDK_AP_TRCDEVAFFX(a) (a)
31837 #define arguments_BDK_AP_TRCDEVAFFX(a) (a),-1,-1,-1
31838 
31839 /**
31840  * Register (SYSREG) ap_trcdevarch
31841  *
31842  * AP Register
31843  */
31844 union bdk_ap_trcdevarch
31845 {
31846     uint64_t u;
31847     struct bdk_ap_trcdevarch_s
31848     {
31849 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31850         uint64_t reserved_0_63         : 64;
31851 #else /* Word 0 - Little Endian */
31852         uint64_t reserved_0_63         : 64;
31853 #endif /* Word 0 - End */
31854     } s;
31855     /* struct bdk_ap_trcdevarch_s cn; */
31856 };
31857 typedef union bdk_ap_trcdevarch bdk_ap_trcdevarch_t;
31858 
31859 #define BDK_AP_TRCDEVARCH BDK_AP_TRCDEVARCH_FUNC()
31860 static inline uint64_t BDK_AP_TRCDEVARCH_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCDEVARCH_FUNC(void)31861 static inline uint64_t BDK_AP_TRCDEVARCH_FUNC(void)
31862 {
31863     return 0x201070f0600ll;
31864 }
31865 
31866 #define typedef_BDK_AP_TRCDEVARCH bdk_ap_trcdevarch_t
31867 #define bustype_BDK_AP_TRCDEVARCH BDK_CSR_TYPE_SYSREG
31868 #define basename_BDK_AP_TRCDEVARCH "AP_TRCDEVARCH"
31869 #define busnum_BDK_AP_TRCDEVARCH 0
31870 #define arguments_BDK_AP_TRCDEVARCH -1,-1,-1,-1
31871 
31872 /**
31873  * Register (SYSREG) ap_trcdevid
31874  *
31875  * AP Register
31876  */
31877 union bdk_ap_trcdevid
31878 {
31879     uint64_t u;
31880     struct bdk_ap_trcdevid_s
31881     {
31882 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31883         uint64_t reserved_0_63         : 64;
31884 #else /* Word 0 - Little Endian */
31885         uint64_t reserved_0_63         : 64;
31886 #endif /* Word 0 - End */
31887     } s;
31888     /* struct bdk_ap_trcdevid_s cn; */
31889 };
31890 typedef union bdk_ap_trcdevid bdk_ap_trcdevid_t;
31891 
31892 #define BDK_AP_TRCDEVID BDK_AP_TRCDEVID_FUNC()
31893 static inline uint64_t BDK_AP_TRCDEVID_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCDEVID_FUNC(void)31894 static inline uint64_t BDK_AP_TRCDEVID_FUNC(void)
31895 {
31896     return 0x20107020700ll;
31897 }
31898 
31899 #define typedef_BDK_AP_TRCDEVID bdk_ap_trcdevid_t
31900 #define bustype_BDK_AP_TRCDEVID BDK_CSR_TYPE_SYSREG
31901 #define basename_BDK_AP_TRCDEVID "AP_TRCDEVID"
31902 #define busnum_BDK_AP_TRCDEVID 0
31903 #define arguments_BDK_AP_TRCDEVID -1,-1,-1,-1
31904 
31905 /**
31906  * Register (SYSREG) ap_trcdevtype
31907  *
31908  * AP Register
31909  */
31910 union bdk_ap_trcdevtype
31911 {
31912     uint64_t u;
31913     struct bdk_ap_trcdevtype_s
31914     {
31915 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31916         uint64_t reserved_0_63         : 64;
31917 #else /* Word 0 - Little Endian */
31918         uint64_t reserved_0_63         : 64;
31919 #endif /* Word 0 - End */
31920     } s;
31921     /* struct bdk_ap_trcdevtype_s cn; */
31922 };
31923 typedef union bdk_ap_trcdevtype bdk_ap_trcdevtype_t;
31924 
31925 #define BDK_AP_TRCDEVTYPE BDK_AP_TRCDEVTYPE_FUNC()
31926 static inline uint64_t BDK_AP_TRCDEVTYPE_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCDEVTYPE_FUNC(void)31927 static inline uint64_t BDK_AP_TRCDEVTYPE_FUNC(void)
31928 {
31929     return 0x20107030700ll;
31930 }
31931 
31932 #define typedef_BDK_AP_TRCDEVTYPE bdk_ap_trcdevtype_t
31933 #define bustype_BDK_AP_TRCDEVTYPE BDK_CSR_TYPE_SYSREG
31934 #define basename_BDK_AP_TRCDEVTYPE "AP_TRCDEVTYPE"
31935 #define busnum_BDK_AP_TRCDEVTYPE 0
31936 #define arguments_BDK_AP_TRCDEVTYPE -1,-1,-1,-1
31937 
31938 /**
31939  * Register (SYSREG) ap_trcdvcmr#
31940  *
31941  * AP Register
31942  */
31943 union bdk_ap_trcdvcmrx
31944 {
31945     uint64_t u;
31946     struct bdk_ap_trcdvcmrx_s
31947     {
31948 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31949         uint64_t reserved_0_63         : 64;
31950 #else /* Word 0 - Little Endian */
31951         uint64_t reserved_0_63         : 64;
31952 #endif /* Word 0 - End */
31953     } s;
31954     /* struct bdk_ap_trcdvcmrx_s cn; */
31955 };
31956 typedef union bdk_ap_trcdvcmrx bdk_ap_trcdvcmrx_t;
31957 
31958 static inline uint64_t BDK_AP_TRCDVCMRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCDVCMRX(unsigned long a)31959 static inline uint64_t BDK_AP_TRCDVCMRX(unsigned long a)
31960 {
31961     if (a<=7)
31962         return 0x20102000600ll + 0x40000ll * ((a) & 0x7);
31963     __bdk_csr_fatal("AP_TRCDVCMRX", 1, a, 0, 0, 0);
31964 }
31965 
31966 #define typedef_BDK_AP_TRCDVCMRX(a) bdk_ap_trcdvcmrx_t
31967 #define bustype_BDK_AP_TRCDVCMRX(a) BDK_CSR_TYPE_SYSREG
31968 #define basename_BDK_AP_TRCDVCMRX(a) "AP_TRCDVCMRX"
31969 #define busnum_BDK_AP_TRCDVCMRX(a) (a)
31970 #define arguments_BDK_AP_TRCDVCMRX(a) (a),-1,-1,-1
31971 
31972 /**
31973  * Register (SYSREG) ap_trcdvcvr#
31974  *
31975  * AP Register
31976  */
31977 union bdk_ap_trcdvcvrx
31978 {
31979     uint64_t u;
31980     struct bdk_ap_trcdvcvrx_s
31981     {
31982 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
31983         uint64_t reserved_0_63         : 64;
31984 #else /* Word 0 - Little Endian */
31985         uint64_t reserved_0_63         : 64;
31986 #endif /* Word 0 - End */
31987     } s;
31988     /* struct bdk_ap_trcdvcvrx_s cn; */
31989 };
31990 typedef union bdk_ap_trcdvcvrx bdk_ap_trcdvcvrx_t;
31991 
31992 static inline uint64_t BDK_AP_TRCDVCVRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCDVCVRX(unsigned long a)31993 static inline uint64_t BDK_AP_TRCDVCVRX(unsigned long a)
31994 {
31995     if (a<=7)
31996         return 0x20102000400ll + 0x40000ll * ((a) & 0x7);
31997     __bdk_csr_fatal("AP_TRCDVCVRX", 1, a, 0, 0, 0);
31998 }
31999 
32000 #define typedef_BDK_AP_TRCDVCVRX(a) bdk_ap_trcdvcvrx_t
32001 #define bustype_BDK_AP_TRCDVCVRX(a) BDK_CSR_TYPE_SYSREG
32002 #define basename_BDK_AP_TRCDVCVRX(a) "AP_TRCDVCVRX"
32003 #define busnum_BDK_AP_TRCDVCVRX(a) (a)
32004 #define arguments_BDK_AP_TRCDVCVRX(a) (a),-1,-1,-1
32005 
32006 /**
32007  * Register (SYSREG) ap_trceventctl#r
32008  *
32009  * AP Register
32010  */
32011 union bdk_ap_trceventctlxr
32012 {
32013     uint64_t u;
32014     struct bdk_ap_trceventctlxr_s
32015     {
32016 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32017         uint64_t reserved_0_63         : 64;
32018 #else /* Word 0 - Little Endian */
32019         uint64_t reserved_0_63         : 64;
32020 #endif /* Word 0 - End */
32021     } s;
32022     /* struct bdk_ap_trceventctlxr_s cn; */
32023 };
32024 typedef union bdk_ap_trceventctlxr bdk_ap_trceventctlxr_t;
32025 
32026 static inline uint64_t BDK_AP_TRCEVENTCTLXR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCEVENTCTLXR(unsigned long a)32027 static inline uint64_t BDK_AP_TRCEVENTCTLXR(unsigned long a)
32028 {
32029     if (a<=1)
32030         return 0x20100080000ll + 0x10000ll * ((a) & 0x1);
32031     __bdk_csr_fatal("AP_TRCEVENTCTLXR", 1, a, 0, 0, 0);
32032 }
32033 
32034 #define typedef_BDK_AP_TRCEVENTCTLXR(a) bdk_ap_trceventctlxr_t
32035 #define bustype_BDK_AP_TRCEVENTCTLXR(a) BDK_CSR_TYPE_SYSREG
32036 #define basename_BDK_AP_TRCEVENTCTLXR(a) "AP_TRCEVENTCTLXR"
32037 #define busnum_BDK_AP_TRCEVENTCTLXR(a) (a)
32038 #define arguments_BDK_AP_TRCEVENTCTLXR(a) (a),-1,-1,-1
32039 
32040 /**
32041  * Register (SYSREG) ap_trcextinselr
32042  *
32043  * AP Register
32044  */
32045 union bdk_ap_trcextinselr
32046 {
32047     uint64_t u;
32048     struct bdk_ap_trcextinselr_s
32049     {
32050 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32051         uint64_t reserved_0_63         : 64;
32052 #else /* Word 0 - Little Endian */
32053         uint64_t reserved_0_63         : 64;
32054 #endif /* Word 0 - End */
32055     } s;
32056     /* struct bdk_ap_trcextinselr_s cn; */
32057 };
32058 typedef union bdk_ap_trcextinselr bdk_ap_trcextinselr_t;
32059 
32060 #define BDK_AP_TRCEXTINSELR BDK_AP_TRCEXTINSELR_FUNC()
32061 static inline uint64_t BDK_AP_TRCEXTINSELR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCEXTINSELR_FUNC(void)32062 static inline uint64_t BDK_AP_TRCEXTINSELR_FUNC(void)
32063 {
32064     return 0x20100080400ll;
32065 }
32066 
32067 #define typedef_BDK_AP_TRCEXTINSELR bdk_ap_trcextinselr_t
32068 #define bustype_BDK_AP_TRCEXTINSELR BDK_CSR_TYPE_SYSREG
32069 #define basename_BDK_AP_TRCEXTINSELR "AP_TRCEXTINSELR"
32070 #define busnum_BDK_AP_TRCEXTINSELR 0
32071 #define arguments_BDK_AP_TRCEXTINSELR -1,-1,-1,-1
32072 
32073 /**
32074  * Register (SYSREG) ap_trcidr#
32075  *
32076  * AP Register
32077  */
32078 union bdk_ap_trcidrx
32079 {
32080     uint64_t u;
32081     struct bdk_ap_trcidrx_s
32082     {
32083 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32084         uint64_t reserved_0_63         : 64;
32085 #else /* Word 0 - Little Endian */
32086         uint64_t reserved_0_63         : 64;
32087 #endif /* Word 0 - End */
32088     } s;
32089     /* struct bdk_ap_trcidrx_s cn; */
32090 };
32091 typedef union bdk_ap_trcidrx bdk_ap_trcidrx_t;
32092 
32093 static inline uint64_t BDK_AP_TRCIDRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCIDRX(unsigned long a)32094 static inline uint64_t BDK_AP_TRCIDRX(unsigned long a)
32095 {
32096     if (a<=13)
32097         return 0x20100080700ll + 0x10000ll * ((a) & 0xf);
32098     __bdk_csr_fatal("AP_TRCIDRX", 1, a, 0, 0, 0);
32099 }
32100 
32101 #define typedef_BDK_AP_TRCIDRX(a) bdk_ap_trcidrx_t
32102 #define bustype_BDK_AP_TRCIDRX(a) BDK_CSR_TYPE_SYSREG
32103 #define basename_BDK_AP_TRCIDRX(a) "AP_TRCIDRX"
32104 #define busnum_BDK_AP_TRCIDRX(a) (a)
32105 #define arguments_BDK_AP_TRCIDRX(a) (a),-1,-1,-1
32106 
32107 /**
32108  * Register (SYSREG) ap_trcimspec#
32109  *
32110  * AP Register
32111  */
32112 union bdk_ap_trcimspecx
32113 {
32114     uint64_t u;
32115     struct bdk_ap_trcimspecx_s
32116     {
32117 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32118         uint64_t reserved_0_63         : 64;
32119 #else /* Word 0 - Little Endian */
32120         uint64_t reserved_0_63         : 64;
32121 #endif /* Word 0 - End */
32122     } s;
32123     /* struct bdk_ap_trcimspecx_s cn; */
32124 };
32125 typedef union bdk_ap_trcimspecx bdk_ap_trcimspecx_t;
32126 
32127 static inline uint64_t BDK_AP_TRCIMSPECX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCIMSPECX(unsigned long a)32128 static inline uint64_t BDK_AP_TRCIMSPECX(unsigned long a)
32129 {
32130     if (a<=7)
32131         return 0x20100000700ll + 0x10000ll * ((a) & 0x7);
32132     __bdk_csr_fatal("AP_TRCIMSPECX", 1, a, 0, 0, 0);
32133 }
32134 
32135 #define typedef_BDK_AP_TRCIMSPECX(a) bdk_ap_trcimspecx_t
32136 #define bustype_BDK_AP_TRCIMSPECX(a) BDK_CSR_TYPE_SYSREG
32137 #define basename_BDK_AP_TRCIMSPECX(a) "AP_TRCIMSPECX"
32138 #define busnum_BDK_AP_TRCIMSPECX(a) (a)
32139 #define arguments_BDK_AP_TRCIMSPECX(a) (a),-1,-1,-1
32140 
32141 /**
32142  * Register (SYSREG) ap_trcitctrl
32143  *
32144  * AP Register
32145  */
32146 union bdk_ap_trcitctrl
32147 {
32148     uint64_t u;
32149     struct bdk_ap_trcitctrl_s
32150     {
32151 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32152         uint64_t reserved_0_63         : 64;
32153 #else /* Word 0 - Little Endian */
32154         uint64_t reserved_0_63         : 64;
32155 #endif /* Word 0 - End */
32156     } s;
32157     /* struct bdk_ap_trcitctrl_s cn; */
32158 };
32159 typedef union bdk_ap_trcitctrl bdk_ap_trcitctrl_t;
32160 
32161 #define BDK_AP_TRCITCTRL BDK_AP_TRCITCTRL_FUNC()
32162 static inline uint64_t BDK_AP_TRCITCTRL_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCITCTRL_FUNC(void)32163 static inline uint64_t BDK_AP_TRCITCTRL_FUNC(void)
32164 {
32165     return 0x20107000400ll;
32166 }
32167 
32168 #define typedef_BDK_AP_TRCITCTRL bdk_ap_trcitctrl_t
32169 #define bustype_BDK_AP_TRCITCTRL BDK_CSR_TYPE_SYSREG
32170 #define basename_BDK_AP_TRCITCTRL "AP_TRCITCTRL"
32171 #define busnum_BDK_AP_TRCITCTRL 0
32172 #define arguments_BDK_AP_TRCITCTRL -1,-1,-1,-1
32173 
32174 /**
32175  * Register (SYSREG) ap_trclar
32176  *
32177  * AP Register
32178  */
32179 union bdk_ap_trclar
32180 {
32181     uint64_t u;
32182     struct bdk_ap_trclar_s
32183     {
32184 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32185         uint64_t reserved_0_63         : 64;
32186 #else /* Word 0 - Little Endian */
32187         uint64_t reserved_0_63         : 64;
32188 #endif /* Word 0 - End */
32189     } s;
32190     /* struct bdk_ap_trclar_s cn; */
32191 };
32192 typedef union bdk_ap_trclar bdk_ap_trclar_t;
32193 
32194 #define BDK_AP_TRCLAR BDK_AP_TRCLAR_FUNC()
32195 static inline uint64_t BDK_AP_TRCLAR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCLAR_FUNC(void)32196 static inline uint64_t BDK_AP_TRCLAR_FUNC(void)
32197 {
32198     return 0x201070c0600ll;
32199 }
32200 
32201 #define typedef_BDK_AP_TRCLAR bdk_ap_trclar_t
32202 #define bustype_BDK_AP_TRCLAR BDK_CSR_TYPE_SYSREG
32203 #define basename_BDK_AP_TRCLAR "AP_TRCLAR"
32204 #define busnum_BDK_AP_TRCLAR 0
32205 #define arguments_BDK_AP_TRCLAR -1,-1,-1,-1
32206 
32207 /**
32208  * Register (SYSREG) ap_trclsr
32209  *
32210  * AP Register
32211  */
32212 union bdk_ap_trclsr
32213 {
32214     uint64_t u;
32215     struct bdk_ap_trclsr_s
32216     {
32217 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32218         uint64_t reserved_0_63         : 64;
32219 #else /* Word 0 - Little Endian */
32220         uint64_t reserved_0_63         : 64;
32221 #endif /* Word 0 - End */
32222     } s;
32223     /* struct bdk_ap_trclsr_s cn; */
32224 };
32225 typedef union bdk_ap_trclsr bdk_ap_trclsr_t;
32226 
32227 #define BDK_AP_TRCLSR BDK_AP_TRCLSR_FUNC()
32228 static inline uint64_t BDK_AP_TRCLSR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCLSR_FUNC(void)32229 static inline uint64_t BDK_AP_TRCLSR_FUNC(void)
32230 {
32231     return 0x201070d0600ll;
32232 }
32233 
32234 #define typedef_BDK_AP_TRCLSR bdk_ap_trclsr_t
32235 #define bustype_BDK_AP_TRCLSR BDK_CSR_TYPE_SYSREG
32236 #define basename_BDK_AP_TRCLSR "AP_TRCLSR"
32237 #define busnum_BDK_AP_TRCLSR 0
32238 #define arguments_BDK_AP_TRCLSR -1,-1,-1,-1
32239 
32240 /**
32241  * Register (SYSREG) ap_trcoslar
32242  *
32243  * AP Register
32244  */
32245 union bdk_ap_trcoslar
32246 {
32247     uint64_t u;
32248     struct bdk_ap_trcoslar_s
32249     {
32250 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32251         uint64_t reserved_0_63         : 64;
32252 #else /* Word 0 - Little Endian */
32253         uint64_t reserved_0_63         : 64;
32254 #endif /* Word 0 - End */
32255     } s;
32256     /* struct bdk_ap_trcoslar_s cn; */
32257 };
32258 typedef union bdk_ap_trcoslar bdk_ap_trcoslar_t;
32259 
32260 #define BDK_AP_TRCOSLAR BDK_AP_TRCOSLAR_FUNC()
32261 static inline uint64_t BDK_AP_TRCOSLAR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCOSLAR_FUNC(void)32262 static inline uint64_t BDK_AP_TRCOSLAR_FUNC(void)
32263 {
32264     return 0x20101000400ll;
32265 }
32266 
32267 #define typedef_BDK_AP_TRCOSLAR bdk_ap_trcoslar_t
32268 #define bustype_BDK_AP_TRCOSLAR BDK_CSR_TYPE_SYSREG
32269 #define basename_BDK_AP_TRCOSLAR "AP_TRCOSLAR"
32270 #define busnum_BDK_AP_TRCOSLAR 0
32271 #define arguments_BDK_AP_TRCOSLAR -1,-1,-1,-1
32272 
32273 /**
32274  * Register (SYSREG) ap_trcoslsr
32275  *
32276  * AP Register
32277  */
32278 union bdk_ap_trcoslsr
32279 {
32280     uint64_t u;
32281     struct bdk_ap_trcoslsr_s
32282     {
32283 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32284         uint64_t reserved_0_63         : 64;
32285 #else /* Word 0 - Little Endian */
32286         uint64_t reserved_0_63         : 64;
32287 #endif /* Word 0 - End */
32288     } s;
32289     /* struct bdk_ap_trcoslsr_s cn; */
32290 };
32291 typedef union bdk_ap_trcoslsr bdk_ap_trcoslsr_t;
32292 
32293 #define BDK_AP_TRCOSLSR BDK_AP_TRCOSLSR_FUNC()
32294 static inline uint64_t BDK_AP_TRCOSLSR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCOSLSR_FUNC(void)32295 static inline uint64_t BDK_AP_TRCOSLSR_FUNC(void)
32296 {
32297     return 0x20101010400ll;
32298 }
32299 
32300 #define typedef_BDK_AP_TRCOSLSR bdk_ap_trcoslsr_t
32301 #define bustype_BDK_AP_TRCOSLSR BDK_CSR_TYPE_SYSREG
32302 #define basename_BDK_AP_TRCOSLSR "AP_TRCOSLSR"
32303 #define busnum_BDK_AP_TRCOSLSR 0
32304 #define arguments_BDK_AP_TRCOSLSR -1,-1,-1,-1
32305 
32306 /**
32307  * Register (SYSREG) ap_trcpdcr
32308  *
32309  * AP Register
32310  */
32311 union bdk_ap_trcpdcr
32312 {
32313     uint64_t u;
32314     struct bdk_ap_trcpdcr_s
32315     {
32316 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32317         uint64_t reserved_0_63         : 64;
32318 #else /* Word 0 - Little Endian */
32319         uint64_t reserved_0_63         : 64;
32320 #endif /* Word 0 - End */
32321     } s;
32322     /* struct bdk_ap_trcpdcr_s cn; */
32323 };
32324 typedef union bdk_ap_trcpdcr bdk_ap_trcpdcr_t;
32325 
32326 #define BDK_AP_TRCPDCR BDK_AP_TRCPDCR_FUNC()
32327 static inline uint64_t BDK_AP_TRCPDCR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCPDCR_FUNC(void)32328 static inline uint64_t BDK_AP_TRCPDCR_FUNC(void)
32329 {
32330     return 0x20101040400ll;
32331 }
32332 
32333 #define typedef_BDK_AP_TRCPDCR bdk_ap_trcpdcr_t
32334 #define bustype_BDK_AP_TRCPDCR BDK_CSR_TYPE_SYSREG
32335 #define basename_BDK_AP_TRCPDCR "AP_TRCPDCR"
32336 #define busnum_BDK_AP_TRCPDCR 0
32337 #define arguments_BDK_AP_TRCPDCR -1,-1,-1,-1
32338 
32339 /**
32340  * Register (SYSREG) ap_trcpdsr
32341  *
32342  * AP Register
32343  */
32344 union bdk_ap_trcpdsr
32345 {
32346     uint64_t u;
32347     struct bdk_ap_trcpdsr_s
32348     {
32349 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32350         uint64_t reserved_0_63         : 64;
32351 #else /* Word 0 - Little Endian */
32352         uint64_t reserved_0_63         : 64;
32353 #endif /* Word 0 - End */
32354     } s;
32355     /* struct bdk_ap_trcpdsr_s cn; */
32356 };
32357 typedef union bdk_ap_trcpdsr bdk_ap_trcpdsr_t;
32358 
32359 #define BDK_AP_TRCPDSR BDK_AP_TRCPDSR_FUNC()
32360 static inline uint64_t BDK_AP_TRCPDSR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCPDSR_FUNC(void)32361 static inline uint64_t BDK_AP_TRCPDSR_FUNC(void)
32362 {
32363     return 0x20101050400ll;
32364 }
32365 
32366 #define typedef_BDK_AP_TRCPDSR bdk_ap_trcpdsr_t
32367 #define bustype_BDK_AP_TRCPDSR BDK_CSR_TYPE_SYSREG
32368 #define basename_BDK_AP_TRCPDSR "AP_TRCPDSR"
32369 #define busnum_BDK_AP_TRCPDSR 0
32370 #define arguments_BDK_AP_TRCPDSR -1,-1,-1,-1
32371 
32372 /**
32373  * Register (SYSREG) ap_trcpidr#
32374  *
32375  * AP Register
32376  */
32377 union bdk_ap_trcpidrx
32378 {
32379     uint64_t u;
32380     struct bdk_ap_trcpidrx_s
32381     {
32382 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32383         uint64_t reserved_0_63         : 64;
32384 #else /* Word 0 - Little Endian */
32385         uint64_t reserved_0_63         : 64;
32386 #endif /* Word 0 - End */
32387     } s;
32388     /* struct bdk_ap_trcpidrx_s cn; */
32389 };
32390 typedef union bdk_ap_trcpidrx bdk_ap_trcpidrx_t;
32391 
32392 static inline uint64_t BDK_AP_TRCPIDRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCPIDRX(unsigned long a)32393 static inline uint64_t BDK_AP_TRCPIDRX(unsigned long a)
32394 {
32395     if (a<=7)
32396         return 0x20107080700ll + 0x10000ll * ((a) & 0x7);
32397     __bdk_csr_fatal("AP_TRCPIDRX", 1, a, 0, 0, 0);
32398 }
32399 
32400 #define typedef_BDK_AP_TRCPIDRX(a) bdk_ap_trcpidrx_t
32401 #define bustype_BDK_AP_TRCPIDRX(a) BDK_CSR_TYPE_SYSREG
32402 #define basename_BDK_AP_TRCPIDRX(a) "AP_TRCPIDRX"
32403 #define busnum_BDK_AP_TRCPIDRX(a) (a)
32404 #define arguments_BDK_AP_TRCPIDRX(a) (a),-1,-1,-1
32405 
32406 /**
32407  * Register (SYSREG) ap_trcprgctlr
32408  *
32409  * AP Register
32410  */
32411 union bdk_ap_trcprgctlr
32412 {
32413     uint64_t u;
32414     struct bdk_ap_trcprgctlr_s
32415     {
32416 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32417         uint64_t reserved_0_63         : 64;
32418 #else /* Word 0 - Little Endian */
32419         uint64_t reserved_0_63         : 64;
32420 #endif /* Word 0 - End */
32421     } s;
32422     /* struct bdk_ap_trcprgctlr_s cn; */
32423 };
32424 typedef union bdk_ap_trcprgctlr bdk_ap_trcprgctlr_t;
32425 
32426 #define BDK_AP_TRCPRGCTLR BDK_AP_TRCPRGCTLR_FUNC()
32427 static inline uint64_t BDK_AP_TRCPRGCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCPRGCTLR_FUNC(void)32428 static inline uint64_t BDK_AP_TRCPRGCTLR_FUNC(void)
32429 {
32430     return 0x20100010000ll;
32431 }
32432 
32433 #define typedef_BDK_AP_TRCPRGCTLR bdk_ap_trcprgctlr_t
32434 #define bustype_BDK_AP_TRCPRGCTLR BDK_CSR_TYPE_SYSREG
32435 #define basename_BDK_AP_TRCPRGCTLR "AP_TRCPRGCTLR"
32436 #define busnum_BDK_AP_TRCPRGCTLR 0
32437 #define arguments_BDK_AP_TRCPRGCTLR -1,-1,-1,-1
32438 
32439 /**
32440  * Register (SYSREG) ap_trcprocselr
32441  *
32442  * AP Register
32443  */
32444 union bdk_ap_trcprocselr
32445 {
32446     uint64_t u;
32447     struct bdk_ap_trcprocselr_s
32448     {
32449 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32450         uint64_t reserved_0_63         : 64;
32451 #else /* Word 0 - Little Endian */
32452         uint64_t reserved_0_63         : 64;
32453 #endif /* Word 0 - End */
32454     } s;
32455     /* struct bdk_ap_trcprocselr_s cn; */
32456 };
32457 typedef union bdk_ap_trcprocselr bdk_ap_trcprocselr_t;
32458 
32459 #define BDK_AP_TRCPROCSELR BDK_AP_TRCPROCSELR_FUNC()
32460 static inline uint64_t BDK_AP_TRCPROCSELR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCPROCSELR_FUNC(void)32461 static inline uint64_t BDK_AP_TRCPROCSELR_FUNC(void)
32462 {
32463     return 0x20100020000ll;
32464 }
32465 
32466 #define typedef_BDK_AP_TRCPROCSELR bdk_ap_trcprocselr_t
32467 #define bustype_BDK_AP_TRCPROCSELR BDK_CSR_TYPE_SYSREG
32468 #define basename_BDK_AP_TRCPROCSELR "AP_TRCPROCSELR"
32469 #define busnum_BDK_AP_TRCPROCSELR 0
32470 #define arguments_BDK_AP_TRCPROCSELR -1,-1,-1,-1
32471 
32472 /**
32473  * Register (SYSREG) ap_trcqctlr
32474  *
32475  * AP Register
32476  */
32477 union bdk_ap_trcqctlr
32478 {
32479     uint64_t u;
32480     struct bdk_ap_trcqctlr_s
32481     {
32482 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32483         uint64_t reserved_0_63         : 64;
32484 #else /* Word 0 - Little Endian */
32485         uint64_t reserved_0_63         : 64;
32486 #endif /* Word 0 - End */
32487     } s;
32488     /* struct bdk_ap_trcqctlr_s cn; */
32489 };
32490 typedef union bdk_ap_trcqctlr bdk_ap_trcqctlr_t;
32491 
32492 #define BDK_AP_TRCQCTLR BDK_AP_TRCQCTLR_FUNC()
32493 static inline uint64_t BDK_AP_TRCQCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCQCTLR_FUNC(void)32494 static inline uint64_t BDK_AP_TRCQCTLR_FUNC(void)
32495 {
32496     return 0x20100010100ll;
32497 }
32498 
32499 #define typedef_BDK_AP_TRCQCTLR bdk_ap_trcqctlr_t
32500 #define bustype_BDK_AP_TRCQCTLR BDK_CSR_TYPE_SYSREG
32501 #define basename_BDK_AP_TRCQCTLR "AP_TRCQCTLR"
32502 #define busnum_BDK_AP_TRCQCTLR 0
32503 #define arguments_BDK_AP_TRCQCTLR -1,-1,-1,-1
32504 
32505 /**
32506  * Register (SYSREG) ap_trcrsctlr#
32507  *
32508  * AP Register
32509  */
32510 union bdk_ap_trcrsctlrx
32511 {
32512     uint64_t u;
32513     struct bdk_ap_trcrsctlrx_s
32514     {
32515 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32516         uint64_t reserved_0_63         : 64;
32517 #else /* Word 0 - Little Endian */
32518         uint64_t reserved_0_63         : 64;
32519 #endif /* Word 0 - End */
32520     } s;
32521     /* struct bdk_ap_trcrsctlrx_s cn; */
32522 };
32523 typedef union bdk_ap_trcrsctlrx bdk_ap_trcrsctlrx_t;
32524 
32525 static inline uint64_t BDK_AP_TRCRSCTLRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCRSCTLRX(unsigned long a)32526 static inline uint64_t BDK_AP_TRCRSCTLRX(unsigned long a)
32527 {
32528     if ((a>=2)&&(a<=31))
32529         return 0x20101000000ll + 0x10000ll * ((a) & 0x1f);
32530     __bdk_csr_fatal("AP_TRCRSCTLRX", 1, a, 0, 0, 0);
32531 }
32532 
32533 #define typedef_BDK_AP_TRCRSCTLRX(a) bdk_ap_trcrsctlrx_t
32534 #define bustype_BDK_AP_TRCRSCTLRX(a) BDK_CSR_TYPE_SYSREG
32535 #define basename_BDK_AP_TRCRSCTLRX(a) "AP_TRCRSCTLRX"
32536 #define busnum_BDK_AP_TRCRSCTLRX(a) (a)
32537 #define arguments_BDK_AP_TRCRSCTLRX(a) (a),-1,-1,-1
32538 
32539 /**
32540  * Register (SYSREG) ap_trcseqevr#
32541  *
32542  * AP Register
32543  */
32544 union bdk_ap_trcseqevrx
32545 {
32546     uint64_t u;
32547     struct bdk_ap_trcseqevrx_s
32548     {
32549 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32550         uint64_t reserved_0_63         : 64;
32551 #else /* Word 0 - Little Endian */
32552         uint64_t reserved_0_63         : 64;
32553 #endif /* Word 0 - End */
32554     } s;
32555     /* struct bdk_ap_trcseqevrx_s cn; */
32556 };
32557 typedef union bdk_ap_trcseqevrx bdk_ap_trcseqevrx_t;
32558 
32559 static inline uint64_t BDK_AP_TRCSEQEVRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCSEQEVRX(unsigned long a)32560 static inline uint64_t BDK_AP_TRCSEQEVRX(unsigned long a)
32561 {
32562     if (a<=2)
32563         return 0x20100000400ll + 0x10000ll * ((a) & 0x3);
32564     __bdk_csr_fatal("AP_TRCSEQEVRX", 1, a, 0, 0, 0);
32565 }
32566 
32567 #define typedef_BDK_AP_TRCSEQEVRX(a) bdk_ap_trcseqevrx_t
32568 #define bustype_BDK_AP_TRCSEQEVRX(a) BDK_CSR_TYPE_SYSREG
32569 #define basename_BDK_AP_TRCSEQEVRX(a) "AP_TRCSEQEVRX"
32570 #define busnum_BDK_AP_TRCSEQEVRX(a) (a)
32571 #define arguments_BDK_AP_TRCSEQEVRX(a) (a),-1,-1,-1
32572 
32573 /**
32574  * Register (SYSREG) ap_trcseqrstevr
32575  *
32576  * AP Register
32577  */
32578 union bdk_ap_trcseqrstevr
32579 {
32580     uint64_t u;
32581     struct bdk_ap_trcseqrstevr_s
32582     {
32583 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32584         uint64_t reserved_0_63         : 64;
32585 #else /* Word 0 - Little Endian */
32586         uint64_t reserved_0_63         : 64;
32587 #endif /* Word 0 - End */
32588     } s;
32589     /* struct bdk_ap_trcseqrstevr_s cn; */
32590 };
32591 typedef union bdk_ap_trcseqrstevr bdk_ap_trcseqrstevr_t;
32592 
32593 #define BDK_AP_TRCSEQRSTEVR BDK_AP_TRCSEQRSTEVR_FUNC()
32594 static inline uint64_t BDK_AP_TRCSEQRSTEVR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCSEQRSTEVR_FUNC(void)32595 static inline uint64_t BDK_AP_TRCSEQRSTEVR_FUNC(void)
32596 {
32597     return 0x20100060400ll;
32598 }
32599 
32600 #define typedef_BDK_AP_TRCSEQRSTEVR bdk_ap_trcseqrstevr_t
32601 #define bustype_BDK_AP_TRCSEQRSTEVR BDK_CSR_TYPE_SYSREG
32602 #define basename_BDK_AP_TRCSEQRSTEVR "AP_TRCSEQRSTEVR"
32603 #define busnum_BDK_AP_TRCSEQRSTEVR 0
32604 #define arguments_BDK_AP_TRCSEQRSTEVR -1,-1,-1,-1
32605 
32606 /**
32607  * Register (SYSREG) ap_trcseqstr
32608  *
32609  * AP Register
32610  */
32611 union bdk_ap_trcseqstr
32612 {
32613     uint64_t u;
32614     struct bdk_ap_trcseqstr_s
32615     {
32616 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32617         uint64_t reserved_0_63         : 64;
32618 #else /* Word 0 - Little Endian */
32619         uint64_t reserved_0_63         : 64;
32620 #endif /* Word 0 - End */
32621     } s;
32622     /* struct bdk_ap_trcseqstr_s cn; */
32623 };
32624 typedef union bdk_ap_trcseqstr bdk_ap_trcseqstr_t;
32625 
32626 #define BDK_AP_TRCSEQSTR BDK_AP_TRCSEQSTR_FUNC()
32627 static inline uint64_t BDK_AP_TRCSEQSTR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCSEQSTR_FUNC(void)32628 static inline uint64_t BDK_AP_TRCSEQSTR_FUNC(void)
32629 {
32630     return 0x20100070400ll;
32631 }
32632 
32633 #define typedef_BDK_AP_TRCSEQSTR bdk_ap_trcseqstr_t
32634 #define bustype_BDK_AP_TRCSEQSTR BDK_CSR_TYPE_SYSREG
32635 #define basename_BDK_AP_TRCSEQSTR "AP_TRCSEQSTR"
32636 #define busnum_BDK_AP_TRCSEQSTR 0
32637 #define arguments_BDK_AP_TRCSEQSTR -1,-1,-1,-1
32638 
32639 /**
32640  * Register (SYSREG) ap_trcssccr#
32641  *
32642  * AP Register
32643  */
32644 union bdk_ap_trcssccrx
32645 {
32646     uint64_t u;
32647     struct bdk_ap_trcssccrx_s
32648     {
32649 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32650         uint64_t reserved_0_63         : 64;
32651 #else /* Word 0 - Little Endian */
32652         uint64_t reserved_0_63         : 64;
32653 #endif /* Word 0 - End */
32654     } s;
32655     /* struct bdk_ap_trcssccrx_s cn; */
32656 };
32657 typedef union bdk_ap_trcssccrx bdk_ap_trcssccrx_t;
32658 
32659 static inline uint64_t BDK_AP_TRCSSCCRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCSSCCRX(unsigned long a)32660 static inline uint64_t BDK_AP_TRCSSCCRX(unsigned long a)
32661 {
32662     if (a<=7)
32663         return 0x20101000200ll + 0x10000ll * ((a) & 0x7);
32664     __bdk_csr_fatal("AP_TRCSSCCRX", 1, a, 0, 0, 0);
32665 }
32666 
32667 #define typedef_BDK_AP_TRCSSCCRX(a) bdk_ap_trcssccrx_t
32668 #define bustype_BDK_AP_TRCSSCCRX(a) BDK_CSR_TYPE_SYSREG
32669 #define basename_BDK_AP_TRCSSCCRX(a) "AP_TRCSSCCRX"
32670 #define busnum_BDK_AP_TRCSSCCRX(a) (a)
32671 #define arguments_BDK_AP_TRCSSCCRX(a) (a),-1,-1,-1
32672 
32673 /**
32674  * Register (SYSREG) ap_trcsscsr#
32675  *
32676  * AP Register
32677  */
32678 union bdk_ap_trcsscsrx
32679 {
32680     uint64_t u;
32681     struct bdk_ap_trcsscsrx_s
32682     {
32683 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32684         uint64_t reserved_0_63         : 64;
32685 #else /* Word 0 - Little Endian */
32686         uint64_t reserved_0_63         : 64;
32687 #endif /* Word 0 - End */
32688     } s;
32689     /* struct bdk_ap_trcsscsrx_s cn; */
32690 };
32691 typedef union bdk_ap_trcsscsrx bdk_ap_trcsscsrx_t;
32692 
32693 static inline uint64_t BDK_AP_TRCSSCSRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCSSCSRX(unsigned long a)32694 static inline uint64_t BDK_AP_TRCSSCSRX(unsigned long a)
32695 {
32696     if (a<=7)
32697         return 0x20101080200ll + 0x10000ll * ((a) & 0x7);
32698     __bdk_csr_fatal("AP_TRCSSCSRX", 1, a, 0, 0, 0);
32699 }
32700 
32701 #define typedef_BDK_AP_TRCSSCSRX(a) bdk_ap_trcsscsrx_t
32702 #define bustype_BDK_AP_TRCSSCSRX(a) BDK_CSR_TYPE_SYSREG
32703 #define basename_BDK_AP_TRCSSCSRX(a) "AP_TRCSSCSRX"
32704 #define busnum_BDK_AP_TRCSSCSRX(a) (a)
32705 #define arguments_BDK_AP_TRCSSCSRX(a) (a),-1,-1,-1
32706 
32707 /**
32708  * Register (SYSREG) ap_trcsspcicr#
32709  *
32710  * AP Register
32711  */
32712 union bdk_ap_trcsspcicrx
32713 {
32714     uint64_t u;
32715     struct bdk_ap_trcsspcicrx_s
32716     {
32717 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32718         uint64_t reserved_0_63         : 64;
32719 #else /* Word 0 - Little Endian */
32720         uint64_t reserved_0_63         : 64;
32721 #endif /* Word 0 - End */
32722     } s;
32723     /* struct bdk_ap_trcsspcicrx_s cn; */
32724 };
32725 typedef union bdk_ap_trcsspcicrx bdk_ap_trcsspcicrx_t;
32726 
32727 static inline uint64_t BDK_AP_TRCSSPCICRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCSSPCICRX(unsigned long a)32728 static inline uint64_t BDK_AP_TRCSSPCICRX(unsigned long a)
32729 {
32730     if (a<=7)
32731         return 0x20101000300ll + 0x10000ll * ((a) & 0x7);
32732     __bdk_csr_fatal("AP_TRCSSPCICRX", 1, a, 0, 0, 0);
32733 }
32734 
32735 #define typedef_BDK_AP_TRCSSPCICRX(a) bdk_ap_trcsspcicrx_t
32736 #define bustype_BDK_AP_TRCSSPCICRX(a) BDK_CSR_TYPE_SYSREG
32737 #define basename_BDK_AP_TRCSSPCICRX(a) "AP_TRCSSPCICRX"
32738 #define busnum_BDK_AP_TRCSSPCICRX(a) (a)
32739 #define arguments_BDK_AP_TRCSSPCICRX(a) (a),-1,-1,-1
32740 
32741 /**
32742  * Register (SYSREG) ap_trcstallctlr
32743  *
32744  * AP Register
32745  */
32746 union bdk_ap_trcstallctlr
32747 {
32748     uint64_t u;
32749     struct bdk_ap_trcstallctlr_s
32750     {
32751 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32752         uint64_t reserved_0_63         : 64;
32753 #else /* Word 0 - Little Endian */
32754         uint64_t reserved_0_63         : 64;
32755 #endif /* Word 0 - End */
32756     } s;
32757     /* struct bdk_ap_trcstallctlr_s cn; */
32758 };
32759 typedef union bdk_ap_trcstallctlr bdk_ap_trcstallctlr_t;
32760 
32761 #define BDK_AP_TRCSTALLCTLR BDK_AP_TRCSTALLCTLR_FUNC()
32762 static inline uint64_t BDK_AP_TRCSTALLCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCSTALLCTLR_FUNC(void)32763 static inline uint64_t BDK_AP_TRCSTALLCTLR_FUNC(void)
32764 {
32765     return 0x201000b0000ll;
32766 }
32767 
32768 #define typedef_BDK_AP_TRCSTALLCTLR bdk_ap_trcstallctlr_t
32769 #define bustype_BDK_AP_TRCSTALLCTLR BDK_CSR_TYPE_SYSREG
32770 #define basename_BDK_AP_TRCSTALLCTLR "AP_TRCSTALLCTLR"
32771 #define busnum_BDK_AP_TRCSTALLCTLR 0
32772 #define arguments_BDK_AP_TRCSTALLCTLR -1,-1,-1,-1
32773 
32774 /**
32775  * Register (SYSREG) ap_trcstatr
32776  *
32777  * AP Register
32778  */
32779 union bdk_ap_trcstatr
32780 {
32781     uint64_t u;
32782     struct bdk_ap_trcstatr_s
32783     {
32784 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32785         uint64_t reserved_0_63         : 64;
32786 #else /* Word 0 - Little Endian */
32787         uint64_t reserved_0_63         : 64;
32788 #endif /* Word 0 - End */
32789     } s;
32790     /* struct bdk_ap_trcstatr_s cn; */
32791 };
32792 typedef union bdk_ap_trcstatr bdk_ap_trcstatr_t;
32793 
32794 #define BDK_AP_TRCSTATR BDK_AP_TRCSTATR_FUNC()
32795 static inline uint64_t BDK_AP_TRCSTATR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCSTATR_FUNC(void)32796 static inline uint64_t BDK_AP_TRCSTATR_FUNC(void)
32797 {
32798     return 0x20100030000ll;
32799 }
32800 
32801 #define typedef_BDK_AP_TRCSTATR bdk_ap_trcstatr_t
32802 #define bustype_BDK_AP_TRCSTATR BDK_CSR_TYPE_SYSREG
32803 #define basename_BDK_AP_TRCSTATR "AP_TRCSTATR"
32804 #define busnum_BDK_AP_TRCSTATR 0
32805 #define arguments_BDK_AP_TRCSTATR -1,-1,-1,-1
32806 
32807 /**
32808  * Register (SYSREG) ap_trcsyncpr
32809  *
32810  * AP Register
32811  */
32812 union bdk_ap_trcsyncpr
32813 {
32814     uint64_t u;
32815     struct bdk_ap_trcsyncpr_s
32816     {
32817 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32818         uint64_t reserved_0_63         : 64;
32819 #else /* Word 0 - Little Endian */
32820         uint64_t reserved_0_63         : 64;
32821 #endif /* Word 0 - End */
32822     } s;
32823     /* struct bdk_ap_trcsyncpr_s cn; */
32824 };
32825 typedef union bdk_ap_trcsyncpr bdk_ap_trcsyncpr_t;
32826 
32827 #define BDK_AP_TRCSYNCPR BDK_AP_TRCSYNCPR_FUNC()
32828 static inline uint64_t BDK_AP_TRCSYNCPR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCSYNCPR_FUNC(void)32829 static inline uint64_t BDK_AP_TRCSYNCPR_FUNC(void)
32830 {
32831     return 0x201000d0000ll;
32832 }
32833 
32834 #define typedef_BDK_AP_TRCSYNCPR bdk_ap_trcsyncpr_t
32835 #define bustype_BDK_AP_TRCSYNCPR BDK_CSR_TYPE_SYSREG
32836 #define basename_BDK_AP_TRCSYNCPR "AP_TRCSYNCPR"
32837 #define busnum_BDK_AP_TRCSYNCPR 0
32838 #define arguments_BDK_AP_TRCSYNCPR -1,-1,-1,-1
32839 
32840 /**
32841  * Register (SYSREG) ap_trctraceidr
32842  *
32843  * AP Register
32844  */
32845 union bdk_ap_trctraceidr
32846 {
32847     uint64_t u;
32848     struct bdk_ap_trctraceidr_s
32849     {
32850 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32851         uint64_t reserved_0_63         : 64;
32852 #else /* Word 0 - Little Endian */
32853         uint64_t reserved_0_63         : 64;
32854 #endif /* Word 0 - End */
32855     } s;
32856     /* struct bdk_ap_trctraceidr_s cn; */
32857 };
32858 typedef union bdk_ap_trctraceidr bdk_ap_trctraceidr_t;
32859 
32860 #define BDK_AP_TRCTRACEIDR BDK_AP_TRCTRACEIDR_FUNC()
32861 static inline uint64_t BDK_AP_TRCTRACEIDR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCTRACEIDR_FUNC(void)32862 static inline uint64_t BDK_AP_TRCTRACEIDR_FUNC(void)
32863 {
32864     return 0x20100000100ll;
32865 }
32866 
32867 #define typedef_BDK_AP_TRCTRACEIDR bdk_ap_trctraceidr_t
32868 #define bustype_BDK_AP_TRCTRACEIDR BDK_CSR_TYPE_SYSREG
32869 #define basename_BDK_AP_TRCTRACEIDR "AP_TRCTRACEIDR"
32870 #define busnum_BDK_AP_TRCTRACEIDR 0
32871 #define arguments_BDK_AP_TRCTRACEIDR -1,-1,-1,-1
32872 
32873 /**
32874  * Register (SYSREG) ap_trctsctlr
32875  *
32876  * AP Register
32877  */
32878 union bdk_ap_trctsctlr
32879 {
32880     uint64_t u;
32881     struct bdk_ap_trctsctlr_s
32882     {
32883 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32884         uint64_t reserved_0_63         : 64;
32885 #else /* Word 0 - Little Endian */
32886         uint64_t reserved_0_63         : 64;
32887 #endif /* Word 0 - End */
32888     } s;
32889     /* struct bdk_ap_trctsctlr_s cn; */
32890 };
32891 typedef union bdk_ap_trctsctlr bdk_ap_trctsctlr_t;
32892 
32893 #define BDK_AP_TRCTSCTLR BDK_AP_TRCTSCTLR_FUNC()
32894 static inline uint64_t BDK_AP_TRCTSCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCTSCTLR_FUNC(void)32895 static inline uint64_t BDK_AP_TRCTSCTLR_FUNC(void)
32896 {
32897     return 0x201000c0000ll;
32898 }
32899 
32900 #define typedef_BDK_AP_TRCTSCTLR bdk_ap_trctsctlr_t
32901 #define bustype_BDK_AP_TRCTSCTLR BDK_CSR_TYPE_SYSREG
32902 #define basename_BDK_AP_TRCTSCTLR "AP_TRCTSCTLR"
32903 #define busnum_BDK_AP_TRCTSCTLR 0
32904 #define arguments_BDK_AP_TRCTSCTLR -1,-1,-1,-1
32905 
32906 /**
32907  * Register (SYSREG) ap_trcvdarcctlr
32908  *
32909  * AP Register
32910  */
32911 union bdk_ap_trcvdarcctlr
32912 {
32913     uint64_t u;
32914     struct bdk_ap_trcvdarcctlr_s
32915     {
32916 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32917         uint64_t reserved_0_63         : 64;
32918 #else /* Word 0 - Little Endian */
32919         uint64_t reserved_0_63         : 64;
32920 #endif /* Word 0 - End */
32921     } s;
32922     /* struct bdk_ap_trcvdarcctlr_s cn; */
32923 };
32924 typedef union bdk_ap_trcvdarcctlr bdk_ap_trcvdarcctlr_t;
32925 
32926 #define BDK_AP_TRCVDARCCTLR BDK_AP_TRCVDARCCTLR_FUNC()
32927 static inline uint64_t BDK_AP_TRCVDARCCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCVDARCCTLR_FUNC(void)32928 static inline uint64_t BDK_AP_TRCVDARCCTLR_FUNC(void)
32929 {
32930     return 0x201000a0200ll;
32931 }
32932 
32933 #define typedef_BDK_AP_TRCVDARCCTLR bdk_ap_trcvdarcctlr_t
32934 #define bustype_BDK_AP_TRCVDARCCTLR BDK_CSR_TYPE_SYSREG
32935 #define basename_BDK_AP_TRCVDARCCTLR "AP_TRCVDARCCTLR"
32936 #define busnum_BDK_AP_TRCVDARCCTLR 0
32937 #define arguments_BDK_AP_TRCVDARCCTLR -1,-1,-1,-1
32938 
32939 /**
32940  * Register (SYSREG) ap_trcvdctlr
32941  *
32942  * AP Register
32943  */
32944 union bdk_ap_trcvdctlr
32945 {
32946     uint64_t u;
32947     struct bdk_ap_trcvdctlr_s
32948     {
32949 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32950         uint64_t reserved_0_63         : 64;
32951 #else /* Word 0 - Little Endian */
32952         uint64_t reserved_0_63         : 64;
32953 #endif /* Word 0 - End */
32954     } s;
32955     /* struct bdk_ap_trcvdctlr_s cn; */
32956 };
32957 typedef union bdk_ap_trcvdctlr bdk_ap_trcvdctlr_t;
32958 
32959 #define BDK_AP_TRCVDCTLR BDK_AP_TRCVDCTLR_FUNC()
32960 static inline uint64_t BDK_AP_TRCVDCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCVDCTLR_FUNC(void)32961 static inline uint64_t BDK_AP_TRCVDCTLR_FUNC(void)
32962 {
32963     return 0x20100080200ll;
32964 }
32965 
32966 #define typedef_BDK_AP_TRCVDCTLR bdk_ap_trcvdctlr_t
32967 #define bustype_BDK_AP_TRCVDCTLR BDK_CSR_TYPE_SYSREG
32968 #define basename_BDK_AP_TRCVDCTLR "AP_TRCVDCTLR"
32969 #define busnum_BDK_AP_TRCVDCTLR 0
32970 #define arguments_BDK_AP_TRCVDCTLR -1,-1,-1,-1
32971 
32972 /**
32973  * Register (SYSREG) ap_trcvdsacctlr
32974  *
32975  * AP Register
32976  */
32977 union bdk_ap_trcvdsacctlr
32978 {
32979     uint64_t u;
32980     struct bdk_ap_trcvdsacctlr_s
32981     {
32982 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
32983         uint64_t reserved_0_63         : 64;
32984 #else /* Word 0 - Little Endian */
32985         uint64_t reserved_0_63         : 64;
32986 #endif /* Word 0 - End */
32987     } s;
32988     /* struct bdk_ap_trcvdsacctlr_s cn; */
32989 };
32990 typedef union bdk_ap_trcvdsacctlr bdk_ap_trcvdsacctlr_t;
32991 
32992 #define BDK_AP_TRCVDSACCTLR BDK_AP_TRCVDSACCTLR_FUNC()
32993 static inline uint64_t BDK_AP_TRCVDSACCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCVDSACCTLR_FUNC(void)32994 static inline uint64_t BDK_AP_TRCVDSACCTLR_FUNC(void)
32995 {
32996     return 0x20100090200ll;
32997 }
32998 
32999 #define typedef_BDK_AP_TRCVDSACCTLR bdk_ap_trcvdsacctlr_t
33000 #define bustype_BDK_AP_TRCVDSACCTLR BDK_CSR_TYPE_SYSREG
33001 #define basename_BDK_AP_TRCVDSACCTLR "AP_TRCVDSACCTLR"
33002 #define busnum_BDK_AP_TRCVDSACCTLR 0
33003 #define arguments_BDK_AP_TRCVDSACCTLR -1,-1,-1,-1
33004 
33005 /**
33006  * Register (SYSREG) ap_trcvictlr
33007  *
33008  * AP Register
33009  */
33010 union bdk_ap_trcvictlr
33011 {
33012     uint64_t u;
33013     struct bdk_ap_trcvictlr_s
33014     {
33015 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33016         uint64_t reserved_0_63         : 64;
33017 #else /* Word 0 - Little Endian */
33018         uint64_t reserved_0_63         : 64;
33019 #endif /* Word 0 - End */
33020     } s;
33021     /* struct bdk_ap_trcvictlr_s cn; */
33022 };
33023 typedef union bdk_ap_trcvictlr bdk_ap_trcvictlr_t;
33024 
33025 #define BDK_AP_TRCVICTLR BDK_AP_TRCVICTLR_FUNC()
33026 static inline uint64_t BDK_AP_TRCVICTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCVICTLR_FUNC(void)33027 static inline uint64_t BDK_AP_TRCVICTLR_FUNC(void)
33028 {
33029     return 0x20100000200ll;
33030 }
33031 
33032 #define typedef_BDK_AP_TRCVICTLR bdk_ap_trcvictlr_t
33033 #define bustype_BDK_AP_TRCVICTLR BDK_CSR_TYPE_SYSREG
33034 #define basename_BDK_AP_TRCVICTLR "AP_TRCVICTLR"
33035 #define busnum_BDK_AP_TRCVICTLR 0
33036 #define arguments_BDK_AP_TRCVICTLR -1,-1,-1,-1
33037 
33038 /**
33039  * Register (SYSREG) ap_trcviiectlr
33040  *
33041  * AP Register
33042  */
33043 union bdk_ap_trcviiectlr
33044 {
33045     uint64_t u;
33046     struct bdk_ap_trcviiectlr_s
33047     {
33048 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33049         uint64_t reserved_0_63         : 64;
33050 #else /* Word 0 - Little Endian */
33051         uint64_t reserved_0_63         : 64;
33052 #endif /* Word 0 - End */
33053     } s;
33054     /* struct bdk_ap_trcviiectlr_s cn; */
33055 };
33056 typedef union bdk_ap_trcviiectlr bdk_ap_trcviiectlr_t;
33057 
33058 #define BDK_AP_TRCVIIECTLR BDK_AP_TRCVIIECTLR_FUNC()
33059 static inline uint64_t BDK_AP_TRCVIIECTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCVIIECTLR_FUNC(void)33060 static inline uint64_t BDK_AP_TRCVIIECTLR_FUNC(void)
33061 {
33062     return 0x20100010200ll;
33063 }
33064 
33065 #define typedef_BDK_AP_TRCVIIECTLR bdk_ap_trcviiectlr_t
33066 #define bustype_BDK_AP_TRCVIIECTLR BDK_CSR_TYPE_SYSREG
33067 #define basename_BDK_AP_TRCVIIECTLR "AP_TRCVIIECTLR"
33068 #define busnum_BDK_AP_TRCVIIECTLR 0
33069 #define arguments_BDK_AP_TRCVIIECTLR -1,-1,-1,-1
33070 
33071 /**
33072  * Register (SYSREG) ap_trcvipcssctlr
33073  *
33074  * AP Register
33075  */
33076 union bdk_ap_trcvipcssctlr
33077 {
33078     uint64_t u;
33079     struct bdk_ap_trcvipcssctlr_s
33080     {
33081 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33082         uint64_t reserved_0_63         : 64;
33083 #else /* Word 0 - Little Endian */
33084         uint64_t reserved_0_63         : 64;
33085 #endif /* Word 0 - End */
33086     } s;
33087     /* struct bdk_ap_trcvipcssctlr_s cn; */
33088 };
33089 typedef union bdk_ap_trcvipcssctlr bdk_ap_trcvipcssctlr_t;
33090 
33091 #define BDK_AP_TRCVIPCSSCTLR BDK_AP_TRCVIPCSSCTLR_FUNC()
33092 static inline uint64_t BDK_AP_TRCVIPCSSCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCVIPCSSCTLR_FUNC(void)33093 static inline uint64_t BDK_AP_TRCVIPCSSCTLR_FUNC(void)
33094 {
33095     return 0x20100030200ll;
33096 }
33097 
33098 #define typedef_BDK_AP_TRCVIPCSSCTLR bdk_ap_trcvipcssctlr_t
33099 #define bustype_BDK_AP_TRCVIPCSSCTLR BDK_CSR_TYPE_SYSREG
33100 #define basename_BDK_AP_TRCVIPCSSCTLR "AP_TRCVIPCSSCTLR"
33101 #define busnum_BDK_AP_TRCVIPCSSCTLR 0
33102 #define arguments_BDK_AP_TRCVIPCSSCTLR -1,-1,-1,-1
33103 
33104 /**
33105  * Register (SYSREG) ap_trcvissctlr
33106  *
33107  * AP Register
33108  */
33109 union bdk_ap_trcvissctlr
33110 {
33111     uint64_t u;
33112     struct bdk_ap_trcvissctlr_s
33113     {
33114 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33115         uint64_t reserved_0_63         : 64;
33116 #else /* Word 0 - Little Endian */
33117         uint64_t reserved_0_63         : 64;
33118 #endif /* Word 0 - End */
33119     } s;
33120     /* struct bdk_ap_trcvissctlr_s cn; */
33121 };
33122 typedef union bdk_ap_trcvissctlr bdk_ap_trcvissctlr_t;
33123 
33124 #define BDK_AP_TRCVISSCTLR BDK_AP_TRCVISSCTLR_FUNC()
33125 static inline uint64_t BDK_AP_TRCVISSCTLR_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TRCVISSCTLR_FUNC(void)33126 static inline uint64_t BDK_AP_TRCVISSCTLR_FUNC(void)
33127 {
33128     return 0x20100020200ll;
33129 }
33130 
33131 #define typedef_BDK_AP_TRCVISSCTLR bdk_ap_trcvissctlr_t
33132 #define bustype_BDK_AP_TRCVISSCTLR BDK_CSR_TYPE_SYSREG
33133 #define basename_BDK_AP_TRCVISSCTLR "AP_TRCVISSCTLR"
33134 #define busnum_BDK_AP_TRCVISSCTLR 0
33135 #define arguments_BDK_AP_TRCVISSCTLR -1,-1,-1,-1
33136 
33137 /**
33138  * Register (SYSREG) ap_trcvmidcctlr#
33139  *
33140  * AP Register
33141  */
33142 union bdk_ap_trcvmidcctlrx
33143 {
33144     uint64_t u;
33145     struct bdk_ap_trcvmidcctlrx_s
33146     {
33147 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33148         uint64_t reserved_0_63         : 64;
33149 #else /* Word 0 - Little Endian */
33150         uint64_t reserved_0_63         : 64;
33151 #endif /* Word 0 - End */
33152     } s;
33153     /* struct bdk_ap_trcvmidcctlrx_s cn; */
33154 };
33155 typedef union bdk_ap_trcvmidcctlrx bdk_ap_trcvmidcctlrx_t;
33156 
33157 static inline uint64_t BDK_AP_TRCVMIDCCTLRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCVMIDCCTLRX(unsigned long a)33158 static inline uint64_t BDK_AP_TRCVMIDCCTLRX(unsigned long a)
33159 {
33160     if (a<=1)
33161         return 0x20103020200ll + 0x10000ll * ((a) & 0x1);
33162     __bdk_csr_fatal("AP_TRCVMIDCCTLRX", 1, a, 0, 0, 0);
33163 }
33164 
33165 #define typedef_BDK_AP_TRCVMIDCCTLRX(a) bdk_ap_trcvmidcctlrx_t
33166 #define bustype_BDK_AP_TRCVMIDCCTLRX(a) BDK_CSR_TYPE_SYSREG
33167 #define basename_BDK_AP_TRCVMIDCCTLRX(a) "AP_TRCVMIDCCTLRX"
33168 #define busnum_BDK_AP_TRCVMIDCCTLRX(a) (a)
33169 #define arguments_BDK_AP_TRCVMIDCCTLRX(a) (a),-1,-1,-1
33170 
33171 /**
33172  * Register (SYSREG) ap_trcvmidcvr#
33173  *
33174  * AP Register
33175  */
33176 union bdk_ap_trcvmidcvrx
33177 {
33178     uint64_t u;
33179     struct bdk_ap_trcvmidcvrx_s
33180     {
33181 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33182         uint64_t reserved_0_63         : 64;
33183 #else /* Word 0 - Little Endian */
33184         uint64_t reserved_0_63         : 64;
33185 #endif /* Word 0 - End */
33186     } s;
33187     /* struct bdk_ap_trcvmidcvrx_s cn; */
33188 };
33189 typedef union bdk_ap_trcvmidcvrx bdk_ap_trcvmidcvrx_t;
33190 
33191 static inline uint64_t BDK_AP_TRCVMIDCVRX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_TRCVMIDCVRX(unsigned long a)33192 static inline uint64_t BDK_AP_TRCVMIDCVRX(unsigned long a)
33193 {
33194     if (a<=7)
33195         return 0x20103000100ll + 0x20000ll * ((a) & 0x7);
33196     __bdk_csr_fatal("AP_TRCVMIDCVRX", 1, a, 0, 0, 0);
33197 }
33198 
33199 #define typedef_BDK_AP_TRCVMIDCVRX(a) bdk_ap_trcvmidcvrx_t
33200 #define bustype_BDK_AP_TRCVMIDCVRX(a) BDK_CSR_TYPE_SYSREG
33201 #define basename_BDK_AP_TRCVMIDCVRX(a) "AP_TRCVMIDCVRX"
33202 #define busnum_BDK_AP_TRCVMIDCVRX(a) (a)
33203 #define arguments_BDK_AP_TRCVMIDCVRX(a) (a),-1,-1,-1
33204 
33205 /**
33206  * Register (SYSREG) ap_ttbr0_el1
33207  *
33208  * AP Translation Table Base EL1 Register 0
33209  * Holds the base address of translation table 0, and information
33210  *     about the memory it occupies. This is one of the translation
33211  *     tables for the stage 1 translation of memory accesses at EL0
33212  *     and EL1.
33213  */
33214 union bdk_ap_ttbr0_el1
33215 {
33216     uint64_t u;
33217     struct bdk_ap_ttbr0_el1_s
33218     {
33219 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33220         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33221                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33222                                                                  If the implementation has only 8 bits of ASID, then the upper
33223                                                                      8 bits of this field are RES0. */
33224         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33225                                                                      RES0.
33226 
33227                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33228                                                                      translation, and the memory translation granule size.
33229                                                                  The AArch64 Virtual Memory System Architecture chapter
33230                                                                      describes how x is calculated.
33231                                                                  The value of x determines the required alignment of the
33232                                                                      translation table, which must be aligned to 22^(x)
33233                                                                      bytes.
33234 
33235                                                                  If bits [x-1:0] are not all zero, this is a misaligned
33236                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33237                                                                      UNPREDICTABLE, and can be one of the following:
33238 
33239                                                                   Bits [x-1:0] are treated as if all the bits are zero. The
33240                                                                      value read back from those bits might be the value written or
33241                                                                      might be zero.
33242 
33243                                                                   The calculation of an address for a translation table walk
33244                                                                      using this register can be corrupted in those bits that are
33245                                                                      nonzero. */
33246         uint64_t reserved_1_3          : 3;
33247         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33248 #else /* Word 0 - Little Endian */
33249         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33250         uint64_t reserved_1_3          : 3;
33251         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33252                                                                      RES0.
33253 
33254                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33255                                                                      translation, and the memory translation granule size.
33256                                                                  The AArch64 Virtual Memory System Architecture chapter
33257                                                                      describes how x is calculated.
33258                                                                  The value of x determines the required alignment of the
33259                                                                      translation table, which must be aligned to 22^(x)
33260                                                                      bytes.
33261 
33262                                                                  If bits [x-1:0] are not all zero, this is a misaligned
33263                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33264                                                                      UNPREDICTABLE, and can be one of the following:
33265 
33266                                                                   Bits [x-1:0] are treated as if all the bits are zero. The
33267                                                                      value read back from those bits might be the value written or
33268                                                                      might be zero.
33269 
33270                                                                   The calculation of an address for a translation table walk
33271                                                                      using this register can be corrupted in those bits that are
33272                                                                      nonzero. */
33273         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33274                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33275                                                                  If the implementation has only 8 bits of ASID, then the upper
33276                                                                      8 bits of this field are RES0. */
33277 #endif /* Word 0 - End */
33278     } s;
33279     struct bdk_ap_ttbr0_el1_cn8
33280     {
33281 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33282         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33283                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33284                                                                  If the implementation has only 8 bits of ASID, then the upper
33285                                                                      8 bits of this field are RES0. */
33286         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33287                                                                      RES0.
33288 
33289                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33290                                                                      translation, and the memory translation granule size.
33291                                                                  The AArch64 Virtual Memory System Architecture chapter
33292                                                                      describes how x is calculated.
33293                                                                  The value of x determines the required alignment of the
33294                                                                      translation table, which must be aligned to 22^(x)
33295                                                                      bytes.
33296 
33297                                                                  If bits [x-1:0] are not all zero, this is a misaligned
33298                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33299                                                                      UNPREDICTABLE, and can be one of the following:
33300 
33301                                                                   Bits [x-1:0] are treated as if all the bits are zero. The
33302                                                                      value read back from those bits might be the value written or
33303                                                                      might be zero.
33304 
33305                                                                   The calculation of an address for a translation table walk
33306                                                                      using this register can be corrupted in those bits that are
33307                                                                      nonzero. */
33308         uint64_t reserved_0_3          : 4;
33309 #else /* Word 0 - Little Endian */
33310         uint64_t reserved_0_3          : 4;
33311         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33312                                                                      RES0.
33313 
33314                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33315                                                                      translation, and the memory translation granule size.
33316                                                                  The AArch64 Virtual Memory System Architecture chapter
33317                                                                      describes how x is calculated.
33318                                                                  The value of x determines the required alignment of the
33319                                                                      translation table, which must be aligned to 22^(x)
33320                                                                      bytes.
33321 
33322                                                                  If bits [x-1:0] are not all zero, this is a misaligned
33323                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33324                                                                      UNPREDICTABLE, and can be one of the following:
33325 
33326                                                                   Bits [x-1:0] are treated as if all the bits are zero. The
33327                                                                      value read back from those bits might be the value written or
33328                                                                      might be zero.
33329 
33330                                                                   The calculation of an address for a translation table walk
33331                                                                      using this register can be corrupted in those bits that are
33332                                                                      nonzero. */
33333         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33334                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33335                                                                  If the implementation has only 8 bits of ASID, then the upper
33336                                                                      8 bits of this field are RES0. */
33337 #endif /* Word 0 - End */
33338     } cn8;
33339     /* struct bdk_ap_ttbr0_el1_s cn9; */
33340 };
33341 typedef union bdk_ap_ttbr0_el1 bdk_ap_ttbr0_el1_t;
33342 
33343 #define BDK_AP_TTBR0_EL1 BDK_AP_TTBR0_EL1_FUNC()
33344 static inline uint64_t BDK_AP_TTBR0_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TTBR0_EL1_FUNC(void)33345 static inline uint64_t BDK_AP_TTBR0_EL1_FUNC(void)
33346 {
33347     return 0x30002000000ll;
33348 }
33349 
33350 #define typedef_BDK_AP_TTBR0_EL1 bdk_ap_ttbr0_el1_t
33351 #define bustype_BDK_AP_TTBR0_EL1 BDK_CSR_TYPE_SYSREG
33352 #define basename_BDK_AP_TTBR0_EL1 "AP_TTBR0_EL1"
33353 #define busnum_BDK_AP_TTBR0_EL1 0
33354 #define arguments_BDK_AP_TTBR0_EL1 -1,-1,-1,-1
33355 
33356 /**
33357  * Register (SYSREG) ap_ttbr0_el12
33358  *
33359  * AP Translation Table Base EL1/2 Register 0
33360  * Alias of AP_TTBR0_EL1 from EL2 when AP_HCR_EL2[E2H] is set.
33361  */
33362 union bdk_ap_ttbr0_el12
33363 {
33364     uint64_t u;
33365     struct bdk_ap_ttbr0_el12_s
33366     {
33367 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33368         uint64_t reserved_0_63         : 64;
33369 #else /* Word 0 - Little Endian */
33370         uint64_t reserved_0_63         : 64;
33371 #endif /* Word 0 - End */
33372     } s;
33373     /* struct bdk_ap_ttbr0_el12_s cn; */
33374 };
33375 typedef union bdk_ap_ttbr0_el12 bdk_ap_ttbr0_el12_t;
33376 
33377 #define BDK_AP_TTBR0_EL12 BDK_AP_TTBR0_EL12_FUNC()
33378 static inline uint64_t BDK_AP_TTBR0_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TTBR0_EL12_FUNC(void)33379 static inline uint64_t BDK_AP_TTBR0_EL12_FUNC(void)
33380 {
33381     return 0x30502000000ll;
33382 }
33383 
33384 #define typedef_BDK_AP_TTBR0_EL12 bdk_ap_ttbr0_el12_t
33385 #define bustype_BDK_AP_TTBR0_EL12 BDK_CSR_TYPE_SYSREG
33386 #define basename_BDK_AP_TTBR0_EL12 "AP_TTBR0_EL12"
33387 #define busnum_BDK_AP_TTBR0_EL12 0
33388 #define arguments_BDK_AP_TTBR0_EL12 -1,-1,-1,-1
33389 
33390 /**
33391  * Register (SYSREG) ap_ttbr0_el2
33392  *
33393  * AP Translation Table Base EL2 Register 0
33394  * Holds the base address of translation table 0, and information
33395  *     about the memory it occupies. This is one of the translation
33396  *     tables for the stage 1 translation of memory accesses at EL0
33397  *     and EL2 when Virtual Host Extensions are enabled.
33398  */
33399 union bdk_ap_ttbr0_el2
33400 {
33401     uint64_t u;
33402     struct bdk_ap_ttbr0_el2_s
33403     {
33404 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33405         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33406                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33407                                                                  If the implementation has only 8 bits of ASID, then the upper
33408                                                                      8 bits of this field are RES0. */
33409         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33410                                                                      RES0.
33411 
33412                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33413                                                                      translation, and the memory translation granule size.
33414                                                                  The AArch64 Virtual Memory System Architecture chapter
33415                                                                      describes how x is calculated.
33416                                                                  The value of x determines the required alignment of the
33417                                                                      translation table, which must be aligned to 22^(x)
33418                                                                      bytes.
33419 
33420                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33421                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33422                                                                      UNPREDICTABLE, and can be one of the following:
33423 
33424                                                                   Bits \<x-1:0\> are treated as if all the bits are zero. The
33425                                                                      value read back from those bits might be the value written or
33426                                                                      might be zero.
33427 
33428                                                                   The calculation of an address for a translation table walk
33429                                                                      using this register can be corrupted in those bits that are
33430                                                                      nonzero. */
33431         uint64_t reserved_1_3          : 3;
33432         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33433 #else /* Word 0 - Little Endian */
33434         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33435         uint64_t reserved_1_3          : 3;
33436         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33437                                                                      RES0.
33438 
33439                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33440                                                                      translation, and the memory translation granule size.
33441                                                                  The AArch64 Virtual Memory System Architecture chapter
33442                                                                      describes how x is calculated.
33443                                                                  The value of x determines the required alignment of the
33444                                                                      translation table, which must be aligned to 22^(x)
33445                                                                      bytes.
33446 
33447                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33448                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33449                                                                      UNPREDICTABLE, and can be one of the following:
33450 
33451                                                                   Bits \<x-1:0\> are treated as if all the bits are zero. The
33452                                                                      value read back from those bits might be the value written or
33453                                                                      might be zero.
33454 
33455                                                                   The calculation of an address for a translation table walk
33456                                                                      using this register can be corrupted in those bits that are
33457                                                                      nonzero. */
33458         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33459                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33460                                                                  If the implementation has only 8 bits of ASID, then the upper
33461                                                                      8 bits of this field are RES0. */
33462 #endif /* Word 0 - End */
33463     } s;
33464     struct bdk_ap_ttbr0_el2_cn8
33465     {
33466 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33467         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33468                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33469                                                                  If the implementation has only 8 bits of ASID, then the upper
33470                                                                      8 bits of this field are RES0. */
33471         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33472                                                                      RES0.
33473 
33474                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33475                                                                      translation, and the memory translation granule size.
33476                                                                  The AArch64 Virtual Memory System Architecture chapter
33477                                                                      describes how x is calculated.
33478                                                                  The value of x determines the required alignment of the
33479                                                                      translation table, which must be aligned to 22^(x)
33480                                                                      bytes.
33481 
33482                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33483                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33484                                                                      UNPREDICTABLE, and can be one of the following:
33485 
33486                                                                   Bits \<x-1:0\> are treated as if all the bits are zero. The
33487                                                                      value read back from those bits might be the value written or
33488                                                                      might be zero.
33489 
33490                                                                   The calculation of an address for a translation table walk
33491                                                                      using this register can be corrupted in those bits that are
33492                                                                      nonzero. */
33493         uint64_t reserved_0_3          : 4;
33494 #else /* Word 0 - Little Endian */
33495         uint64_t reserved_0_3          : 4;
33496         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33497                                                                      RES0.
33498 
33499                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33500                                                                      translation, and the memory translation granule size.
33501                                                                  The AArch64 Virtual Memory System Architecture chapter
33502                                                                      describes how x is calculated.
33503                                                                  The value of x determines the required alignment of the
33504                                                                      translation table, which must be aligned to 22^(x)
33505                                                                      bytes.
33506 
33507                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33508                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33509                                                                      UNPREDICTABLE, and can be one of the following:
33510 
33511                                                                   Bits \<x-1:0\> are treated as if all the bits are zero. The
33512                                                                      value read back from those bits might be the value written or
33513                                                                      might be zero.
33514 
33515                                                                   The calculation of an address for a translation table walk
33516                                                                      using this register can be corrupted in those bits that are
33517                                                                      nonzero. */
33518         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33519                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33520                                                                  If the implementation has only 8 bits of ASID, then the upper
33521                                                                      8 bits of this field are RES0. */
33522 #endif /* Word 0 - End */
33523     } cn8;
33524     /* struct bdk_ap_ttbr0_el2_s cn9; */
33525 };
33526 typedef union bdk_ap_ttbr0_el2 bdk_ap_ttbr0_el2_t;
33527 
33528 #define BDK_AP_TTBR0_EL2 BDK_AP_TTBR0_EL2_FUNC()
33529 static inline uint64_t BDK_AP_TTBR0_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TTBR0_EL2_FUNC(void)33530 static inline uint64_t BDK_AP_TTBR0_EL2_FUNC(void)
33531 {
33532     return 0x30402000000ll;
33533 }
33534 
33535 #define typedef_BDK_AP_TTBR0_EL2 bdk_ap_ttbr0_el2_t
33536 #define bustype_BDK_AP_TTBR0_EL2 BDK_CSR_TYPE_SYSREG
33537 #define basename_BDK_AP_TTBR0_EL2 "AP_TTBR0_EL2"
33538 #define busnum_BDK_AP_TTBR0_EL2 0
33539 #define arguments_BDK_AP_TTBR0_EL2 -1,-1,-1,-1
33540 
33541 /**
33542  * Register (SYSREG) ap_ttbr0_el3
33543  *
33544  * AP Translation Table Base EL2-EL3 Register 0
33545  * Holds the base address of the translation table for the stage
33546  *     1 translation of memory accesses from EL3.
33547  */
33548 union bdk_ap_ttbr0_el3
33549 {
33550     uint64_t u;
33551     struct bdk_ap_ttbr0_el3_s
33552     {
33553 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33554         uint64_t reserved_48_63        : 16;
33555         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits[47:x]. Bits [x-1:0] are
33556                                                                      RES0.
33557 
33558                                                                  x is based on the value of TCR_EL*[T0SZ], the stage of
33559                                                                      translation, and the memory translation granule size.
33560                                                                  The AArch64 Virtual Memory System Architecture chapter
33561                                                                      describes how x is calculated.
33562                                                                  The value of x determines the required alignment of the
33563                                                                      translation table, which must be aligned to 22^(x)
33564                                                                      bytes.
33565 
33566                                                                  If bits [x-1:0] are not all zero, this is a misaligned
33567                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33568                                                                      UNPREDICTABLE, and can be one of the following:
33569 
33570                                                                   Bits [x-1:0] are treated as if all the bits are zero. The
33571                                                                      value read back from those bits might be the value written or
33572                                                                      might be zero.
33573 
33574                                                                   The calculation of an address for a translation table walk
33575                                                                      using this register can be corrupted in those bits that are
33576                                                                      nonzero. */
33577         uint64_t reserved_1_3          : 3;
33578         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33579 #else /* Word 0 - Little Endian */
33580         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33581         uint64_t reserved_1_3          : 3;
33582         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits[47:x]. Bits [x-1:0] are
33583                                                                      RES0.
33584 
33585                                                                  x is based on the value of TCR_EL*[T0SZ], the stage of
33586                                                                      translation, and the memory translation granule size.
33587                                                                  The AArch64 Virtual Memory System Architecture chapter
33588                                                                      describes how x is calculated.
33589                                                                  The value of x determines the required alignment of the
33590                                                                      translation table, which must be aligned to 22^(x)
33591                                                                      bytes.
33592 
33593                                                                  If bits [x-1:0] are not all zero, this is a misaligned
33594                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33595                                                                      UNPREDICTABLE, and can be one of the following:
33596 
33597                                                                   Bits [x-1:0] are treated as if all the bits are zero. The
33598                                                                      value read back from those bits might be the value written or
33599                                                                      might be zero.
33600 
33601                                                                   The calculation of an address for a translation table walk
33602                                                                      using this register can be corrupted in those bits that are
33603                                                                      nonzero. */
33604         uint64_t reserved_48_63        : 16;
33605 #endif /* Word 0 - End */
33606     } s;
33607     struct bdk_ap_ttbr0_el3_cn8
33608     {
33609 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33610         uint64_t reserved_48_63        : 16;
33611         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits[47:x]. Bits [x-1:0] are
33612                                                                      RES0.
33613 
33614                                                                  x is based on the value of TCR_EL*[T0SZ], the stage of
33615                                                                      translation, and the memory translation granule size.
33616                                                                  The AArch64 Virtual Memory System Architecture chapter
33617                                                                      describes how x is calculated.
33618                                                                  The value of x determines the required alignment of the
33619                                                                      translation table, which must be aligned to 22^(x)
33620                                                                      bytes.
33621 
33622                                                                  If bits [x-1:0] are not all zero, this is a misaligned
33623                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33624                                                                      UNPREDICTABLE, and can be one of the following:
33625 
33626                                                                   Bits [x-1:0] are treated as if all the bits are zero. The
33627                                                                      value read back from those bits might be the value written or
33628                                                                      might be zero.
33629 
33630                                                                   The calculation of an address for a translation table walk
33631                                                                      using this register can be corrupted in those bits that are
33632                                                                      nonzero. */
33633         uint64_t reserved_0_3          : 4;
33634 #else /* Word 0 - Little Endian */
33635         uint64_t reserved_0_3          : 4;
33636         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits[47:x]. Bits [x-1:0] are
33637                                                                      RES0.
33638 
33639                                                                  x is based on the value of TCR_EL*[T0SZ], the stage of
33640                                                                      translation, and the memory translation granule size.
33641                                                                  The AArch64 Virtual Memory System Architecture chapter
33642                                                                      describes how x is calculated.
33643                                                                  The value of x determines the required alignment of the
33644                                                                      translation table, which must be aligned to 22^(x)
33645                                                                      bytes.
33646 
33647                                                                  If bits [x-1:0] are not all zero, this is a misaligned
33648                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33649                                                                      UNPREDICTABLE, and can be one of the following:
33650 
33651                                                                   Bits [x-1:0] are treated as if all the bits are zero. The
33652                                                                      value read back from those bits might be the value written or
33653                                                                      might be zero.
33654 
33655                                                                   The calculation of an address for a translation table walk
33656                                                                      using this register can be corrupted in those bits that are
33657                                                                      nonzero. */
33658         uint64_t reserved_48_63        : 16;
33659 #endif /* Word 0 - End */
33660     } cn8;
33661     /* struct bdk_ap_ttbr0_el3_s cn9; */
33662 };
33663 typedef union bdk_ap_ttbr0_el3 bdk_ap_ttbr0_el3_t;
33664 
33665 #define BDK_AP_TTBR0_EL3 BDK_AP_TTBR0_EL3_FUNC()
33666 static inline uint64_t BDK_AP_TTBR0_EL3_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TTBR0_EL3_FUNC(void)33667 static inline uint64_t BDK_AP_TTBR0_EL3_FUNC(void)
33668 {
33669     return 0x30602000000ll;
33670 }
33671 
33672 #define typedef_BDK_AP_TTBR0_EL3 bdk_ap_ttbr0_el3_t
33673 #define bustype_BDK_AP_TTBR0_EL3 BDK_CSR_TYPE_SYSREG
33674 #define basename_BDK_AP_TTBR0_EL3 "AP_TTBR0_EL3"
33675 #define busnum_BDK_AP_TTBR0_EL3 0
33676 #define arguments_BDK_AP_TTBR0_EL3 -1,-1,-1,-1
33677 
33678 /**
33679  * Register (SYSREG) ap_ttbr1_el1
33680  *
33681  * AP Translation Table Base Register 1
33682  * Holds the base address of translation table 1, and information
33683  *     about the memory it occupies. This is one of the translation
33684  *     tables for the stage 1 translation of memory accesses at EL0
33685  *     and EL1.
33686  */
33687 union bdk_ap_ttbr1_el1
33688 {
33689     uint64_t u;
33690     struct bdk_ap_ttbr1_el1_s
33691     {
33692 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33693         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33694                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33695                                                                  If the implementation has only 8 bits of ASID, then the upper
33696                                                                      8 bits of this field are RES0. */
33697         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33698                                                                      RES0.
33699 
33700                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33701                                                                      translation, and the memory translation granule size.
33702                                                                  The AArch64 Virtual Memory System Architecture chapter
33703                                                                      describes how x is calculated.
33704                                                                  The value of x determines the required alignment of the
33705                                                                      translation table, which must be aligned to 22^(x)
33706                                                                      bytes.
33707 
33708                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33709                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33710                                                                      UNPREDICTABLE, and can be one of the following:
33711 
33712                                                                  Bits \<x-1:0\> are treated as if all the bits are zero. The
33713                                                                      value read back from those bits might be the value written or
33714                                                                      might be zero.
33715 
33716                                                                   The calculation of an address for a translation table walk
33717                                                                      using this register can be corrupted in those bits that are
33718                                                                      nonzero. */
33719         uint64_t reserved_1_3          : 3;
33720         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33721 #else /* Word 0 - Little Endian */
33722         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33723         uint64_t reserved_1_3          : 3;
33724         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33725                                                                      RES0.
33726 
33727                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33728                                                                      translation, and the memory translation granule size.
33729                                                                  The AArch64 Virtual Memory System Architecture chapter
33730                                                                      describes how x is calculated.
33731                                                                  The value of x determines the required alignment of the
33732                                                                      translation table, which must be aligned to 22^(x)
33733                                                                      bytes.
33734 
33735                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33736                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33737                                                                      UNPREDICTABLE, and can be one of the following:
33738 
33739                                                                  Bits \<x-1:0\> are treated as if all the bits are zero. The
33740                                                                      value read back from those bits might be the value written or
33741                                                                      might be zero.
33742 
33743                                                                   The calculation of an address for a translation table walk
33744                                                                      using this register can be corrupted in those bits that are
33745                                                                      nonzero. */
33746         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33747                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33748                                                                  If the implementation has only 8 bits of ASID, then the upper
33749                                                                      8 bits of this field are RES0. */
33750 #endif /* Word 0 - End */
33751     } s;
33752     struct bdk_ap_ttbr1_el1_cn8
33753     {
33754 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33755         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33756                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33757                                                                  If the implementation has only 8 bits of ASID, then the upper
33758                                                                      8 bits of this field are RES0. */
33759         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33760                                                                      RES0.
33761 
33762                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33763                                                                      translation, and the memory translation granule size.
33764                                                                  The AArch64 Virtual Memory System Architecture chapter
33765                                                                      describes how x is calculated.
33766                                                                  The value of x determines the required alignment of the
33767                                                                      translation table, which must be aligned to 22^(x)
33768                                                                      bytes.
33769 
33770                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33771                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33772                                                                      UNPREDICTABLE, and can be one of the following:
33773 
33774                                                                  Bits \<x-1:0\> are treated as if all the bits are zero. The
33775                                                                      value read back from those bits might be the value written or
33776                                                                      might be zero.
33777 
33778                                                                   The calculation of an address for a translation table walk
33779                                                                      using this register can be corrupted in those bits that are
33780                                                                      nonzero. */
33781         uint64_t reserved_0_3          : 4;
33782 #else /* Word 0 - Little Endian */
33783         uint64_t reserved_0_3          : 4;
33784         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33785                                                                      RES0.
33786 
33787                                                                  x is based on the value of AP_TCR_EL1[T0SZ], the stage of
33788                                                                      translation, and the memory translation granule size.
33789                                                                  The AArch64 Virtual Memory System Architecture chapter
33790                                                                      describes how x is calculated.
33791                                                                  The value of x determines the required alignment of the
33792                                                                      translation table, which must be aligned to 22^(x)
33793                                                                      bytes.
33794 
33795                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33796                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33797                                                                      UNPREDICTABLE, and can be one of the following:
33798 
33799                                                                  Bits \<x-1:0\> are treated as if all the bits are zero. The
33800                                                                      value read back from those bits might be the value written or
33801                                                                      might be zero.
33802 
33803                                                                   The calculation of an address for a translation table walk
33804                                                                      using this register can be corrupted in those bits that are
33805                                                                      nonzero. */
33806         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL1[A1]
33807                                                                      field selects either AP_TTBR0_EL1[ASID] or AP_TTBR1_EL1[ASID].
33808                                                                  If the implementation has only 8 bits of ASID, then the upper
33809                                                                      8 bits of this field are RES0. */
33810 #endif /* Word 0 - End */
33811     } cn8;
33812     /* struct bdk_ap_ttbr1_el1_s cn9; */
33813 };
33814 typedef union bdk_ap_ttbr1_el1 bdk_ap_ttbr1_el1_t;
33815 
33816 #define BDK_AP_TTBR1_EL1 BDK_AP_TTBR1_EL1_FUNC()
33817 static inline uint64_t BDK_AP_TTBR1_EL1_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TTBR1_EL1_FUNC(void)33818 static inline uint64_t BDK_AP_TTBR1_EL1_FUNC(void)
33819 {
33820     return 0x30002000100ll;
33821 }
33822 
33823 #define typedef_BDK_AP_TTBR1_EL1 bdk_ap_ttbr1_el1_t
33824 #define bustype_BDK_AP_TTBR1_EL1 BDK_CSR_TYPE_SYSREG
33825 #define basename_BDK_AP_TTBR1_EL1 "AP_TTBR1_EL1"
33826 #define busnum_BDK_AP_TTBR1_EL1 0
33827 #define arguments_BDK_AP_TTBR1_EL1 -1,-1,-1,-1
33828 
33829 /**
33830  * Register (SYSREG) ap_ttbr1_el12
33831  *
33832  * AP Translation Table Base Register 1
33833  * Alias of AP_TTBR1_EL1 from EL2 when AP_HCR_EL2[E2H] is set.
33834  */
33835 union bdk_ap_ttbr1_el12
33836 {
33837     uint64_t u;
33838     struct bdk_ap_ttbr1_el12_s
33839     {
33840 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33841         uint64_t reserved_0_63         : 64;
33842 #else /* Word 0 - Little Endian */
33843         uint64_t reserved_0_63         : 64;
33844 #endif /* Word 0 - End */
33845     } s;
33846     /* struct bdk_ap_ttbr1_el12_s cn; */
33847 };
33848 typedef union bdk_ap_ttbr1_el12 bdk_ap_ttbr1_el12_t;
33849 
33850 #define BDK_AP_TTBR1_EL12 BDK_AP_TTBR1_EL12_FUNC()
33851 static inline uint64_t BDK_AP_TTBR1_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TTBR1_EL12_FUNC(void)33852 static inline uint64_t BDK_AP_TTBR1_EL12_FUNC(void)
33853 {
33854     return 0x30502000100ll;
33855 }
33856 
33857 #define typedef_BDK_AP_TTBR1_EL12 bdk_ap_ttbr1_el12_t
33858 #define bustype_BDK_AP_TTBR1_EL12 BDK_CSR_TYPE_SYSREG
33859 #define basename_BDK_AP_TTBR1_EL12 "AP_TTBR1_EL12"
33860 #define busnum_BDK_AP_TTBR1_EL12 0
33861 #define arguments_BDK_AP_TTBR1_EL12 -1,-1,-1,-1
33862 
33863 /**
33864  * Register (SYSREG) ap_ttbr1_el2
33865  *
33866  * AP EL2 Translation Table Base (v8.1) Register 1
33867  * Holds the base address of translation table 1, and information
33868  *     about the memory it occupies. This is one of the translation
33869  *     tables for the stage 1 translation of memory accesses at EL2.
33870  */
33871 union bdk_ap_ttbr1_el2
33872 {
33873     uint64_t u;
33874     struct bdk_ap_ttbr1_el2_s
33875     {
33876 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33877         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL2[A1]
33878                                                                      field selects either AP_TTBR0_EL2[ASID] or AP_TTBR1_EL2[ASID].
33879                                                                  If the implementation has only 8 bits of ASID, then the upper
33880                                                                      8 bits of this field are RES0. */
33881         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33882                                                                      RES0.
33883 
33884                                                                  x is based on the value of AP_TCR_EL2[T0SZ], the stage of
33885                                                                      translation, and the memory translation granule size.
33886                                                                  The AArch64 Virtual Memory System Architecture chapter
33887                                                                      describes how x is calculated.
33888                                                                  The value of x determines the required alignment of the
33889                                                                      translation table, which must be aligned to 22^(x)
33890                                                                      bytes.
33891 
33892                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33893                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33894                                                                      UNPREDICTABLE, and can be one of the following:
33895 
33896                                                                   Bits \<x-1:0\> are treated as if all the bits are zero. The
33897                                                                      value read back from those bits might be the value written or
33898                                                                      might be zero.
33899 
33900                                                                   The calculation of an address for a translation table walk
33901                                                                      using this register can be corrupted in those bits that are
33902                                                                      nonzero. */
33903         uint64_t reserved_1_3          : 3;
33904         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33905 #else /* Word 0 - Little Endian */
33906         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
33907         uint64_t reserved_1_3          : 3;
33908         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33909                                                                      RES0.
33910 
33911                                                                  x is based on the value of AP_TCR_EL2[T0SZ], the stage of
33912                                                                      translation, and the memory translation granule size.
33913                                                                  The AArch64 Virtual Memory System Architecture chapter
33914                                                                      describes how x is calculated.
33915                                                                  The value of x determines the required alignment of the
33916                                                                      translation table, which must be aligned to 22^(x)
33917                                                                      bytes.
33918 
33919                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33920                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33921                                                                      UNPREDICTABLE, and can be one of the following:
33922 
33923                                                                   Bits \<x-1:0\> are treated as if all the bits are zero. The
33924                                                                      value read back from those bits might be the value written or
33925                                                                      might be zero.
33926 
33927                                                                   The calculation of an address for a translation table walk
33928                                                                      using this register can be corrupted in those bits that are
33929                                                                      nonzero. */
33930         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL2[A1]
33931                                                                      field selects either AP_TTBR0_EL2[ASID] or AP_TTBR1_EL2[ASID].
33932                                                                  If the implementation has only 8 bits of ASID, then the upper
33933                                                                      8 bits of this field are RES0. */
33934 #endif /* Word 0 - End */
33935     } s;
33936     struct bdk_ap_ttbr1_el2_cn8
33937     {
33938 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
33939         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL2[A1]
33940                                                                      field selects either AP_TTBR0_EL2[ASID] or AP_TTBR1_EL2[ASID].
33941                                                                  If the implementation has only 8 bits of ASID, then the upper
33942                                                                      8 bits of this field are RES0. */
33943         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33944                                                                      RES0.
33945 
33946                                                                  x is based on the value of AP_TCR_EL2[T0SZ], the stage of
33947                                                                      translation, and the memory translation granule size.
33948                                                                  The AArch64 Virtual Memory System Architecture chapter
33949                                                                      describes how x is calculated.
33950                                                                  The value of x determines the required alignment of the
33951                                                                      translation table, which must be aligned to 22^(x)
33952                                                                      bytes.
33953 
33954                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33955                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33956                                                                      UNPREDICTABLE, and can be one of the following:
33957 
33958                                                                   Bits \<x-1:0\> are treated as if all the bits are zero. The
33959                                                                      value read back from those bits might be the value written or
33960                                                                      might be zero.
33961 
33962                                                                   The calculation of an address for a translation table walk
33963                                                                      using this register can be corrupted in those bits that are
33964                                                                      nonzero. */
33965         uint64_t reserved_0_3          : 4;
33966 #else /* Word 0 - Little Endian */
33967         uint64_t reserved_0_3          : 4;
33968         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
33969                                                                      RES0.
33970 
33971                                                                  x is based on the value of AP_TCR_EL2[T0SZ], the stage of
33972                                                                      translation, and the memory translation granule size.
33973                                                                  The AArch64 Virtual Memory System Architecture chapter
33974                                                                      describes how x is calculated.
33975                                                                  The value of x determines the required alignment of the
33976                                                                      translation table, which must be aligned to 22^(x)
33977                                                                      bytes.
33978 
33979                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
33980                                                                      Translation Table Base Address. Its effects are CONSTRAINED
33981                                                                      UNPREDICTABLE, and can be one of the following:
33982 
33983                                                                   Bits \<x-1:0\> are treated as if all the bits are zero. The
33984                                                                      value read back from those bits might be the value written or
33985                                                                      might be zero.
33986 
33987                                                                   The calculation of an address for a translation table walk
33988                                                                      using this register can be corrupted in those bits that are
33989                                                                      nonzero. */
33990         uint64_t asid                  : 16; /**< [ 63: 48](R/W) An ASID for the translation table base address. The AP_TCR_EL2[A1]
33991                                                                      field selects either AP_TTBR0_EL2[ASID] or AP_TTBR1_EL2[ASID].
33992                                                                  If the implementation has only 8 bits of ASID, then the upper
33993                                                                      8 bits of this field are RES0. */
33994 #endif /* Word 0 - End */
33995     } cn8;
33996     /* struct bdk_ap_ttbr1_el2_s cn9; */
33997 };
33998 typedef union bdk_ap_ttbr1_el2 bdk_ap_ttbr1_el2_t;
33999 
34000 #define BDK_AP_TTBR1_EL2 BDK_AP_TTBR1_EL2_FUNC()
34001 static inline uint64_t BDK_AP_TTBR1_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_TTBR1_EL2_FUNC(void)34002 static inline uint64_t BDK_AP_TTBR1_EL2_FUNC(void)
34003 {
34004     return 0x30402000100ll;
34005 }
34006 
34007 #define typedef_BDK_AP_TTBR1_EL2 bdk_ap_ttbr1_el2_t
34008 #define bustype_BDK_AP_TTBR1_EL2 BDK_CSR_TYPE_SYSREG
34009 #define basename_BDK_AP_TTBR1_EL2 "AP_TTBR1_EL2"
34010 #define busnum_BDK_AP_TTBR1_EL2 0
34011 #define arguments_BDK_AP_TTBR1_EL2 -1,-1,-1,-1
34012 
34013 /**
34014  * Register (SYSREG) ap_uao
34015  *
34016  * AP User Access Override Register
34017  * v8.2: User Access Override bit.
34018  *
34019  * When 0, The behaviour of LDTR* /STTR* instructions is as defined in the base
34020  * ARMv8 architecture.
34021  * When 1, LDTR* /STTR* instructions when executed at EL1, or at EL2 with
34022  * HCR_EL2.E2H==1 && HCR_EL2.TGE==1, behave as the equivalent LDR* /STR*
34023  * instructions.
34024  *
34025  * UAO is held in SPSR_ELx[23] and DSPSR_EL0[23].
34026  * PSTATE.UAO is copied to SPSR_ELx.UAO and is then set to 0 on an exception taken from AArch64
34027  * to AArch64
34028  * PSTATE.UAO is set to 0 on an exception taken from AArch32 to AArch64.
34029  * SPSR_ELx.UAO is set to 0 on an exception taken from AArch32 to AArch64
34030  * SPSR_ELx.UAO is copied to PSTATE.UAO on an exception return to AArch64 from AArch64
34031  * PSTATE.UAO is set to zero by a DCPS instruction to AArch64 in Debug state.
34032  * SPSR_ELx.UAO is copied to PSTATE.UAO by DRPS to AArch64 from AArch64 in Debug state.
34033  * DSPSR_EL0.UAO is copied to PSTATE.UAO on exit from Debug state to AArch64.
34034  * PSTATE.UAO is copied to DSPSR_EL0.UAO on entry to Debug state from AArch64
34035  *
34036  * Note, PSTATE.UAO is unchanged on entry into Debug state
34037  */
34038 union bdk_ap_uao
34039 {
34040     uint64_t u;
34041     struct bdk_ap_uao_s
34042     {
34043 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34044         uint64_t reserved_24_63        : 40;
34045         uint64_t uao                   : 1;  /**< [ 23: 23](R/W) User access override bit. */
34046         uint64_t reserved_0_22         : 23;
34047 #else /* Word 0 - Little Endian */
34048         uint64_t reserved_0_22         : 23;
34049         uint64_t uao                   : 1;  /**< [ 23: 23](R/W) User access override bit. */
34050         uint64_t reserved_24_63        : 40;
34051 #endif /* Word 0 - End */
34052     } s;
34053     /* struct bdk_ap_uao_s cn; */
34054 };
34055 typedef union bdk_ap_uao bdk_ap_uao_t;
34056 
34057 #define BDK_AP_UAO BDK_AP_UAO_FUNC()
34058 static inline uint64_t BDK_AP_UAO_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_UAO_FUNC(void)34059 static inline uint64_t BDK_AP_UAO_FUNC(void)
34060 {
34061     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
34062         return 0x30004020400ll;
34063     __bdk_csr_fatal("AP_UAO", 0, 0, 0, 0, 0);
34064 }
34065 
34066 #define typedef_BDK_AP_UAO bdk_ap_uao_t
34067 #define bustype_BDK_AP_UAO BDK_CSR_TYPE_SYSREG
34068 #define basename_BDK_AP_UAO "AP_UAO"
34069 #define busnum_BDK_AP_UAO 0
34070 #define arguments_BDK_AP_UAO -1,-1,-1,-1
34071 
34072 /**
34073  * Register (SYSREG) ap_vbar_el#
34074  *
34075  * AP Vector Base Address EL* Register
34076  * Holds the exception base address for any exception that is
34077  *     taken to EL*.
34078  */
34079 union bdk_ap_vbar_elx
34080 {
34081     uint64_t u;
34082     struct bdk_ap_vbar_elx_s
34083     {
34084 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34085         uint64_t data                  : 53; /**< [ 63: 11](R/W) Vector base address. Base address of the exception vectors for
34086                                                                      exceptions taken in EL*.
34087                                                                  If tagged addresses are being used, bits \<55:48\> of VBAR_EL*
34088                                                                      must be 0 or else the use of the vector address will result in
34089                                                                      a recursive exception.
34090 
34091                                                                  If tagged addresses are not being used, bits \<63:48\> of
34092                                                                      VBAR_EL* must be 0 or else the use of the vector address will
34093                                                                      result in a recursive exception. */
34094         uint64_t reserved_0_10         : 11;
34095 #else /* Word 0 - Little Endian */
34096         uint64_t reserved_0_10         : 11;
34097         uint64_t data                  : 53; /**< [ 63: 11](R/W) Vector base address. Base address of the exception vectors for
34098                                                                      exceptions taken in EL*.
34099                                                                  If tagged addresses are being used, bits \<55:48\> of VBAR_EL*
34100                                                                      must be 0 or else the use of the vector address will result in
34101                                                                      a recursive exception.
34102 
34103                                                                  If tagged addresses are not being used, bits \<63:48\> of
34104                                                                      VBAR_EL* must be 0 or else the use of the vector address will
34105                                                                      result in a recursive exception. */
34106 #endif /* Word 0 - End */
34107     } s;
34108     /* struct bdk_ap_vbar_elx_s cn; */
34109 };
34110 typedef union bdk_ap_vbar_elx bdk_ap_vbar_elx_t;
34111 
34112 static inline uint64_t BDK_AP_VBAR_ELX(unsigned long a) __attribute__ ((pure, always_inline));
BDK_AP_VBAR_ELX(unsigned long a)34113 static inline uint64_t BDK_AP_VBAR_ELX(unsigned long a)
34114 {
34115     if ((a>=1)&&(a<=3))
34116         return 0x3000c000000ll + 0ll * ((a) & 0x3);
34117     __bdk_csr_fatal("AP_VBAR_ELX", 1, a, 0, 0, 0);
34118 }
34119 
34120 #define typedef_BDK_AP_VBAR_ELX(a) bdk_ap_vbar_elx_t
34121 #define bustype_BDK_AP_VBAR_ELX(a) BDK_CSR_TYPE_SYSREG
34122 #define basename_BDK_AP_VBAR_ELX(a) "AP_VBAR_ELX"
34123 #define busnum_BDK_AP_VBAR_ELX(a) (a)
34124 #define arguments_BDK_AP_VBAR_ELX(a) (a),-1,-1,-1
34125 
34126 /**
34127  * Register (SYSREG) ap_vbar_el12
34128  *
34129  * AP Vector Base Address EL1/2 Register
34130  * Alias of VBAR_EL1 when accessed at EL2/3 and AP_HCR_EL2[E2H] is set.
34131  */
34132 union bdk_ap_vbar_el12
34133 {
34134     uint64_t u;
34135     struct bdk_ap_vbar_el12_s
34136     {
34137 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34138         uint64_t reserved_0_63         : 64;
34139 #else /* Word 0 - Little Endian */
34140         uint64_t reserved_0_63         : 64;
34141 #endif /* Word 0 - End */
34142     } s;
34143     /* struct bdk_ap_vbar_el12_s cn; */
34144 };
34145 typedef union bdk_ap_vbar_el12 bdk_ap_vbar_el12_t;
34146 
34147 #define BDK_AP_VBAR_EL12 BDK_AP_VBAR_EL12_FUNC()
34148 static inline uint64_t BDK_AP_VBAR_EL12_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_VBAR_EL12_FUNC(void)34149 static inline uint64_t BDK_AP_VBAR_EL12_FUNC(void)
34150 {
34151     return 0x3050c000000ll;
34152 }
34153 
34154 #define typedef_BDK_AP_VBAR_EL12 bdk_ap_vbar_el12_t
34155 #define bustype_BDK_AP_VBAR_EL12 BDK_CSR_TYPE_SYSREG
34156 #define basename_BDK_AP_VBAR_EL12 "AP_VBAR_EL12"
34157 #define busnum_BDK_AP_VBAR_EL12 0
34158 #define arguments_BDK_AP_VBAR_EL12 -1,-1,-1,-1
34159 
34160 /**
34161  * Register (SYSREG) ap_vdisr_el2
34162  *
34163  * AP Virtual Deferred Interrupt Status Register
34164  * Records that a virtual SError interrupt has been consumed by an ESB instruction executed at
34165  * Nonsecure EL1.
34166  *
34167  * Usage constraints:
34168  *   VDISR_EL2 is UNDEFINED at EL1 and EL0.
34169  *   If EL1 is using AArch64 and HCR_EL2.AMO is set to 1, then direct reads and writes of
34170  * DISR_EL1 at Non-secure EL1 access VDISR_EL2.
34171  *   If EL1 is using AArch32 and HCR_EL2.AMO is set to 1, then direct reads and writes of DISR at
34172  * Nonsecure EL1 access VDISR_EL2.
34173  *   An indirect write to VDISR_EL2 made by an ESB instruction does not require an explicit
34174  * synchronization operation for the value written to be observed by a direct read of DISR_EL1 or
34175  * DISR occurring in program order after the ESB.
34176  */
34177 union bdk_ap_vdisr_el2
34178 {
34179     uint64_t u;
34180     struct bdk_ap_vdisr_el2_s
34181     {
34182 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34183         uint64_t reserved_32_63        : 32;
34184         uint64_t aa                    : 1;  /**< [ 31: 31](R/W) Set to 1 when ESB defers a virtual SError interrupt. */
34185         uint64_t reserved_25_30        : 6;
34186         uint64_t ids                   : 1;  /**< [ 24: 24](R/W) Contains the value from AP_VSESR_EL2[IDS]. */
34187         uint64_t iss                   : 24; /**< [ 23:  0](R/W) Contains the value from VSESR_EL2[23:0]. */
34188 #else /* Word 0 - Little Endian */
34189         uint64_t iss                   : 24; /**< [ 23:  0](R/W) Contains the value from VSESR_EL2[23:0]. */
34190         uint64_t ids                   : 1;  /**< [ 24: 24](R/W) Contains the value from AP_VSESR_EL2[IDS]. */
34191         uint64_t reserved_25_30        : 6;
34192         uint64_t aa                    : 1;  /**< [ 31: 31](R/W) Set to 1 when ESB defers a virtual SError interrupt. */
34193         uint64_t reserved_32_63        : 32;
34194 #endif /* Word 0 - End */
34195     } s;
34196     /* struct bdk_ap_vdisr_el2_s cn; */
34197 };
34198 typedef union bdk_ap_vdisr_el2 bdk_ap_vdisr_el2_t;
34199 
34200 #define BDK_AP_VDISR_EL2 BDK_AP_VDISR_EL2_FUNC()
34201 static inline uint64_t BDK_AP_VDISR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_VDISR_EL2_FUNC(void)34202 static inline uint64_t BDK_AP_VDISR_EL2_FUNC(void)
34203 {
34204     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
34205         return 0x3040c010100ll;
34206     __bdk_csr_fatal("AP_VDISR_EL2", 0, 0, 0, 0, 0);
34207 }
34208 
34209 #define typedef_BDK_AP_VDISR_EL2 bdk_ap_vdisr_el2_t
34210 #define bustype_BDK_AP_VDISR_EL2 BDK_CSR_TYPE_SYSREG
34211 #define basename_BDK_AP_VDISR_EL2 "AP_VDISR_EL2"
34212 #define busnum_BDK_AP_VDISR_EL2 0
34213 #define arguments_BDK_AP_VDISR_EL2 -1,-1,-1,-1
34214 
34215 /**
34216  * Register (SYSREG) ap_vmpidr_el2
34217  *
34218  * AP Virtualization Multiprocessor ID Register
34219  * Holds the value of the Virtualization Multiprocessor ID. This
34220  *     is the value returned by nonsecure EL1 reads of AP_MPIDR_EL1.
34221  */
34222 union bdk_ap_vmpidr_el2
34223 {
34224     uint64_t u;
34225     struct bdk_ap_vmpidr_el2_s
34226     {
34227 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34228         uint64_t reserved_40_63        : 24;
34229         uint64_t aff3                  : 8;  /**< [ 39: 32](R/W) Affinity level 3. Highest level affinity field. */
34230         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
34231         uint64_t u                     : 1;  /**< [ 30: 30](R/W) Indicates a Uniprocessor system, as distinct from PE 0 in a
34232                                                                      multiprocessor system.
34233                                                                  0 = Processor is part of a multiprocessor system.
34234                                                                  1 = Processor is part of a uniprocessor system. */
34235         uint64_t reserved_25_29        : 5;
34236         uint64_t mt                    : 1;  /**< [ 24: 24](R/W) Indicates whether the lowest level of affinity consists of
34237                                                                      logical PEs that are implemented using a multi-threading type
34238                                                                      approach.
34239                                                                  0 = Performance of PEs at the lowest affinity level is largely
34240                                                                      independent.
34241                                                                  1 = Performance of PEs at the lowest affinity level is very
34242                                                                      interdependent. */
34243         uint64_t aff2                  : 8;  /**< [ 23: 16](R/W) Affinity level 2. Second highest level affinity field. */
34244         uint64_t aff1                  : 8;  /**< [ 15:  8](R/W) Affinity level 1. Third highest level affinity field. */
34245         uint64_t aff0                  : 8;  /**< [  7:  0](R/W) Affinity level 0. Lowest level affinity field. */
34246 #else /* Word 0 - Little Endian */
34247         uint64_t aff0                  : 8;  /**< [  7:  0](R/W) Affinity level 0. Lowest level affinity field. */
34248         uint64_t aff1                  : 8;  /**< [ 15:  8](R/W) Affinity level 1. Third highest level affinity field. */
34249         uint64_t aff2                  : 8;  /**< [ 23: 16](R/W) Affinity level 2. Second highest level affinity field. */
34250         uint64_t mt                    : 1;  /**< [ 24: 24](R/W) Indicates whether the lowest level of affinity consists of
34251                                                                      logical PEs that are implemented using a multi-threading type
34252                                                                      approach.
34253                                                                  0 = Performance of PEs at the lowest affinity level is largely
34254                                                                      independent.
34255                                                                  1 = Performance of PEs at the lowest affinity level is very
34256                                                                      interdependent. */
34257         uint64_t reserved_25_29        : 5;
34258         uint64_t u                     : 1;  /**< [ 30: 30](R/W) Indicates a Uniprocessor system, as distinct from PE 0 in a
34259                                                                      multiprocessor system.
34260                                                                  0 = Processor is part of a multiprocessor system.
34261                                                                  1 = Processor is part of a uniprocessor system. */
34262         uint64_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
34263         uint64_t aff3                  : 8;  /**< [ 39: 32](R/W) Affinity level 3. Highest level affinity field. */
34264         uint64_t reserved_40_63        : 24;
34265 #endif /* Word 0 - End */
34266     } s;
34267     /* struct bdk_ap_vmpidr_el2_s cn; */
34268 };
34269 typedef union bdk_ap_vmpidr_el2 bdk_ap_vmpidr_el2_t;
34270 
34271 #define BDK_AP_VMPIDR_EL2 BDK_AP_VMPIDR_EL2_FUNC()
34272 static inline uint64_t BDK_AP_VMPIDR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_VMPIDR_EL2_FUNC(void)34273 static inline uint64_t BDK_AP_VMPIDR_EL2_FUNC(void)
34274 {
34275     return 0x30400000500ll;
34276 }
34277 
34278 #define typedef_BDK_AP_VMPIDR_EL2 bdk_ap_vmpidr_el2_t
34279 #define bustype_BDK_AP_VMPIDR_EL2 BDK_CSR_TYPE_SYSREG
34280 #define basename_BDK_AP_VMPIDR_EL2 "AP_VMPIDR_EL2"
34281 #define busnum_BDK_AP_VMPIDR_EL2 0
34282 #define arguments_BDK_AP_VMPIDR_EL2 -1,-1,-1,-1
34283 
34284 /**
34285  * Register (SYSREG) ap_vpidr_el2
34286  *
34287  * AP Virtualization Processor ID Register
34288  * Holds the value of the Virtualization Processor ID. This is
34289  *     the value returned by nonsecure EL1 reads of AP_MIDR_EL1.
34290  */
34291 union bdk_ap_vpidr_el2
34292 {
34293     uint32_t u;
34294     struct bdk_ap_vpidr_el2_s
34295     {
34296 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34297         uint32_t implementer           : 8;  /**< [ 31: 24](R/W) The implementer code. This field must hold an implementer code
34298                                                                      that has been assigned by ARM.
34299                                                                  Hex representation  ASCII representation.
34300                                                                  0x41 = 'A' = ARM Limited.
34301                                                                  0x42 = 'B' = Broadcom Corporation.
34302                                                                  0x43 = 'C' = Cavium Inc.
34303                                                                  0x44 = 'D' = Digital Equipment Corporation.
34304                                                                  0x49 = 'I' = Infineon Technologies AG.
34305                                                                  0x4D = 'M' = Motorola or Freescale Semiconductor Inc.
34306                                                                  0x4E = 'N' = NVIDIA Corporation.
34307                                                                  0x50 = 'P' = Applied Micro Circuits Corporation.
34308                                                                  0x51 = 'Q' = Qualcomm Inc.
34309                                                                  0x56 = 'V' = Marvell International Ltd.
34310                                                                  0x69 = 'i' = Intel Corporation.
34311 
34312                                                                  ARM can assign codes that are not published in this manual.
34313                                                                      All values not assigned by ARM are reserved and must not be
34314                                                                      used. */
34315         uint32_t variant               : 4;  /**< [ 23: 20](R/W) An implementation defined variant number. Typically, this
34316                                                                      field is used to distinguish between different product
34317                                                                      variants, or major revisions of a product. */
34318         uint32_t architecture          : 4;  /**< [ 19: 16](R/W) Architecture:
34319                                                                  0x1 = ARMv4.
34320                                                                  0x2 = ARMv4T.
34321                                                                  0x3 = ARMv5 (obsolete).
34322                                                                  0x4 = ARMv5T.
34323                                                                  0x5 = ARMv5TE.
34324                                                                  0x6 = ARMv5TEJ.
34325                                                                  0x7 = ARMv6.
34326                                                                  0xF = Defined by CPUID scheme.
34327                                                                  _ All other values are reserved. */
34328         uint32_t partnum               : 12; /**< [ 15:  4](R/W) An implementation defined primary part number for the device.
34329                                                                  On processors implemented by ARM, if the top four bits of the
34330                                                                      primary part number are 0x00x7. */
34331         uint32_t revision              : 4;  /**< [  3:  0](R/W) An implementation defined revision number for the device. */
34332 #else /* Word 0 - Little Endian */
34333         uint32_t revision              : 4;  /**< [  3:  0](R/W) An implementation defined revision number for the device. */
34334         uint32_t partnum               : 12; /**< [ 15:  4](R/W) An implementation defined primary part number for the device.
34335                                                                  On processors implemented by ARM, if the top four bits of the
34336                                                                      primary part number are 0x00x7. */
34337         uint32_t architecture          : 4;  /**< [ 19: 16](R/W) Architecture:
34338                                                                  0x1 = ARMv4.
34339                                                                  0x2 = ARMv4T.
34340                                                                  0x3 = ARMv5 (obsolete).
34341                                                                  0x4 = ARMv5T.
34342                                                                  0x5 = ARMv5TE.
34343                                                                  0x6 = ARMv5TEJ.
34344                                                                  0x7 = ARMv6.
34345                                                                  0xF = Defined by CPUID scheme.
34346                                                                  _ All other values are reserved. */
34347         uint32_t variant               : 4;  /**< [ 23: 20](R/W) An implementation defined variant number. Typically, this
34348                                                                      field is used to distinguish between different product
34349                                                                      variants, or major revisions of a product. */
34350         uint32_t implementer           : 8;  /**< [ 31: 24](R/W) The implementer code. This field must hold an implementer code
34351                                                                      that has been assigned by ARM.
34352                                                                  Hex representation  ASCII representation.
34353                                                                  0x41 = 'A' = ARM Limited.
34354                                                                  0x42 = 'B' = Broadcom Corporation.
34355                                                                  0x43 = 'C' = Cavium Inc.
34356                                                                  0x44 = 'D' = Digital Equipment Corporation.
34357                                                                  0x49 = 'I' = Infineon Technologies AG.
34358                                                                  0x4D = 'M' = Motorola or Freescale Semiconductor Inc.
34359                                                                  0x4E = 'N' = NVIDIA Corporation.
34360                                                                  0x50 = 'P' = Applied Micro Circuits Corporation.
34361                                                                  0x51 = 'Q' = Qualcomm Inc.
34362                                                                  0x56 = 'V' = Marvell International Ltd.
34363                                                                  0x69 = 'i' = Intel Corporation.
34364 
34365                                                                  ARM can assign codes that are not published in this manual.
34366                                                                      All values not assigned by ARM are reserved and must not be
34367                                                                      used. */
34368 #endif /* Word 0 - End */
34369     } s;
34370     /* struct bdk_ap_vpidr_el2_s cn; */
34371 };
34372 typedef union bdk_ap_vpidr_el2 bdk_ap_vpidr_el2_t;
34373 
34374 #define BDK_AP_VPIDR_EL2 BDK_AP_VPIDR_EL2_FUNC()
34375 static inline uint64_t BDK_AP_VPIDR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_VPIDR_EL2_FUNC(void)34376 static inline uint64_t BDK_AP_VPIDR_EL2_FUNC(void)
34377 {
34378     return 0x30400000000ll;
34379 }
34380 
34381 #define typedef_BDK_AP_VPIDR_EL2 bdk_ap_vpidr_el2_t
34382 #define bustype_BDK_AP_VPIDR_EL2 BDK_CSR_TYPE_SYSREG
34383 #define basename_BDK_AP_VPIDR_EL2 "AP_VPIDR_EL2"
34384 #define busnum_BDK_AP_VPIDR_EL2 0
34385 #define arguments_BDK_AP_VPIDR_EL2 -1,-1,-1,-1
34386 
34387 /**
34388  * Register (SYSREG) ap_vsesr_el2
34389  *
34390  * AP Virtual SError Exception Syndrome Register
34391  * Provides the syndrome value reported to software on taking a virtual SError interrupt
34392  * exception:
34393  *   - If the virtual SError interrupt is taken to EL1 using AArch64, VSESR_EL2 provides the
34394  * syndrome value reported in ESR_EL1.
34395  *   - If the virtual SError interrupt is taken to EL1 using AArch32, VSESR_EL2 provides the
34396  * syndrome values reported in DFSR.{AET, ExT} and the remainder of the DFSR is set as defined by
34397  * VMSAv8-32.
34398  *
34399  * Usage constraints:
34400  *   VSESR_EL2 is UNDEFINED at EL1 and EL0.
34401  */
34402 union bdk_ap_vsesr_el2
34403 {
34404     uint64_t u;
34405     struct bdk_ap_vsesr_el2_s
34406     {
34407 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34408         uint64_t reserved_25_63        : 39;
34409         uint64_t ids                   : 1;  /**< [ 24: 24](R/W) On taking a virtual SError interrupt to EL1 using AArch64 due to AP_HCR_EL2[VSE] == 1,
34410                                                                  AP_ESR_EL1[24] is set to AP_VSESR_EL2[IDS]. */
34411         uint64_t iss                   : 24; /**< [ 23:  0](RAZ) On taking a virtual SError interrupt to EL1 using AArch64 due to AP_HCR_EL2[VSE] == 1,
34412                                                                  AP_ESR_EL1[23:0] is set to AP_VSESR_EL2[ISS]. */
34413 #else /* Word 0 - Little Endian */
34414         uint64_t iss                   : 24; /**< [ 23:  0](RAZ) On taking a virtual SError interrupt to EL1 using AArch64 due to AP_HCR_EL2[VSE] == 1,
34415                                                                  AP_ESR_EL1[23:0] is set to AP_VSESR_EL2[ISS]. */
34416         uint64_t ids                   : 1;  /**< [ 24: 24](R/W) On taking a virtual SError interrupt to EL1 using AArch64 due to AP_HCR_EL2[VSE] == 1,
34417                                                                  AP_ESR_EL1[24] is set to AP_VSESR_EL2[IDS]. */
34418         uint64_t reserved_25_63        : 39;
34419 #endif /* Word 0 - End */
34420     } s;
34421     /* struct bdk_ap_vsesr_el2_s cn; */
34422 };
34423 typedef union bdk_ap_vsesr_el2 bdk_ap_vsesr_el2_t;
34424 
34425 #define BDK_AP_VSESR_EL2 BDK_AP_VSESR_EL2_FUNC()
34426 static inline uint64_t BDK_AP_VSESR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_VSESR_EL2_FUNC(void)34427 static inline uint64_t BDK_AP_VSESR_EL2_FUNC(void)
34428 {
34429     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX))
34430         return 0x30405020300ll;
34431     __bdk_csr_fatal("AP_VSESR_EL2", 0, 0, 0, 0, 0);
34432 }
34433 
34434 #define typedef_BDK_AP_VSESR_EL2 bdk_ap_vsesr_el2_t
34435 #define bustype_BDK_AP_VSESR_EL2 BDK_CSR_TYPE_SYSREG
34436 #define basename_BDK_AP_VSESR_EL2 "AP_VSESR_EL2"
34437 #define busnum_BDK_AP_VSESR_EL2 0
34438 #define arguments_BDK_AP_VSESR_EL2 -1,-1,-1,-1
34439 
34440 /**
34441  * Register (SYSREG) ap_vtcr_el2
34442  *
34443  * AP Virtualization Translation Control Register
34444  * Controls the translation table walks required for the stage 2
34445  *     translation of memory accesses from nonsecure EL0 and EL1,
34446  *     and holds cacheability and shareability information for the
34447  *     accesses.
34448  */
34449 union bdk_ap_vtcr_el2
34450 {
34451     uint32_t u;
34452     struct bdk_ap_vtcr_el2_s
34453     {
34454 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34455         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
34456         uint32_t reserved_20_30        : 11;
34457         uint32_t vs                    : 1;  /**< [ 19: 19](R/W) VMID size.
34458                                                                  0 = 8 bits.
34459                                                                  1 = 16 bits. */
34460         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
34461 
34462                                                                  0x0 = 32 bits, 4GB.
34463                                                                  0x1 = 36 bits, 64GB.
34464                                                                  0x2 = 40 bits, 1TB.
34465                                                                  0x3 = 42 bits, 4TB.
34466                                                                  0x4 = 44 bits, 16TB.
34467                                                                  0x5 = 48 bits, 256TB. */
34468         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
34469                                                                      address register.
34470 
34471                                                                  If the value is programmed to either a reserved value, or a
34472                                                                      size that has not been implemented, then the hardware will
34473                                                                      treat the field as if it has been programmed to an
34474                                                                      implementation defined choice of the sizes that has been
34475                                                                      implemented for all purposes other than the value read back
34476                                                                      from this register.
34477 
34478                                                                  It is implementation defined whether the value read back is
34479                                                                      the value programmed or the value that corresponds to the size
34480                                                                      chosen.
34481 
34482                                                                  0x0 = 4 KB.
34483                                                                  0x1 = 64 KB.
34484                                                                  0x2 = 16 KB. */
34485         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
34486                                                                      table walks using AP_VTTBR_EL2.
34487                                                                  0x0 = Non-shareable.
34488                                                                  0x2 = Outer shareable.
34489                                                                  0x3 = Inner shareable. */
34490         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
34491                                                                      translation table walks using AP_VTTBR_EL2.
34492                                                                  0x0 = Normal memory, outer non-cacheable.
34493                                                                  0x1 = Normal memory, outer write-back write-allocate cacheable.
34494                                                                  0x2 = Normal memory, outer write-through cacheable.
34495                                                                  0x3 = Normal memory, outer write-back no write-allocate cacheable. */
34496         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
34497                                                                      translation table walks using AP_VTTBR_EL2.
34498                                                                  0x0 = Normal memory, inner non-cacheable
34499                                                                  0x1 = Normal memory, inner write-back write-allocate cacheable
34500                                                                  0x2 = Normal memory, inner write-through cacheable
34501                                                                  0x3 = Normal memory, inner write-back no write-allocate cacheable */
34502         uint32_t sl0                   : 2;  /**< [  7:  6](R/W) Starting level of the AP_VTCR_EL2 addressed region. The meaning
34503                                                                      of this field depends on the value of AP_VTCR_EL2[TG0] (the
34504                                                                      granule size). */
34505         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_VTTBR_EL2.
34506                                                                      The region size is 22^(64-T0SZ) bytes.
34507                                                                  The maximum and minimum possible values for T0SZ depend on the
34508                                                                      level of translation table and the memory translation granule
34509                                                                      size, as described in the AArch64 Virtual Memory System
34510                                                                      Architecture chapter. */
34511 #else /* Word 0 - Little Endian */
34512         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_VTTBR_EL2.
34513                                                                      The region size is 22^(64-T0SZ) bytes.
34514                                                                  The maximum and minimum possible values for T0SZ depend on the
34515                                                                      level of translation table and the memory translation granule
34516                                                                      size, as described in the AArch64 Virtual Memory System
34517                                                                      Architecture chapter. */
34518         uint32_t sl0                   : 2;  /**< [  7:  6](R/W) Starting level of the AP_VTCR_EL2 addressed region. The meaning
34519                                                                      of this field depends on the value of AP_VTCR_EL2[TG0] (the
34520                                                                      granule size). */
34521         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
34522                                                                      translation table walks using AP_VTTBR_EL2.
34523                                                                  0x0 = Normal memory, inner non-cacheable
34524                                                                  0x1 = Normal memory, inner write-back write-allocate cacheable
34525                                                                  0x2 = Normal memory, inner write-through cacheable
34526                                                                  0x3 = Normal memory, inner write-back no write-allocate cacheable */
34527         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
34528                                                                      translation table walks using AP_VTTBR_EL2.
34529                                                                  0x0 = Normal memory, outer non-cacheable.
34530                                                                  0x1 = Normal memory, outer write-back write-allocate cacheable.
34531                                                                  0x2 = Normal memory, outer write-through cacheable.
34532                                                                  0x3 = Normal memory, outer write-back no write-allocate cacheable. */
34533         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
34534                                                                      table walks using AP_VTTBR_EL2.
34535                                                                  0x0 = Non-shareable.
34536                                                                  0x2 = Outer shareable.
34537                                                                  0x3 = Inner shareable. */
34538         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
34539                                                                      address register.
34540 
34541                                                                  If the value is programmed to either a reserved value, or a
34542                                                                      size that has not been implemented, then the hardware will
34543                                                                      treat the field as if it has been programmed to an
34544                                                                      implementation defined choice of the sizes that has been
34545                                                                      implemented for all purposes other than the value read back
34546                                                                      from this register.
34547 
34548                                                                  It is implementation defined whether the value read back is
34549                                                                      the value programmed or the value that corresponds to the size
34550                                                                      chosen.
34551 
34552                                                                  0x0 = 4 KB.
34553                                                                  0x1 = 64 KB.
34554                                                                  0x2 = 16 KB. */
34555         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
34556 
34557                                                                  0x0 = 32 bits, 4GB.
34558                                                                  0x1 = 36 bits, 64GB.
34559                                                                  0x2 = 40 bits, 1TB.
34560                                                                  0x3 = 42 bits, 4TB.
34561                                                                  0x4 = 44 bits, 16TB.
34562                                                                  0x5 = 48 bits, 256TB. */
34563         uint32_t vs                    : 1;  /**< [ 19: 19](R/W) VMID size.
34564                                                                  0 = 8 bits.
34565                                                                  1 = 16 bits. */
34566         uint32_t reserved_20_30        : 11;
34567         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
34568 #endif /* Word 0 - End */
34569     } s;
34570     struct bdk_ap_vtcr_el2_cn
34571     {
34572 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34573         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
34574         uint32_t reserved_23_30        : 8;
34575         uint32_t reserved_22           : 1;
34576         uint32_t reserved_21           : 1;
34577         uint32_t reserved_20           : 1;
34578         uint32_t vs                    : 1;  /**< [ 19: 19](R/W) VMID size.
34579                                                                  0 = 8 bits.
34580                                                                  1 = 16 bits. */
34581         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
34582 
34583                                                                  0x0 = 32 bits, 4GB.
34584                                                                  0x1 = 36 bits, 64GB.
34585                                                                  0x2 = 40 bits, 1TB.
34586                                                                  0x3 = 42 bits, 4TB.
34587                                                                  0x4 = 44 bits, 16TB.
34588                                                                  0x5 = 48 bits, 256TB. */
34589         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
34590                                                                      address register.
34591 
34592                                                                  If the value is programmed to either a reserved value, or a
34593                                                                      size that has not been implemented, then the hardware will
34594                                                                      treat the field as if it has been programmed to an
34595                                                                      implementation defined choice of the sizes that has been
34596                                                                      implemented for all purposes other than the value read back
34597                                                                      from this register.
34598 
34599                                                                  It is implementation defined whether the value read back is
34600                                                                      the value programmed or the value that corresponds to the size
34601                                                                      chosen.
34602 
34603                                                                  0x0 = 4 KB.
34604                                                                  0x1 = 64 KB.
34605                                                                  0x2 = 16 KB. */
34606         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
34607                                                                      table walks using AP_VTTBR_EL2.
34608                                                                  0x0 = Non-shareable.
34609                                                                  0x2 = Outer shareable.
34610                                                                  0x3 = Inner shareable. */
34611         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
34612                                                                      translation table walks using AP_VTTBR_EL2.
34613                                                                  0x0 = Normal memory, outer non-cacheable.
34614                                                                  0x1 = Normal memory, outer write-back write-allocate cacheable.
34615                                                                  0x2 = Normal memory, outer write-through cacheable.
34616                                                                  0x3 = Normal memory, outer write-back no write-allocate cacheable. */
34617         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
34618                                                                      translation table walks using AP_VTTBR_EL2.
34619                                                                  0x0 = Normal memory, inner non-cacheable
34620                                                                  0x1 = Normal memory, inner write-back write-allocate cacheable
34621                                                                  0x2 = Normal memory, inner write-through cacheable
34622                                                                  0x3 = Normal memory, inner write-back no write-allocate cacheable */
34623         uint32_t sl0                   : 2;  /**< [  7:  6](R/W) Starting level of the AP_VTCR_EL2 addressed region. The meaning
34624                                                                      of this field depends on the value of AP_VTCR_EL2[TG0] (the
34625                                                                      granule size). */
34626         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_VTTBR_EL2.
34627                                                                      The region size is 22^(64-T0SZ) bytes.
34628                                                                  The maximum and minimum possible values for T0SZ depend on the
34629                                                                      level of translation table and the memory translation granule
34630                                                                      size, as described in the AArch64 Virtual Memory System
34631                                                                      Architecture chapter. */
34632 #else /* Word 0 - Little Endian */
34633         uint32_t t0sz                  : 6;  /**< [  5:  0](R/W) The size offset of the memory region addressed by AP_VTTBR_EL2.
34634                                                                      The region size is 22^(64-T0SZ) bytes.
34635                                                                  The maximum and minimum possible values for T0SZ depend on the
34636                                                                      level of translation table and the memory translation granule
34637                                                                      size, as described in the AArch64 Virtual Memory System
34638                                                                      Architecture chapter. */
34639         uint32_t sl0                   : 2;  /**< [  7:  6](R/W) Starting level of the AP_VTCR_EL2 addressed region. The meaning
34640                                                                      of this field depends on the value of AP_VTCR_EL2[TG0] (the
34641                                                                      granule size). */
34642         uint32_t irgn0                 : 2;  /**< [  9:  8](R/W) Inner cacheability attribute for memory associated with
34643                                                                      translation table walks using AP_VTTBR_EL2.
34644                                                                  0x0 = Normal memory, inner non-cacheable
34645                                                                  0x1 = Normal memory, inner write-back write-allocate cacheable
34646                                                                  0x2 = Normal memory, inner write-through cacheable
34647                                                                  0x3 = Normal memory, inner write-back no write-allocate cacheable */
34648         uint32_t orgn0                 : 2;  /**< [ 11: 10](R/W) Outer cacheability attribute for memory associated with
34649                                                                      translation table walks using AP_VTTBR_EL2.
34650                                                                  0x0 = Normal memory, outer non-cacheable.
34651                                                                  0x1 = Normal memory, outer write-back write-allocate cacheable.
34652                                                                  0x2 = Normal memory, outer write-through cacheable.
34653                                                                  0x3 = Normal memory, outer write-back no write-allocate cacheable. */
34654         uint32_t sh0                   : 2;  /**< [ 13: 12](R/W) Shareability attribute for memory associated with translation
34655                                                                      table walks using AP_VTTBR_EL2.
34656                                                                  0x0 = Non-shareable.
34657                                                                  0x2 = Outer shareable.
34658                                                                  0x3 = Inner shareable. */
34659         uint32_t tg0                   : 2;  /**< [ 15: 14](R/W) Granule size for the corresponding translation table base
34660                                                                      address register.
34661 
34662                                                                  If the value is programmed to either a reserved value, or a
34663                                                                      size that has not been implemented, then the hardware will
34664                                                                      treat the field as if it has been programmed to an
34665                                                                      implementation defined choice of the sizes that has been
34666                                                                      implemented for all purposes other than the value read back
34667                                                                      from this register.
34668 
34669                                                                  It is implementation defined whether the value read back is
34670                                                                      the value programmed or the value that corresponds to the size
34671                                                                      chosen.
34672 
34673                                                                  0x0 = 4 KB.
34674                                                                  0x1 = 64 KB.
34675                                                                  0x2 = 16 KB. */
34676         uint32_t ps                    : 3;  /**< [ 18: 16](R/W) Physical Address Size.
34677 
34678                                                                  0x0 = 32 bits, 4GB.
34679                                                                  0x1 = 36 bits, 64GB.
34680                                                                  0x2 = 40 bits, 1TB.
34681                                                                  0x3 = 42 bits, 4TB.
34682                                                                  0x4 = 44 bits, 16TB.
34683                                                                  0x5 = 48 bits, 256TB. */
34684         uint32_t vs                    : 1;  /**< [ 19: 19](R/W) VMID size.
34685                                                                  0 = 8 bits.
34686                                                                  1 = 16 bits. */
34687         uint32_t reserved_20           : 1;
34688         uint32_t reserved_21           : 1;
34689         uint32_t reserved_22           : 1;
34690         uint32_t reserved_23_30        : 8;
34691         uint32_t rsvd_31               : 1;  /**< [ 31: 31](RO) Reserved 1. */
34692 #endif /* Word 0 - End */
34693     } cn;
34694 };
34695 typedef union bdk_ap_vtcr_el2 bdk_ap_vtcr_el2_t;
34696 
34697 #define BDK_AP_VTCR_EL2 BDK_AP_VTCR_EL2_FUNC()
34698 static inline uint64_t BDK_AP_VTCR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_VTCR_EL2_FUNC(void)34699 static inline uint64_t BDK_AP_VTCR_EL2_FUNC(void)
34700 {
34701     return 0x30402010200ll;
34702 }
34703 
34704 #define typedef_BDK_AP_VTCR_EL2 bdk_ap_vtcr_el2_t
34705 #define bustype_BDK_AP_VTCR_EL2 BDK_CSR_TYPE_SYSREG
34706 #define basename_BDK_AP_VTCR_EL2 "AP_VTCR_EL2"
34707 #define busnum_BDK_AP_VTCR_EL2 0
34708 #define arguments_BDK_AP_VTCR_EL2 -1,-1,-1,-1
34709 
34710 /**
34711  * Register (SYSREG) ap_vttbr_el2
34712  *
34713  * AP Virtualization Translation Table Base Register
34714  * Holds the base address of the translation table for the stage
34715  *     2 translation of memory accesses from nonsecure EL0 and EL1.
34716  */
34717 union bdk_ap_vttbr_el2
34718 {
34719     uint64_t u;
34720     struct bdk_ap_vttbr_el2_s
34721     {
34722 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34723         uint64_t vmid                  : 16; /**< [ 63: 48](R/W) The VMID for the translation table. Expanded to 16 bits
34724                                                                  by the ARM Large System Extensions. */
34725         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
34726                                                                      RES0.
34727 
34728                                                                  x is based on the value of AP_VTCR_EL2[T0SZ], the stage of
34729                                                                      translation, and the memory translation granule size.
34730                                                                  The AArch64 Virtual Memory System Architecture chapter
34731                                                                      describes how x is calculated.
34732                                                                  The value of x determines the required alignment of the
34733                                                                      translation table, which must be aligned to 22^(x)
34734                                                                      bytes.
34735 
34736                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
34737                                                                      Translation Table Base Address. Its effects are CONSTRAINED
34738                                                                      UNPREDICTABLE, and can be one of the following:
34739 
34740                                                                  Bits \<x-1:0\> are treated as if all the bits are zero. The
34741                                                                      value read back from those bits might be the value written or
34742                                                                      might be zero.
34743 
34744                                                                  The calculation of an address for a translation table walk
34745                                                                      using this register can be corrupted in those bits that are
34746                                                                      nonzero. */
34747         uint64_t reserved_1_3          : 3;
34748         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
34749 #else /* Word 0 - Little Endian */
34750         uint64_t cnp                   : 1;  /**< [  0:  0](R/W) Common not private. */
34751         uint64_t reserved_1_3          : 3;
34752         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
34753                                                                      RES0.
34754 
34755                                                                  x is based on the value of AP_VTCR_EL2[T0SZ], the stage of
34756                                                                      translation, and the memory translation granule size.
34757                                                                  The AArch64 Virtual Memory System Architecture chapter
34758                                                                      describes how x is calculated.
34759                                                                  The value of x determines the required alignment of the
34760                                                                      translation table, which must be aligned to 22^(x)
34761                                                                      bytes.
34762 
34763                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
34764                                                                      Translation Table Base Address. Its effects are CONSTRAINED
34765                                                                      UNPREDICTABLE, and can be one of the following:
34766 
34767                                                                  Bits \<x-1:0\> are treated as if all the bits are zero. The
34768                                                                      value read back from those bits might be the value written or
34769                                                                      might be zero.
34770 
34771                                                                  The calculation of an address for a translation table walk
34772                                                                      using this register can be corrupted in those bits that are
34773                                                                      nonzero. */
34774         uint64_t vmid                  : 16; /**< [ 63: 48](R/W) The VMID for the translation table. Expanded to 16 bits
34775                                                                  by the ARM Large System Extensions. */
34776 #endif /* Word 0 - End */
34777     } s;
34778     struct bdk_ap_vttbr_el2_cn8
34779     {
34780 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
34781         uint64_t vmid                  : 16; /**< [ 63: 48](R/W) The VMID for the translation table. Expanded to 16 bits
34782                                                                  by the ARM Large System Extensions. */
34783         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
34784                                                                      RES0.
34785 
34786                                                                  x is based on the value of AP_VTCR_EL2[T0SZ], the stage of
34787                                                                      translation, and the memory translation granule size.
34788                                                                  The AArch64 Virtual Memory System Architecture chapter
34789                                                                      describes how x is calculated.
34790                                                                  The value of x determines the required alignment of the
34791                                                                      translation table, which must be aligned to 22^(x)
34792                                                                      bytes.
34793 
34794                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
34795                                                                      Translation Table Base Address. Its effects are CONSTRAINED
34796                                                                      UNPREDICTABLE, and can be one of the following:
34797 
34798                                                                  Bits \<x-1:0\> are treated as if all the bits are zero. The
34799                                                                      value read back from those bits might be the value written or
34800                                                                      might be zero.
34801 
34802                                                                  The calculation of an address for a translation table walk
34803                                                                      using this register can be corrupted in those bits that are
34804                                                                      nonzero. */
34805         uint64_t reserved_0_3          : 4;
34806 #else /* Word 0 - Little Endian */
34807         uint64_t reserved_0_3          : 4;
34808         uint64_t baddr                 : 44; /**< [ 47:  4](R/W) Translation table base address, bits\<47:x\>. Bits \<x-1:0\> are
34809                                                                      RES0.
34810 
34811                                                                  x is based on the value of AP_VTCR_EL2[T0SZ], the stage of
34812                                                                      translation, and the memory translation granule size.
34813                                                                  The AArch64 Virtual Memory System Architecture chapter
34814                                                                      describes how x is calculated.
34815                                                                  The value of x determines the required alignment of the
34816                                                                      translation table, which must be aligned to 22^(x)
34817                                                                      bytes.
34818 
34819                                                                  If bits \<x-1:0\> are not all zero, this is a misaligned
34820                                                                      Translation Table Base Address. Its effects are CONSTRAINED
34821                                                                      UNPREDICTABLE, and can be one of the following:
34822 
34823                                                                  Bits \<x-1:0\> are treated as if all the bits are zero. The
34824                                                                      value read back from those bits might be the value written or
34825                                                                      might be zero.
34826 
34827                                                                  The calculation of an address for a translation table walk
34828                                                                      using this register can be corrupted in those bits that are
34829                                                                      nonzero. */
34830         uint64_t vmid                  : 16; /**< [ 63: 48](R/W) The VMID for the translation table. Expanded to 16 bits
34831                                                                  by the ARM Large System Extensions. */
34832 #endif /* Word 0 - End */
34833     } cn8;
34834     /* struct bdk_ap_vttbr_el2_s cn9; */
34835 };
34836 typedef union bdk_ap_vttbr_el2 bdk_ap_vttbr_el2_t;
34837 
34838 #define BDK_AP_VTTBR_EL2 BDK_AP_VTTBR_EL2_FUNC()
34839 static inline uint64_t BDK_AP_VTTBR_EL2_FUNC(void) __attribute__ ((pure, always_inline));
BDK_AP_VTTBR_EL2_FUNC(void)34840 static inline uint64_t BDK_AP_VTTBR_EL2_FUNC(void)
34841 {
34842     return 0x30402010000ll;
34843 }
34844 
34845 #define typedef_BDK_AP_VTTBR_EL2 bdk_ap_vttbr_el2_t
34846 #define bustype_BDK_AP_VTTBR_EL2 BDK_CSR_TYPE_SYSREG
34847 #define basename_BDK_AP_VTTBR_EL2 "AP_VTTBR_EL2"
34848 #define busnum_BDK_AP_VTTBR_EL2 0
34849 #define arguments_BDK_AP_VTTBR_EL2 -1,-1,-1,-1
34850 
34851 #endif /* __BDK_CSRS_AP_H__ */
34852