1 #ifndef __ODY_CSRS_GIC_H__
2 #define __ODY_CSRS_GIC_H__
3 /* This file is auto-generated. Do not edit */
4
5 /***********************license start***********************************
6 * Copyright (C) 2021-2026 Marvell.
7 * SPDX-License-Identifier: BSD-3-Clause
8 * https://spdx.org/licenses
9 ***********************license end**************************************/
10
11
12 /**
13 * @file
14 *
15 * Configuration and status register (CSR) address and type definitions for
16 * GIC.
17 *
18 * This file is auto generated. Do not edit.
19 *
20 */
21
22 /**
23 * Enumeration gic_bar_e
24 *
25 * GIC Base Address Register Enumeration
26 * Enumerates the base address registers.
27 */
28 #define ODY_GIC_BAR_E_GICDA_BAR (0x801001500000ll)
29 #define ODY_GIC_BAR_E_GICDA_BAR_SIZE 0x10000ull
30 #define ODY_GIC_BAR_E_GIC_PF_BAR0 (0x801000000000ll)
31 #define ODY_GIC_BAR_E_GIC_PF_BAR0_SIZE 0x80000000ull
32 #define ODY_GIC_BAR_E_GIC_PF_BAR4 (0x801080000000ll)
33 #define ODY_GIC_BAR_E_GIC_PF_BAR4_SIZE 0x80000000ull
34
35 /**
36 * Enumeration gic_int_vec_e
37 *
38 * GIC MSI-X Vector Enumeration
39 * Enumerates the MSI-X interrupt vectors.
40 */
41 #define ODY_GIC_INT_VEC_E_GICD_INT (0x52)
42 #define ODY_GIC_INT_VEC_E_GIC_WAKE_INTX(a) (0 + (a))
43
44 /**
45 * Enumeration gicp_event_id_e
46 *
47 * GIC Performance Counter Event ID Enumeration
48 * Enumerates the index of GIC_INT_REQ()_PC.
49 */
50 #define ODY_GICP_EVENT_ID_E_GIC_ACC (0x80)
51 #define ODY_GICP_EVENT_ID_E_GIC_CLC_CYCL (0)
52 #define ODY_GICP_EVENT_ID_E_GIC_DN_MSG_PHY (4)
53 #define ODY_GICP_EVENT_ID_E_GIC_DN_SET_PHY (5)
54 #define ODY_GICP_EVENT_ID_E_GIC_DN_SET_VIRT (0x88)
55 #define ODY_GICP_EVENT_ID_E_GIC_ITS_COL_MISS (0x26)
56 #define ODY_GICP_EVENT_ID_E_GIC_ITS_DID_MISS (0x24)
57 #define ODY_GICP_EVENT_ID_E_GIC_ITS_LAT (0x27)
58 #define ODY_GICP_EVENT_ID_E_GIC_ITS_LL_LPI (0x21)
59 #define ODY_GICP_EVENT_ID_E_GIC_ITS_LPI (0x22)
60 #define ODY_GICP_EVENT_ID_E_GIC_ITS_LPI_CMD (0x23)
61 #define ODY_GICP_EVENT_ID_E_GIC_ITS_MPFA (0x28)
62 #define ODY_GICP_EVENT_ID_E_GIC_ITS_NLL_LPI (0x20)
63 #define ODY_GICP_EVENT_ID_E_GIC_ITS_VID_MISS (0x25)
64 #define ODY_GICP_EVENT_ID_E_GIC_LPI_FAS (0x36)
65 #define ODY_GICP_EVENT_ID_E_GIC_LPI_HIT (0x34)
66 #define ODY_GICP_EVENT_ID_E_GIC_LPI_HIT_DIS (0x33)
67 #define ODY_GICP_EVENT_ID_E_GIC_LPI_HIT_EN (0x32)
68 #define ODY_GICP_EVENT_ID_E_GIC_LPI_MATCH (0x35)
69 #define ODY_GICP_EVENT_ID_E_GIC_LPI_OOL_STORED (0x31)
70 #define ODY_GICP_EVENT_ID_E_GIC_LPI_OWN_STORED (0x30)
71 #define ODY_GICP_EVENT_ID_E_GIC_LPI_PROP (0x39)
72 #define ODY_GICP_EVENT_ID_E_GIC_LPI_PROP_DIS (0x38)
73 #define ODY_GICP_EVENT_ID_E_GIC_LPI_PROP_EN (0x37)
74 #define ODY_GICP_EVENT_ID_E_GIC_NG (1)
75 #define ODY_GICP_EVENT_ID_E_GIC_OFLOW (0x81)
76 #define ODY_GICP_EVENT_ID_E_GIC_PT_IN (0x63)
77 #define ODY_GICP_EVENT_ID_E_GIC_PT_IN_DIS (0x61)
78 #define ODY_GICP_EVENT_ID_E_GIC_PT_IN_EN (0x60)
79 #define ODY_GICP_EVENT_ID_E_GIC_PT_MATCH (0x64)
80 #define ODY_GICP_EVENT_ID_E_GIC_PT_OUT (0x67)
81 #define ODY_GICP_EVENT_ID_E_GIC_PT_OUT_DIS (0x66)
82 #define ODY_GICP_EVENT_ID_E_GIC_PT_OUT_EN (0x65)
83 #define ODY_GICP_EVENT_ID_E_GIC_PT_PRI (0x62)
84 #define ODY_GICP_EVENT_ID_E_GIC_RES_COMP (0x79)
85 #define ODY_GICP_EVENT_ID_E_GIC_RES_START (0x78)
86 #define ODY_GICP_EVENT_ID_E_GIC_SGI_ACC (0x13)
87 #define ODY_GICP_EVENT_ID_E_GIC_SGI_ALL (0x12)
88 #define ODY_GICP_EVENT_ID_E_GIC_SGI_BRD (0x10)
89 #define ODY_GICP_EVENT_ID_E_GIC_SGI_TAR (0x11)
90 #define ODY_GICP_EVENT_ID_E_GIC_SPI_COL_MSG (0x50)
91 #define ODY_GICP_EVENT_ID_E_GIC_SPI_DISABLED (0x52)
92 #define ODY_GICP_EVENT_ID_E_GIC_SPI_ENABLED (0x51)
93 #define ODY_GICP_EVENT_ID_E_GIC_SPI_MATCH (0x55)
94 #define ODY_GICP_EVENT_ID_E_GIC_SPI_PENDING_CLR (0x54)
95 #define ODY_GICP_EVENT_ID_E_GIC_SPI_PENDING_SET (0x53)
96 #define ODY_GICP_EVENT_ID_E_GIC_UP_ACT_DBL (0xe)
97 #define ODY_GICP_EVENT_ID_E_GIC_UP_ACT_LPI (0xb)
98 #define ODY_GICP_EVENT_ID_E_GIC_UP_ACT_SPI (9)
99 #define ODY_GICP_EVENT_ID_E_GIC_UP_ACT_VLPI (0x8a)
100 #define ODY_GICP_EVENT_ID_E_GIC_UP_ACT_VSGI (0x8b)
101 #define ODY_GICP_EVENT_ID_E_GIC_UP_DEACT (0xd)
102 #define ODY_GICP_EVENT_ID_E_GIC_UP_MSG_PHY (8)
103 #define ODY_GICP_EVENT_ID_E_GIC_UP_REL_PHY (0xa)
104 #define ODY_GICP_EVENT_ID_E_GIC_UP_REL_VIRT (0x89)
105 #define ODY_GICP_EVENT_ID_E_GIC_UP_SET_COMP_PHY (0xc)
106 #define ODY_GICP_EVENT_ID_E_GIC_UP_SET_COMP_VIRT (0x8c)
107 #define ODY_GICP_EVENT_ID_E_GIC_VLPI_BUFF_FILL (0x73)
108 #define ODY_GICP_EVENT_ID_E_GIC_VSGI_IN_RAM (0x72)
109 #define ODY_GICP_EVENT_ID_E_GIT_DN_SET1OFN_PHY (6)
110
111 /**
112 * Enumeration gits_cmd_err_e
113 *
114 * GIC ITS Command Error Enumeration
115 * The actual 24-bit ITS command SEI is defined as {8'h01,
116 * GITS_CMD_TYPE_E(8-bit), GITS_CMD_ERR_E(8-bit)}.
117 */
118 #define ODY_GITS_CMD_ERR_E_CSEI_CMDVCPU_INVALID (0x17)
119 #define ODY_GITS_CMD_ERR_E_CSEI_CMD_TO (0xe0)
120 #define ODY_GITS_CMD_ERR_E_CSEI_COLLECTION_OOR (3)
121 #define ODY_GITS_CMD_ERR_E_CSEI_DEVICE_OOR (0)
122 #define ODY_GITS_CMD_ERR_E_CSEI_ID_IS_PHYSICAL (0x15)
123 #define ODY_GITS_CMD_ERR_E_CSEI_ID_OOR (5)
124 #define ODY_GITS_CMD_ERR_E_CSEI_INVALID_COMMAND (1)
125 #define ODY_GITS_CMD_ERR_E_CSEI_ITEVCPU_INVALID (0x16)
126 #define ODY_GITS_CMD_ERR_E_CSEI_ITE_INVALID (0x10)
127 #define ODY_GITS_CMD_ERR_E_CSEI_ITTSIZE_OOR (2)
128 #define ODY_GITS_CMD_ERR_E_CSEI_PHYSICALID_OOR (6)
129 #define ODY_GITS_CMD_ERR_E_CSEI_SYNCACK_INVALID (0xe1)
130 #define ODY_GITS_CMD_ERR_E_CSEI_TA_INVALID (0xfe)
131 #define ODY_GITS_CMD_ERR_E_CSEI_UNMAPPED_COLLECTION (9)
132 #define ODY_GITS_CMD_ERR_E_CSEI_UNMAPPED_DEVICE (4)
133 #define ODY_GITS_CMD_ERR_E_CSEI_UNMAPPED_INTERRUPT (7)
134 #define ODY_GITS_CMD_ERR_E_CSEI_UNSUPPORTED_CMD (0xff)
135 #define ODY_GITS_CMD_ERR_E_CSEI_VCPU_INVALID (0x14)
136 #define ODY_GITS_CMD_ERR_E_CSEI_VCPU_OOR (0x11)
137 #define ODY_GITS_CMD_ERR_E_CSEI_VIRTUALID_OOR (0x13)
138 #define ODY_GITS_CMD_ERR_E_CSEI_VPTSIZE_OOR (0x12)
139
140 /**
141 * Enumeration gits_cmd_type_e
142 *
143 * GIC ITS Command Type Enumeration
144 * Enumerates the ITS commands.
145 */
146 #define ODY_GITS_CMD_TYPE_E_CMD_CLEAR (4)
147 #define ODY_GITS_CMD_TYPE_E_CMD_DISCARD (0xf)
148 #define ODY_GITS_CMD_TYPE_E_CMD_INT (3)
149 #define ODY_GITS_CMD_TYPE_E_CMD_INV (0xc)
150 #define ODY_GITS_CMD_TYPE_E_CMD_INVALL (0xd)
151 #define ODY_GITS_CMD_TYPE_E_CMD_MAPC (9)
152 #define ODY_GITS_CMD_TYPE_E_CMD_MAPD (8)
153 #define ODY_GITS_CMD_TYPE_E_CMD_MAPI (0xb)
154 #define ODY_GITS_CMD_TYPE_E_CMD_MAPTI (0xa)
155 #define ODY_GITS_CMD_TYPE_E_CMD_MOVALL (0xe)
156 #define ODY_GITS_CMD_TYPE_E_CMD_MOVI (1)
157 #define ODY_GITS_CMD_TYPE_E_CMD_SYNC (5)
158 #define ODY_GITS_CMD_TYPE_E_CMD_UDF (0)
159 #define ODY_GITS_CMD_TYPE_E_CMD_VINVALL (0x2d)
160 #define ODY_GITS_CMD_TYPE_E_CMD_VMAPI (0x2b)
161 #define ODY_GITS_CMD_TYPE_E_CMD_VMAPP (0x29)
162 #define ODY_GITS_CMD_TYPE_E_CMD_VMAPTI (0x2a)
163 #define ODY_GITS_CMD_TYPE_E_CMD_VMOVI (0x21)
164 #define ODY_GITS_CMD_TYPE_E_CMD_VMOVP (0x22)
165 #define ODY_GITS_CMD_TYPE_E_CMD_VSYNC (0x25)
166
167 /**
168 * Structure gits_cmd_clear_s
169 *
170 * GIC ITS Clear Command Structure
171 */
172 union ody_gits_cmd_clear_s {
173 uint64_t u[4];
174 struct ody_gits_cmd_clear_s_s {
175 uint64_t cmd_type : 8;
176 uint64_t reserved_8_31 : 24;
177 uint64_t dev_id : 32;
178 uint64_t evnt_id : 32;
179 uint64_t reserved_96_127 : 32;
180 uint64_t reserved_128_191 : 64;
181 uint64_t reserved_192_255 : 64;
182 } s;
183 /* struct ody_gits_cmd_clear_s_s cn; */
184 };
185
186 /**
187 * Structure gits_cmd_discard_s
188 *
189 * GIC ITS Discard Command Structure
190 */
191 union ody_gits_cmd_discard_s {
192 uint64_t u[4];
193 struct ody_gits_cmd_discard_s_s {
194 uint64_t cmd_type : 8;
195 uint64_t reserved_8_31 : 24;
196 uint64_t dev_id : 32;
197 uint64_t evnt_id : 32;
198 uint64_t reserved_96_127 : 32;
199 uint64_t reserved_128_191 : 64;
200 uint64_t reserved_192_255 : 64;
201 } s;
202 /* struct ody_gits_cmd_discard_s_s cn; */
203 };
204
205 /**
206 * Structure gits_cmd_int_s
207 *
208 * GIC ITS INT Command Structure
209 */
210 union ody_gits_cmd_int_s {
211 uint64_t u[4];
212 struct ody_gits_cmd_int_s_s {
213 uint64_t cmd_type : 8;
214 uint64_t reserved_8_31 : 24;
215 uint64_t dev_id : 32;
216 uint64_t evnt_id : 32;
217 uint64_t reserved_96_127 : 32;
218 uint64_t reserved_128_191 : 64;
219 uint64_t reserved_192_255 : 64;
220 } s;
221 /* struct ody_gits_cmd_int_s_s cn; */
222 };
223
224 /**
225 * Structure gits_cmd_inv_s
226 *
227 * GIC ITS INV Command Structure
228 */
229 union ody_gits_cmd_inv_s {
230 uint64_t u[4];
231 struct ody_gits_cmd_inv_s_s {
232 uint64_t cmd_type : 8;
233 uint64_t reserved_8_31 : 24;
234 uint64_t dev_id : 32;
235 uint64_t evnt_id : 32;
236 uint64_t reserved_96_127 : 32;
237 uint64_t reserved_128_191 : 64;
238 uint64_t reserved_192_255 : 64;
239 } s;
240 /* struct ody_gits_cmd_inv_s_s cn; */
241 };
242
243 /**
244 * Structure gits_cmd_invall_s
245 *
246 * GIC ITS INVALL Command Structure
247 */
248 union ody_gits_cmd_invall_s {
249 uint64_t u[4];
250 struct ody_gits_cmd_invall_s_s {
251 uint64_t cmd_type : 8;
252 uint64_t reserved_8_63 : 56;
253 uint64_t reserved_64_127 : 64;
254 uint64_t icid : 16;
255 uint64_t reserved_144_191 : 48;
256 uint64_t reserved_192_255 : 64;
257 } s;
258 /* struct ody_gits_cmd_invall_s_s cn; */
259 };
260
261 /**
262 * Structure gits_cmd_mapc_s
263 *
264 * GIC ITS MAPC Command Structure
265 */
266 union ody_gits_cmd_mapc_s {
267 uint64_t u[4];
268 struct ody_gits_cmd_mapc_s_s {
269 uint64_t cmd_type : 8;
270 uint64_t reserved_8_63 : 56;
271 uint64_t reserved_64_127 : 64;
272 uint64_t icid : 16;
273 uint64_t rdbase : 35;
274 uint64_t reserved_179_190 : 12;
275 uint64_t v : 1;
276 uint64_t reserved_192_255 : 64;
277 } s;
278 /* struct ody_gits_cmd_mapc_s_s cn; */
279 };
280
281 /**
282 * Structure gits_cmd_mapd_s
283 *
284 * GIC ITS MAPD Command Structure
285 */
286 union ody_gits_cmd_mapd_s {
287 uint64_t u[4];
288 struct ody_gits_cmd_mapd_s_s {
289 uint64_t cmd_type : 8;
290 uint64_t reserved_8_31 : 24;
291 uint64_t dev_id : 32;
292 uint64_t size : 5;
293 uint64_t reserved_69_127 : 59;
294 uint64_t reserved_128_135 : 8;
295 uint64_t itt_addr : 43;
296 uint64_t reserved_179_190 : 12;
297 uint64_t v : 1;
298 uint64_t reserved_192_255 : 64;
299 } s;
300 /* struct ody_gits_cmd_mapd_s_s cn; */
301 };
302
303 /**
304 * Structure gits_cmd_mapi_s
305 *
306 * GIC ITS MAPI Command Structure
307 */
308 union ody_gits_cmd_mapi_s {
309 uint64_t u[4];
310 struct ody_gits_cmd_mapi_s_s {
311 uint64_t cmd_type : 8;
312 uint64_t reserved_8_31 : 24;
313 uint64_t dev_id : 32;
314 uint64_t evnt_id : 32;
315 uint64_t reserved_96_127 : 32;
316 uint64_t cid : 16;
317 uint64_t reserved_144_191 : 48;
318 uint64_t reserved_192_255 : 64;
319 } s;
320 /* struct ody_gits_cmd_mapi_s_s cn; */
321 };
322
323 /**
324 * Structure gits_cmd_mapti_s
325 *
326 * GIC ITS MAPTI Command Structure
327 */
328 union ody_gits_cmd_mapti_s {
329 uint64_t u[4];
330 struct ody_gits_cmd_mapti_s_s {
331 uint64_t cmd_type : 8;
332 uint64_t reserved_8_31 : 24;
333 uint64_t dev_id : 32;
334 uint64_t evnt_id : 32;
335 uint64_t pint_id : 32;
336 uint64_t cid : 16;
337 uint64_t reserved_144_191 : 48;
338 uint64_t reserved_192_255 : 64;
339 } s;
340 /* struct ody_gits_cmd_mapti_s_s cn; */
341 };
342
343 /**
344 * Structure gits_cmd_movall_s
345 *
346 * GIC ITS MOVALL Command Structure
347 */
348 union ody_gits_cmd_movall_s {
349 uint64_t u[4];
350 struct ody_gits_cmd_movall_s_s {
351 uint64_t cmd_type : 8;
352 uint64_t reserved_8_63 : 56;
353 uint64_t reserved_64_127 : 64;
354 uint64_t reserved_128_143 : 16;
355 uint64_t rdbase1 : 35;
356 uint64_t reserved_179_191 : 13;
357 uint64_t reserved_192_207 : 16;
358 uint64_t rdbase2 : 35;
359 uint64_t reserved_243_255 : 13;
360 } s;
361 /* struct ody_gits_cmd_movall_s_s cn; */
362 };
363
364 /**
365 * Structure gits_cmd_movi_s
366 *
367 * GIC ITS MOVI Command Structure
368 */
369 union ody_gits_cmd_movi_s {
370 uint64_t u[4];
371 struct ody_gits_cmd_movi_s_s {
372 uint64_t cmd_type : 8;
373 uint64_t reserved_8_31 : 24;
374 uint64_t dev_id : 32;
375 uint64_t evnt_id : 32;
376 uint64_t reserved_96_127 : 32;
377 uint64_t cid : 16;
378 uint64_t reserved_144_191 : 48;
379 uint64_t reserved_192_255 : 64;
380 } s;
381 /* struct ody_gits_cmd_movi_s_s cn; */
382 };
383
384 /**
385 * Structure gits_cmd_sync_s
386 *
387 * GIC ITS SYNC Command Structure
388 */
389 union ody_gits_cmd_sync_s {
390 uint64_t u[4];
391 struct ody_gits_cmd_sync_s_s {
392 uint64_t cmd_type : 8;
393 uint64_t reserved_8_63 : 56;
394 uint64_t reserved_64_127 : 64;
395 uint64_t reserved_128_143 : 16;
396 uint64_t rdbase : 32;
397 uint64_t reserved_176_191 : 16;
398 uint64_t reserved_192_255 : 64;
399 } s;
400 /* struct ody_gits_cmd_sync_s_s cn; */
401 };
402
403 /**
404 * Structure gits_cmd_vinvall_s
405 *
406 * GIC ITS VINVALL Command Structure
407 */
408 union ody_gits_cmd_vinvall_s {
409 uint64_t u[4];
410 struct ody_gits_cmd_vinvall_s_s {
411 uint64_t cmd_type : 8;
412 uint64_t reserved_8_63 : 56;
413 uint64_t reserved_64_95 : 32;
414 uint64_t vpeid : 16;
415 uint64_t reserved_112_127 : 16;
416 uint64_t reserved_128_191 : 64;
417 uint64_t reserved_192_255 : 64;
418 } s;
419 /* struct ody_gits_cmd_vinvall_s_s cn; */
420 };
421
422 /**
423 * Structure gits_cmd_vmapi_s
424 *
425 * GIC ITS VMAPI Command Structure
426 */
427 union ody_gits_cmd_vmapi_s {
428 uint64_t u[4];
429 struct ody_gits_cmd_vmapi_s_s {
430 uint64_t cmd_type : 8;
431 uint64_t reserved_8_63 : 56;
432 uint64_t evnt_id : 32;
433 uint64_t vpeid : 16;
434 uint64_t reserved_112_127 : 16;
435 uint64_t reserved_128_159 : 32;
436 uint64_t dbell_pintid : 32;
437 uint64_t reserved_192_255 : 64;
438 } s;
439 /* struct ody_gits_cmd_vmapi_s_s cn; */
440 };
441
442 /**
443 * Structure gits_cmd_vmapp_s
444 *
445 * GIC ITS VMAPP Command Structure
446 */
447 union ody_gits_cmd_vmapp_s {
448 uint64_t u[4];
449 struct ody_gits_cmd_vmapp_s_s {
450 uint64_t cmd_type : 8;
451 uint64_t reserved_8_63 : 56;
452 uint64_t reserved_64_95 : 32;
453 uint64_t vpeid : 16;
454 uint64_t reserved_112_127 : 16;
455 uint64_t reserved_128_143 : 16;
456 uint64_t rdbase : 35;
457 uint64_t reserved_179_190 : 12;
458 uint64_t v : 1;
459 uint64_t vpt_size : 5;
460 uint64_t reserved_197_207 : 11;
461 uint64_t vpt_addr : 35;
462 uint64_t reserved_243_255 : 13;
463 } s;
464 /* struct ody_gits_cmd_vmapp_s_s cn; */
465 };
466
467 /**
468 * Structure gits_cmd_vmapti_s
469 *
470 * GIC ITS VMAPTI Command Structure
471 */
472 union ody_gits_cmd_vmapti_s {
473 uint64_t u[4];
474 struct ody_gits_cmd_vmapti_s_s {
475 uint64_t cmd_type : 8;
476 uint64_t reserved_8_31 : 24;
477 uint64_t dev_id : 32;
478 uint64_t evnt_id : 32;
479 uint64_t vpeid : 16;
480 uint64_t reserved_112_127 : 16;
481 uint64_t vintid : 32;
482 uint64_t dbell_pintid : 32;
483 uint64_t reserved_192_255 : 64;
484 } s;
485 /* struct ody_gits_cmd_vmapti_s_s cn; */
486 };
487
488 /**
489 * Structure gits_cmd_vmovi_s
490 *
491 * GIC ITS VMOVI Command Structure
492 */
493 union ody_gits_cmd_vmovi_s {
494 uint64_t u[4];
495 struct ody_gits_cmd_vmovi_s_s {
496 uint64_t cmd_type : 8;
497 uint64_t reserved_8_31 : 24;
498 uint64_t dev_id : 32;
499 uint64_t evnt_id : 32;
500 uint64_t vpeid : 16;
501 uint64_t reserved_112_127 : 16;
502 uint64_t d_vld : 1;
503 uint64_t reserved_129_159 : 31;
504 uint64_t dbell_pintid : 32;
505 uint64_t reserved_192_255 : 64;
506 } s;
507 /* struct ody_gits_cmd_vmovi_s_s cn; */
508 };
509
510 /**
511 * Structure gits_cmd_vmovp_s
512 *
513 * GIC ITS VMOVP Command Structure
514 */
515 union ody_gits_cmd_vmovp_s {
516 uint64_t u[4];
517 struct ody_gits_cmd_vmovp_s_s {
518 uint64_t cmd_type : 8;
519 uint64_t reserved_8_31 : 24;
520 uint64_t seq_num : 18;
521 uint64_t reserved_50_63 : 14;
522 uint64_t its_list : 16;
523 uint64_t reserved_80_95 : 16;
524 uint64_t vpeid : 16;
525 uint64_t reserved_112_127 : 16;
526 uint64_t reserved_128_143 : 16;
527 uint64_t rdbase : 35;
528 uint64_t reserved_179_191 : 13;
529 uint64_t reserved_192_255 : 64;
530 } s;
531 /* struct ody_gits_cmd_vmovp_s_s cn; */
532 };
533
534 /**
535 * Structure gits_cmd_vsync_s
536 *
537 * GIC ITS VSYNC Command Structure
538 */
539 union ody_gits_cmd_vsync_s {
540 uint64_t u[4];
541 struct ody_gits_cmd_vsync_s_s {
542 uint64_t cmd_type : 8;
543 uint64_t reserved_8_63 : 56;
544 uint64_t reserved_64_95 : 32;
545 uint64_t vpeid : 16;
546 uint64_t reserved_112_127 : 16;
547 uint64_t reserved_128_191 : 64;
548 uint64_t reserved_192_255 : 64;
549 } s;
550 /* struct ody_gits_cmd_vsync_s_s cn; */
551 };
552
553 /**
554 * Register (NCB) gic_anb_aximstr_status
555 *
556 * ANB AXISLV Block Status Register
557 */
558 union ody_gic_anb_aximstr_status {
559 uint64_t u;
560 struct ody_gic_anb_aximstr_status_s {
561 uint64_t anb_aximstr_rd_resp_nok : 1;
562 uint64_t anb_aximstr_wr_resp_nok : 1;
563 uint64_t reserved_2_63 : 62;
564 } s;
565 /* struct ody_gic_anb_aximstr_status_s cn; */
566 };
567 typedef union ody_gic_anb_aximstr_status ody_gic_anb_aximstr_status_t;
568
569 #define ODY_GIC_ANB_AXIMSTR_STATUS ODY_GIC_ANB_AXIMSTR_STATUS_FUNC()
570 static inline uint64_t ODY_GIC_ANB_AXIMSTR_STATUS_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GIC_ANB_AXIMSTR_STATUS_FUNC(void)571 static inline uint64_t ODY_GIC_ANB_AXIMSTR_STATUS_FUNC(void)
572 {
573 return 0x801010012060ll;
574 }
575
576 #define typedef_ODY_GIC_ANB_AXIMSTR_STATUS ody_gic_anb_aximstr_status_t
577 #define bustype_ODY_GIC_ANB_AXIMSTR_STATUS CSR_TYPE_NCB
578 #define basename_ODY_GIC_ANB_AXIMSTR_STATUS "GIC_ANB_AXIMSTR_STATUS"
579 #define device_bar_ODY_GIC_ANB_AXIMSTR_STATUS 0x0 /* PF_BAR0 */
580 #define busnum_ODY_GIC_ANB_AXIMSTR_STATUS 0
581 #define arguments_ODY_GIC_ANB_AXIMSTR_STATUS -1, -1, -1, -1
582
583 /**
584 * Register (NCB) gic_anb_axislv_status
585 *
586 * ANB AXISLV Block Status Register
587 */
588 union ody_gic_anb_axislv_status {
589 uint64_t u;
590 struct ody_gic_anb_axislv_status_s {
591 uint64_t anb_axislv_b_fifo_overrun : 1;
592 uint64_t anb_axislv_r_fifo_overrun : 1;
593 uint64_t anb_axislv_load_size_exc : 1;
594 uint64_t anb_axislv_write_size_exc : 1;
595 uint64_t anb_axislv_empty_write : 1;
596 uint64_t anb_axislv_multi_beat_nrw_wr : 1;
597 uint64_t anb_axislv_multi_beat_nrw_rd : 1;
598 uint64_t anb_axislv_single_beat_nrw_wr : 1;
599 uint64_t anb_axislv_single_beat_nrw_rd : 1;
600 uint64_t anb_axislv_bad_narrow_write_8 : 1;
601 uint64_t anb_axislv_bad_narrow_write_16 : 1;
602 uint64_t anb_axislv_bad_narrow_write_32 : 1;
603 uint64_t anb_axislv_bad_narrow_write_64 : 1;
604 uint64_t reserved_13_63 : 51;
605 } s;
606 /* struct ody_gic_anb_axislv_status_s cn; */
607 };
608 typedef union ody_gic_anb_axislv_status ody_gic_anb_axislv_status_t;
609
610 #define ODY_GIC_ANB_AXISLV_STATUS ODY_GIC_ANB_AXISLV_STATUS_FUNC()
611 static inline uint64_t ODY_GIC_ANB_AXISLV_STATUS_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GIC_ANB_AXISLV_STATUS_FUNC(void)612 static inline uint64_t ODY_GIC_ANB_AXISLV_STATUS_FUNC(void)
613 {
614 return 0x801010012030ll;
615 }
616
617 #define typedef_ODY_GIC_ANB_AXISLV_STATUS ody_gic_anb_axislv_status_t
618 #define bustype_ODY_GIC_ANB_AXISLV_STATUS CSR_TYPE_NCB
619 #define basename_ODY_GIC_ANB_AXISLV_STATUS "GIC_ANB_AXISLV_STATUS"
620 #define device_bar_ODY_GIC_ANB_AXISLV_STATUS 0x0 /* PF_BAR0 */
621 #define busnum_ODY_GIC_ANB_AXISLV_STATUS 0
622 #define arguments_ODY_GIC_ANB_AXISLV_STATUS -1, -1, -1, -1
623
624 /**
625 * Register (NCB) gic_anb_backp_disable
626 *
627 * ANB Backpressure Configuration Register
628 */
629 union ody_gic_anb_backp_disable {
630 uint64_t u;
631 struct ody_gic_anb_backp_disable_s {
632 uint64_t anb_extmstr_b_backp_disable : 1;
633 uint64_t anb_extmstr_r_backp_disable : 1;
634 uint64_t anb_chicken_w_wait_for_aw : 1;
635 uint64_t anb_force_ncb_rst_active : 1;
636 uint64_t anb_ncb_rst_drain_axislv_fifos : 1;
637 uint64_t reserved_5_63 : 59;
638 } s;
639 /* struct ody_gic_anb_backp_disable_s cn; */
640 };
641 typedef union ody_gic_anb_backp_disable ody_gic_anb_backp_disable_t;
642
643 #define ODY_GIC_ANB_BACKP_DISABLE ODY_GIC_ANB_BACKP_DISABLE_FUNC()
644 static inline uint64_t ODY_GIC_ANB_BACKP_DISABLE_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GIC_ANB_BACKP_DISABLE_FUNC(void)645 static inline uint64_t ODY_GIC_ANB_BACKP_DISABLE_FUNC(void)
646 {
647 return 0x801010012000ll;
648 }
649
650 #define typedef_ODY_GIC_ANB_BACKP_DISABLE ody_gic_anb_backp_disable_t
651 #define bustype_ODY_GIC_ANB_BACKP_DISABLE CSR_TYPE_NCB
652 #define basename_ODY_GIC_ANB_BACKP_DISABLE "GIC_ANB_BACKP_DISABLE"
653 #define device_bar_ODY_GIC_ANB_BACKP_DISABLE 0x0 /* PF_BAR0 */
654 #define busnum_ODY_GIC_ANB_BACKP_DISABLE 0
655 #define arguments_ODY_GIC_ANB_BACKP_DISABLE -1, -1, -1, -1
656
657 /**
658 * Register (NCB) gic_anb_ncbi_np_ovr
659 *
660 * ANB NCBITXT NP Path CMD Overrides Register
661 */
662 union ody_gic_anb_ncbi_np_ovr {
663 uint64_t u;
664 struct ody_gic_anb_ncbi_np_ovr_s {
665 uint64_t anb_ncbi_np_msh_dst_ovr_vld : 1;
666 uint64_t anb_ncbi_np_msh_dst_ovr : 11;
667 uint64_t anb_ncbi_np_ns_ovr_vld : 1;
668 uint64_t anb_ncbi_np_ns_ovr : 1;
669 uint64_t anb_ncbi_np_paddr_ovr_vld : 1;
670 uint64_t anb_ncbi_np_paddr_ovr : 1;
671 uint64_t anb_ncbi_np_ro_ovr_vld : 1;
672 uint64_t anb_ncbi_np_ro_ovr : 1;
673 uint64_t anb_ncbi_np_mpadid_val_ovr_vld : 1;
674 uint64_t anb_ncbi_np_mpadid_val_ovr : 1;
675 uint64_t anb_ncbi_np_mpamdid_ovr_vld : 1;
676 uint64_t anb_ncbi_np_mpamdid_ovr : 10;
677 uint64_t anb_ncbi_np_ldd_frc : 1;
678 uint64_t reserved_32_63 : 32;
679 } s;
680 /* struct ody_gic_anb_ncbi_np_ovr_s cn; */
681 };
682 typedef union ody_gic_anb_ncbi_np_ovr ody_gic_anb_ncbi_np_ovr_t;
683
684 #define ODY_GIC_ANB_NCBI_NP_OVR ODY_GIC_ANB_NCBI_NP_OVR_FUNC()
685 static inline uint64_t ODY_GIC_ANB_NCBI_NP_OVR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GIC_ANB_NCBI_NP_OVR_FUNC(void)686 static inline uint64_t ODY_GIC_ANB_NCBI_NP_OVR_FUNC(void)
687 {
688 return 0x801010012020ll;
689 }
690
691 #define typedef_ODY_GIC_ANB_NCBI_NP_OVR ody_gic_anb_ncbi_np_ovr_t
692 #define bustype_ODY_GIC_ANB_NCBI_NP_OVR CSR_TYPE_NCB
693 #define basename_ODY_GIC_ANB_NCBI_NP_OVR "GIC_ANB_NCBI_NP_OVR"
694 #define device_bar_ODY_GIC_ANB_NCBI_NP_OVR 0x0 /* PF_BAR0 */
695 #define busnum_ODY_GIC_ANB_NCBI_NP_OVR 0
696 #define arguments_ODY_GIC_ANB_NCBI_NP_OVR -1, -1, -1, -1
697
698 /**
699 * Register (NCB) gic_anb_ncbi_p_ovr
700 *
701 * ANB NCBITXT P Overrides Register
702 */
703 union ody_gic_anb_ncbi_p_ovr {
704 uint64_t u;
705 struct ody_gic_anb_ncbi_p_ovr_s {
706 uint64_t anb_ncbi_p_msh_dst_ovr_vld : 1;
707 uint64_t anb_ncbi_p_msh_dst_ovr : 11;
708 uint64_t anb_ncbi_p_ns_ovr_vld : 1;
709 uint64_t anb_ncbi_p_ns_ovr : 1;
710 uint64_t anb_ncbi_p_paddr_ovr_vld : 1;
711 uint64_t anb_ncbi_p_paddr_ovr : 1;
712 uint64_t anb_ncbi_p_ro_ovr_vld : 1;
713 uint64_t anb_ncbi_p_ro_ovr : 1;
714 uint64_t anb_ncbi_p_mpadid_val_ovr_vld : 1;
715 uint64_t anb_ncbi_p_mpadid_val_ovr : 1;
716 uint64_t anb_ncbi_p_mpamdid_ovr_vld : 1;
717 uint64_t anb_ncbi_p_mpamdid_ovr : 10;
718 uint64_t anb_ncbi_p_stt_frc : 1;
719 uint64_t reserved_32_63 : 32;
720 } s;
721 /* struct ody_gic_anb_ncbi_p_ovr_s cn; */
722 };
723 typedef union ody_gic_anb_ncbi_p_ovr ody_gic_anb_ncbi_p_ovr_t;
724
725 #define ODY_GIC_ANB_NCBI_P_OVR ODY_GIC_ANB_NCBI_P_OVR_FUNC()
726 static inline uint64_t ODY_GIC_ANB_NCBI_P_OVR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GIC_ANB_NCBI_P_OVR_FUNC(void)727 static inline uint64_t ODY_GIC_ANB_NCBI_P_OVR_FUNC(void)
728 {
729 return 0x801010012010ll;
730 }
731
732 #define typedef_ODY_GIC_ANB_NCBI_P_OVR ody_gic_anb_ncbi_p_ovr_t
733 #define bustype_ODY_GIC_ANB_NCBI_P_OVR CSR_TYPE_NCB
734 #define basename_ODY_GIC_ANB_NCBI_P_OVR "GIC_ANB_NCBI_P_OVR"
735 #define device_bar_ODY_GIC_ANB_NCBI_P_OVR 0x0 /* PF_BAR0 */
736 #define busnum_ODY_GIC_ANB_NCBI_P_OVR 0
737 #define arguments_ODY_GIC_ANB_NCBI_P_OVR -1, -1, -1, -1
738
739 /**
740 * Register (NCB) gic_anb_ncbitx_status
741 *
742 * ANB AXISLV Block Status Register
743 */
744 union ody_gic_anb_ncbitx_status {
745 uint64_t u;
746 struct ody_gic_anb_ncbitx_status_s {
747 uint64_t anb_ncbitx_split_rd : 1;
748 uint64_t anb_ncbitx_split_wr : 1;
749 uint64_t reserved_2_63 : 62;
750 } s;
751 /* struct ody_gic_anb_ncbitx_status_s cn; */
752 };
753 typedef union ody_gic_anb_ncbitx_status ody_gic_anb_ncbitx_status_t;
754
755 #define ODY_GIC_ANB_NCBITX_STATUS ODY_GIC_ANB_NCBITX_STATUS_FUNC()
756 static inline uint64_t ODY_GIC_ANB_NCBITX_STATUS_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GIC_ANB_NCBITX_STATUS_FUNC(void)757 static inline uint64_t ODY_GIC_ANB_NCBITX_STATUS_FUNC(void)
758 {
759 return 0x801010012040ll;
760 }
761
762 #define typedef_ODY_GIC_ANB_NCBITX_STATUS ody_gic_anb_ncbitx_status_t
763 #define bustype_ODY_GIC_ANB_NCBITX_STATUS CSR_TYPE_NCB
764 #define basename_ODY_GIC_ANB_NCBITX_STATUS "GIC_ANB_NCBITX_STATUS"
765 #define device_bar_ODY_GIC_ANB_NCBITX_STATUS 0x0 /* PF_BAR0 */
766 #define busnum_ODY_GIC_ANB_NCBITX_STATUS 0
767 #define arguments_ODY_GIC_ANB_NCBITX_STATUS -1, -1, -1, -1
768
769 /**
770 * Register (NCB) gic_anb_ncborx_status
771 *
772 * ANB AXISLV Block Status Register
773 */
774 union ody_gic_anb_ncborx_status {
775 uint64_t u;
776 struct ody_gic_anb_ncborx_status_s {
777 uint64_t anb_ncborx_rcvd_unsupported_op : 1;
778 uint64_t anb_nbcorx_max_num_ncb_ld_exc : 1;
779 uint64_t anb_nbcorx_max_size_ncb_ld_exc : 1;
780 uint64_t anb_nbcorx_max_num_ncb_st_exc : 1;
781 uint64_t anb_nbcorx_max_size_ncb_st_exc : 1;
782 uint64_t reserved_5_63 : 59;
783 } s;
784 /* struct ody_gic_anb_ncborx_status_s cn; */
785 };
786 typedef union ody_gic_anb_ncborx_status ody_gic_anb_ncborx_status_t;
787
788 #define ODY_GIC_ANB_NCBORX_STATUS ODY_GIC_ANB_NCBORX_STATUS_FUNC()
789 static inline uint64_t ODY_GIC_ANB_NCBORX_STATUS_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GIC_ANB_NCBORX_STATUS_FUNC(void)790 static inline uint64_t ODY_GIC_ANB_NCBORX_STATUS_FUNC(void)
791 {
792 return 0x801010012050ll;
793 }
794
795 #define typedef_ODY_GIC_ANB_NCBORX_STATUS ody_gic_anb_ncborx_status_t
796 #define bustype_ODY_GIC_ANB_NCBORX_STATUS CSR_TYPE_NCB
797 #define basename_ODY_GIC_ANB_NCBORX_STATUS "GIC_ANB_NCBORX_STATUS"
798 #define device_bar_ODY_GIC_ANB_NCBORX_STATUS 0x0 /* PF_BAR0 */
799 #define busnum_ODY_GIC_ANB_NCBORX_STATUS 0
800 #define arguments_ODY_GIC_ANB_NCBORX_STATUS -1, -1, -1, -1
801
802 /**
803 * Register (NCB) gic_msix_pba#
804 *
805 * GIC MSI-X Pending Bit Array Registers
806 */
807 union ody_gic_msix_pbax {
808 uint64_t u;
809 struct ody_gic_msix_pbax_s {
810 uint64_t pend : 64;
811 } s;
812 /* struct ody_gic_msix_pbax_s cn; */
813 };
814 typedef union ody_gic_msix_pbax ody_gic_msix_pbax_t;
815
816 static inline uint64_t ODY_GIC_MSIX_PBAX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GIC_MSIX_PBAX(uint64_t a)817 static inline uint64_t ODY_GIC_MSIX_PBAX(uint64_t a)
818 {
819 if (a <= 1)
820 return 0x8010800f0000ll + 8ll * ((a) & 0x1);
821 __ody_csr_fatal("GIC_MSIX_PBAX", 1, a, 0, 0, 0, 0, 0);
822 }
823
824 #define typedef_ODY_GIC_MSIX_PBAX(a) ody_gic_msix_pbax_t
825 #define bustype_ODY_GIC_MSIX_PBAX(a) CSR_TYPE_NCB
826 #define basename_ODY_GIC_MSIX_PBAX(a) "GIC_MSIX_PBAX"
827 #define device_bar_ODY_GIC_MSIX_PBAX(a) 0x4 /* PF_BAR4 */
828 #define busnum_ODY_GIC_MSIX_PBAX(a) (a)
829 #define arguments_ODY_GIC_MSIX_PBAX(a) (a), -1, -1, -1
830
831 /**
832 * Register (NCB) gic_msix_vec#_addr
833 *
834 * GIC MSI-X Vector-Table Address Register
835 * This register is the MSI-X vector table, indexed by the GIC_INT_VEC_E enumeration.
836 */
837 union ody_gic_msix_vecx_addr {
838 uint64_t u;
839 struct ody_gic_msix_vecx_addr_s {
840 uint64_t secvec : 1;
841 uint64_t reserved_1 : 1;
842 uint64_t addr : 51;
843 uint64_t reserved_53_63 : 11;
844 } s;
845 /* struct ody_gic_msix_vecx_addr_s cn; */
846 };
847 typedef union ody_gic_msix_vecx_addr ody_gic_msix_vecx_addr_t;
848
849 static inline uint64_t ODY_GIC_MSIX_VECX_ADDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GIC_MSIX_VECX_ADDR(uint64_t a)850 static inline uint64_t ODY_GIC_MSIX_VECX_ADDR(uint64_t a)
851 {
852 if (a <= 82)
853 return 0x801080000000ll + 0x10ll * ((a) & 0x7f);
854 __ody_csr_fatal("GIC_MSIX_VECX_ADDR", 1, a, 0, 0, 0, 0, 0);
855 }
856
857 #define typedef_ODY_GIC_MSIX_VECX_ADDR(a) ody_gic_msix_vecx_addr_t
858 #define bustype_ODY_GIC_MSIX_VECX_ADDR(a) CSR_TYPE_NCB
859 #define basename_ODY_GIC_MSIX_VECX_ADDR(a) "GIC_MSIX_VECX_ADDR"
860 #define device_bar_ODY_GIC_MSIX_VECX_ADDR(a) 0x4 /* PF_BAR4 */
861 #define busnum_ODY_GIC_MSIX_VECX_ADDR(a) (a)
862 #define arguments_ODY_GIC_MSIX_VECX_ADDR(a) (a), -1, -1, -1
863
864 /**
865 * Register (NCB) gic_msix_vec#_ctl
866 *
867 * GIC MSI-X Vector-Table Control and Data Register
868 * This register is the MSI-X vector table, indexed by the GIC_INT_VEC_E enumeration.
869 */
870 union ody_gic_msix_vecx_ctl {
871 uint64_t u;
872 struct ody_gic_msix_vecx_ctl_s {
873 uint64_t data : 32;
874 uint64_t mask : 1;
875 uint64_t reserved_33_63 : 31;
876 } s;
877 /* struct ody_gic_msix_vecx_ctl_s cn; */
878 };
879 typedef union ody_gic_msix_vecx_ctl ody_gic_msix_vecx_ctl_t;
880
881 static inline uint64_t ODY_GIC_MSIX_VECX_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GIC_MSIX_VECX_CTL(uint64_t a)882 static inline uint64_t ODY_GIC_MSIX_VECX_CTL(uint64_t a)
883 {
884 if (a <= 82)
885 return 0x801080000008ll + 0x10ll * ((a) & 0x7f);
886 __ody_csr_fatal("GIC_MSIX_VECX_CTL", 1, a, 0, 0, 0, 0, 0);
887 }
888
889 #define typedef_ODY_GIC_MSIX_VECX_CTL(a) ody_gic_msix_vecx_ctl_t
890 #define bustype_ODY_GIC_MSIX_VECX_CTL(a) CSR_TYPE_NCB
891 #define basename_ODY_GIC_MSIX_VECX_CTL(a) "GIC_MSIX_VECX_CTL"
892 #define device_bar_ODY_GIC_MSIX_VECX_CTL(a) 0x4 /* PF_BAR4 */
893 #define busnum_ODY_GIC_MSIX_VECX_CTL(a) (a)
894 #define arguments_ODY_GIC_MSIX_VECX_CTL(a) (a), -1, -1, -1
895
896 /**
897 * Register (NCB) gic_wake_int_ena_w1c#
898 *
899 * GIC Wake Interrupt Enable Set Register
900 * This register clears interrupt enable bits.
901 */
902 union ody_gic_wake_int_ena_w1cx {
903 uint64_t u;
904 struct ody_gic_wake_int_ena_w1cx_s {
905 uint64_t pe_wake : 1;
906 uint64_t reserved_1_63 : 63;
907 } s;
908 /* struct ody_gic_wake_int_ena_w1cx_s cn; */
909 };
910 typedef union ody_gic_wake_int_ena_w1cx ody_gic_wake_int_ena_w1cx_t;
911
912 static inline uint64_t ODY_GIC_WAKE_INT_ENA_W1CX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GIC_WAKE_INT_ENA_W1CX(uint64_t a)913 static inline uint64_t ODY_GIC_WAKE_INT_ENA_W1CX(uint64_t a)
914 {
915 if (a <= 81)
916 return 0x801010001018ll + 0x20ll * ((a) & 0x7f);
917 __ody_csr_fatal("GIC_WAKE_INT_ENA_W1CX", 1, a, 0, 0, 0, 0, 0);
918 }
919
920 #define typedef_ODY_GIC_WAKE_INT_ENA_W1CX(a) ody_gic_wake_int_ena_w1cx_t
921 #define bustype_ODY_GIC_WAKE_INT_ENA_W1CX(a) CSR_TYPE_NCB
922 #define basename_ODY_GIC_WAKE_INT_ENA_W1CX(a) "GIC_WAKE_INT_ENA_W1CX"
923 #define device_bar_ODY_GIC_WAKE_INT_ENA_W1CX(a) 0x0 /* PF_BAR0 */
924 #define busnum_ODY_GIC_WAKE_INT_ENA_W1CX(a) (a)
925 #define arguments_ODY_GIC_WAKE_INT_ENA_W1CX(a) (a), -1, -1, -1
926
927 /**
928 * Register (NCB) gic_wake_int_ena_w1s#
929 *
930 * GIC Wake Interrupt Enable Set Register
931 * This register sets interrupt enable bits.
932 */
933 union ody_gic_wake_int_ena_w1sx {
934 uint64_t u;
935 struct ody_gic_wake_int_ena_w1sx_s {
936 uint64_t pe_wake : 1;
937 uint64_t reserved_1_63 : 63;
938 } s;
939 /* struct ody_gic_wake_int_ena_w1sx_s cn; */
940 };
941 typedef union ody_gic_wake_int_ena_w1sx ody_gic_wake_int_ena_w1sx_t;
942
943 static inline uint64_t ODY_GIC_WAKE_INT_ENA_W1SX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GIC_WAKE_INT_ENA_W1SX(uint64_t a)944 static inline uint64_t ODY_GIC_WAKE_INT_ENA_W1SX(uint64_t a)
945 {
946 if (a <= 81)
947 return 0x801010001010ll + 0x20ll * ((a) & 0x7f);
948 __ody_csr_fatal("GIC_WAKE_INT_ENA_W1SX", 1, a, 0, 0, 0, 0, 0);
949 }
950
951 #define typedef_ODY_GIC_WAKE_INT_ENA_W1SX(a) ody_gic_wake_int_ena_w1sx_t
952 #define bustype_ODY_GIC_WAKE_INT_ENA_W1SX(a) CSR_TYPE_NCB
953 #define basename_ODY_GIC_WAKE_INT_ENA_W1SX(a) "GIC_WAKE_INT_ENA_W1SX"
954 #define device_bar_ODY_GIC_WAKE_INT_ENA_W1SX(a) 0x0 /* PF_BAR0 */
955 #define busnum_ODY_GIC_WAKE_INT_ENA_W1SX(a) (a)
956 #define arguments_ODY_GIC_WAKE_INT_ENA_W1SX(a) (a), -1, -1, -1
957
958 /**
959 * Register (NCB) gic_wake_int_w1c#
960 *
961 * GIC Wake Interrupt Clear Register
962 */
963 union ody_gic_wake_int_w1cx {
964 uint64_t u;
965 struct ody_gic_wake_int_w1cx_s {
966 uint64_t pe_wake : 1;
967 uint64_t reserved_1_63 : 63;
968 } s;
969 /* struct ody_gic_wake_int_w1cx_s cn; */
970 };
971 typedef union ody_gic_wake_int_w1cx ody_gic_wake_int_w1cx_t;
972
973 static inline uint64_t ODY_GIC_WAKE_INT_W1CX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GIC_WAKE_INT_W1CX(uint64_t a)974 static inline uint64_t ODY_GIC_WAKE_INT_W1CX(uint64_t a)
975 {
976 if (a <= 81)
977 return 0x801010001000ll + 0x20ll * ((a) & 0x7f);
978 __ody_csr_fatal("GIC_WAKE_INT_W1CX", 1, a, 0, 0, 0, 0, 0);
979 }
980
981 #define typedef_ODY_GIC_WAKE_INT_W1CX(a) ody_gic_wake_int_w1cx_t
982 #define bustype_ODY_GIC_WAKE_INT_W1CX(a) CSR_TYPE_NCB
983 #define basename_ODY_GIC_WAKE_INT_W1CX(a) "GIC_WAKE_INT_W1CX"
984 #define device_bar_ODY_GIC_WAKE_INT_W1CX(a) 0x0 /* PF_BAR0 */
985 #define busnum_ODY_GIC_WAKE_INT_W1CX(a) (a)
986 #define arguments_ODY_GIC_WAKE_INT_W1CX(a) (a), -1, -1, -1
987
988 /**
989 * Register (NCB) gic_wake_int_w1s#
990 *
991 * GIC Wake Interrupt Set Register
992 * This register sets interrupt bits.
993 */
994 union ody_gic_wake_int_w1sx {
995 uint64_t u;
996 struct ody_gic_wake_int_w1sx_s {
997 uint64_t pe_wake : 1;
998 uint64_t reserved_1_63 : 63;
999 } s;
1000 /* struct ody_gic_wake_int_w1sx_s cn; */
1001 };
1002 typedef union ody_gic_wake_int_w1sx ody_gic_wake_int_w1sx_t;
1003
1004 static inline uint64_t ODY_GIC_WAKE_INT_W1SX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GIC_WAKE_INT_W1SX(uint64_t a)1005 static inline uint64_t ODY_GIC_WAKE_INT_W1SX(uint64_t a)
1006 {
1007 if (a <= 81)
1008 return 0x801010001008ll + 0x20ll * ((a) & 0x7f);
1009 __ody_csr_fatal("GIC_WAKE_INT_W1SX", 1, a, 0, 0, 0, 0, 0);
1010 }
1011
1012 #define typedef_ODY_GIC_WAKE_INT_W1SX(a) ody_gic_wake_int_w1sx_t
1013 #define bustype_ODY_GIC_WAKE_INT_W1SX(a) CSR_TYPE_NCB
1014 #define basename_ODY_GIC_WAKE_INT_W1SX(a) "GIC_WAKE_INT_W1SX"
1015 #define device_bar_ODY_GIC_WAKE_INT_W1SX(a) 0x0 /* PF_BAR0 */
1016 #define busnum_ODY_GIC_WAKE_INT_W1SX(a) (a)
1017 #define arguments_ODY_GIC_WAKE_INT_W1SX(a) (a), -1, -1, -1
1018
1019 /**
1020 * Register (NCB32b) gica_cidr0
1021 *
1022 * GICA Cidr0 Register
1023 * The GICA_CIDR0 characteristics are:
1024 *
1025 * * Purpose
1026 * This register is one of the Component Identification Registers and returns the first
1027 * part of the Preamble.
1028 *
1029 * * Usage constraints
1030 * There are no usage constraints.
1031 */
1032 union ody_gica_cidr0 {
1033 uint32_t u;
1034 struct ody_gica_cidr0_s {
1035 uint32_t prmbl_0 : 8;
1036 uint32_t reserved_8_31 : 24;
1037 } s;
1038 /* struct ody_gica_cidr0_s cn; */
1039 };
1040 typedef union ody_gica_cidr0 ody_gica_cidr0_t;
1041
1042 #define ODY_GICA_CIDR0 ODY_GICA_CIDR0_FUNC()
1043 static inline uint64_t ODY_GICA_CIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_CIDR0_FUNC(void)1044 static inline uint64_t ODY_GICA_CIDR0_FUNC(void)
1045 {
1046 return 0x80100001fff0ll;
1047 }
1048
1049 #define typedef_ODY_GICA_CIDR0 ody_gica_cidr0_t
1050 #define bustype_ODY_GICA_CIDR0 CSR_TYPE_NCB32b
1051 #define basename_ODY_GICA_CIDR0 "GICA_CIDR0"
1052 #define device_bar_ODY_GICA_CIDR0 0x0 /* PF_BAR0 */
1053 #define busnum_ODY_GICA_CIDR0 0
1054 #define arguments_ODY_GICA_CIDR0 -1, -1, -1, -1
1055
1056 /**
1057 * Register (NCB32b) gica_cidr1
1058 *
1059 * GICA Cidr1 Register
1060 * The GICA_CIDR1 characteristics are:
1061 *
1062 * * Purpose
1063 * This register is one of the Component Identification Registers and returns the
1064 * second part of the Preamble as well as the Component Class.
1065 *
1066 * * Usage constraints
1067 * There are no usage constraints.
1068 */
1069 union ody_gica_cidr1 {
1070 uint32_t u;
1071 struct ody_gica_cidr1_s {
1072 uint32_t prmbl_1 : 4;
1073 uint32_t class_f : 4;
1074 uint32_t reserved_8_31 : 24;
1075 } s;
1076 /* struct ody_gica_cidr1_s cn; */
1077 };
1078 typedef union ody_gica_cidr1 ody_gica_cidr1_t;
1079
1080 #define ODY_GICA_CIDR1 ODY_GICA_CIDR1_FUNC()
1081 static inline uint64_t ODY_GICA_CIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_CIDR1_FUNC(void)1082 static inline uint64_t ODY_GICA_CIDR1_FUNC(void)
1083 {
1084 return 0x80100001fff4ll;
1085 }
1086
1087 #define typedef_ODY_GICA_CIDR1 ody_gica_cidr1_t
1088 #define bustype_ODY_GICA_CIDR1 CSR_TYPE_NCB32b
1089 #define basename_ODY_GICA_CIDR1 "GICA_CIDR1"
1090 #define device_bar_ODY_GICA_CIDR1 0x0 /* PF_BAR0 */
1091 #define busnum_ODY_GICA_CIDR1 0
1092 #define arguments_ODY_GICA_CIDR1 -1, -1, -1, -1
1093
1094 /**
1095 * Register (NCB32b) gica_cidr2
1096 *
1097 * GICA Cidr2 Register
1098 * The GICA_CIDR2 characteristics are:
1099 *
1100 * * Purpose
1101 * This register is one of the Component Identification Registers and returns the third
1102 * part of the Preamble.
1103 *
1104 * * Usage constraints
1105 * There are no usage constraints.
1106 */
1107 union ody_gica_cidr2 {
1108 uint32_t u;
1109 struct ody_gica_cidr2_s {
1110 uint32_t prmbl_2 : 8;
1111 uint32_t reserved_8_31 : 24;
1112 } s;
1113 /* struct ody_gica_cidr2_s cn; */
1114 };
1115 typedef union ody_gica_cidr2 ody_gica_cidr2_t;
1116
1117 #define ODY_GICA_CIDR2 ODY_GICA_CIDR2_FUNC()
1118 static inline uint64_t ODY_GICA_CIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_CIDR2_FUNC(void)1119 static inline uint64_t ODY_GICA_CIDR2_FUNC(void)
1120 {
1121 return 0x80100001fff8ll;
1122 }
1123
1124 #define typedef_ODY_GICA_CIDR2 ody_gica_cidr2_t
1125 #define bustype_ODY_GICA_CIDR2 CSR_TYPE_NCB32b
1126 #define basename_ODY_GICA_CIDR2 "GICA_CIDR2"
1127 #define device_bar_ODY_GICA_CIDR2 0x0 /* PF_BAR0 */
1128 #define busnum_ODY_GICA_CIDR2 0
1129 #define arguments_ODY_GICA_CIDR2 -1, -1, -1, -1
1130
1131 /**
1132 * Register (NCB32b) gica_cidr3
1133 *
1134 * GICA Cidr3 Register
1135 * The GICA_CIDR3 characteristics are:
1136 *
1137 * * Purpose
1138 * This register is one of the Component Identification Registers and returns the
1139 * fourth part of the Preamble.
1140 *
1141 * * Usage constraints
1142 * There are no usage constraints.
1143 */
1144 union ody_gica_cidr3 {
1145 uint32_t u;
1146 struct ody_gica_cidr3_s {
1147 uint32_t prmbl_3 : 8;
1148 uint32_t reserved_8_31 : 24;
1149 } s;
1150 /* struct ody_gica_cidr3_s cn; */
1151 };
1152 typedef union ody_gica_cidr3 ody_gica_cidr3_t;
1153
1154 #define ODY_GICA_CIDR3 ODY_GICA_CIDR3_FUNC()
1155 static inline uint64_t ODY_GICA_CIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_CIDR3_FUNC(void)1156 static inline uint64_t ODY_GICA_CIDR3_FUNC(void)
1157 {
1158 return 0x80100001fffcll;
1159 }
1160
1161 #define typedef_ODY_GICA_CIDR3 ody_gica_cidr3_t
1162 #define bustype_ODY_GICA_CIDR3 CSR_TYPE_NCB32b
1163 #define basename_ODY_GICA_CIDR3 "GICA_CIDR3"
1164 #define device_bar_ODY_GICA_CIDR3 0x0 /* PF_BAR0 */
1165 #define busnum_ODY_GICA_CIDR3 0
1166 #define arguments_ODY_GICA_CIDR3 -1, -1, -1, -1
1167
1168 /**
1169 * Register (NCB32b) gica_clrspi_nsr
1170 *
1171 * GICA Clrspi Nsr Register
1172 * The GICA_CLRSPI_NSR characteristics are:
1173 *
1174 * * Purpose
1175 * Removes the pending state to a valid SPI if permitted by the Security state of the
1176 * access and the GICD(A)_NSACR[E] value for that SPI.
1177 * A write to this register changes the state of an pending SPI to inactive, and the
1178 * state of an active and penmding SPI to active.
1179 *
1180 * * Usage constraints
1181 * The function of this register depends on whether the targeted SPI is configured to
1182 * be an edge-triggered or level-sensitive interrupt:
1183 *
1184 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
1185 * the pending state to the targeted interrupt. It will stop being pending on
1186 * activation, or if the pending state is removed by a write to GICx_CLRSPI_NSR,
1187 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
1188 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
1189 * the pending state to the targeted interrupt. It will remain pending until it is
1190 * deasserted by a write to GICx_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
1191 * activated between having the pending state added and being deactivated, then the
1192 * interrupt will be active and pending.
1193 *
1194 * Writes to this register have no effect if:
1195 *
1196 * * The value written specifies a Secure SPI, the value is written by a Non-secure
1197 * access, and the value of the corresponding GICD(A)_NSACR register is less than
1198 * 0b10.
1199 * * The value written specifies an invalid SPI.
1200 * * The SPI is not pending.
1201 *
1202 * When GICD(A)_CTLR.DS==1, this register provides functionality for all SPIs.
1203 */
1204 union ody_gica_clrspi_nsr {
1205 uint32_t u;
1206 struct ody_gica_clrspi_nsr_s {
1207 uint32_t id : 16;
1208 uint32_t reserved_16_31 : 16;
1209 } s;
1210 /* struct ody_gica_clrspi_nsr_s cn; */
1211 };
1212 typedef union ody_gica_clrspi_nsr ody_gica_clrspi_nsr_t;
1213
1214 #define ODY_GICA_CLRSPI_NSR ODY_GICA_CLRSPI_NSR_FUNC()
1215 static inline uint64_t ODY_GICA_CLRSPI_NSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_CLRSPI_NSR_FUNC(void)1216 static inline uint64_t ODY_GICA_CLRSPI_NSR_FUNC(void)
1217 {
1218 return 0x801000010048ll;
1219 }
1220
1221 #define typedef_ODY_GICA_CLRSPI_NSR ody_gica_clrspi_nsr_t
1222 #define bustype_ODY_GICA_CLRSPI_NSR CSR_TYPE_NCB32b
1223 #define basename_ODY_GICA_CLRSPI_NSR "GICA_CLRSPI_NSR"
1224 #define device_bar_ODY_GICA_CLRSPI_NSR 0x0 /* PF_BAR0 */
1225 #define busnum_ODY_GICA_CLRSPI_NSR 0
1226 #define arguments_ODY_GICA_CLRSPI_NSR -1, -1, -1, -1
1227
1228 /**
1229 * Register (NCB32b) gica_clrspi_sr
1230 *
1231 * GICA Clrspi Sr Register
1232 * The GICA_CLRSPI_SR characteristics are:
1233 *
1234 * * Purpose
1235 * Removes the pending state from a valid SPI.
1236 * A write to this register changes the state of a pending SPI to inactive, and the
1237 * state of an active and pending SPI to active.
1238 *
1239 * * Usage constraints
1240 * The function of this register depends on whether the targeted SPI is configured to
1241 * be an edge-triggered or level-sensitive interrupt:
1242 *
1243 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
1244 * the pending state to the targeted interrupt. It will stop being pending on
1245 * activation, or if the pending state is removed by a write to GICx_CLRSPI_NSR,
1246 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
1247 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
1248 * the pending state to the targeted interrupt. It will remain pending until it is
1249 * deasserted by a write to GICx_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
1250 * activated between having the pending state added and being deactivated, then the
1251 * interrupt will be active and pending.
1252 *
1253 * Writes to this register have no effect if:
1254 *
1255 * * The value is written by a Non-secure access.
1256 * * The value written specifies an invalid SPI.
1257 * * The SPI is not pending.
1258 *
1259 * When GICD(A)_CTLR.DS==1, this register is WI.
1260 * When GICD(A)_CTLR.DS==0, only secure-access.
1261 */
1262 union ody_gica_clrspi_sr {
1263 uint32_t u;
1264 struct ody_gica_clrspi_sr_s {
1265 uint32_t id : 16;
1266 uint32_t reserved_16_31 : 16;
1267 } s;
1268 /* struct ody_gica_clrspi_sr_s cn; */
1269 };
1270 typedef union ody_gica_clrspi_sr ody_gica_clrspi_sr_t;
1271
1272 #define ODY_GICA_CLRSPI_SR ODY_GICA_CLRSPI_SR_FUNC()
1273 static inline uint64_t ODY_GICA_CLRSPI_SR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_CLRSPI_SR_FUNC(void)1274 static inline uint64_t ODY_GICA_CLRSPI_SR_FUNC(void)
1275 {
1276 return 0x801000010058ll;
1277 }
1278
1279 #define typedef_ODY_GICA_CLRSPI_SR ody_gica_clrspi_sr_t
1280 #define bustype_ODY_GICA_CLRSPI_SR CSR_TYPE_NCB32b
1281 #define basename_ODY_GICA_CLRSPI_SR "GICA_CLRSPI_SR"
1282 #define device_bar_ODY_GICA_CLRSPI_SR 0x0 /* PF_BAR0 */
1283 #define busnum_ODY_GICA_CLRSPI_SR 0
1284 #define arguments_ODY_GICA_CLRSPI_SR -1, -1, -1, -1
1285
1286 /**
1287 * Register (NCB32b) gica_iidr
1288 *
1289 * GICA Iidr Register
1290 * The GICA_IIDR characteristics are:
1291 *
1292 * * Purpose
1293 * This register provides information about the implementer and revision of the
1294 * message-based Distributor page.
1295 *
1296 * * Usage constraints
1297 * There are no usage constraints.
1298 */
1299 union ody_gica_iidr {
1300 uint32_t u;
1301 struct ody_gica_iidr_s {
1302 uint32_t implementer : 12;
1303 uint32_t revision : 4;
1304 uint32_t variant : 4;
1305 uint32_t reserved_20_23 : 4;
1306 uint32_t productid : 8;
1307 } s;
1308 /* struct ody_gica_iidr_s cn; */
1309 };
1310 typedef union ody_gica_iidr ody_gica_iidr_t;
1311
1312 #define ODY_GICA_IIDR ODY_GICA_IIDR_FUNC()
1313 static inline uint64_t ODY_GICA_IIDR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_IIDR_FUNC(void)1314 static inline uint64_t ODY_GICA_IIDR_FUNC(void)
1315 {
1316 return 0x801000010fccll;
1317 }
1318
1319 #define typedef_ODY_GICA_IIDR ody_gica_iidr_t
1320 #define bustype_ODY_GICA_IIDR CSR_TYPE_NCB32b
1321 #define basename_ODY_GICA_IIDR "GICA_IIDR"
1322 #define device_bar_ODY_GICA_IIDR 0x0 /* PF_BAR0 */
1323 #define busnum_ODY_GICA_IIDR 0
1324 #define arguments_ODY_GICA_IIDR -1, -1, -1, -1
1325
1326 /**
1327 * Register (NCB32b) gica_pidr0
1328 *
1329 * GICA Pidr0 Register
1330 * The GICA_PIDR0 characteristics are:
1331 *
1332 * * Purpose
1333 * This register returns byte[0] of the peripheral ID of the message-based Distributor page.
1334 *
1335 * * Usage constraints
1336 * There are no usage constraints.
1337 */
1338 union ody_gica_pidr0 {
1339 uint32_t u;
1340 struct ody_gica_pidr0_s {
1341 uint32_t part_0 : 8;
1342 uint32_t reserved_8_31 : 24;
1343 } s;
1344 /* struct ody_gica_pidr0_s cn; */
1345 };
1346 typedef union ody_gica_pidr0 ody_gica_pidr0_t;
1347
1348 #define ODY_GICA_PIDR0 ODY_GICA_PIDR0_FUNC()
1349 static inline uint64_t ODY_GICA_PIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_PIDR0_FUNC(void)1350 static inline uint64_t ODY_GICA_PIDR0_FUNC(void)
1351 {
1352 return 0x80100001ffe0ll;
1353 }
1354
1355 #define typedef_ODY_GICA_PIDR0 ody_gica_pidr0_t
1356 #define bustype_ODY_GICA_PIDR0 CSR_TYPE_NCB32b
1357 #define basename_ODY_GICA_PIDR0 "GICA_PIDR0"
1358 #define device_bar_ODY_GICA_PIDR0 0x0 /* PF_BAR0 */
1359 #define busnum_ODY_GICA_PIDR0 0
1360 #define arguments_ODY_GICA_PIDR0 -1, -1, -1, -1
1361
1362 /**
1363 * Register (NCB32b) gica_pidr1
1364 *
1365 * GICA Pidr1 Register
1366 * The GICA_PIDR1 characteristics are:
1367 *
1368 * * Purpose
1369 * This register returns byte[1] of the peripheral ID of the message-based Distributor page.
1370 *
1371 * * Usage constraints
1372 * There are no usage constraints.
1373 */
1374 union ody_gica_pidr1 {
1375 uint32_t u;
1376 struct ody_gica_pidr1_s {
1377 uint32_t part_1 : 4;
1378 uint32_t des_0 : 4;
1379 uint32_t reserved_8_31 : 24;
1380 } s;
1381 /* struct ody_gica_pidr1_s cn; */
1382 };
1383 typedef union ody_gica_pidr1 ody_gica_pidr1_t;
1384
1385 #define ODY_GICA_PIDR1 ODY_GICA_PIDR1_FUNC()
1386 static inline uint64_t ODY_GICA_PIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_PIDR1_FUNC(void)1387 static inline uint64_t ODY_GICA_PIDR1_FUNC(void)
1388 {
1389 return 0x80100001ffe4ll;
1390 }
1391
1392 #define typedef_ODY_GICA_PIDR1 ody_gica_pidr1_t
1393 #define bustype_ODY_GICA_PIDR1 CSR_TYPE_NCB32b
1394 #define basename_ODY_GICA_PIDR1 "GICA_PIDR1"
1395 #define device_bar_ODY_GICA_PIDR1 0x0 /* PF_BAR0 */
1396 #define busnum_ODY_GICA_PIDR1 0
1397 #define arguments_ODY_GICA_PIDR1 -1, -1, -1, -1
1398
1399 /**
1400 * Register (NCB32b) gica_pidr2
1401 *
1402 * GICA Pidr2 Register
1403 * The GICA_PIDR2 characteristics are:
1404 *
1405 * * Purpose
1406 * This register returns byte[2] of the peripheral ID of the message-based Distributor page.
1407 *
1408 * * Usage constraints
1409 * There are no usage constraints.
1410 */
1411 union ody_gica_pidr2 {
1412 uint32_t u;
1413 struct ody_gica_pidr2_s {
1414 uint32_t des_1 : 3;
1415 uint32_t jedec : 1;
1416 uint32_t revision : 4;
1417 uint32_t reserved_8_31 : 24;
1418 } s;
1419 /* struct ody_gica_pidr2_s cn; */
1420 };
1421 typedef union ody_gica_pidr2 ody_gica_pidr2_t;
1422
1423 #define ODY_GICA_PIDR2 ODY_GICA_PIDR2_FUNC()
1424 static inline uint64_t ODY_GICA_PIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_PIDR2_FUNC(void)1425 static inline uint64_t ODY_GICA_PIDR2_FUNC(void)
1426 {
1427 return 0x80100001ffe8ll;
1428 }
1429
1430 #define typedef_ODY_GICA_PIDR2 ody_gica_pidr2_t
1431 #define bustype_ODY_GICA_PIDR2 CSR_TYPE_NCB32b
1432 #define basename_ODY_GICA_PIDR2 "GICA_PIDR2"
1433 #define device_bar_ODY_GICA_PIDR2 0x0 /* PF_BAR0 */
1434 #define busnum_ODY_GICA_PIDR2 0
1435 #define arguments_ODY_GICA_PIDR2 -1, -1, -1, -1
1436
1437 /**
1438 * Register (NCB32b) gica_pidr3
1439 *
1440 * GICA Pidr3 Register
1441 * The GICA_PIDR3 characteristics are:
1442 *
1443 * * Purpose
1444 * This register returns byte[3] of the peripheral ID of the message-based Distributor page.
1445 *
1446 * * Usage constraints
1447 * There are no usage constraints.
1448 */
1449 union ody_gica_pidr3 {
1450 uint32_t u;
1451 struct ody_gica_pidr3_s {
1452 uint32_t cmod : 3;
1453 uint32_t reserved_3 : 1;
1454 uint32_t revand : 4;
1455 uint32_t reserved_8_31 : 24;
1456 } s;
1457 /* struct ody_gica_pidr3_s cn; */
1458 };
1459 typedef union ody_gica_pidr3 ody_gica_pidr3_t;
1460
1461 #define ODY_GICA_PIDR3 ODY_GICA_PIDR3_FUNC()
1462 static inline uint64_t ODY_GICA_PIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_PIDR3_FUNC(void)1463 static inline uint64_t ODY_GICA_PIDR3_FUNC(void)
1464 {
1465 return 0x80100001ffecll;
1466 }
1467
1468 #define typedef_ODY_GICA_PIDR3 ody_gica_pidr3_t
1469 #define bustype_ODY_GICA_PIDR3 CSR_TYPE_NCB32b
1470 #define basename_ODY_GICA_PIDR3 "GICA_PIDR3"
1471 #define device_bar_ODY_GICA_PIDR3 0x0 /* PF_BAR0 */
1472 #define busnum_ODY_GICA_PIDR3 0
1473 #define arguments_ODY_GICA_PIDR3 -1, -1, -1, -1
1474
1475 /**
1476 * Register (NCB32b) gica_pidr4
1477 *
1478 * GICA Pidr4 Register
1479 * The GICA_PIDR4 characteristics are:
1480 *
1481 * * Purpose
1482 * This register returns byte[4] of the peripheral ID of the message-based Distributor page.
1483 *
1484 * * Usage constraints
1485 * There are no usage constraints.
1486 */
1487 union ody_gica_pidr4 {
1488 uint32_t u;
1489 struct ody_gica_pidr4_s {
1490 uint32_t des_2 : 4;
1491 uint32_t size : 4;
1492 uint32_t reserved_8_31 : 24;
1493 } s;
1494 /* struct ody_gica_pidr4_s cn; */
1495 };
1496 typedef union ody_gica_pidr4 ody_gica_pidr4_t;
1497
1498 #define ODY_GICA_PIDR4 ODY_GICA_PIDR4_FUNC()
1499 static inline uint64_t ODY_GICA_PIDR4_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_PIDR4_FUNC(void)1500 static inline uint64_t ODY_GICA_PIDR4_FUNC(void)
1501 {
1502 return 0x80100001ffd0ll;
1503 }
1504
1505 #define typedef_ODY_GICA_PIDR4 ody_gica_pidr4_t
1506 #define bustype_ODY_GICA_PIDR4 CSR_TYPE_NCB32b
1507 #define basename_ODY_GICA_PIDR4 "GICA_PIDR4"
1508 #define device_bar_ODY_GICA_PIDR4 0x0 /* PF_BAR0 */
1509 #define busnum_ODY_GICA_PIDR4 0
1510 #define arguments_ODY_GICA_PIDR4 -1, -1, -1, -1
1511
1512 /**
1513 * Register (NCB32b) gica_pidr5
1514 *
1515 * GICA Pidr5 Register
1516 * The GICA_PIDR5 characteristics are:
1517 *
1518 * * Purpose
1519 * This register returns byte[5] of the peripheral ID of the message-based Distributor page.
1520 *
1521 * * Usage constraints
1522 * There are no usage constraints.
1523 */
1524 union ody_gica_pidr5 {
1525 uint32_t u;
1526 struct ody_gica_pidr5_s {
1527 uint32_t reserved_0_31 : 32;
1528 } s;
1529 struct ody_gica_pidr5_cn {
1530 uint32_t reserved_0_7 : 8;
1531 uint32_t reserved_8_31 : 24;
1532 } cn;
1533 };
1534 typedef union ody_gica_pidr5 ody_gica_pidr5_t;
1535
1536 #define ODY_GICA_PIDR5 ODY_GICA_PIDR5_FUNC()
1537 static inline uint64_t ODY_GICA_PIDR5_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_PIDR5_FUNC(void)1538 static inline uint64_t ODY_GICA_PIDR5_FUNC(void)
1539 {
1540 return 0x80100001ffd4ll;
1541 }
1542
1543 #define typedef_ODY_GICA_PIDR5 ody_gica_pidr5_t
1544 #define bustype_ODY_GICA_PIDR5 CSR_TYPE_NCB32b
1545 #define basename_ODY_GICA_PIDR5 "GICA_PIDR5"
1546 #define device_bar_ODY_GICA_PIDR5 0x0 /* PF_BAR0 */
1547 #define busnum_ODY_GICA_PIDR5 0
1548 #define arguments_ODY_GICA_PIDR5 -1, -1, -1, -1
1549
1550 /**
1551 * Register (NCB32b) gica_pidr6
1552 *
1553 * GICA Pidr6 Register
1554 * The GICA_PIDR6 characteristics are:
1555 *
1556 * * Purpose
1557 * This register returns byte[6] of the peripheral ID of the message-based Distributor page.
1558 *
1559 * * Usage constraints
1560 * There are no usage constraints.
1561 */
1562 union ody_gica_pidr6 {
1563 uint32_t u;
1564 struct ody_gica_pidr6_s {
1565 uint32_t reserved_0_31 : 32;
1566 } s;
1567 struct ody_gica_pidr6_cn {
1568 uint32_t reserved_0_7 : 8;
1569 uint32_t reserved_8_31 : 24;
1570 } cn;
1571 };
1572 typedef union ody_gica_pidr6 ody_gica_pidr6_t;
1573
1574 #define ODY_GICA_PIDR6 ODY_GICA_PIDR6_FUNC()
1575 static inline uint64_t ODY_GICA_PIDR6_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_PIDR6_FUNC(void)1576 static inline uint64_t ODY_GICA_PIDR6_FUNC(void)
1577 {
1578 return 0x80100001ffd8ll;
1579 }
1580
1581 #define typedef_ODY_GICA_PIDR6 ody_gica_pidr6_t
1582 #define bustype_ODY_GICA_PIDR6 CSR_TYPE_NCB32b
1583 #define basename_ODY_GICA_PIDR6 "GICA_PIDR6"
1584 #define device_bar_ODY_GICA_PIDR6 0x0 /* PF_BAR0 */
1585 #define busnum_ODY_GICA_PIDR6 0
1586 #define arguments_ODY_GICA_PIDR6 -1, -1, -1, -1
1587
1588 /**
1589 * Register (NCB32b) gica_pidr7
1590 *
1591 * GICA Pidr7 Register
1592 * The GICA_PIDR7 characteristics are:
1593 *
1594 * * Purpose
1595 * This register returns byte[7] of the peripheral ID of the message-based Distributor page.
1596 *
1597 * * Usage constraints
1598 * There are no usage constraints.
1599 */
1600 union ody_gica_pidr7 {
1601 uint32_t u;
1602 struct ody_gica_pidr7_s {
1603 uint32_t reserved_0_31 : 32;
1604 } s;
1605 struct ody_gica_pidr7_cn {
1606 uint32_t reserved_0_7 : 8;
1607 uint32_t reserved_8_31 : 24;
1608 } cn;
1609 };
1610 typedef union ody_gica_pidr7 ody_gica_pidr7_t;
1611
1612 #define ODY_GICA_PIDR7 ODY_GICA_PIDR7_FUNC()
1613 static inline uint64_t ODY_GICA_PIDR7_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_PIDR7_FUNC(void)1614 static inline uint64_t ODY_GICA_PIDR7_FUNC(void)
1615 {
1616 return 0x80100001ffdcll;
1617 }
1618
1619 #define typedef_ODY_GICA_PIDR7 ody_gica_pidr7_t
1620 #define bustype_ODY_GICA_PIDR7 CSR_TYPE_NCB32b
1621 #define basename_ODY_GICA_PIDR7 "GICA_PIDR7"
1622 #define device_bar_ODY_GICA_PIDR7 0x0 /* PF_BAR0 */
1623 #define busnum_ODY_GICA_PIDR7 0
1624 #define arguments_ODY_GICA_PIDR7 -1, -1, -1, -1
1625
1626 /**
1627 * Register (NCB32b) gica_setspi_nsr
1628 *
1629 * GICA Setspi Nsr Register
1630 * The GICA_SETSPI_NSR characteristics are:
1631 *
1632 * * Purpose
1633 * Adds the pending state to a valid SPI if permitted by the Security state of the
1634 * access and the GICD(A)_NSACR[E] value for that SPI.
1635 * A write to this register changes the state of an inactive SPI to pending, and the
1636 * state of an active SPI to active and pending.
1637 *
1638 * * Usage constraints
1639 * The function of this register depends on whether the targeted SPI is configured to
1640 * be an edge-triggered or level-sensitive interrupt:
1641 *
1642 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
1643 * the pending state to the targeted interrupt. It will stop being pending on
1644 * activation, or if the pending state is removed by a write to GICx_CLRSPI_NSR,
1645 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
1646 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
1647 * the pending state to the targeted interrupt. It will remain pending until it is
1648 * deasserted by a write to GICx_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
1649 * activated between having the pending state added and being deactivated, then the
1650 * interrupt will be active and pending.
1651 *
1652 * Writes to this register have no effect if:
1653 *
1654 * * The value written specifies a Secure SPI, the value is written by a Non-secure
1655 * access, and the value of the corresponding GICD(A)_NSACR register is 0.
1656 * * The value written specifies an invalid SPI.
1657 * * The SPI is already pending.
1658 *
1659 * When GICD(A)_CTLR.DS==1, this register provides functionality for all SPIs.
1660 */
1661 union ody_gica_setspi_nsr {
1662 uint32_t u;
1663 struct ody_gica_setspi_nsr_s {
1664 uint32_t id : 16;
1665 uint32_t reserved_16_31 : 16;
1666 } s;
1667 /* struct ody_gica_setspi_nsr_s cn; */
1668 };
1669 typedef union ody_gica_setspi_nsr ody_gica_setspi_nsr_t;
1670
1671 #define ODY_GICA_SETSPI_NSR ODY_GICA_SETSPI_NSR_FUNC()
1672 static inline uint64_t ODY_GICA_SETSPI_NSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_SETSPI_NSR_FUNC(void)1673 static inline uint64_t ODY_GICA_SETSPI_NSR_FUNC(void)
1674 {
1675 return 0x801000010040ll;
1676 }
1677
1678 #define typedef_ODY_GICA_SETSPI_NSR ody_gica_setspi_nsr_t
1679 #define bustype_ODY_GICA_SETSPI_NSR CSR_TYPE_NCB32b
1680 #define basename_ODY_GICA_SETSPI_NSR "GICA_SETSPI_NSR"
1681 #define device_bar_ODY_GICA_SETSPI_NSR 0x0 /* PF_BAR0 */
1682 #define busnum_ODY_GICA_SETSPI_NSR 0
1683 #define arguments_ODY_GICA_SETSPI_NSR -1, -1, -1, -1
1684
1685 /**
1686 * Register (NCB32b) gica_setspi_sr
1687 *
1688 * GICA Setspi Sr Register
1689 * The GICA_SETSPI_SR characteristics are:
1690 *
1691 * * Purpose
1692 * Adds the pending state to a valid SPI.
1693 * A write to this register changes the state of an inactive SPI to pending, and the
1694 * state of an active SPI to active and pending.
1695 *
1696 * * Usage constraints
1697 * The function of this register depends on whether the targeted SPI is configured to
1698 * be an edge-triggered or level-sensitive interrupt:
1699 *
1700 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
1701 * the pending state to the targeted interrupt. It will stop being pending on
1702 * activation, or if the pending state is removed by a write to GICx_CLRSPI_NSR,
1703 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
1704 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
1705 * the pending state to the targeted interrupt. It will remain pending until it is
1706 * deasserted by a write to GICx_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
1707 * activated between having the pending state added and being deactivated, then the
1708 * interrupt will be active and pending.
1709 *
1710 * Writes to this register have no effect if:
1711 *
1712 * * The value is written by a Non-secure access.
1713 * * The value written specifies an invalid SPI.
1714 * * The SPI is already pending.
1715 *
1716 * When GICD(A)_CTLR.DS==1, this register is WI.
1717 * When GICD(A)_CTLR.DS==0, only secure-access.
1718 */
1719 union ody_gica_setspi_sr {
1720 uint32_t u;
1721 struct ody_gica_setspi_sr_s {
1722 uint32_t id : 16;
1723 uint32_t reserved_16_31 : 16;
1724 } s;
1725 /* struct ody_gica_setspi_sr_s cn; */
1726 };
1727 typedef union ody_gica_setspi_sr ody_gica_setspi_sr_t;
1728
1729 #define ODY_GICA_SETSPI_SR ODY_GICA_SETSPI_SR_FUNC()
1730 static inline uint64_t ODY_GICA_SETSPI_SR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_SETSPI_SR_FUNC(void)1731 static inline uint64_t ODY_GICA_SETSPI_SR_FUNC(void)
1732 {
1733 return 0x801000010050ll;
1734 }
1735
1736 #define typedef_ODY_GICA_SETSPI_SR ody_gica_setspi_sr_t
1737 #define bustype_ODY_GICA_SETSPI_SR CSR_TYPE_NCB32b
1738 #define basename_ODY_GICA_SETSPI_SR "GICA_SETSPI_SR"
1739 #define device_bar_ODY_GICA_SETSPI_SR 0x0 /* PF_BAR0 */
1740 #define busnum_ODY_GICA_SETSPI_SR 0
1741 #define arguments_ODY_GICA_SETSPI_SR -1, -1, -1, -1
1742
1743 /**
1744 * Register (NCB) gica_typer
1745 *
1746 * GICA Typer Register
1747 * The GICA_TYPER characteristics are:
1748 *
1749 * * Purpose
1750 * This register returns information about the number of SPIs that are assigned to the frame.
1751 *
1752 * * Usage constraints
1753 * There are no usage constraints.
1754 */
1755 union ody_gica_typer {
1756 uint64_t u;
1757 struct ody_gica_typer_s {
1758 uint64_t numspis : 11;
1759 uint64_t reserved_11_15 : 5;
1760 uint64_t intid : 13;
1761 uint64_t sr : 1;
1762 uint64_t clr : 1;
1763 uint64_t valid : 1;
1764 uint64_t reserved_32_63 : 32;
1765 } s;
1766 /* struct ody_gica_typer_s cn; */
1767 };
1768 typedef union ody_gica_typer ody_gica_typer_t;
1769
1770 #define ODY_GICA_TYPER ODY_GICA_TYPER_FUNC()
1771 static inline uint64_t ODY_GICA_TYPER_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICA_TYPER_FUNC(void)1772 static inline uint64_t ODY_GICA_TYPER_FUNC(void)
1773 {
1774 return 0x801000010008ll;
1775 }
1776
1777 #define typedef_ODY_GICA_TYPER ody_gica_typer_t
1778 #define bustype_ODY_GICA_TYPER CSR_TYPE_NCB
1779 #define basename_ODY_GICA_TYPER "GICA_TYPER"
1780 #define device_bar_ODY_GICA_TYPER 0x0 /* PF_BAR0 */
1781 #define busnum_ODY_GICA_TYPER 0
1782 #define arguments_ODY_GICA_TYPER -1, -1, -1, -1
1783
1784 /**
1785 * Register (NCB) gicd_cfgid
1786 *
1787 * GICD Cfgid Register
1788 * The GICD_CFGID characteristics are:
1789 *
1790 * * Purpose
1791 * This register contains information that enables test software to determine if the
1792 * GIC-700 system is compatible.
1793 *
1794 * * Usage constraints
1795 * Some bits are only visible to secure accesses.
1796 */
1797 union ody_gicd_cfgid {
1798 uint64_t u;
1799 struct ody_gicd_cfgid_s {
1800 uint64_t socketonline : 1;
1801 uint64_t reserved_1_3 : 3;
1802 uint64_t socketnumber : 4;
1803 uint64_t itscount : 4;
1804 uint64_t lpisupport : 1;
1805 uint64_t v41support : 1;
1806 uint64_t chipaffinitylevel : 1;
1807 uint64_t spigroups : 6;
1808 uint64_t localchipaddressing : 1;
1809 uint64_t reserved_22_23 : 2;
1810 uint64_t rdcollapsesupport : 1;
1811 uint64_t extendeditssupport : 1;
1812 uint64_t reserved_26_27 : 2;
1813 uint64_t chips : 4;
1814 uint64_t affinity0bits : 4;
1815 uint64_t affinity1bits : 4;
1816 uint64_t affinity2bits : 4;
1817 uint64_t affinity3bits : 4;
1818 uint64_t pewidth : 5;
1819 uint64_t reserved_53_63 : 11;
1820 } s;
1821 /* struct ody_gicd_cfgid_s cn; */
1822 };
1823 typedef union ody_gicd_cfgid ody_gicd_cfgid_t;
1824
1825 #define ODY_GICD_CFGID ODY_GICD_CFGID_FUNC()
1826 static inline uint64_t ODY_GICD_CFGID_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_CFGID_FUNC(void)1827 static inline uint64_t ODY_GICD_CFGID_FUNC(void)
1828 {
1829 return 0x80100000f000ll;
1830 }
1831
1832 #define typedef_ODY_GICD_CFGID ody_gicd_cfgid_t
1833 #define bustype_ODY_GICD_CFGID CSR_TYPE_NCB
1834 #define basename_ODY_GICD_CFGID "GICD_CFGID"
1835 #define device_bar_ODY_GICD_CFGID 0x0 /* PF_BAR0 */
1836 #define busnum_ODY_GICD_CFGID 0
1837 #define arguments_ODY_GICD_CFGID -1, -1, -1, -1
1838
1839 /**
1840 * Register (NCB32b) gicd_cidr0
1841 *
1842 * GICD Cidr0 Register
1843 * The GICD_CIDR0 characteristics are:
1844 *
1845 * * Purpose
1846 * This register is one of the Component Identification Registers and returns the first
1847 * part of the Preamble.
1848 *
1849 * * Usage constraints
1850 * There are no usage constraints.
1851 */
1852 union ody_gicd_cidr0 {
1853 uint32_t u;
1854 struct ody_gicd_cidr0_s {
1855 uint32_t prmbl_0 : 8;
1856 uint32_t reserved_8_31 : 24;
1857 } s;
1858 /* struct ody_gicd_cidr0_s cn; */
1859 };
1860 typedef union ody_gicd_cidr0 ody_gicd_cidr0_t;
1861
1862 #define ODY_GICD_CIDR0 ODY_GICD_CIDR0_FUNC()
1863 static inline uint64_t ODY_GICD_CIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_CIDR0_FUNC(void)1864 static inline uint64_t ODY_GICD_CIDR0_FUNC(void)
1865 {
1866 return 0x80100000fff0ll;
1867 }
1868
1869 #define typedef_ODY_GICD_CIDR0 ody_gicd_cidr0_t
1870 #define bustype_ODY_GICD_CIDR0 CSR_TYPE_NCB32b
1871 #define basename_ODY_GICD_CIDR0 "GICD_CIDR0"
1872 #define device_bar_ODY_GICD_CIDR0 0x0 /* PF_BAR0 */
1873 #define busnum_ODY_GICD_CIDR0 0
1874 #define arguments_ODY_GICD_CIDR0 -1, -1, -1, -1
1875
1876 /**
1877 * Register (NCB32b) gicd_cidr1
1878 *
1879 * GICD Cidr1 Register
1880 * The GICD_CIDR1 characteristics are:
1881 *
1882 * * Purpose
1883 * This register is one of the Component Identification Registers and returns the
1884 * second part of the Preamble as well as the Component Class.
1885 *
1886 * * Usage constraints
1887 * There are no usage constraints.
1888 */
1889 union ody_gicd_cidr1 {
1890 uint32_t u;
1891 struct ody_gicd_cidr1_s {
1892 uint32_t prmbl_1 : 4;
1893 uint32_t class_f : 4;
1894 uint32_t reserved_8_31 : 24;
1895 } s;
1896 /* struct ody_gicd_cidr1_s cn; */
1897 };
1898 typedef union ody_gicd_cidr1 ody_gicd_cidr1_t;
1899
1900 #define ODY_GICD_CIDR1 ODY_GICD_CIDR1_FUNC()
1901 static inline uint64_t ODY_GICD_CIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_CIDR1_FUNC(void)1902 static inline uint64_t ODY_GICD_CIDR1_FUNC(void)
1903 {
1904 return 0x80100000fff4ll;
1905 }
1906
1907 #define typedef_ODY_GICD_CIDR1 ody_gicd_cidr1_t
1908 #define bustype_ODY_GICD_CIDR1 CSR_TYPE_NCB32b
1909 #define basename_ODY_GICD_CIDR1 "GICD_CIDR1"
1910 #define device_bar_ODY_GICD_CIDR1 0x0 /* PF_BAR0 */
1911 #define busnum_ODY_GICD_CIDR1 0
1912 #define arguments_ODY_GICD_CIDR1 -1, -1, -1, -1
1913
1914 /**
1915 * Register (NCB32b) gicd_cidr2
1916 *
1917 * GICD Cidr2 Register
1918 * The GICD_CIDR2 characteristics are:
1919 *
1920 * * Purpose
1921 * This register is one of the Component Identification Registers and returns the third
1922 * part of the Preamble.
1923 *
1924 * * Usage constraints
1925 * There are no usage constraints.
1926 */
1927 union ody_gicd_cidr2 {
1928 uint32_t u;
1929 struct ody_gicd_cidr2_s {
1930 uint32_t prmbl_2 : 8;
1931 uint32_t reserved_8_31 : 24;
1932 } s;
1933 /* struct ody_gicd_cidr2_s cn; */
1934 };
1935 typedef union ody_gicd_cidr2 ody_gicd_cidr2_t;
1936
1937 #define ODY_GICD_CIDR2 ODY_GICD_CIDR2_FUNC()
1938 static inline uint64_t ODY_GICD_CIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_CIDR2_FUNC(void)1939 static inline uint64_t ODY_GICD_CIDR2_FUNC(void)
1940 {
1941 return 0x80100000fff8ll;
1942 }
1943
1944 #define typedef_ODY_GICD_CIDR2 ody_gicd_cidr2_t
1945 #define bustype_ODY_GICD_CIDR2 CSR_TYPE_NCB32b
1946 #define basename_ODY_GICD_CIDR2 "GICD_CIDR2"
1947 #define device_bar_ODY_GICD_CIDR2 0x0 /* PF_BAR0 */
1948 #define busnum_ODY_GICD_CIDR2 0
1949 #define arguments_ODY_GICD_CIDR2 -1, -1, -1, -1
1950
1951 /**
1952 * Register (NCB32b) gicd_cidr3
1953 *
1954 * GICD Cidr3 Register
1955 * The GICD_CIDR3 characteristics are:
1956 *
1957 * * Purpose
1958 * This register is one of the Component Identification Registers and returns the
1959 * fourth part of the Preamble.
1960 *
1961 * * Usage constraints
1962 * There are no usage constraints.
1963 */
1964 union ody_gicd_cidr3 {
1965 uint32_t u;
1966 struct ody_gicd_cidr3_s {
1967 uint32_t prmbl_3 : 8;
1968 uint32_t reserved_8_31 : 24;
1969 } s;
1970 /* struct ody_gicd_cidr3_s cn; */
1971 };
1972 typedef union ody_gicd_cidr3 ody_gicd_cidr3_t;
1973
1974 #define ODY_GICD_CIDR3 ODY_GICD_CIDR3_FUNC()
1975 static inline uint64_t ODY_GICD_CIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_CIDR3_FUNC(void)1976 static inline uint64_t ODY_GICD_CIDR3_FUNC(void)
1977 {
1978 return 0x80100000fffcll;
1979 }
1980
1981 #define typedef_ODY_GICD_CIDR3 ody_gicd_cidr3_t
1982 #define bustype_ODY_GICD_CIDR3 CSR_TYPE_NCB32b
1983 #define basename_ODY_GICD_CIDR3 "GICD_CIDR3"
1984 #define device_bar_ODY_GICD_CIDR3 0x0 /* PF_BAR0 */
1985 #define busnum_ODY_GICD_CIDR3 0
1986 #define arguments_ODY_GICD_CIDR3 -1, -1, -1, -1
1987
1988 /**
1989 * Register (NCB32b) gicd_clrspi_nsr
1990 *
1991 * GICD Clrspi Nsr Register
1992 * The GICD_CLRSPI_NSR characteristics are:
1993 *
1994 * * Purpose
1995 * Removes the pending state to a valid SPI if permitted by the Security state of the
1996 * access and the GICD(A)_NSACR value for that SPI.
1997 * A write to this register changes the state of an pending SPI to inactive, and the
1998 * state of an active and penmding SPI to active.
1999 *
2000 * * Usage constraints
2001 * The function of this register depends on whether the targeted SPI is configured to
2002 * be an edge-triggered or level-sensitive interrupt:
2003 *
2004 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
2005 * the pending state to the targeted interrupt. It will stop being pending on
2006 * activation, or if the pending state is removed by a write to GICD(A)_CLRSPI_NSR,
2007 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
2008 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
2009 * the pending state to the targeted interrupt. It will remain pending until it is
2010 * deasserted by a write to GICD(A)_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
2011 * activated between having the pending state added and being deactivated, then the
2012 * interrupt will be active and pending.
2013 *
2014 * Writes to this register have no effect if:
2015 *
2016 * * The value written specifies a Secure SPI, the value is written by a Non-secure
2017 * access, and the value of the corresponding GICD(A)_NSACR register is less than 0b10.
2018 * * The value written specifies an invalid SPI.
2019 * * The SPI is not pending.
2020 *
2021 * * Configurations
2022 * When GICD(A)_CTLR.DS==1, this register provides functionality for all SPIs.
2023 */
2024 union ody_gicd_clrspi_nsr {
2025 uint32_t u;
2026 struct ody_gicd_clrspi_nsr_s {
2027 uint32_t id : 16;
2028 uint32_t reserved_16_31 : 16;
2029 } s;
2030 /* struct ody_gicd_clrspi_nsr_s cn; */
2031 };
2032 typedef union ody_gicd_clrspi_nsr ody_gicd_clrspi_nsr_t;
2033
2034 #define ODY_GICD_CLRSPI_NSR ODY_GICD_CLRSPI_NSR_FUNC()
2035 static inline uint64_t ODY_GICD_CLRSPI_NSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_CLRSPI_NSR_FUNC(void)2036 static inline uint64_t ODY_GICD_CLRSPI_NSR_FUNC(void)
2037 {
2038 return 0x801000000048ll;
2039 }
2040
2041 #define typedef_ODY_GICD_CLRSPI_NSR ody_gicd_clrspi_nsr_t
2042 #define bustype_ODY_GICD_CLRSPI_NSR CSR_TYPE_NCB32b
2043 #define basename_ODY_GICD_CLRSPI_NSR "GICD_CLRSPI_NSR"
2044 #define device_bar_ODY_GICD_CLRSPI_NSR 0x0 /* PF_BAR0 */
2045 #define busnum_ODY_GICD_CLRSPI_NSR 0
2046 #define arguments_ODY_GICD_CLRSPI_NSR -1, -1, -1, -1
2047
2048 /**
2049 * Register (NCB32b) gicd_clrspi_sr
2050 *
2051 * GICD Clrspi Sr Register
2052 * The GICD_CLRSPI_SR characteristics are:
2053 *
2054 * * Purpose
2055 * Removes the pending state from a valid SPI.
2056 * A write to this register changes the state of a pending SPI to inactive, and the
2057 * state of an active and pending SPI to active.
2058 *
2059 * * Usage constraints
2060 * The function of this register depends on whether the targeted SPI is configured to
2061 * be an edge-triggered or level-sensitive interrupt:
2062 *
2063 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
2064 * the pending state to the targeted interrupt. It will stop being pending on
2065 * activation, or if the pending state is removed by a write to GICD(A)_CLRSPI_NSR,
2066 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
2067 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
2068 * the pending state to the targeted interrupt. It will remain pending until it is
2069 * deasserted by a write to GICD(A)_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
2070 * activated between having the pending state added and being deactivated, then the
2071 * interrupt will be active and pending.
2072 *
2073 * Writes to this register have no effect if:
2074 *
2075 * * The value is written by a Non-secure access.
2076 * * The value written specifies an invalid SPI.
2077 * * The SPI is not pending.
2078 *
2079 * * Configurations
2080 * When GICD(A)_CTLR.DS==1, this register is WI.
2081 * When GICD(A)_CTLR.DS==0, only secure-access.
2082 */
2083 union ody_gicd_clrspi_sr {
2084 uint32_t u;
2085 struct ody_gicd_clrspi_sr_s {
2086 uint32_t id : 16;
2087 uint32_t reserved_16_31 : 16;
2088 } s;
2089 /* struct ody_gicd_clrspi_sr_s cn; */
2090 };
2091 typedef union ody_gicd_clrspi_sr ody_gicd_clrspi_sr_t;
2092
2093 #define ODY_GICD_CLRSPI_SR ODY_GICD_CLRSPI_SR_FUNC()
2094 static inline uint64_t ODY_GICD_CLRSPI_SR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_CLRSPI_SR_FUNC(void)2095 static inline uint64_t ODY_GICD_CLRSPI_SR_FUNC(void)
2096 {
2097 return 0x801000000058ll;
2098 }
2099
2100 #define typedef_ODY_GICD_CLRSPI_SR ody_gicd_clrspi_sr_t
2101 #define bustype_ODY_GICD_CLRSPI_SR CSR_TYPE_NCB32b
2102 #define basename_ODY_GICD_CLRSPI_SR "GICD_CLRSPI_SR"
2103 #define device_bar_ODY_GICD_CLRSPI_SR 0x0 /* PF_BAR0 */
2104 #define busnum_ODY_GICD_CLRSPI_SR 0
2105 #define arguments_ODY_GICD_CLRSPI_SR -1, -1, -1, -1
2106
2107 /**
2108 * Register (NCB32b) gicd_ctlr
2109 *
2110 * GICD Ctlr Register
2111 * The GICD_CTLR characteristics are:
2112 *
2113 * * Purpose
2114 * Contains Distributor controls including interrupt group enables
2115 *
2116 * * Usage constraints
2117 * None
2118 *
2119 * * Configurations
2120 * The format of this register depends on the Security state of the access and the
2121 * number of Security states supported, which is specified by GICD(A)_CTLR.DS.
2122 */
2123 union ody_gicd_ctlr {
2124 uint32_t u;
2125 struct ody_gicd_ctlr_s {
2126 uint32_t enablegrp0 : 1;
2127 uint32_t enablegrp1_ns : 1;
2128 uint32_t enablegrp1_s : 1;
2129 uint32_t reserved_3 : 1;
2130 uint32_t are_s : 1;
2131 uint32_t are_ns : 1;
2132 uint32_t ds : 1;
2133 uint32_t e1nwf : 1;
2134 uint32_t reserved_8_30 : 23;
2135 uint32_t rwp : 1;
2136 } s;
2137 /* struct ody_gicd_ctlr_s cn; */
2138 };
2139 typedef union ody_gicd_ctlr ody_gicd_ctlr_t;
2140
2141 #define ODY_GICD_CTLR ODY_GICD_CTLR_FUNC()
2142 static inline uint64_t ODY_GICD_CTLR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_CTLR_FUNC(void)2143 static inline uint64_t ODY_GICD_CTLR_FUNC(void)
2144 {
2145 return 0x801000000000ll;
2146 }
2147
2148 #define typedef_ODY_GICD_CTLR ody_gicd_ctlr_t
2149 #define bustype_ODY_GICD_CTLR CSR_TYPE_NCB32b
2150 #define basename_ODY_GICD_CTLR "GICD_CTLR"
2151 #define device_bar_ODY_GICD_CTLR 0x0 /* PF_BAR0 */
2152 #define busnum_ODY_GICD_CTLR 0
2153 #define arguments_ODY_GICD_CTLR -1, -1, -1, -1
2154
2155 /**
2156 * Register (NCB) gicd_errinsr#
2157 *
2158 * GICD Errinsr Register
2159 * The GICD_ERRINSR0 characteristics are:
2160 *
2161 * * Purpose
2162 * This register can inject errors into the SGI RAM. You can use this register to test
2163 * your error recovery software.
2164 *
2165 * * Usage constraints
2166 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the functions of this register.
2167 *
2168 * \> *Note*
2169 * \> The bit assignments within this register depend on whether a write access or read access occurs.
2170 */
2171 union ody_gicd_errinsrx {
2172 uint64_t u;
2173 struct ody_gicd_errinsrx_s {
2174 uint64_t errins1loc : 9;
2175 uint64_t reserved_9_14 : 6;
2176 uint64_t errins1valid : 1;
2177 uint64_t errins2loc : 9;
2178 uint64_t reserved_25_30 : 6;
2179 uint64_t errins2valid : 1;
2180 uint64_t addr : 16;
2181 uint64_t reserved_48_59 : 12;
2182 uint64_t disablewritecheck : 1;
2183 uint64_t reserved_61_62 : 2;
2184 uint64_t valid : 1;
2185 } s;
2186 /* struct ody_gicd_errinsrx_s cn; */
2187 };
2188 typedef union ody_gicd_errinsrx ody_gicd_errinsrx_t;
2189
2190 static inline uint64_t ODY_GICD_ERRINSRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ERRINSRX(uint64_t a)2191 static inline uint64_t ODY_GICD_ERRINSRX(uint64_t a)
2192 {
2193 if (a <= 14)
2194 return 0x80100000ea00ll + 8ll * ((a) & 0xf);
2195 __ody_csr_fatal("GICD_ERRINSRX", 1, a, 0, 0, 0, 0, 0);
2196 }
2197
2198 #define typedef_ODY_GICD_ERRINSRX(a) ody_gicd_errinsrx_t
2199 #define bustype_ODY_GICD_ERRINSRX(a) CSR_TYPE_NCB
2200 #define basename_ODY_GICD_ERRINSRX(a) "GICD_ERRINSRX"
2201 #define device_bar_ODY_GICD_ERRINSRX(a) 0x0 /* PF_BAR0 */
2202 #define busnum_ODY_GICD_ERRINSRX(a) (a)
2203 #define arguments_ODY_GICD_ERRINSRX(a) (a), -1, -1, -1
2204
2205 /**
2206 * Register (NCB32b) gicd_fctlr
2207 *
2208 * GICD Fctlr Register
2209 * The GICD_FCTLR characteristics are:
2210 *
2211 * * Purpose
2212 * This register controls non-architectural functionality such as the scrubbing of all
2213 * RAMs in the local Distributor.
2214 *
2215 * * Usage constraints
2216 * Some bits are only accessible by Secure accesses.
2217 */
2218 union ody_gicd_fctlr {
2219 uint32_t u;
2220 struct ody_gicd_fctlr_s {
2221 uint32_t sip : 1;
2222 uint32_t reserved_1_15 : 15;
2223 uint32_t nsacr : 2;
2224 uint32_t reserved_18_19 : 2;
2225 uint32_t clpl : 4;
2226 uint32_t reserved_24_25 : 2;
2227 uint32_t pos : 1;
2228 uint32_t reserved_27_31 : 5;
2229 } s;
2230 struct ody_gicd_fctlr_cn {
2231 uint32_t sip : 1;
2232 uint32_t reserved_1 : 1;
2233 uint32_t reserved_2 : 1;
2234 uint32_t reserved_3 : 1;
2235 uint32_t reserved_4_15 : 12;
2236 uint32_t nsacr : 2;
2237 uint32_t reserved_18 : 1;
2238 uint32_t reserved_19 : 1;
2239 uint32_t clpl : 4;
2240 uint32_t reserved_24_25 : 2;
2241 uint32_t pos : 1;
2242 uint32_t reserved_27_31 : 5;
2243 } cn;
2244 };
2245 typedef union ody_gicd_fctlr ody_gicd_fctlr_t;
2246
2247 #define ODY_GICD_FCTLR ODY_GICD_FCTLR_FUNC()
2248 static inline uint64_t ODY_GICD_FCTLR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_FCTLR_FUNC(void)2249 static inline uint64_t ODY_GICD_FCTLR_FUNC(void)
2250 {
2251 return 0x801000000020ll;
2252 }
2253
2254 #define typedef_ODY_GICD_FCTLR ody_gicd_fctlr_t
2255 #define bustype_ODY_GICD_FCTLR CSR_TYPE_NCB32b
2256 #define basename_ODY_GICD_FCTLR "GICD_FCTLR"
2257 #define device_bar_ODY_GICD_FCTLR 0x0 /* PF_BAR0 */
2258 #define busnum_ODY_GICD_FCTLR 0
2259 #define arguments_ODY_GICD_FCTLR -1, -1, -1, -1
2260
2261 /**
2262 * Register (NCB32b) gicd_fctlr2
2263 *
2264 * GICD Fctlr2 Register
2265 * The GICD_FCTLR2 characteristics are:
2266 *
2267 * * Purpose
2268 * This register controls clock gating and other non-architectural controls in the local Distributor.
2269 *
2270 * * Usage constraints
2271 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
2272 */
2273 union ody_gicd_fctlr2 {
2274 uint32_t u;
2275 struct ody_gicd_fctlr2_s {
2276 uint32_t cgo : 12;
2277 uint32_t reserved_12_15 : 4;
2278 uint32_t rws : 1;
2279 uint32_t dcc : 1;
2280 uint32_t qdeny : 1;
2281 uint32_t rwc : 1;
2282 uint32_t reserved_20_24 : 5;
2283 uint32_t slc : 1;
2284 uint32_t reserved_26_27 : 2;
2285 uint32_t rcd : 1;
2286 uint32_t irp : 1;
2287 uint32_t awp : 1;
2288 uint32_t arp : 1;
2289 } s;
2290 struct ody_gicd_fctlr2_cn {
2291 uint32_t cgo : 12;
2292 uint32_t reserved_12_14 : 3;
2293 uint32_t reserved_15 : 1;
2294 uint32_t rws : 1;
2295 uint32_t dcc : 1;
2296 uint32_t qdeny : 1;
2297 uint32_t rwc : 1;
2298 uint32_t reserved_20_24 : 5;
2299 uint32_t slc : 1;
2300 uint32_t reserved_26_27 : 2;
2301 uint32_t rcd : 1;
2302 uint32_t irp : 1;
2303 uint32_t awp : 1;
2304 uint32_t arp : 1;
2305 } cn;
2306 };
2307 typedef union ody_gicd_fctlr2 ody_gicd_fctlr2_t;
2308
2309 #define ODY_GICD_FCTLR2 ODY_GICD_FCTLR2_FUNC()
2310 static inline uint64_t ODY_GICD_FCTLR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_FCTLR2_FUNC(void)2311 static inline uint64_t ODY_GICD_FCTLR2_FUNC(void)
2312 {
2313 return 0x801000000030ll;
2314 }
2315
2316 #define typedef_ODY_GICD_FCTLR2 ody_gicd_fctlr2_t
2317 #define bustype_ODY_GICD_FCTLR2 CSR_TYPE_NCB32b
2318 #define basename_ODY_GICD_FCTLR2 "GICD_FCTLR2"
2319 #define device_bar_ODY_GICD_FCTLR2 0x0 /* PF_BAR0 */
2320 #define busnum_ODY_GICD_FCTLR2 0
2321 #define arguments_ODY_GICD_FCTLR2 -1, -1, -1, -1
2322
2323 /**
2324 * Register (NCB32b) gicd_fctlr3
2325 *
2326 * GICD Fctlr3 Register
2327 * The GICD_FCTLR3 characteristics are:
2328 *
2329 * * Purpose
2330 *
2331 * This register is RES0.
2332 *
2333 * * Usage constraints
2334 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
2335 */
2336 union ody_gicd_fctlr3 {
2337 uint32_t u;
2338 struct ody_gicd_fctlr3_s {
2339 uint32_t ncp0 : 5;
2340 uint32_t reserved_5_6 : 2;
2341 uint32_t scp1 : 1;
2342 uint32_t reserved_8_31 : 24;
2343 } s;
2344 /* struct ody_gicd_fctlr3_s cn; */
2345 };
2346 typedef union ody_gicd_fctlr3 ody_gicd_fctlr3_t;
2347
2348 #define ODY_GICD_FCTLR3 ODY_GICD_FCTLR3_FUNC()
2349 static inline uint64_t ODY_GICD_FCTLR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_FCTLR3_FUNC(void)2350 static inline uint64_t ODY_GICD_FCTLR3_FUNC(void)
2351 {
2352 return 0x801000000038ll;
2353 }
2354
2355 #define typedef_ODY_GICD_FCTLR3 ody_gicd_fctlr3_t
2356 #define bustype_ODY_GICD_FCTLR3 CSR_TYPE_NCB32b
2357 #define basename_ODY_GICD_FCTLR3 "GICD_FCTLR3"
2358 #define device_bar_ODY_GICD_FCTLR3 0x0 /* PF_BAR0 */
2359 #define busnum_ODY_GICD_FCTLR3 0
2360 #define arguments_ODY_GICD_FCTLR3 -1, -1, -1, -1
2361
2362 /**
2363 * Register (NCB32b) gicd_icactiver#
2364 *
2365 * GICD Icactiver Register
2366 * The GICDGICD_ICACTIVER1 characteristics are:
2367 *
2368 * * Purpose
2369 * Deactivates the corresponding interrupt. These registers are used when saving and
2370 * restoring state for interrupts 32 to 63.
2371 *
2372 * * Usage constraints
2373 * For INTID m, when DIV and MOD are the integer division and modulo operations:
2374 *
2375 * * The corresponding GICD(A)_ICACTIVER number, n, is given by n = m DIV 32.
2376 * * The offset of the required ICACTIVER is (0x380 + (4*n)).
2377 * * The bit number of the required group modifier bit in this register is m MOD 32.
2378 *
2379 * If GICD(A)_CTLR.DS==0, unless the GICD(A)_NSACR registers permit Non-secure software
2380 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
2381 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
2382 * to Non-secure accesses.
2383 *
2384 * * Configurations
2385 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
2386 * result in an error being logged. (See GICD_ERR0CTLR for details)
2387 */
2388 union ody_gicd_icactiverx {
2389 uint32_t u;
2390 struct ody_gicd_icactiverx_s {
2391 uint32_t clear_active_bit0 : 1;
2392 uint32_t clear_active_bit1 : 1;
2393 uint32_t clear_active_bit2 : 1;
2394 uint32_t clear_active_bit3 : 1;
2395 uint32_t clear_active_bit4 : 1;
2396 uint32_t clear_active_bit5 : 1;
2397 uint32_t clear_active_bit6 : 1;
2398 uint32_t clear_active_bit7 : 1;
2399 uint32_t clear_active_bit8 : 1;
2400 uint32_t clear_active_bit9 : 1;
2401 uint32_t clear_active_bit10 : 1;
2402 uint32_t clear_active_bit11 : 1;
2403 uint32_t clear_active_bit12 : 1;
2404 uint32_t clear_active_bit13 : 1;
2405 uint32_t clear_active_bit14 : 1;
2406 uint32_t clear_active_bit15 : 1;
2407 uint32_t clear_active_bit16 : 1;
2408 uint32_t clear_active_bit17 : 1;
2409 uint32_t clear_active_bit18 : 1;
2410 uint32_t clear_active_bit19 : 1;
2411 uint32_t clear_active_bit20 : 1;
2412 uint32_t clear_active_bit21 : 1;
2413 uint32_t clear_active_bit22 : 1;
2414 uint32_t clear_active_bit23 : 1;
2415 uint32_t clear_active_bit24 : 1;
2416 uint32_t clear_active_bit25 : 1;
2417 uint32_t clear_active_bit26 : 1;
2418 uint32_t clear_active_bit27 : 1;
2419 uint32_t clear_active_bit28 : 1;
2420 uint32_t clear_active_bit29 : 1;
2421 uint32_t clear_active_bit30 : 1;
2422 uint32_t clear_active_bit31 : 1;
2423 } s;
2424 /* struct ody_gicd_icactiverx_s cn; */
2425 };
2426 typedef union ody_gicd_icactiverx ody_gicd_icactiverx_t;
2427
2428 static inline uint64_t ODY_GICD_ICACTIVERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ICACTIVERX(uint64_t a)2429 static inline uint64_t ODY_GICD_ICACTIVERX(uint64_t a)
2430 {
2431 if ((a >= 1) && (a <= 16))
2432 return 0x801000000380ll + 4ll * ((a) & 0x1f);
2433 __ody_csr_fatal("GICD_ICACTIVERX", 1, a, 0, 0, 0, 0, 0);
2434 }
2435
2436 #define typedef_ODY_GICD_ICACTIVERX(a) ody_gicd_icactiverx_t
2437 #define bustype_ODY_GICD_ICACTIVERX(a) CSR_TYPE_NCB32b
2438 #define basename_ODY_GICD_ICACTIVERX(a) "GICD_ICACTIVERX"
2439 #define device_bar_ODY_GICD_ICACTIVERX(a) 0x0 /* PF_BAR0 */
2440 #define busnum_ODY_GICD_ICACTIVERX(a) (a)
2441 #define arguments_ODY_GICD_ICACTIVERX(a) (a), -1, -1, -1
2442
2443 /**
2444 * Register (NCB32b) gicd_icenabler#
2445 *
2446 * GICD Icenabler Register
2447 * The GICD_ICENABLER1 characteristics are:
2448 *
2449 * * Purpose
2450 * Disables forwarding of the corresponding interrupt to the CPU interfaces for interrupts 32 to 63.
2451 *
2452 * * Usage constraints
2453 * For INTID m, when DIV and MOD are the integer division and modulo operations:
2454 *
2455 * * The corresponding GICD(A)_ICENABLER number, n, is given by n = m DIV 32.
2456 * * The offset of the required ICENABLER is (0x180 + (4*n)).
2457 * * The bit number of the required group modifier bit in this register is m MOD 32.
2458 *
2459 * \> *Note*
2460 * \> Writing a 1 to a GICD(A)_ICENABLER bit only disables the forwarding of the
2461 * corresponding interrupt from the Distributor to any CPU interface. It does not
2462 * prevent the interrupt from changing state, for example becoming pending or active
2463 * and pending if it is already active.
2464 *
2465 * When GICD(A)_CTLR.DS==0, bits corresponding to Group 0 and Secure Group 1 interrupts
2466 * are RAZ/WI to Non-secure accesses.
2467 *
2468 * Completion of a write to this register does not guarantee that the effects of the
2469 * write are visible throughout the affinity hierarchy. To ensure an enable has been
2470 * cleared, software must write to the register with bits set to 1 to clear the
2471 * required enables. Software must then poll GICD(A)_CTLR.RWP until it has the value
2472 * zero.
2473 *
2474 * * Configurations
2475 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
2476 * result in an error being logged. (See GICD_ERR0CTLR for details)
2477 */
2478 union ody_gicd_icenablerx {
2479 uint32_t u;
2480 struct ody_gicd_icenablerx_s {
2481 uint32_t clear_enable_bit0 : 1;
2482 uint32_t clear_enable_bit1 : 1;
2483 uint32_t clear_enable_bit2 : 1;
2484 uint32_t clear_enable_bit3 : 1;
2485 uint32_t clear_enable_bit4 : 1;
2486 uint32_t clear_enable_bit5 : 1;
2487 uint32_t clear_enable_bit6 : 1;
2488 uint32_t clear_enable_bit7 : 1;
2489 uint32_t clear_enable_bit8 : 1;
2490 uint32_t clear_enable_bit9 : 1;
2491 uint32_t clear_enable_bit10 : 1;
2492 uint32_t clear_enable_bit11 : 1;
2493 uint32_t clear_enable_bit12 : 1;
2494 uint32_t clear_enable_bit13 : 1;
2495 uint32_t clear_enable_bit14 : 1;
2496 uint32_t clear_enable_bit15 : 1;
2497 uint32_t clear_enable_bit16 : 1;
2498 uint32_t clear_enable_bit17 : 1;
2499 uint32_t clear_enable_bit18 : 1;
2500 uint32_t clear_enable_bit19 : 1;
2501 uint32_t clear_enable_bit20 : 1;
2502 uint32_t clear_enable_bit21 : 1;
2503 uint32_t clear_enable_bit22 : 1;
2504 uint32_t clear_enable_bit23 : 1;
2505 uint32_t clear_enable_bit24 : 1;
2506 uint32_t clear_enable_bit25 : 1;
2507 uint32_t clear_enable_bit26 : 1;
2508 uint32_t clear_enable_bit27 : 1;
2509 uint32_t clear_enable_bit28 : 1;
2510 uint32_t clear_enable_bit29 : 1;
2511 uint32_t clear_enable_bit30 : 1;
2512 uint32_t clear_enable_bit31 : 1;
2513 } s;
2514 /* struct ody_gicd_icenablerx_s cn; */
2515 };
2516 typedef union ody_gicd_icenablerx ody_gicd_icenablerx_t;
2517
2518 static inline uint64_t ODY_GICD_ICENABLERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ICENABLERX(uint64_t a)2519 static inline uint64_t ODY_GICD_ICENABLERX(uint64_t a)
2520 {
2521 if ((a >= 1) && (a <= 16))
2522 return 0x801000000180ll + 4ll * ((a) & 0x1f);
2523 __ody_csr_fatal("GICD_ICENABLERX", 1, a, 0, 0, 0, 0, 0);
2524 }
2525
2526 #define typedef_ODY_GICD_ICENABLERX(a) ody_gicd_icenablerx_t
2527 #define bustype_ODY_GICD_ICENABLERX(a) CSR_TYPE_NCB32b
2528 #define basename_ODY_GICD_ICENABLERX(a) "GICD_ICENABLERX"
2529 #define device_bar_ODY_GICD_ICENABLERX(a) 0x0 /* PF_BAR0 */
2530 #define busnum_ODY_GICD_ICENABLERX(a) (a)
2531 #define arguments_ODY_GICD_ICENABLERX(a) (a), -1, -1, -1
2532
2533 /**
2534 * Register (NCB32b) gicd_icerrr#
2535 *
2536 * GICD Icerrr Register
2537 * The GICD_ICERRR1 characteristics are:
2538 *
2539 * * Purpose
2540 *
2541 * These registers can clear the error status of an SPI or return the error status of
2542 * an SPI for interrupts 16 to 31.
2543 *
2544 * * Usage constraints
2545 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
2546 *
2547 * * The corresponding GICD(A)_ICERRR number, n, is given by n = m DIV 16.
2548 * * The offset of the required ICERRR register is (0xE100 + (4*n)).
2549 *
2550 * * Configurations
2551 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
2552 * result in an error being logged. (See GICD_ERR0CTLR for details)
2553 */
2554 union ody_gicd_icerrrx {
2555 uint32_t u;
2556 struct ody_gicd_icerrrx_s {
2557 uint32_t status0 : 1;
2558 uint32_t status1 : 1;
2559 uint32_t status2 : 1;
2560 uint32_t status3 : 1;
2561 uint32_t status4 : 1;
2562 uint32_t status5 : 1;
2563 uint32_t status6 : 1;
2564 uint32_t status7 : 1;
2565 uint32_t status8 : 1;
2566 uint32_t status9 : 1;
2567 uint32_t status10 : 1;
2568 uint32_t status11 : 1;
2569 uint32_t status12 : 1;
2570 uint32_t status13 : 1;
2571 uint32_t status14 : 1;
2572 uint32_t status15 : 1;
2573 uint32_t status16 : 1;
2574 uint32_t status17 : 1;
2575 uint32_t status18 : 1;
2576 uint32_t status19 : 1;
2577 uint32_t status20 : 1;
2578 uint32_t status21 : 1;
2579 uint32_t status22 : 1;
2580 uint32_t status23 : 1;
2581 uint32_t status24 : 1;
2582 uint32_t status25 : 1;
2583 uint32_t status26 : 1;
2584 uint32_t status27 : 1;
2585 uint32_t status28 : 1;
2586 uint32_t status29 : 1;
2587 uint32_t status30 : 1;
2588 uint32_t status31 : 1;
2589 } s;
2590 /* struct ody_gicd_icerrrx_s cn; */
2591 };
2592 typedef union ody_gicd_icerrrx ody_gicd_icerrrx_t;
2593
2594 static inline uint64_t ODY_GICD_ICERRRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ICERRRX(uint64_t a)2595 static inline uint64_t ODY_GICD_ICERRRX(uint64_t a)
2596 {
2597 if ((a >= 1) && (a <= 16))
2598 return 0x80100000e100ll + 4ll * ((a) & 0x1f);
2599 __ody_csr_fatal("GICD_ICERRRX", 1, a, 0, 0, 0, 0, 0);
2600 }
2601
2602 #define typedef_ODY_GICD_ICERRRX(a) ody_gicd_icerrrx_t
2603 #define bustype_ODY_GICD_ICERRRX(a) CSR_TYPE_NCB32b
2604 #define basename_ODY_GICD_ICERRRX(a) "GICD_ICERRRX"
2605 #define device_bar_ODY_GICD_ICERRRX(a) 0x0 /* PF_BAR0 */
2606 #define busnum_ODY_GICD_ICERRRX(a) (a)
2607 #define arguments_ODY_GICD_ICERRRX(a) (a), -1, -1, -1
2608
2609 /**
2610 * Register (NCB32b) gicd_icfgr#
2611 *
2612 * GICD Icfgr Register
2613 * The GICD_ICFGR2 characteristics are:
2614 *
2615 * * Purpose
2616 * Determines whether the corresponding interrupt is edge-triggered or level-sensitive
2617 * for interrupts 32 to 47.
2618 *
2619 * * Usage constraints
2620 * For INTID m, when DIV and MOD are the integer division and modulo operations:
2621 *
2622 * * The corresponding GICD(A)_ICFGR number, n, is given by n = m DIV 16.
2623 * * The offset of the required ICFGR is (0xC00 + (4*n)).
2624 * * The bit number of the required group modifier bit in this register is m MOD 32.
2625 *
2626 * Possible values for each interrupt are
2627 *
2628 * * 0b00 - Corresponding interrupt is level-sensitive.
2629 * * 0b10 - Corresponding interrupt is edge-triggered.
2630 *
2631 * The GIC will not update the Int_config2 bit if the corresponding interrupt is
2632 * enabled via GICD(A)_ISENABLER2
2633 *
2634 * * Configurations
2635 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
2636 * result in an error being logged. (See GICD_ERR0CTLR for details)
2637 */
2638 union ody_gicd_icfgrx {
2639 uint32_t u;
2640 struct ody_gicd_icfgrx_s {
2641 uint32_t int_config0 : 2;
2642 uint32_t int_config1 : 2;
2643 uint32_t int_config2 : 2;
2644 uint32_t int_config3 : 2;
2645 uint32_t int_config4 : 2;
2646 uint32_t int_config5 : 2;
2647 uint32_t int_config6 : 2;
2648 uint32_t int_config7 : 2;
2649 uint32_t int_config8 : 2;
2650 uint32_t int_config9 : 2;
2651 uint32_t int_config10 : 2;
2652 uint32_t int_config11 : 2;
2653 uint32_t int_config12 : 2;
2654 uint32_t int_config13 : 2;
2655 uint32_t int_config14 : 2;
2656 uint32_t int_config15 : 2;
2657 } s;
2658 /* struct ody_gicd_icfgrx_s cn; */
2659 };
2660 typedef union ody_gicd_icfgrx ody_gicd_icfgrx_t;
2661
2662 static inline uint64_t ODY_GICD_ICFGRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ICFGRX(uint64_t a)2663 static inline uint64_t ODY_GICD_ICFGRX(uint64_t a)
2664 {
2665 if ((a >= 2) && (a <= 33))
2666 return 0x801000000c00ll + 4ll * ((a) & 0x3f);
2667 __ody_csr_fatal("GICD_ICFGRX", 1, a, 0, 0, 0, 0, 0);
2668 }
2669
2670 #define typedef_ODY_GICD_ICFGRX(a) ody_gicd_icfgrx_t
2671 #define bustype_ODY_GICD_ICFGRX(a) CSR_TYPE_NCB32b
2672 #define basename_ODY_GICD_ICFGRX(a) "GICD_ICFGRX"
2673 #define device_bar_ODY_GICD_ICFGRX(a) 0x0 /* PF_BAR0 */
2674 #define busnum_ODY_GICD_ICFGRX(a) (a)
2675 #define arguments_ODY_GICD_ICFGRX(a) (a), -1, -1, -1
2676
2677 /**
2678 * Register (NCB32b) gicd_icgerrr#
2679 *
2680 * GICD Icgerrr Register
2681 * The GICD_ICGERRR1 characteristics are:
2682 *
2683 * * Purpose
2684 *
2685 * These registers can clear the error status of the GICD(A)_IGROUPRn,
2686 * GICD(A)_IGRPMODRn, and GICD(A)_NSACRn registers of an SPI or return the error status
2687 * of an SPI.
2688 * Applies to interrupts 16 to 31.
2689 *
2690 * * Usage constraints
2691 * This register is Secure access only.
2692 *
2693 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
2694 *
2695 * * The corresponding GICD(A)_ICGERRR number, n, is given by n = m DIV 16.
2696 * * The offset of the required ICGERRR register is (0xE180 + (4*n)).
2697 *
2698 * * Configurations
2699 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
2700 * result in an error being logged. (See GICD_ERR0CTLR for details)
2701 */
2702 union ody_gicd_icgerrrx {
2703 uint32_t u;
2704 struct ody_gicd_icgerrrx_s {
2705 uint32_t status0 : 1;
2706 uint32_t status1 : 1;
2707 uint32_t status2 : 1;
2708 uint32_t status3 : 1;
2709 uint32_t status4 : 1;
2710 uint32_t status5 : 1;
2711 uint32_t status6 : 1;
2712 uint32_t status7 : 1;
2713 uint32_t status8 : 1;
2714 uint32_t status9 : 1;
2715 uint32_t status10 : 1;
2716 uint32_t status11 : 1;
2717 uint32_t status12 : 1;
2718 uint32_t status13 : 1;
2719 uint32_t status14 : 1;
2720 uint32_t status15 : 1;
2721 uint32_t status16 : 1;
2722 uint32_t status17 : 1;
2723 uint32_t status18 : 1;
2724 uint32_t status19 : 1;
2725 uint32_t status20 : 1;
2726 uint32_t status21 : 1;
2727 uint32_t status22 : 1;
2728 uint32_t status23 : 1;
2729 uint32_t status24 : 1;
2730 uint32_t status25 : 1;
2731 uint32_t status26 : 1;
2732 uint32_t status27 : 1;
2733 uint32_t status28 : 1;
2734 uint32_t status29 : 1;
2735 uint32_t status30 : 1;
2736 uint32_t status31 : 1;
2737 } s;
2738 /* struct ody_gicd_icgerrrx_s cn; */
2739 };
2740 typedef union ody_gicd_icgerrrx ody_gicd_icgerrrx_t;
2741
2742 static inline uint64_t ODY_GICD_ICGERRRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ICGERRRX(uint64_t a)2743 static inline uint64_t ODY_GICD_ICGERRRX(uint64_t a)
2744 {
2745 if ((a >= 1) && (a <= 16))
2746 return 0x80100000e180ll + 4ll * ((a) & 0x1f);
2747 __ody_csr_fatal("GICD_ICGERRRX", 1, a, 0, 0, 0, 0, 0);
2748 }
2749
2750 #define typedef_ODY_GICD_ICGERRRX(a) ody_gicd_icgerrrx_t
2751 #define bustype_ODY_GICD_ICGERRRX(a) CSR_TYPE_NCB32b
2752 #define basename_ODY_GICD_ICGERRRX(a) "GICD_ICGERRRX"
2753 #define device_bar_ODY_GICD_ICGERRRX(a) 0x0 /* PF_BAR0 */
2754 #define busnum_ODY_GICD_ICGERRRX(a) (a)
2755 #define arguments_ODY_GICD_ICGERRRX(a) (a), -1, -1, -1
2756
2757 /**
2758 * Register (NCB32b) gicd_iclar#
2759 *
2760 * GICD Iclar Register
2761 * The GICD_ICLAR2 characteristics are:
2762 *
2763 * * Purpose
2764 * These registers control whether a 1 of N SPI can target a core that is assigned to
2765 * class 0 or class 1 group for interrupts 32 to 47.
2766 *
2767 * * Usage constraints
2768 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
2769 *
2770 * * The corresponding GICD(A)_ICLAR number, n, is given by n = m DIV 16.
2771 * * The offset of the required ICLAR register is (0xE000 + (4*n)).
2772 *
2773 * These registers are only accessible when the corresponding
2774 * GICD(A)_IROUTERn.Interrupt_Routing_Mode == 1.
2775 *
2776 * * Configurations
2777 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
2778 * result in an error being logged. (See GICD_ERR0CTLR for details)
2779 */
2780 union ody_gicd_iclarx {
2781 uint32_t u;
2782 struct ody_gicd_iclarx_s {
2783 uint32_t classes0 : 2;
2784 uint32_t classes1 : 2;
2785 uint32_t classes2 : 2;
2786 uint32_t classes3 : 2;
2787 uint32_t classes4 : 2;
2788 uint32_t classes5 : 2;
2789 uint32_t classes6 : 2;
2790 uint32_t classes7 : 2;
2791 uint32_t classes8 : 2;
2792 uint32_t classes9 : 2;
2793 uint32_t classes10 : 2;
2794 uint32_t classes11 : 2;
2795 uint32_t classes12 : 2;
2796 uint32_t classes13 : 2;
2797 uint32_t classes14 : 2;
2798 uint32_t classes15 : 2;
2799 } s;
2800 /* struct ody_gicd_iclarx_s cn; */
2801 };
2802 typedef union ody_gicd_iclarx ody_gicd_iclarx_t;
2803
2804 static inline uint64_t ODY_GICD_ICLARX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ICLARX(uint64_t a)2805 static inline uint64_t ODY_GICD_ICLARX(uint64_t a)
2806 {
2807 if ((a >= 2) && (a <= 33))
2808 return 0x80100000e000ll + 4ll * ((a) & 0x3f);
2809 __ody_csr_fatal("GICD_ICLARX", 1, a, 0, 0, 0, 0, 0);
2810 }
2811
2812 #define typedef_ODY_GICD_ICLARX(a) ody_gicd_iclarx_t
2813 #define bustype_ODY_GICD_ICLARX(a) CSR_TYPE_NCB32b
2814 #define basename_ODY_GICD_ICLARX(a) "GICD_ICLARX"
2815 #define device_bar_ODY_GICD_ICLARX(a) 0x0 /* PF_BAR0 */
2816 #define busnum_ODY_GICD_ICLARX(a) (a)
2817 #define arguments_ODY_GICD_ICLARX(a) (a), -1, -1, -1
2818
2819 /**
2820 * Register (NCB32b) gicd_icpendr#
2821 *
2822 * GICD Icpendr Register
2823 * The GICD_ICPENDR1 characteristics are:
2824 *
2825 * * Purpose
2826 * Removes the pending state from the corresponding interrupt for interrupts 32 to 63.
2827 *
2828 * * Usage constraints
2829 * For INTID m, when DIV and MOD are the integer division and modulo operations:
2830 *
2831 * * The corresponding GICD(A)_ICPENDR number, n, is given by n = m DIV 32.
2832 * * The offset of the required ICPENDR is (0x280 + (4*n)).
2833 * * The bit number of the required group modifier bit in this register is m MOD 32.
2834 *
2835 * If GICD(A)_CTLR.DS==0, unless the GICD(A)_NSACR registers permit Non-secure software
2836 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
2837 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
2838 * to Non-secure accesses.
2839 *
2840 * * Configurations
2841 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
2842 * result in an error being logged. (See GICD_ERR0CTLR for details)
2843 */
2844 union ody_gicd_icpendrx {
2845 uint32_t u;
2846 struct ody_gicd_icpendrx_s {
2847 uint32_t clear_pending_bit0 : 1;
2848 uint32_t clear_pending_bit1 : 1;
2849 uint32_t clear_pending_bit2 : 1;
2850 uint32_t clear_pending_bit3 : 1;
2851 uint32_t clear_pending_bit4 : 1;
2852 uint32_t clear_pending_bit5 : 1;
2853 uint32_t clear_pending_bit6 : 1;
2854 uint32_t clear_pending_bit7 : 1;
2855 uint32_t clear_pending_bit8 : 1;
2856 uint32_t clear_pending_bit9 : 1;
2857 uint32_t clear_pending_bit10 : 1;
2858 uint32_t clear_pending_bit11 : 1;
2859 uint32_t clear_pending_bit12 : 1;
2860 uint32_t clear_pending_bit13 : 1;
2861 uint32_t clear_pending_bit14 : 1;
2862 uint32_t clear_pending_bit15 : 1;
2863 uint32_t clear_pending_bit16 : 1;
2864 uint32_t clear_pending_bit17 : 1;
2865 uint32_t clear_pending_bit18 : 1;
2866 uint32_t clear_pending_bit19 : 1;
2867 uint32_t clear_pending_bit20 : 1;
2868 uint32_t clear_pending_bit21 : 1;
2869 uint32_t clear_pending_bit22 : 1;
2870 uint32_t clear_pending_bit23 : 1;
2871 uint32_t clear_pending_bit24 : 1;
2872 uint32_t clear_pending_bit25 : 1;
2873 uint32_t clear_pending_bit26 : 1;
2874 uint32_t clear_pending_bit27 : 1;
2875 uint32_t clear_pending_bit28 : 1;
2876 uint32_t clear_pending_bit29 : 1;
2877 uint32_t clear_pending_bit30 : 1;
2878 uint32_t clear_pending_bit31 : 1;
2879 } s;
2880 /* struct ody_gicd_icpendrx_s cn; */
2881 };
2882 typedef union ody_gicd_icpendrx ody_gicd_icpendrx_t;
2883
2884 static inline uint64_t ODY_GICD_ICPENDRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ICPENDRX(uint64_t a)2885 static inline uint64_t ODY_GICD_ICPENDRX(uint64_t a)
2886 {
2887 if ((a >= 1) && (a <= 16))
2888 return 0x801000000280ll + 4ll * ((a) & 0x1f);
2889 __ody_csr_fatal("GICD_ICPENDRX", 1, a, 0, 0, 0, 0, 0);
2890 }
2891
2892 #define typedef_ODY_GICD_ICPENDRX(a) ody_gicd_icpendrx_t
2893 #define bustype_ODY_GICD_ICPENDRX(a) CSR_TYPE_NCB32b
2894 #define basename_ODY_GICD_ICPENDRX(a) "GICD_ICPENDRX"
2895 #define device_bar_ODY_GICD_ICPENDRX(a) 0x0 /* PF_BAR0 */
2896 #define busnum_ODY_GICD_ICPENDRX(a) (a)
2897 #define arguments_ODY_GICD_ICPENDRX(a) (a), -1, -1, -1
2898
2899 /**
2900 * Register (NCB32b) gicd_igroupr#
2901 *
2902 * GICD Igroupr Register
2903 * The GICD_IGROUPR1 characteristics are:
2904 *
2905 * * Purpose
2906 * Controls whether the corresponding interrupt is in Group 0 or Group 1 for interrupts 32 to 63.
2907 *
2908 * * Usage constraints
2909 * When GICD(A)_CTLR.DS==0, the register is RAZ/WI to Non-secure accesses.
2910 *
2911 * For INTID m, when DIV and MOD are the integer division and modulo operations:
2912 *
2913 * * The corresponding GICD(A)_IGROUP number, n, is given by n = m DIV 32.
2914 * * The offset of the required IGROUP register is (0x080 + (4*n)).
2915 * * The bit number of the required group modifier bit in this register is m MOD 32.
2916 *
2917 * * Configurations
2918 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
2919 * result in an error being logged. (See GICD_ERR0CTLR for details)
2920 */
2921 union ody_gicd_igrouprx {
2922 uint32_t u;
2923 struct ody_gicd_igrouprx_s {
2924 uint32_t group_status_bit0 : 1;
2925 uint32_t group_status_bit1 : 1;
2926 uint32_t group_status_bit2 : 1;
2927 uint32_t group_status_bit3 : 1;
2928 uint32_t group_status_bit4 : 1;
2929 uint32_t group_status_bit5 : 1;
2930 uint32_t group_status_bit6 : 1;
2931 uint32_t group_status_bit7 : 1;
2932 uint32_t group_status_bit8 : 1;
2933 uint32_t group_status_bit9 : 1;
2934 uint32_t group_status_bit10 : 1;
2935 uint32_t group_status_bit11 : 1;
2936 uint32_t group_status_bit12 : 1;
2937 uint32_t group_status_bit13 : 1;
2938 uint32_t group_status_bit14 : 1;
2939 uint32_t group_status_bit15 : 1;
2940 uint32_t group_status_bit16 : 1;
2941 uint32_t group_status_bit17 : 1;
2942 uint32_t group_status_bit18 : 1;
2943 uint32_t group_status_bit19 : 1;
2944 uint32_t group_status_bit20 : 1;
2945 uint32_t group_status_bit21 : 1;
2946 uint32_t group_status_bit22 : 1;
2947 uint32_t group_status_bit23 : 1;
2948 uint32_t group_status_bit24 : 1;
2949 uint32_t group_status_bit25 : 1;
2950 uint32_t group_status_bit26 : 1;
2951 uint32_t group_status_bit27 : 1;
2952 uint32_t group_status_bit28 : 1;
2953 uint32_t group_status_bit29 : 1;
2954 uint32_t group_status_bit30 : 1;
2955 uint32_t group_status_bit31 : 1;
2956 } s;
2957 /* struct ody_gicd_igrouprx_s cn; */
2958 };
2959 typedef union ody_gicd_igrouprx ody_gicd_igrouprx_t;
2960
2961 static inline uint64_t ODY_GICD_IGROUPRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_IGROUPRX(uint64_t a)2962 static inline uint64_t ODY_GICD_IGROUPRX(uint64_t a)
2963 {
2964 if ((a >= 1) && (a <= 16))
2965 return 0x801000000080ll + 4ll * ((a) & 0x1f);
2966 __ody_csr_fatal("GICD_IGROUPRX", 1, a, 0, 0, 0, 0, 0);
2967 }
2968
2969 #define typedef_ODY_GICD_IGROUPRX(a) ody_gicd_igrouprx_t
2970 #define bustype_ODY_GICD_IGROUPRX(a) CSR_TYPE_NCB32b
2971 #define basename_ODY_GICD_IGROUPRX(a) "GICD_IGROUPRX"
2972 #define device_bar_ODY_GICD_IGROUPRX(a) 0x0 /* PF_BAR0 */
2973 #define busnum_ODY_GICD_IGROUPRX(a) (a)
2974 #define arguments_ODY_GICD_IGROUPRX(a) (a), -1, -1, -1
2975
2976 /**
2977 * Register (NCB32b) gicd_igrpmodr#
2978 *
2979 * GICD Igrpmodr Register
2980 * The GICD_IGRPMODR1 characteristics are:
2981 *
2982 * * Purpose
2983 * When GICD(A)_CTLR.DS==0, this register together with the GICD(A)_IGROUPR1 register,
2984 * controls whether the corresponding interrupt is in:
2985 *
2986 * * Secure Group 0.
2987 * * Non-secure Group 1.
2988 * * Secure Group 1.
2989 *
2990 * Applies to interrupts 32 to 63
2991 *
2992 * * Usage constraints
2993 * For INTID m, when DIV and MOD are the integer division and modulo operations:
2994 *
2995 * * The corresponding GICD(A)_IGRPMODR number, n, is given by n = m DIV 32.
2996 * * The offset of the required IGRPMODR is (0xD00 + (4*n)).
2997 * * The bit number of the required group modifier bit in this register is m MOD 32.
2998 *
2999 * When GICD(A)_CTLR.DS==0, the register is RAZ/WI to Non-secure accesses.
3000 * When GICD(A)_CTLR.DS==1, the GICD(A)_IGRPMODR registers are RAZ/WI.
3001 *
3002 * * Configurations
3003 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
3004 * result in an error being logged. (See GICD_ERR0CTLR for details)
3005 */
3006 union ody_gicd_igrpmodrx {
3007 uint32_t u;
3008 struct ody_gicd_igrpmodrx_s {
3009 uint32_t group_modifier_bit0 : 1;
3010 uint32_t group_modifier_bit1 : 1;
3011 uint32_t group_modifier_bit2 : 1;
3012 uint32_t group_modifier_bit3 : 1;
3013 uint32_t group_modifier_bit4 : 1;
3014 uint32_t group_modifier_bit5 : 1;
3015 uint32_t group_modifier_bit6 : 1;
3016 uint32_t group_modifier_bit7 : 1;
3017 uint32_t group_modifier_bit8 : 1;
3018 uint32_t group_modifier_bit9 : 1;
3019 uint32_t group_modifier_bit10 : 1;
3020 uint32_t group_modifier_bit11 : 1;
3021 uint32_t group_modifier_bit12 : 1;
3022 uint32_t group_modifier_bit13 : 1;
3023 uint32_t group_modifier_bit14 : 1;
3024 uint32_t group_modifier_bit15 : 1;
3025 uint32_t group_modifier_bit16 : 1;
3026 uint32_t group_modifier_bit17 : 1;
3027 uint32_t group_modifier_bit18 : 1;
3028 uint32_t group_modifier_bit19 : 1;
3029 uint32_t group_modifier_bit20 : 1;
3030 uint32_t group_modifier_bit21 : 1;
3031 uint32_t group_modifier_bit22 : 1;
3032 uint32_t group_modifier_bit23 : 1;
3033 uint32_t group_modifier_bit24 : 1;
3034 uint32_t group_modifier_bit25 : 1;
3035 uint32_t group_modifier_bit26 : 1;
3036 uint32_t group_modifier_bit27 : 1;
3037 uint32_t group_modifier_bit28 : 1;
3038 uint32_t group_modifier_bit29 : 1;
3039 uint32_t group_modifier_bit30 : 1;
3040 uint32_t group_modifier_bit31 : 1;
3041 } s;
3042 /* struct ody_gicd_igrpmodrx_s cn; */
3043 };
3044 typedef union ody_gicd_igrpmodrx ody_gicd_igrpmodrx_t;
3045
3046 static inline uint64_t ODY_GICD_IGRPMODRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_IGRPMODRX(uint64_t a)3047 static inline uint64_t ODY_GICD_IGRPMODRX(uint64_t a)
3048 {
3049 if ((a >= 1) && (a <= 16))
3050 return 0x801000000d00ll + 4ll * ((a) & 0x1f);
3051 __ody_csr_fatal("GICD_IGRPMODRX", 1, a, 0, 0, 0, 0, 0);
3052 }
3053
3054 #define typedef_ODY_GICD_IGRPMODRX(a) ody_gicd_igrpmodrx_t
3055 #define bustype_ODY_GICD_IGRPMODRX(a) CSR_TYPE_NCB32b
3056 #define basename_ODY_GICD_IGRPMODRX(a) "GICD_IGRPMODRX"
3057 #define device_bar_ODY_GICD_IGRPMODRX(a) 0x0 /* PF_BAR0 */
3058 #define busnum_ODY_GICD_IGRPMODRX(a) (a)
3059 #define arguments_ODY_GICD_IGRPMODRX(a) (a), -1, -1, -1
3060
3061 /**
3062 * Register (NCB32b) gicd_iidr
3063 *
3064 * GICD Iidr Register
3065 * The GICD_IIDR characteristics are:
3066 *
3067 * * Purpose
3068 * Provides information about the implementer and revision of the Distributor
3069 *
3070 * * Usage constraints
3071 * There are no usage constraints.
3072 *
3073 * * Configurations
3074 * This register is available in all configurations of the GIC.
3075 */
3076 union ody_gicd_iidr {
3077 uint32_t u;
3078 struct ody_gicd_iidr_s {
3079 uint32_t implementer : 12;
3080 uint32_t revision : 4;
3081 uint32_t variant : 4;
3082 uint32_t reserved_20_23 : 4;
3083 uint32_t productid : 8;
3084 } s;
3085 /* struct ody_gicd_iidr_s cn; */
3086 };
3087 typedef union ody_gicd_iidr ody_gicd_iidr_t;
3088
3089 #define ODY_GICD_IIDR ODY_GICD_IIDR_FUNC()
3090 static inline uint64_t ODY_GICD_IIDR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_IIDR_FUNC(void)3091 static inline uint64_t ODY_GICD_IIDR_FUNC(void)
3092 {
3093 return 0x801000000008ll;
3094 }
3095
3096 #define typedef_ODY_GICD_IIDR ody_gicd_iidr_t
3097 #define bustype_ODY_GICD_IIDR CSR_TYPE_NCB32b
3098 #define basename_ODY_GICD_IIDR "GICD_IIDR"
3099 #define device_bar_ODY_GICD_IIDR 0x0 /* PF_BAR0 */
3100 #define busnum_ODY_GICD_IIDR 0
3101 #define arguments_ODY_GICD_IIDR -1, -1, -1, -1
3102
3103 /**
3104 * Register (NCB) gicd_int_ena_w1c
3105 *
3106 * GICD Interrupt Enable Set Register
3107 * This register clears interrupt enable bits.
3108 */
3109 union ody_gicd_int_ena_w1c {
3110 uint64_t u;
3111 struct ody_gicd_int_ena_w1c_s {
3112 uint64_t err_int : 1;
3113 uint64_t fault_int : 1;
3114 uint64_t pmu_int : 1;
3115 uint64_t msix_vmem_sbe_int : 1;
3116 uint64_t msix_vmem_dbe_int : 1;
3117 uint64_t reserved_5_63 : 59;
3118 } s;
3119 /* struct ody_gicd_int_ena_w1c_s cn; */
3120 };
3121 typedef union ody_gicd_int_ena_w1c ody_gicd_int_ena_w1c_t;
3122
3123 #define ODY_GICD_INT_ENA_W1C ODY_GICD_INT_ENA_W1C_FUNC()
3124 static inline uint64_t ODY_GICD_INT_ENA_W1C_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_INT_ENA_W1C_FUNC(void)3125 static inline uint64_t ODY_GICD_INT_ENA_W1C_FUNC(void)
3126 {
3127 return 0x801010002018ll;
3128 }
3129
3130 #define typedef_ODY_GICD_INT_ENA_W1C ody_gicd_int_ena_w1c_t
3131 #define bustype_ODY_GICD_INT_ENA_W1C CSR_TYPE_NCB
3132 #define basename_ODY_GICD_INT_ENA_W1C "GICD_INT_ENA_W1C"
3133 #define device_bar_ODY_GICD_INT_ENA_W1C 0x0 /* PF_BAR0 */
3134 #define busnum_ODY_GICD_INT_ENA_W1C 0
3135 #define arguments_ODY_GICD_INT_ENA_W1C -1, -1, -1, -1
3136
3137 /**
3138 * Register (NCB) gicd_int_ena_w1s
3139 *
3140 * GICD Interrupt Enable Set Register
3141 * This register sets interrupt enable bits.
3142 */
3143 union ody_gicd_int_ena_w1s {
3144 uint64_t u;
3145 struct ody_gicd_int_ena_w1s_s {
3146 uint64_t err_int : 1;
3147 uint64_t fault_int : 1;
3148 uint64_t pmu_int : 1;
3149 uint64_t msix_vmem_sbe_int : 1;
3150 uint64_t msix_vmem_dbe_int : 1;
3151 uint64_t reserved_5_63 : 59;
3152 } s;
3153 /* struct ody_gicd_int_ena_w1s_s cn; */
3154 };
3155 typedef union ody_gicd_int_ena_w1s ody_gicd_int_ena_w1s_t;
3156
3157 #define ODY_GICD_INT_ENA_W1S ODY_GICD_INT_ENA_W1S_FUNC()
3158 static inline uint64_t ODY_GICD_INT_ENA_W1S_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_INT_ENA_W1S_FUNC(void)3159 static inline uint64_t ODY_GICD_INT_ENA_W1S_FUNC(void)
3160 {
3161 return 0x801010002010ll;
3162 }
3163
3164 #define typedef_ODY_GICD_INT_ENA_W1S ody_gicd_int_ena_w1s_t
3165 #define bustype_ODY_GICD_INT_ENA_W1S CSR_TYPE_NCB
3166 #define basename_ODY_GICD_INT_ENA_W1S "GICD_INT_ENA_W1S"
3167 #define device_bar_ODY_GICD_INT_ENA_W1S 0x0 /* PF_BAR0 */
3168 #define busnum_ODY_GICD_INT_ENA_W1S 0
3169 #define arguments_ODY_GICD_INT_ENA_W1S -1, -1, -1, -1
3170
3171 /**
3172 * Register (NCB) gicd_int_w1c
3173 *
3174 * GICD Interrupt Clear Register
3175 */
3176 union ody_gicd_int_w1c {
3177 uint64_t u;
3178 struct ody_gicd_int_w1c_s {
3179 uint64_t err_int : 1;
3180 uint64_t fault_int : 1;
3181 uint64_t pmu_int : 1;
3182 uint64_t msix_vmem_sbe_int : 1;
3183 uint64_t msix_vmem_dbe_int : 1;
3184 uint64_t reserved_5_63 : 59;
3185 } s;
3186 /* struct ody_gicd_int_w1c_s cn; */
3187 };
3188 typedef union ody_gicd_int_w1c ody_gicd_int_w1c_t;
3189
3190 #define ODY_GICD_INT_W1C ODY_GICD_INT_W1C_FUNC()
3191 static inline uint64_t ODY_GICD_INT_W1C_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_INT_W1C_FUNC(void)3192 static inline uint64_t ODY_GICD_INT_W1C_FUNC(void)
3193 {
3194 return 0x801010002000ll;
3195 }
3196
3197 #define typedef_ODY_GICD_INT_W1C ody_gicd_int_w1c_t
3198 #define bustype_ODY_GICD_INT_W1C CSR_TYPE_NCB
3199 #define basename_ODY_GICD_INT_W1C "GICD_INT_W1C"
3200 #define device_bar_ODY_GICD_INT_W1C 0x0 /* PF_BAR0 */
3201 #define busnum_ODY_GICD_INT_W1C 0
3202 #define arguments_ODY_GICD_INT_W1C -1, -1, -1, -1
3203
3204 /**
3205 * Register (NCB) gicd_int_w1s
3206 *
3207 * GICD Interrupt Set Register
3208 * This register sets interrupt bits.
3209 */
3210 union ody_gicd_int_w1s {
3211 uint64_t u;
3212 struct ody_gicd_int_w1s_s {
3213 uint64_t err_int : 1;
3214 uint64_t fault_int : 1;
3215 uint64_t pmu_int : 1;
3216 uint64_t msix_vmem_sbe_int : 1;
3217 uint64_t msix_vmem_dbe_int : 1;
3218 uint64_t reserved_5_63 : 59;
3219 } s;
3220 /* struct ody_gicd_int_w1s_s cn; */
3221 };
3222 typedef union ody_gicd_int_w1s ody_gicd_int_w1s_t;
3223
3224 #define ODY_GICD_INT_W1S ODY_GICD_INT_W1S_FUNC()
3225 static inline uint64_t ODY_GICD_INT_W1S_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_INT_W1S_FUNC(void)3226 static inline uint64_t ODY_GICD_INT_W1S_FUNC(void)
3227 {
3228 return 0x801010002008ll;
3229 }
3230
3231 #define typedef_ODY_GICD_INT_W1S ody_gicd_int_w1s_t
3232 #define bustype_ODY_GICD_INT_W1S CSR_TYPE_NCB
3233 #define basename_ODY_GICD_INT_W1S "GICD_INT_W1S"
3234 #define device_bar_ODY_GICD_INT_W1S 0x0 /* PF_BAR0 */
3235 #define busnum_ODY_GICD_INT_W1S 0
3236 #define arguments_ODY_GICD_INT_W1S -1, -1, -1, -1
3237
3238 /**
3239 * Register (NCB32b) gicd_ipriorityr#
3240 *
3241 * GICD Ipriorityr Register
3242 * The GICD_IPRIORITYR8 characteristics are:
3243 *
3244 * * Purpose
3245 * Holds the priority of interrupts 32 to 35.
3246 *
3247 * * Usage constraints
3248 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
3249 *
3250 * * The corresponding GICD(A)_IPRIORITYR8 number, n, is given by n = m DIV 4.
3251 * * The offset of the required IPRIORITYR register is (0x400 + (4*n)).
3252 * * The byte offset of the required Priority field in this register is m MOD 4, where:
3253 * * Byte offset 0 refers to register bits [7:0].
3254 * * Byte offset 1 refers to register bits [15:8].
3255 * * Byte offset 2 refers to register bits [23:16].
3256 * * Byte offset 3 refers to register bits [31:24].
3257 *
3258 * These registers are byte-accessible.
3259 *
3260 * The GIC implements 5 bits of priority and in each field, unimplemented bits are
3261 * RAZ/WI, see Interrupt prioritization on page 4-65.
3262 *
3263 * When GICD(A)_CTLR.DS==0:
3264 *
3265 * * A register bit that corresponds to a Group 0 or Secure Group 1 interrupt is RAZ/WI
3266 * to Non-secure accesses.
3267 * * A Non-secure access to a field that corresponds to a Non-secure Group 1 interrupt
3268 * behaves as described in Software accesses of interrupt priority on page 4-72.
3269 *
3270 * * Configurations
3271 * Accessing registers where n is greater than 4*(GICD(A)_TYPER.ITLinesNumber+1) may
3272 * result in an error being logged. (See GICD_ERR0CTLR for details)
3273 */
3274 union ody_gicd_ipriorityrx {
3275 uint32_t u;
3276 struct ody_gicd_ipriorityrx_s {
3277 uint32_t offset0 : 8;
3278 uint32_t offset1 : 8;
3279 uint32_t offset2 : 8;
3280 uint32_t offset3 : 8;
3281 } s;
3282 /* struct ody_gicd_ipriorityrx_s cn; */
3283 };
3284 typedef union ody_gicd_ipriorityrx ody_gicd_ipriorityrx_t;
3285
3286 static inline uint64_t ODY_GICD_IPRIORITYRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_IPRIORITYRX(uint64_t a)3287 static inline uint64_t ODY_GICD_IPRIORITYRX(uint64_t a)
3288 {
3289 if ((a >= 8) && (a <= 135))
3290 return 0x801000000400ll + 4ll * ((a) & 0xff);
3291 __ody_csr_fatal("GICD_IPRIORITYRX", 1, a, 0, 0, 0, 0, 0);
3292 }
3293
3294 #define typedef_ODY_GICD_IPRIORITYRX(a) ody_gicd_ipriorityrx_t
3295 #define bustype_ODY_GICD_IPRIORITYRX(a) CSR_TYPE_NCB32b
3296 #define basename_ODY_GICD_IPRIORITYRX(a) "GICD_IPRIORITYRX"
3297 #define device_bar_ODY_GICD_IPRIORITYRX(a) 0x0 /* PF_BAR0 */
3298 #define busnum_ODY_GICD_IPRIORITYRX(a) (a)
3299 #define arguments_ODY_GICD_IPRIORITYRX(a) (a), -1, -1, -1
3300
3301 /**
3302 * Register (NCB) gicd_irouter#
3303 *
3304 * GICD Irouter Register
3305 * The GICD_IROUTER32 characteristics are:
3306 *
3307 * * Purpose
3308 * Provides routing information for the corresponding SPI of ID 32:
3309 * * Usage constraints
3310 * When GICD(A)_CTLR.DS==0, a register that corresponds to a Group 0 or Secure Group 1
3311 * interrupt is RAZ/WI to Non-secure accesses (unless enabled by GICD(A)_CTLR.NSACR)
3312 * * Configurations
3313 * These registers are available in all GIC configurations.
3314 *
3315 * Accessing registers where n is greater than 32*(GICD(A)_TYPER.ITLinesNumber+1) may
3316 * result in an error being logged. (See GICD_ERR0CTLR for details)
3317 */
3318 union ody_gicd_irouterx {
3319 uint64_t u;
3320 struct ody_gicd_irouterx_s {
3321 uint64_t affinity0 : 8;
3322 uint64_t affinity1 : 8;
3323 uint64_t affinity2 : 8;
3324 uint64_t reserved_24_30 : 7;
3325 uint64_t interruptroutingmode : 1;
3326 uint64_t affinity3 : 8;
3327 uint64_t reserved_40_63 : 24;
3328 } s;
3329 /* struct ody_gicd_irouterx_s cn; */
3330 };
3331 typedef union ody_gicd_irouterx ody_gicd_irouterx_t;
3332
3333 static inline uint64_t ODY_GICD_IROUTERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_IROUTERX(uint64_t a)3334 static inline uint64_t ODY_GICD_IROUTERX(uint64_t a)
3335 {
3336 if ((a >= 32) && (a <= 543))
3337 return 0x801000006000ll + 8ll * ((a) & 0x3ff);
3338 __ody_csr_fatal("GICD_IROUTERX", 1, a, 0, 0, 0, 0, 0);
3339 }
3340
3341 #define typedef_ODY_GICD_IROUTERX(a) ody_gicd_irouterx_t
3342 #define bustype_ODY_GICD_IROUTERX(a) CSR_TYPE_NCB
3343 #define basename_ODY_GICD_IROUTERX(a) "GICD_IROUTERX"
3344 #define device_bar_ODY_GICD_IROUTERX(a) 0x0 /* PF_BAR0 */
3345 #define busnum_ODY_GICD_IROUTERX(a) (a)
3346 #define arguments_ODY_GICD_IROUTERX(a) (a), -1, -1, -1
3347
3348 /**
3349 * Register (NCB32b) gicd_isactiver#
3350 *
3351 * GICD Isactiver Register
3352 * The GICD_ISACTIVER1 characteristics are:
3353 *
3354 * * Purpose
3355 * Activates the corresponding interrupt. These registers are used when saving and
3356 * restoring state for interrupts 32 to 63.
3357 *
3358 * * Usage constraints
3359 * For INTID m, when DIV and MOD are the integer division and modulo operations:
3360 *
3361 * * The corresponding GICD(A)_ISACTIVER number, n, is given by n = m DIV 32.
3362 * * The offset of the required ISACTIVER is (0x300 + (4*n)).
3363 * * The bit number of the required group modifier bit in this register is m MOD 32.
3364 *
3365 * If GICD(A)_CTLR.DS==0, unless the GICD(A)_NSACR registers permit Non-secure software
3366 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
3367 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
3368 * to Non-secure accesses.
3369 * The bit reads as one if the status of the interrupt is active or active and pending.
3370 * GICD(A)_ISPENDR1 and GICD(A)_ICPENDR1 provide the pending status of the interrupt.
3371 *
3372 * * Configurations
3373 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
3374 * result in an error being logged. (See GICD_ERR0CTLR for details)
3375 */
3376 union ody_gicd_isactiverx {
3377 uint32_t u;
3378 struct ody_gicd_isactiverx_s {
3379 uint32_t set_active_bit0 : 1;
3380 uint32_t set_active_bit1 : 1;
3381 uint32_t set_active_bit2 : 1;
3382 uint32_t set_active_bit3 : 1;
3383 uint32_t set_active_bit4 : 1;
3384 uint32_t set_active_bit5 : 1;
3385 uint32_t set_active_bit6 : 1;
3386 uint32_t set_active_bit7 : 1;
3387 uint32_t set_active_bit8 : 1;
3388 uint32_t set_active_bit9 : 1;
3389 uint32_t set_active_bit10 : 1;
3390 uint32_t set_active_bit11 : 1;
3391 uint32_t set_active_bit12 : 1;
3392 uint32_t set_active_bit13 : 1;
3393 uint32_t set_active_bit14 : 1;
3394 uint32_t set_active_bit15 : 1;
3395 uint32_t set_active_bit16 : 1;
3396 uint32_t set_active_bit17 : 1;
3397 uint32_t set_active_bit18 : 1;
3398 uint32_t set_active_bit19 : 1;
3399 uint32_t set_active_bit20 : 1;
3400 uint32_t set_active_bit21 : 1;
3401 uint32_t set_active_bit22 : 1;
3402 uint32_t set_active_bit23 : 1;
3403 uint32_t set_active_bit24 : 1;
3404 uint32_t set_active_bit25 : 1;
3405 uint32_t set_active_bit26 : 1;
3406 uint32_t set_active_bit27 : 1;
3407 uint32_t set_active_bit28 : 1;
3408 uint32_t set_active_bit29 : 1;
3409 uint32_t set_active_bit30 : 1;
3410 uint32_t set_active_bit31 : 1;
3411 } s;
3412 /* struct ody_gicd_isactiverx_s cn; */
3413 };
3414 typedef union ody_gicd_isactiverx ody_gicd_isactiverx_t;
3415
3416 static inline uint64_t ODY_GICD_ISACTIVERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ISACTIVERX(uint64_t a)3417 static inline uint64_t ODY_GICD_ISACTIVERX(uint64_t a)
3418 {
3419 if ((a >= 1) && (a <= 16))
3420 return 0x801000000300ll + 4ll * ((a) & 0x1f);
3421 __ody_csr_fatal("GICD_ISACTIVERX", 1, a, 0, 0, 0, 0, 0);
3422 }
3423
3424 #define typedef_ODY_GICD_ISACTIVERX(a) ody_gicd_isactiverx_t
3425 #define bustype_ODY_GICD_ISACTIVERX(a) CSR_TYPE_NCB32b
3426 #define basename_ODY_GICD_ISACTIVERX(a) "GICD_ISACTIVERX"
3427 #define device_bar_ODY_GICD_ISACTIVERX(a) 0x0 /* PF_BAR0 */
3428 #define busnum_ODY_GICD_ISACTIVERX(a) (a)
3429 #define arguments_ODY_GICD_ISACTIVERX(a) (a), -1, -1, -1
3430
3431 /**
3432 * Register (NCB32b) gicd_isenabler#
3433 *
3434 * GICD Isenabler Register
3435 * The GICD_ISENABLER1 characteristics are:
3436 *
3437 * * Purpose
3438 * Enables forwarding of the corresponding interrupt to the CPU interfaces for interrupts 32 to 63.
3439 *
3440 * * Usage constraints
3441 * For INTID m, when DIV and MOD are the integer division and modulo operations:
3442 *
3443 * * The corresponding GICD(A)_ISENABLER number, n, is given by n = m DIV 32.
3444 * * The offset of the ISENABLER is (0x100 + (4*n)).
3445 * * The bit number of the required group modifier bit in this register is m MOD 32.
3446 *
3447 * When GICD(A)_CTLR.DS==0, bits corresponding to Group 0 and Secure Group 1 interrupts
3448 * are RAZ/WI to Non-secure accesses.
3449 *
3450 * At start-up, and after a reset, a PE can use this register to discover which
3451 * peripheral INTIDs the GIC supports. If GICD(A)_CTLR.DS==0 in a system that supports
3452 * EL3, the PE must do this for the Secure view of the available interrupts, and Non-
3453 * secure software running on the PE must do this discovery after the Secure software
3454 * has configured interrupts as Group 0/Secure Group 1 and Non-secure Group 1.
3455 *
3456 * * Configurations
3457 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
3458 * result in an error being logged. (See GICD_ERR0CTLR for details)
3459 */
3460 union ody_gicd_isenablerx {
3461 uint32_t u;
3462 struct ody_gicd_isenablerx_s {
3463 uint32_t set_enable_bit0 : 1;
3464 uint32_t set_enable_bit1 : 1;
3465 uint32_t set_enable_bit2 : 1;
3466 uint32_t set_enable_bit3 : 1;
3467 uint32_t set_enable_bit4 : 1;
3468 uint32_t set_enable_bit5 : 1;
3469 uint32_t set_enable_bit6 : 1;
3470 uint32_t set_enable_bit7 : 1;
3471 uint32_t set_enable_bit8 : 1;
3472 uint32_t set_enable_bit9 : 1;
3473 uint32_t set_enable_bit10 : 1;
3474 uint32_t set_enable_bit11 : 1;
3475 uint32_t set_enable_bit12 : 1;
3476 uint32_t set_enable_bit13 : 1;
3477 uint32_t set_enable_bit14 : 1;
3478 uint32_t set_enable_bit15 : 1;
3479 uint32_t set_enable_bit16 : 1;
3480 uint32_t set_enable_bit17 : 1;
3481 uint32_t set_enable_bit18 : 1;
3482 uint32_t set_enable_bit19 : 1;
3483 uint32_t set_enable_bit20 : 1;
3484 uint32_t set_enable_bit21 : 1;
3485 uint32_t set_enable_bit22 : 1;
3486 uint32_t set_enable_bit23 : 1;
3487 uint32_t set_enable_bit24 : 1;
3488 uint32_t set_enable_bit25 : 1;
3489 uint32_t set_enable_bit26 : 1;
3490 uint32_t set_enable_bit27 : 1;
3491 uint32_t set_enable_bit28 : 1;
3492 uint32_t set_enable_bit29 : 1;
3493 uint32_t set_enable_bit30 : 1;
3494 uint32_t set_enable_bit31 : 1;
3495 } s;
3496 /* struct ody_gicd_isenablerx_s cn; */
3497 };
3498 typedef union ody_gicd_isenablerx ody_gicd_isenablerx_t;
3499
3500 static inline uint64_t ODY_GICD_ISENABLERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ISENABLERX(uint64_t a)3501 static inline uint64_t ODY_GICD_ISENABLERX(uint64_t a)
3502 {
3503 if ((a >= 1) && (a <= 16))
3504 return 0x801000000100ll + 4ll * ((a) & 0x1f);
3505 __ody_csr_fatal("GICD_ISENABLERX", 1, a, 0, 0, 0, 0, 0);
3506 }
3507
3508 #define typedef_ODY_GICD_ISENABLERX(a) ody_gicd_isenablerx_t
3509 #define bustype_ODY_GICD_ISENABLERX(a) CSR_TYPE_NCB32b
3510 #define basename_ODY_GICD_ISENABLERX(a) "GICD_ISENABLERX"
3511 #define device_bar_ODY_GICD_ISENABLERX(a) 0x0 /* PF_BAR0 */
3512 #define busnum_ODY_GICD_ISENABLERX(a) (a)
3513 #define arguments_ODY_GICD_ISENABLERX(a) (a), -1, -1, -1
3514
3515 /**
3516 * Register (NCB32b) gicd_iserrr#
3517 *
3518 * GICD Iserrr Register
3519 * The GICD_ISERRR1 characteristics are:
3520 *
3521 * * Purpose
3522 *
3523 * These registers can set the error status of an SPI or return the error status of an
3524 * SPI for interrupts 16 to 31.
3525 *
3526 * * Usage constraints
3527 * This register is Secure access only
3528 *
3529 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
3530 *
3531 * * The corresponding GICD(A)_ISERRR number, n, is given by n = m DIV 16.
3532 * * The offset of the required ISERRR register is (0xE200 + (4*n)).
3533 *
3534 * * Configurations
3535 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
3536 * result in an error being logged. (See GICD_ERR0CTLR for details)
3537 */
3538 union ody_gicd_iserrrx {
3539 uint32_t u;
3540 struct ody_gicd_iserrrx_s {
3541 uint32_t status0 : 1;
3542 uint32_t status1 : 1;
3543 uint32_t status2 : 1;
3544 uint32_t status3 : 1;
3545 uint32_t status4 : 1;
3546 uint32_t status5 : 1;
3547 uint32_t status6 : 1;
3548 uint32_t status7 : 1;
3549 uint32_t status8 : 1;
3550 uint32_t status9 : 1;
3551 uint32_t status10 : 1;
3552 uint32_t status11 : 1;
3553 uint32_t status12 : 1;
3554 uint32_t status13 : 1;
3555 uint32_t status14 : 1;
3556 uint32_t status15 : 1;
3557 uint32_t status16 : 1;
3558 uint32_t status17 : 1;
3559 uint32_t status18 : 1;
3560 uint32_t status19 : 1;
3561 uint32_t status20 : 1;
3562 uint32_t status21 : 1;
3563 uint32_t status22 : 1;
3564 uint32_t status23 : 1;
3565 uint32_t status24 : 1;
3566 uint32_t status25 : 1;
3567 uint32_t status26 : 1;
3568 uint32_t status27 : 1;
3569 uint32_t status28 : 1;
3570 uint32_t status29 : 1;
3571 uint32_t status30 : 1;
3572 uint32_t status31 : 1;
3573 } s;
3574 /* struct ody_gicd_iserrrx_s cn; */
3575 };
3576 typedef union ody_gicd_iserrrx ody_gicd_iserrrx_t;
3577
3578 static inline uint64_t ODY_GICD_ISERRRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ISERRRX(uint64_t a)3579 static inline uint64_t ODY_GICD_ISERRRX(uint64_t a)
3580 {
3581 if ((a >= 1) && (a <= 16))
3582 return 0x80100000e200ll + 4ll * ((a) & 0x1f);
3583 __ody_csr_fatal("GICD_ISERRRX", 1, a, 0, 0, 0, 0, 0);
3584 }
3585
3586 #define typedef_ODY_GICD_ISERRRX(a) ody_gicd_iserrrx_t
3587 #define bustype_ODY_GICD_ISERRRX(a) CSR_TYPE_NCB32b
3588 #define basename_ODY_GICD_ISERRRX(a) "GICD_ISERRRX"
3589 #define device_bar_ODY_GICD_ISERRRX(a) 0x0 /* PF_BAR0 */
3590 #define busnum_ODY_GICD_ISERRRX(a) (a)
3591 #define arguments_ODY_GICD_ISERRRX(a) (a), -1, -1, -1
3592
3593 /**
3594 * Register (NCB32b) gicd_ispendr#
3595 *
3596 * GICD Ispendr Register
3597 * The GICD_ISPENDR1 characteristics are:
3598 *
3599 * * Purpose
3600 * Adds the pending state to the corresponding interrupt for interrupts 32 to 63.
3601 *
3602 * * Usage constraints
3603 * For INTID m, when DIV and MOD are the integer division and modulo operations:
3604 *
3605 * * The corresponding GICD(A)_ISPENDR number, n, is given by n = m DIV 32.
3606 * * The offset of the required ISPENDR is (0x200 + (4*n)).
3607 * * The bit number of the required group modifier bit in this register is m MOD 32.
3608 *
3609 * If GICD(A)_CTLR.DS==0, unless the GICD(A)_NSACR registers permit Non-secure software
3610 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
3611 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
3612 * to Non-secure accesses.
3613 *
3614 * * Configurations
3615 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
3616 * result in an error being logged. (See GICD_ERR0CTLR for details)
3617 */
3618 union ody_gicd_ispendrx {
3619 uint32_t u;
3620 struct ody_gicd_ispendrx_s {
3621 uint32_t set_pending_bit0 : 1;
3622 uint32_t set_pending_bit1 : 1;
3623 uint32_t set_pending_bit2 : 1;
3624 uint32_t set_pending_bit3 : 1;
3625 uint32_t set_pending_bit4 : 1;
3626 uint32_t set_pending_bit5 : 1;
3627 uint32_t set_pending_bit6 : 1;
3628 uint32_t set_pending_bit7 : 1;
3629 uint32_t set_pending_bit8 : 1;
3630 uint32_t set_pending_bit9 : 1;
3631 uint32_t set_pending_bit10 : 1;
3632 uint32_t set_pending_bit11 : 1;
3633 uint32_t set_pending_bit12 : 1;
3634 uint32_t set_pending_bit13 : 1;
3635 uint32_t set_pending_bit14 : 1;
3636 uint32_t set_pending_bit15 : 1;
3637 uint32_t set_pending_bit16 : 1;
3638 uint32_t set_pending_bit17 : 1;
3639 uint32_t set_pending_bit18 : 1;
3640 uint32_t set_pending_bit19 : 1;
3641 uint32_t set_pending_bit20 : 1;
3642 uint32_t set_pending_bit21 : 1;
3643 uint32_t set_pending_bit22 : 1;
3644 uint32_t set_pending_bit23 : 1;
3645 uint32_t set_pending_bit24 : 1;
3646 uint32_t set_pending_bit25 : 1;
3647 uint32_t set_pending_bit26 : 1;
3648 uint32_t set_pending_bit27 : 1;
3649 uint32_t set_pending_bit28 : 1;
3650 uint32_t set_pending_bit29 : 1;
3651 uint32_t set_pending_bit30 : 1;
3652 uint32_t set_pending_bit31 : 1;
3653 } s;
3654 /* struct ody_gicd_ispendrx_s cn; */
3655 };
3656 typedef union ody_gicd_ispendrx ody_gicd_ispendrx_t;
3657
3658 static inline uint64_t ODY_GICD_ISPENDRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_ISPENDRX(uint64_t a)3659 static inline uint64_t ODY_GICD_ISPENDRX(uint64_t a)
3660 {
3661 if ((a >= 1) && (a <= 16))
3662 return 0x801000000200ll + 4ll * ((a) & 0x1f);
3663 __ody_csr_fatal("GICD_ISPENDRX", 1, a, 0, 0, 0, 0, 0);
3664 }
3665
3666 #define typedef_ODY_GICD_ISPENDRX(a) ody_gicd_ispendrx_t
3667 #define bustype_ODY_GICD_ISPENDRX(a) CSR_TYPE_NCB32b
3668 #define basename_ODY_GICD_ISPENDRX(a) "GICD_ISPENDRX"
3669 #define device_bar_ODY_GICD_ISPENDRX(a) 0x0 /* PF_BAR0 */
3670 #define busnum_ODY_GICD_ISPENDRX(a) (a)
3671 #define arguments_ODY_GICD_ISPENDRX(a) (a), -1, -1, -1
3672
3673 /**
3674 * Register (NCB32b) gicd_nsacr#
3675 *
3676 * GICD Nsacr Register
3677 * The GICD_NSACR2 characteristics are:
3678 *
3679 * * Purpose
3680 * Enables Secure software to permit Non-secure software on a particular PE to create
3681 * and control Group 0 interrupts for interrupts 32 to 47.
3682 *
3683 * * Usage constraints
3684 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
3685 *
3686 * * The corresponding GICD(A)_NSACR number, n, is given by n = m DIV 16.
3687 * * The offset of the required NSACR register is (0xE00 + (4*n)).
3688 *
3689 * When GICD(A)_CTLR.DS==1, this register is RAZ/WI.
3690 * These registers are Secure, and are RAZ/WI to Non-secure accesses.
3691 *
3692 * * Configurations
3693 * These registers are available in all GIC configurations.
3694 *
3695 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
3696 * result in an error being logged. (See GICD_ERR0CTLR for details)
3697 */
3698 union ody_gicd_nsacrx {
3699 uint32_t u;
3700 struct ody_gicd_nsacrx_s {
3701 uint32_t ns_access0 : 2;
3702 uint32_t ns_access1 : 2;
3703 uint32_t ns_access2 : 2;
3704 uint32_t ns_access3 : 2;
3705 uint32_t ns_access4 : 2;
3706 uint32_t ns_access5 : 2;
3707 uint32_t ns_access6 : 2;
3708 uint32_t ns_access7 : 2;
3709 uint32_t ns_access8 : 2;
3710 uint32_t ns_access9 : 2;
3711 uint32_t ns_access10 : 2;
3712 uint32_t ns_access11 : 2;
3713 uint32_t ns_access12 : 2;
3714 uint32_t ns_access13 : 2;
3715 uint32_t ns_access14 : 2;
3716 uint32_t ns_access15 : 2;
3717 } s;
3718 /* struct ody_gicd_nsacrx_s cn; */
3719 };
3720 typedef union ody_gicd_nsacrx ody_gicd_nsacrx_t;
3721
3722 static inline uint64_t ODY_GICD_NSACRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICD_NSACRX(uint64_t a)3723 static inline uint64_t ODY_GICD_NSACRX(uint64_t a)
3724 {
3725 if ((a >= 2) && (a <= 33))
3726 return 0x801000000e00ll + 4ll * ((a) & 0x3f);
3727 __ody_csr_fatal("GICD_NSACRX", 1, a, 0, 0, 0, 0, 0);
3728 }
3729
3730 #define typedef_ODY_GICD_NSACRX(a) ody_gicd_nsacrx_t
3731 #define bustype_ODY_GICD_NSACRX(a) CSR_TYPE_NCB32b
3732 #define basename_ODY_GICD_NSACRX(a) "GICD_NSACRX"
3733 #define device_bar_ODY_GICD_NSACRX(a) 0x0 /* PF_BAR0 */
3734 #define busnum_ODY_GICD_NSACRX(a) (a)
3735 #define arguments_ODY_GICD_NSACRX(a) (a), -1, -1, -1
3736
3737 /**
3738 * Register (NCB32b) gicd_pidr0
3739 *
3740 * GICD Pidr0 Register
3741 * The GICD_PIDR0 characteristics are:
3742 *
3743 * * Purpose
3744 * This register returns byte[0] of the peripheral ID of the GIC Distributor page.
3745 *
3746 * * Usage constraints
3747 * There are no usage constraints.
3748 */
3749 union ody_gicd_pidr0 {
3750 uint32_t u;
3751 struct ody_gicd_pidr0_s {
3752 uint32_t part_0 : 8;
3753 uint32_t reserved_8_31 : 24;
3754 } s;
3755 /* struct ody_gicd_pidr0_s cn; */
3756 };
3757 typedef union ody_gicd_pidr0 ody_gicd_pidr0_t;
3758
3759 #define ODY_GICD_PIDR0 ODY_GICD_PIDR0_FUNC()
3760 static inline uint64_t ODY_GICD_PIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_PIDR0_FUNC(void)3761 static inline uint64_t ODY_GICD_PIDR0_FUNC(void)
3762 {
3763 return 0x80100000ffe0ll;
3764 }
3765
3766 #define typedef_ODY_GICD_PIDR0 ody_gicd_pidr0_t
3767 #define bustype_ODY_GICD_PIDR0 CSR_TYPE_NCB32b
3768 #define basename_ODY_GICD_PIDR0 "GICD_PIDR0"
3769 #define device_bar_ODY_GICD_PIDR0 0x0 /* PF_BAR0 */
3770 #define busnum_ODY_GICD_PIDR0 0
3771 #define arguments_ODY_GICD_PIDR0 -1, -1, -1, -1
3772
3773 /**
3774 * Register (NCB32b) gicd_pidr1
3775 *
3776 * GICD Pidr1 Register
3777 * The GICD_PIDR1 characteristics are:
3778 *
3779 * * Purpose
3780 * This register returns byte[1] of the peripheral ID of the GIC Distributor page.
3781 *
3782 * * Usage constraints
3783 * There are no usage constraints.
3784 */
3785 union ody_gicd_pidr1 {
3786 uint32_t u;
3787 struct ody_gicd_pidr1_s {
3788 uint32_t part_1 : 4;
3789 uint32_t des_0 : 4;
3790 uint32_t reserved_8_31 : 24;
3791 } s;
3792 /* struct ody_gicd_pidr1_s cn; */
3793 };
3794 typedef union ody_gicd_pidr1 ody_gicd_pidr1_t;
3795
3796 #define ODY_GICD_PIDR1 ODY_GICD_PIDR1_FUNC()
3797 static inline uint64_t ODY_GICD_PIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_PIDR1_FUNC(void)3798 static inline uint64_t ODY_GICD_PIDR1_FUNC(void)
3799 {
3800 return 0x80100000ffe4ll;
3801 }
3802
3803 #define typedef_ODY_GICD_PIDR1 ody_gicd_pidr1_t
3804 #define bustype_ODY_GICD_PIDR1 CSR_TYPE_NCB32b
3805 #define basename_ODY_GICD_PIDR1 "GICD_PIDR1"
3806 #define device_bar_ODY_GICD_PIDR1 0x0 /* PF_BAR0 */
3807 #define busnum_ODY_GICD_PIDR1 0
3808 #define arguments_ODY_GICD_PIDR1 -1, -1, -1, -1
3809
3810 /**
3811 * Register (NCB32b) gicd_pidr2
3812 *
3813 * GICD Pidr2 Register
3814 * The GICD_PIDR2 characteristics are:
3815 *
3816 * * Purpose
3817 * This register returns byte[2] of the peripheral ID of the GIC Distributor page.
3818 *
3819 * * Usage constraints
3820 * There are no usage constraints.
3821 */
3822 union ody_gicd_pidr2 {
3823 uint32_t u;
3824 struct ody_gicd_pidr2_s {
3825 uint32_t des_1 : 3;
3826 uint32_t jedec : 1;
3827 uint32_t revision : 4;
3828 uint32_t reserved_8_31 : 24;
3829 } s;
3830 /* struct ody_gicd_pidr2_s cn; */
3831 };
3832 typedef union ody_gicd_pidr2 ody_gicd_pidr2_t;
3833
3834 #define ODY_GICD_PIDR2 ODY_GICD_PIDR2_FUNC()
3835 static inline uint64_t ODY_GICD_PIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_PIDR2_FUNC(void)3836 static inline uint64_t ODY_GICD_PIDR2_FUNC(void)
3837 {
3838 return 0x80100000ffe8ll;
3839 }
3840
3841 #define typedef_ODY_GICD_PIDR2 ody_gicd_pidr2_t
3842 #define bustype_ODY_GICD_PIDR2 CSR_TYPE_NCB32b
3843 #define basename_ODY_GICD_PIDR2 "GICD_PIDR2"
3844 #define device_bar_ODY_GICD_PIDR2 0x0 /* PF_BAR0 */
3845 #define busnum_ODY_GICD_PIDR2 0
3846 #define arguments_ODY_GICD_PIDR2 -1, -1, -1, -1
3847
3848 /**
3849 * Register (NCB32b) gicd_pidr3
3850 *
3851 * GICD Pidr3 Register
3852 * The GICD_PIDR3 characteristics are:
3853 *
3854 * * Purpose
3855 * This register returns byte[3] of the peripheral ID of the GIC Distributor page.
3856 *
3857 * * Usage constraints
3858 * There are no usage constraints.
3859 */
3860 union ody_gicd_pidr3 {
3861 uint32_t u;
3862 struct ody_gicd_pidr3_s {
3863 uint32_t cmod : 3;
3864 uint32_t reserved_3 : 1;
3865 uint32_t revand : 4;
3866 uint32_t reserved_8_31 : 24;
3867 } s;
3868 /* struct ody_gicd_pidr3_s cn; */
3869 };
3870 typedef union ody_gicd_pidr3 ody_gicd_pidr3_t;
3871
3872 #define ODY_GICD_PIDR3 ODY_GICD_PIDR3_FUNC()
3873 static inline uint64_t ODY_GICD_PIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_PIDR3_FUNC(void)3874 static inline uint64_t ODY_GICD_PIDR3_FUNC(void)
3875 {
3876 return 0x80100000ffecll;
3877 }
3878
3879 #define typedef_ODY_GICD_PIDR3 ody_gicd_pidr3_t
3880 #define bustype_ODY_GICD_PIDR3 CSR_TYPE_NCB32b
3881 #define basename_ODY_GICD_PIDR3 "GICD_PIDR3"
3882 #define device_bar_ODY_GICD_PIDR3 0x0 /* PF_BAR0 */
3883 #define busnum_ODY_GICD_PIDR3 0
3884 #define arguments_ODY_GICD_PIDR3 -1, -1, -1, -1
3885
3886 /**
3887 * Register (NCB32b) gicd_pidr4
3888 *
3889 * GICD Pidr4 Register
3890 * The GICD_PIDR4 characteristics are:
3891 *
3892 * * Purpose
3893 * This register returns byte[4] of the peripheral ID of the GIC Distributor page.
3894 *
3895 * * Usage constraints
3896 * There are no usage constraints.
3897 */
3898 union ody_gicd_pidr4 {
3899 uint32_t u;
3900 struct ody_gicd_pidr4_s {
3901 uint32_t des_2 : 4;
3902 uint32_t size : 4;
3903 uint32_t reserved_8_31 : 24;
3904 } s;
3905 /* struct ody_gicd_pidr4_s cn; */
3906 };
3907 typedef union ody_gicd_pidr4 ody_gicd_pidr4_t;
3908
3909 #define ODY_GICD_PIDR4 ODY_GICD_PIDR4_FUNC()
3910 static inline uint64_t ODY_GICD_PIDR4_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_PIDR4_FUNC(void)3911 static inline uint64_t ODY_GICD_PIDR4_FUNC(void)
3912 {
3913 return 0x80100000ffd0ll;
3914 }
3915
3916 #define typedef_ODY_GICD_PIDR4 ody_gicd_pidr4_t
3917 #define bustype_ODY_GICD_PIDR4 CSR_TYPE_NCB32b
3918 #define basename_ODY_GICD_PIDR4 "GICD_PIDR4"
3919 #define device_bar_ODY_GICD_PIDR4 0x0 /* PF_BAR0 */
3920 #define busnum_ODY_GICD_PIDR4 0
3921 #define arguments_ODY_GICD_PIDR4 -1, -1, -1, -1
3922
3923 /**
3924 * Register (NCB32b) gicd_pidr5
3925 *
3926 * GICD Pidr5 Register
3927 * The GICD_PIDR5 characteristics are:
3928 *
3929 * * Purpose
3930 * This register returns byte[5] of the peripheral ID of the GIC Distributor page.
3931 *
3932 * * Usage constraints
3933 * There are no usage constraints.
3934 */
3935 union ody_gicd_pidr5 {
3936 uint32_t u;
3937 struct ody_gicd_pidr5_s {
3938 uint32_t reserved_0_31 : 32;
3939 } s;
3940 struct ody_gicd_pidr5_cn {
3941 uint32_t reserved_0_7 : 8;
3942 uint32_t reserved_8_31 : 24;
3943 } cn;
3944 };
3945 typedef union ody_gicd_pidr5 ody_gicd_pidr5_t;
3946
3947 #define ODY_GICD_PIDR5 ODY_GICD_PIDR5_FUNC()
3948 static inline uint64_t ODY_GICD_PIDR5_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_PIDR5_FUNC(void)3949 static inline uint64_t ODY_GICD_PIDR5_FUNC(void)
3950 {
3951 return 0x80100000ffd4ll;
3952 }
3953
3954 #define typedef_ODY_GICD_PIDR5 ody_gicd_pidr5_t
3955 #define bustype_ODY_GICD_PIDR5 CSR_TYPE_NCB32b
3956 #define basename_ODY_GICD_PIDR5 "GICD_PIDR5"
3957 #define device_bar_ODY_GICD_PIDR5 0x0 /* PF_BAR0 */
3958 #define busnum_ODY_GICD_PIDR5 0
3959 #define arguments_ODY_GICD_PIDR5 -1, -1, -1, -1
3960
3961 /**
3962 * Register (NCB32b) gicd_pidr6
3963 *
3964 * GICD Pidr6 Register
3965 * The GICD_PIDR6 characteristics are:
3966 *
3967 * * Purpose
3968 * This register returns byte[6] of the peripheral ID of the GIC Distributor page.
3969 *
3970 * * Usage constraints
3971 * There are no usage constraints.
3972 */
3973 union ody_gicd_pidr6 {
3974 uint32_t u;
3975 struct ody_gicd_pidr6_s {
3976 uint32_t reserved_0_31 : 32;
3977 } s;
3978 struct ody_gicd_pidr6_cn {
3979 uint32_t reserved_0_7 : 8;
3980 uint32_t reserved_8_31 : 24;
3981 } cn;
3982 };
3983 typedef union ody_gicd_pidr6 ody_gicd_pidr6_t;
3984
3985 #define ODY_GICD_PIDR6 ODY_GICD_PIDR6_FUNC()
3986 static inline uint64_t ODY_GICD_PIDR6_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_PIDR6_FUNC(void)3987 static inline uint64_t ODY_GICD_PIDR6_FUNC(void)
3988 {
3989 return 0x80100000ffd8ll;
3990 }
3991
3992 #define typedef_ODY_GICD_PIDR6 ody_gicd_pidr6_t
3993 #define bustype_ODY_GICD_PIDR6 CSR_TYPE_NCB32b
3994 #define basename_ODY_GICD_PIDR6 "GICD_PIDR6"
3995 #define device_bar_ODY_GICD_PIDR6 0x0 /* PF_BAR0 */
3996 #define busnum_ODY_GICD_PIDR6 0
3997 #define arguments_ODY_GICD_PIDR6 -1, -1, -1, -1
3998
3999 /**
4000 * Register (NCB32b) gicd_pidr7
4001 *
4002 * GICD Pidr7 Register
4003 * The GICD_PIDR7 characteristics are:
4004 *
4005 * * Purpose
4006 * This register returns byte[7] of the peripheral ID of the GIC Distributor page.
4007 *
4008 * * Usage constraints
4009 * There are no usage constraints.
4010 */
4011 union ody_gicd_pidr7 {
4012 uint32_t u;
4013 struct ody_gicd_pidr7_s {
4014 uint32_t reserved_0_31 : 32;
4015 } s;
4016 struct ody_gicd_pidr7_cn {
4017 uint32_t reserved_0_7 : 8;
4018 uint32_t reserved_8_31 : 24;
4019 } cn;
4020 };
4021 typedef union ody_gicd_pidr7 ody_gicd_pidr7_t;
4022
4023 #define ODY_GICD_PIDR7 ODY_GICD_PIDR7_FUNC()
4024 static inline uint64_t ODY_GICD_PIDR7_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_PIDR7_FUNC(void)4025 static inline uint64_t ODY_GICD_PIDR7_FUNC(void)
4026 {
4027 return 0x80100000ffdcll;
4028 }
4029
4030 #define typedef_ODY_GICD_PIDR7 ody_gicd_pidr7_t
4031 #define bustype_ODY_GICD_PIDR7 CSR_TYPE_NCB32b
4032 #define basename_ODY_GICD_PIDR7 "GICD_PIDR7"
4033 #define device_bar_ODY_GICD_PIDR7 0x0 /* PF_BAR0 */
4034 #define busnum_ODY_GICD_PIDR7 0
4035 #define arguments_ODY_GICD_PIDR7 -1, -1, -1, -1
4036
4037 /**
4038 * Register (NCB32b) gicd_sac
4039 *
4040 * GICD Sac Register
4041 * The GICD_SAC characteristics are:
4042 *
4043 * * Purpose
4044 * This register allows Secure software to control Non-secure access to GIC-700 Secure
4045 * features by other software.
4046 *
4047 * * Usage constraints
4048 * Only accessible by Secure accesses or when GICD(A)_CTLR.DS == 1.
4049 */
4050 union ody_gicd_sac {
4051 uint32_t u;
4052 struct ody_gicd_sac_s {
4053 uint32_t reserved_0 : 1;
4054 uint32_t gictns : 1;
4055 uint32_t gicpns : 1;
4056 uint32_t reserved_3_31 : 29;
4057 } s;
4058 /* struct ody_gicd_sac_s cn; */
4059 };
4060 typedef union ody_gicd_sac ody_gicd_sac_t;
4061
4062 #define ODY_GICD_SAC ODY_GICD_SAC_FUNC()
4063 static inline uint64_t ODY_GICD_SAC_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_SAC_FUNC(void)4064 static inline uint64_t ODY_GICD_SAC_FUNC(void)
4065 {
4066 return 0x801000000024ll;
4067 }
4068
4069 #define typedef_ODY_GICD_SAC ody_gicd_sac_t
4070 #define bustype_ODY_GICD_SAC CSR_TYPE_NCB32b
4071 #define basename_ODY_GICD_SAC "GICD_SAC"
4072 #define device_bar_ODY_GICD_SAC 0x0 /* PF_BAR0 */
4073 #define busnum_ODY_GICD_SAC 0
4074 #define arguments_ODY_GICD_SAC -1, -1, -1, -1
4075
4076 /**
4077 * Register (NCB32b) gicd_setspi_nsr
4078 *
4079 * GICD Setspi Nsr Register
4080 * The GICD_SETSPI_NSR characteristics are:
4081 *
4082 * * Purpose
4083 * Adds the pending state to a valid SPI if permitted by the Security state of the
4084 * access and the GICD(A)_NSACR value for that SPI.
4085 * A write to this register changes the state of an inactive SPI to pending, and the
4086 * state of an active SPI to active and pending.
4087 *
4088 * * Usage constraints
4089 * The function of this register depends on whether the targeted SPI is configured to
4090 * be an edge-triggered or level-sensitive interrupt:
4091 *
4092 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
4093 * the pending state to the targeted interrupt. It will stop being pending on
4094 * activation, or if the pending state is removed by a write to GICD(A)_CLRSPI_NSR,
4095 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
4096 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
4097 * the pending state to the targeted interrupt. It will remain pending until it is
4098 * deasserted by a write to GICD(A)_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
4099 * activated between having the pending state added and being deactivated, then the
4100 * interrupt will be active and pending.
4101 *
4102 * Writes to this register have no effect if:
4103 *
4104 * * The value written specifies a Secure SPI, the value is written by a Non-secure
4105 * access, and the value of the corresponding GICD(A)_NSACR register is 0.
4106 * * The value written specifies an invalid SPI.
4107 * * The SPI is already pending.
4108 *
4109 * * Configurations
4110 * When GICD(A)_CTLR.DS==1, this register provides functionality for all SPIs.
4111 */
4112 union ody_gicd_setspi_nsr {
4113 uint32_t u;
4114 struct ody_gicd_setspi_nsr_s {
4115 uint32_t id : 16;
4116 uint32_t reserved_16_31 : 16;
4117 } s;
4118 /* struct ody_gicd_setspi_nsr_s cn; */
4119 };
4120 typedef union ody_gicd_setspi_nsr ody_gicd_setspi_nsr_t;
4121
4122 #define ODY_GICD_SETSPI_NSR ODY_GICD_SETSPI_NSR_FUNC()
4123 static inline uint64_t ODY_GICD_SETSPI_NSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_SETSPI_NSR_FUNC(void)4124 static inline uint64_t ODY_GICD_SETSPI_NSR_FUNC(void)
4125 {
4126 return 0x801000000040ll;
4127 }
4128
4129 #define typedef_ODY_GICD_SETSPI_NSR ody_gicd_setspi_nsr_t
4130 #define bustype_ODY_GICD_SETSPI_NSR CSR_TYPE_NCB32b
4131 #define basename_ODY_GICD_SETSPI_NSR "GICD_SETSPI_NSR"
4132 #define device_bar_ODY_GICD_SETSPI_NSR 0x0 /* PF_BAR0 */
4133 #define busnum_ODY_GICD_SETSPI_NSR 0
4134 #define arguments_ODY_GICD_SETSPI_NSR -1, -1, -1, -1
4135
4136 /**
4137 * Register (NCB32b) gicd_setspi_sr
4138 *
4139 * GICD Setspi Sr Register
4140 * The GICD_SETSPI_SR characteristics are:
4141 *
4142 * * Purpose
4143 * Adds the pending state to a valid SPI.
4144 * A write to this register changes the state of an inactive SPI to pending, and the
4145 * state of an active SPI to active and pending.
4146 *
4147 * * Usage constraints
4148 * The function of this register depends on whether the targeted SPI is configured to
4149 * be an edge-triggered or level-sensitive interrupt:
4150 *
4151 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
4152 * the pending state to the targeted interrupt. It will stop being pending on
4153 * activation, or if the pending state is removed by a write to GICD(A)_CLRSPI_NSR,
4154 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
4155 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
4156 * the pending state to the targeted interrupt. It will remain pending until it is
4157 * deasserted by a write to GICD(A)_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
4158 * activated between having the pending state added and being deactivated, then the
4159 * interrupt will be active and pending.
4160 *
4161 * Writes to this register have no effect if:
4162 *
4163 * * The value is written by a Non-secure access.
4164 * * The value written specifies an invalid SPI.
4165 * * The SPI is already pending.
4166 *
4167 * * Configurations
4168 * When GICD(A)_CTLR.DS==1, this register is WI.
4169 * When GICD(A)_CTLR.DS==0, only secure-access.
4170 */
4171 union ody_gicd_setspi_sr {
4172 uint32_t u;
4173 struct ody_gicd_setspi_sr_s {
4174 uint32_t id : 16;
4175 uint32_t reserved_16_31 : 16;
4176 } s;
4177 /* struct ody_gicd_setspi_sr_s cn; */
4178 };
4179 typedef union ody_gicd_setspi_sr ody_gicd_setspi_sr_t;
4180
4181 #define ODY_GICD_SETSPI_SR ODY_GICD_SETSPI_SR_FUNC()
4182 static inline uint64_t ODY_GICD_SETSPI_SR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_SETSPI_SR_FUNC(void)4183 static inline uint64_t ODY_GICD_SETSPI_SR_FUNC(void)
4184 {
4185 return 0x801000000050ll;
4186 }
4187
4188 #define typedef_ODY_GICD_SETSPI_SR ody_gicd_setspi_sr_t
4189 #define bustype_ODY_GICD_SETSPI_SR CSR_TYPE_NCB32b
4190 #define basename_ODY_GICD_SETSPI_SR "GICD_SETSPI_SR"
4191 #define device_bar_ODY_GICD_SETSPI_SR 0x0 /* PF_BAR0 */
4192 #define busnum_ODY_GICD_SETSPI_SR 0
4193 #define arguments_ODY_GICD_SETSPI_SR -1, -1, -1, -1
4194
4195 /**
4196 * Register (NCB32b) gicd_statusr
4197 *
4198 * GICD Statusr Register
4199 * The GICD_STATUS characteristics are:
4200 *
4201 * * Purpose
4202 * This register is not used.
4203 *
4204 * See the GICT register page for details of error reporting by the GIC
4205 *
4206 * * Usage constraints
4207 * There are no usage constraints.
4208 *
4209 * * Configurations
4210 * This register is RES0 in all GIC configurations.
4211 */
4212 union ody_gicd_statusr {
4213 uint32_t u;
4214 struct ody_gicd_statusr_s {
4215 uint32_t reserved_0_31 : 32;
4216 } s;
4217 /* struct ody_gicd_statusr_s cn; */
4218 };
4219 typedef union ody_gicd_statusr ody_gicd_statusr_t;
4220
4221 #define ODY_GICD_STATUSR ODY_GICD_STATUSR_FUNC()
4222 static inline uint64_t ODY_GICD_STATUSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_STATUSR_FUNC(void)4223 static inline uint64_t ODY_GICD_STATUSR_FUNC(void)
4224 {
4225 return 0x801000000010ll;
4226 }
4227
4228 #define typedef_ODY_GICD_STATUSR ody_gicd_statusr_t
4229 #define bustype_ODY_GICD_STATUSR CSR_TYPE_NCB32b
4230 #define basename_ODY_GICD_STATUSR "GICD_STATUSR"
4231 #define device_bar_ODY_GICD_STATUSR 0x0 /* PF_BAR0 */
4232 #define busnum_ODY_GICD_STATUSR 0
4233 #define arguments_ODY_GICD_STATUSR -1, -1, -1, -1
4234
4235 /**
4236 * Register (NCB32b) gicd_typer
4237 *
4238 * GICD Typer Register
4239 * The GICD_TYPER characteristics are:
4240 *
4241 * * Purpose
4242 * Provides information about what features the GIC implementation supports. It indicates:
4243 *
4244 * * Whether the GIC implementation supports two Security states.
4245 * * The maximum number of INTIDs that the GIC implementation supports.
4246 * * The number of PEs that can be used as interrupt targets.
4247 *
4248 * * Usage constraints
4249 * There are no usage constraints.
4250 */
4251 union ody_gicd_typer {
4252 uint32_t u;
4253 struct ody_gicd_typer_s {
4254 uint32_t itlinesnumber : 5;
4255 uint32_t cpunumber : 3;
4256 uint32_t espi : 1;
4257 uint32_t reserved_9 : 1;
4258 uint32_t securityextn : 1;
4259 uint32_t lspi : 5;
4260 uint32_t mbis : 1;
4261 uint32_t lpis : 1;
4262 uint32_t dvis : 1;
4263 uint32_t idbits : 5;
4264 uint32_t a3v : 1;
4265 uint32_t no1n : 1;
4266 uint32_t rss : 1;
4267 uint32_t espi_range : 5;
4268 } s;
4269 /* struct ody_gicd_typer_s cn; */
4270 };
4271 typedef union ody_gicd_typer ody_gicd_typer_t;
4272
4273 #define ODY_GICD_TYPER ODY_GICD_TYPER_FUNC()
4274 static inline uint64_t ODY_GICD_TYPER_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_TYPER_FUNC(void)4275 static inline uint64_t ODY_GICD_TYPER_FUNC(void)
4276 {
4277 return 0x801000000004ll;
4278 }
4279
4280 #define typedef_ODY_GICD_TYPER ody_gicd_typer_t
4281 #define bustype_ODY_GICD_TYPER CSR_TYPE_NCB32b
4282 #define basename_ODY_GICD_TYPER "GICD_TYPER"
4283 #define device_bar_ODY_GICD_TYPER 0x0 /* PF_BAR0 */
4284 #define busnum_ODY_GICD_TYPER 0
4285 #define arguments_ODY_GICD_TYPER -1, -1, -1, -1
4286
4287 /**
4288 * Register (NCB32b) gicd_typer2
4289 *
4290 * GICD Typer2 Register
4291 * The GICD_TYPER2 characteristics are:
4292 *
4293 * * Purpose
4294 * Provides information about which features the GIC implementation supports.
4295 *
4296 * * Usage constraints
4297 * There are no usage constraints.
4298 */
4299 union ody_gicd_typer2 {
4300 uint32_t u;
4301 struct ody_gicd_typer2_s {
4302 uint32_t vid : 5;
4303 uint32_t reserved_5_6 : 2;
4304 uint32_t vil : 1;
4305 uint32_t reserved_8_31 : 24;
4306 } s;
4307 /* struct ody_gicd_typer2_s cn; */
4308 };
4309 typedef union ody_gicd_typer2 ody_gicd_typer2_t;
4310
4311 #define ODY_GICD_TYPER2 ODY_GICD_TYPER2_FUNC()
4312 static inline uint64_t ODY_GICD_TYPER2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_TYPER2_FUNC(void)4313 static inline uint64_t ODY_GICD_TYPER2_FUNC(void)
4314 {
4315 return 0x80100000000cll;
4316 }
4317
4318 #define typedef_ODY_GICD_TYPER2 ody_gicd_typer2_t
4319 #define bustype_ODY_GICD_TYPER2 CSR_TYPE_NCB32b
4320 #define basename_ODY_GICD_TYPER2 "GICD_TYPER2"
4321 #define device_bar_ODY_GICD_TYPER2 0x0 /* PF_BAR0 */
4322 #define busnum_ODY_GICD_TYPER2 0
4323 #define arguments_ODY_GICD_TYPER2 -1, -1, -1, -1
4324
4325 /**
4326 * Register (NCB32b) gicd_utilr
4327 *
4328 * GICD Utilr Register
4329 * The GICD_UTILR characteristics are:
4330 *
4331 * * Purpose
4332 *
4333 * This register controls the utilization engine in the LPI caches.
4334 *
4335 * * Usage constraints
4336 * There are no usage constraints.
4337 *
4338 * This register is RES0.
4339 */
4340 union ody_gicd_utilr {
4341 uint32_t u;
4342 struct ody_gicd_utilr_s {
4343 uint32_t uedu : 4;
4344 uint32_t reserved_4_12 : 9;
4345 uint32_t ueda : 1;
4346 uint32_t uede : 1;
4347 uint32_t uedt : 1;
4348 uint32_t ueou : 4;
4349 uint32_t reserved_20_28 : 9;
4350 uint32_t ueoa : 1;
4351 uint32_t ueoe : 1;
4352 uint32_t ueot : 1;
4353 } s;
4354 /* struct ody_gicd_utilr_s cn; */
4355 };
4356 typedef union ody_gicd_utilr ody_gicd_utilr_t;
4357
4358 #define ODY_GICD_UTILR ODY_GICD_UTILR_FUNC()
4359 static inline uint64_t ODY_GICD_UTILR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICD_UTILR_FUNC(void)4360 static inline uint64_t ODY_GICD_UTILR_FUNC(void)
4361 {
4362 return 0x801000000034ll;
4363 }
4364
4365 #define typedef_ODY_GICD_UTILR ody_gicd_utilr_t
4366 #define bustype_ODY_GICD_UTILR CSR_TYPE_NCB32b
4367 #define basename_ODY_GICD_UTILR "GICD_UTILR"
4368 #define device_bar_ODY_GICD_UTILR 0x0 /* PF_BAR0 */
4369 #define busnum_ODY_GICD_UTILR 0
4370 #define arguments_ODY_GICD_UTILR -1, -1, -1, -1
4371
4372 /**
4373 * Register (NCB) gicda_cfgid
4374 *
4375 * GICDA Cfgid Register
4376 * The GICDA_CFGID characteristics are:
4377 *
4378 * * Purpose
4379 * This register contains information that enables test software to determine if the
4380 * GIC-700 system is compatible.
4381 *
4382 * * Usage constraints
4383 * Some bits are only visible to secure accesses.
4384 */
4385 union ody_gicda_cfgid {
4386 uint64_t u;
4387 struct ody_gicda_cfgid_s {
4388 uint64_t socketonline : 1;
4389 uint64_t reserved_1_3 : 3;
4390 uint64_t socketnumber : 4;
4391 uint64_t itscount : 4;
4392 uint64_t lpisupport : 1;
4393 uint64_t v41support : 1;
4394 uint64_t chipaffinitylevel : 1;
4395 uint64_t spigroups : 6;
4396 uint64_t localchipaddressing : 1;
4397 uint64_t reserved_22_23 : 2;
4398 uint64_t rdcollapsesupport : 1;
4399 uint64_t extendeditssupport : 1;
4400 uint64_t reserved_26_27 : 2;
4401 uint64_t chips : 4;
4402 uint64_t affinity0bits : 4;
4403 uint64_t affinity1bits : 4;
4404 uint64_t affinity2bits : 4;
4405 uint64_t affinity3bits : 4;
4406 uint64_t pewidth : 5;
4407 uint64_t reserved_53_63 : 11;
4408 } s;
4409 /* struct ody_gicda_cfgid_s cn; */
4410 };
4411 typedef union ody_gicda_cfgid ody_gicda_cfgid_t;
4412
4413 #define ODY_GICDA_CFGID ODY_GICDA_CFGID_FUNC()
4414 static inline uint64_t ODY_GICDA_CFGID_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_CFGID_FUNC(void)4415 static inline uint64_t ODY_GICDA_CFGID_FUNC(void)
4416 {
4417 return 0x80100150f000ll;
4418 }
4419
4420 #define typedef_ODY_GICDA_CFGID ody_gicda_cfgid_t
4421 #define bustype_ODY_GICDA_CFGID CSR_TYPE_NCB
4422 #define basename_ODY_GICDA_CFGID "GICDA_CFGID"
4423 #define busnum_ODY_GICDA_CFGID 0
4424 #define arguments_ODY_GICDA_CFGID -1, -1, -1, -1
4425
4426 /**
4427 * Register (NCB32b) gicda_cidr0
4428 *
4429 * GICDA Cidr0 Register
4430 * The GICDA_CIDR0 characteristics are:
4431 *
4432 * * Purpose
4433 * This register is one of the Component Identification Registers and returns the first
4434 * part of the Preamble.
4435 *
4436 * * Usage constraints
4437 * There are no usage constraints.
4438 */
4439 union ody_gicda_cidr0 {
4440 uint32_t u;
4441 struct ody_gicda_cidr0_s {
4442 uint32_t prmbl_0 : 8;
4443 uint32_t reserved_8_31 : 24;
4444 } s;
4445 /* struct ody_gicda_cidr0_s cn; */
4446 };
4447 typedef union ody_gicda_cidr0 ody_gicda_cidr0_t;
4448
4449 #define ODY_GICDA_CIDR0 ODY_GICDA_CIDR0_FUNC()
4450 static inline uint64_t ODY_GICDA_CIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_CIDR0_FUNC(void)4451 static inline uint64_t ODY_GICDA_CIDR0_FUNC(void)
4452 {
4453 return 0x80100150fff0ll;
4454 }
4455
4456 #define typedef_ODY_GICDA_CIDR0 ody_gicda_cidr0_t
4457 #define bustype_ODY_GICDA_CIDR0 CSR_TYPE_NCB32b
4458 #define basename_ODY_GICDA_CIDR0 "GICDA_CIDR0"
4459 #define busnum_ODY_GICDA_CIDR0 0
4460 #define arguments_ODY_GICDA_CIDR0 -1, -1, -1, -1
4461
4462 /**
4463 * Register (NCB32b) gicda_cidr1
4464 *
4465 * GICDA Cidr1 Register
4466 * The GICDA_CIDR1 characteristics are:
4467 *
4468 * * Purpose
4469 * This register is one of the Component Identification Registers and returns the
4470 * second part of the Preamble as well as the Component Class.
4471 *
4472 * * Usage constraints
4473 * There are no usage constraints.
4474 */
4475 union ody_gicda_cidr1 {
4476 uint32_t u;
4477 struct ody_gicda_cidr1_s {
4478 uint32_t prmbl_1 : 4;
4479 uint32_t class_f : 4;
4480 uint32_t reserved_8_31 : 24;
4481 } s;
4482 /* struct ody_gicda_cidr1_s cn; */
4483 };
4484 typedef union ody_gicda_cidr1 ody_gicda_cidr1_t;
4485
4486 #define ODY_GICDA_CIDR1 ODY_GICDA_CIDR1_FUNC()
4487 static inline uint64_t ODY_GICDA_CIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_CIDR1_FUNC(void)4488 static inline uint64_t ODY_GICDA_CIDR1_FUNC(void)
4489 {
4490 return 0x80100150fff4ll;
4491 }
4492
4493 #define typedef_ODY_GICDA_CIDR1 ody_gicda_cidr1_t
4494 #define bustype_ODY_GICDA_CIDR1 CSR_TYPE_NCB32b
4495 #define basename_ODY_GICDA_CIDR1 "GICDA_CIDR1"
4496 #define busnum_ODY_GICDA_CIDR1 0
4497 #define arguments_ODY_GICDA_CIDR1 -1, -1, -1, -1
4498
4499 /**
4500 * Register (NCB32b) gicda_cidr2
4501 *
4502 * GICDA Cidr2 Register
4503 * The GICDA_CIDR2 characteristics are:
4504 *
4505 * * Purpose
4506 * This register is one of the Component Identification Registers and returns the third
4507 * part of the Preamble.
4508 *
4509 * * Usage constraints
4510 * There are no usage constraints.
4511 */
4512 union ody_gicda_cidr2 {
4513 uint32_t u;
4514 struct ody_gicda_cidr2_s {
4515 uint32_t prmbl_2 : 8;
4516 uint32_t reserved_8_31 : 24;
4517 } s;
4518 /* struct ody_gicda_cidr2_s cn; */
4519 };
4520 typedef union ody_gicda_cidr2 ody_gicda_cidr2_t;
4521
4522 #define ODY_GICDA_CIDR2 ODY_GICDA_CIDR2_FUNC()
4523 static inline uint64_t ODY_GICDA_CIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_CIDR2_FUNC(void)4524 static inline uint64_t ODY_GICDA_CIDR2_FUNC(void)
4525 {
4526 return 0x80100150fff8ll;
4527 }
4528
4529 #define typedef_ODY_GICDA_CIDR2 ody_gicda_cidr2_t
4530 #define bustype_ODY_GICDA_CIDR2 CSR_TYPE_NCB32b
4531 #define basename_ODY_GICDA_CIDR2 "GICDA_CIDR2"
4532 #define busnum_ODY_GICDA_CIDR2 0
4533 #define arguments_ODY_GICDA_CIDR2 -1, -1, -1, -1
4534
4535 /**
4536 * Register (NCB32b) gicda_cidr3
4537 *
4538 * GICDA Cidr3 Register
4539 * The GICDA_CIDR3 characteristics are:
4540 *
4541 * * Purpose
4542 * This register is one of the Component Identification Registers and returns the
4543 * fourth part of the Preamble.
4544 *
4545 * * Usage constraints
4546 * There are no usage constraints.
4547 */
4548 union ody_gicda_cidr3 {
4549 uint32_t u;
4550 struct ody_gicda_cidr3_s {
4551 uint32_t prmbl_3 : 8;
4552 uint32_t reserved_8_31 : 24;
4553 } s;
4554 /* struct ody_gicda_cidr3_s cn; */
4555 };
4556 typedef union ody_gicda_cidr3 ody_gicda_cidr3_t;
4557
4558 #define ODY_GICDA_CIDR3 ODY_GICDA_CIDR3_FUNC()
4559 static inline uint64_t ODY_GICDA_CIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_CIDR3_FUNC(void)4560 static inline uint64_t ODY_GICDA_CIDR3_FUNC(void)
4561 {
4562 return 0x80100150fffcll;
4563 }
4564
4565 #define typedef_ODY_GICDA_CIDR3 ody_gicda_cidr3_t
4566 #define bustype_ODY_GICDA_CIDR3 CSR_TYPE_NCB32b
4567 #define basename_ODY_GICDA_CIDR3 "GICDA_CIDR3"
4568 #define busnum_ODY_GICDA_CIDR3 0
4569 #define arguments_ODY_GICDA_CIDR3 -1, -1, -1, -1
4570
4571 /**
4572 * Register (NCB32b) gicda_clrspi_nsr
4573 *
4574 * GICDA Clrspi Nsr Register
4575 * The GICDA_CLRSPI_NSR characteristics are:
4576 *
4577 * * Purpose
4578 * Removes the pending state to a valid SPI if permitted by the Security state of the
4579 * access and the GICD(A)_NSACR value for that SPI.
4580 * A write to this register changes the state of an pending SPI to inactive, and the
4581 * state of an active and pending SPI to active.
4582 *
4583 * * Usage constraints
4584 * The function of this register depends on whether the targeted SPI is configured to
4585 * be an edge-triggered or level-sensitive interrupt:
4586 *
4587 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
4588 * the pending state to the targeted interrupt. It will stop being pending on
4589 * activation, or if the pending state is removed by a write to GICD(A)_CLRSPI_NSR,
4590 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
4591 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
4592 * the pending state to the targeted interrupt. It will remain pending until it is
4593 * deasserted by a write to GICD(A)_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
4594 * activated between having the pending state added and being deactivated, then the
4595 * interrupt will be active and pending.
4596 *
4597 * Writes to this register have no effect if:
4598 *
4599 * * The value written specifies a Secure SPI, the value is written by a Non-secure
4600 * access, and the value of the corresponding GICD(A)_NSACR register is less than 0b10.
4601 * * The value written specifies an invalid SPI.
4602 * * The SPI is not pending.
4603 *
4604 * * Configurations
4605 * When GICD(A)_CTLR.DS==1, this register provides functionality for all SPIs.
4606 */
4607 union ody_gicda_clrspi_nsr {
4608 uint32_t u;
4609 struct ody_gicda_clrspi_nsr_s {
4610 uint32_t id : 16;
4611 uint32_t reserved_16_31 : 16;
4612 } s;
4613 /* struct ody_gicda_clrspi_nsr_s cn; */
4614 };
4615 typedef union ody_gicda_clrspi_nsr ody_gicda_clrspi_nsr_t;
4616
4617 #define ODY_GICDA_CLRSPI_NSR ODY_GICDA_CLRSPI_NSR_FUNC()
4618 static inline uint64_t ODY_GICDA_CLRSPI_NSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_CLRSPI_NSR_FUNC(void)4619 static inline uint64_t ODY_GICDA_CLRSPI_NSR_FUNC(void)
4620 {
4621 return 0x801001500048ll;
4622 }
4623
4624 #define typedef_ODY_GICDA_CLRSPI_NSR ody_gicda_clrspi_nsr_t
4625 #define bustype_ODY_GICDA_CLRSPI_NSR CSR_TYPE_NCB32b
4626 #define basename_ODY_GICDA_CLRSPI_NSR "GICDA_CLRSPI_NSR"
4627 #define busnum_ODY_GICDA_CLRSPI_NSR 0
4628 #define arguments_ODY_GICDA_CLRSPI_NSR -1, -1, -1, -1
4629
4630 /**
4631 * Register (NCB32b) gicda_clrspi_sr
4632 *
4633 * GICDA Clrspi Sr Register
4634 * The GICDA_CLRSPI_SR characteristics are:
4635 *
4636 * * Purpose
4637 * Removes the pending state from a valid SPI.
4638 * A write to this register changes the state of a pending SPI to inactive, and the
4639 * state of an active and pending SPI to active.
4640 *
4641 * * Usage constraints
4642 * The function of this register depends on whether the targeted SPI is configured to
4643 * be an edge-triggered or level-sensitive interrupt:
4644 *
4645 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
4646 * the pending state to the targeted interrupt. It will stop being pending on
4647 * activation, or if the pending state is removed by a write to GICD(A)_CLRSPI_NSR,
4648 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
4649 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
4650 * the pending state to the targeted interrupt. It will remain pending until it is
4651 * deasserted by a write to GICD(A)_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
4652 * activated between having the pending state added and being deactivated, then the
4653 * interrupt will be active and pending.
4654 *
4655 * Writes to this register have no effect if:
4656 *
4657 * * The value is written by a Non-secure access.
4658 * * The value written specifies an invalid SPI.
4659 * * The SPI is not pending.
4660 *
4661 * * Configurations
4662 * When GICD(A)_CTLR.DS==1, this register is WI.
4663 * When GICD(A)_CTLR.DS==0, only secure-access.
4664 */
4665 union ody_gicda_clrspi_sr {
4666 uint32_t u;
4667 struct ody_gicda_clrspi_sr_s {
4668 uint32_t id : 16;
4669 uint32_t reserved_16_31 : 16;
4670 } s;
4671 /* struct ody_gicda_clrspi_sr_s cn; */
4672 };
4673 typedef union ody_gicda_clrspi_sr ody_gicda_clrspi_sr_t;
4674
4675 #define ODY_GICDA_CLRSPI_SR ODY_GICDA_CLRSPI_SR_FUNC()
4676 static inline uint64_t ODY_GICDA_CLRSPI_SR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_CLRSPI_SR_FUNC(void)4677 static inline uint64_t ODY_GICDA_CLRSPI_SR_FUNC(void)
4678 {
4679 return 0x801001500058ll;
4680 }
4681
4682 #define typedef_ODY_GICDA_CLRSPI_SR ody_gicda_clrspi_sr_t
4683 #define bustype_ODY_GICDA_CLRSPI_SR CSR_TYPE_NCB32b
4684 #define basename_ODY_GICDA_CLRSPI_SR "GICDA_CLRSPI_SR"
4685 #define busnum_ODY_GICDA_CLRSPI_SR 0
4686 #define arguments_ODY_GICDA_CLRSPI_SR -1, -1, -1, -1
4687
4688 /**
4689 * Register (NCB32b) gicda_ctlr
4690 *
4691 * GICDA Ctlr Register
4692 * The GICDA_CTLR characteristics are:
4693 *
4694 * * Purpose
4695 * Contains Distributor controls including interrupt group enables
4696 *
4697 * * Usage constraints
4698 * None
4699 *
4700 * * Configurations
4701 * The format of this register depends on the Security state of the access and the
4702 * number of Security states supported, which is specified by GICD(A)_CTLR.DS.
4703 */
4704 union ody_gicda_ctlr {
4705 uint32_t u;
4706 struct ody_gicda_ctlr_s {
4707 uint32_t enablegrp0 : 1;
4708 uint32_t enablegrp1_ns : 1;
4709 uint32_t enablegrp1_s : 1;
4710 uint32_t reserved_3 : 1;
4711 uint32_t are_s : 1;
4712 uint32_t are_ns : 1;
4713 uint32_t ds : 1;
4714 uint32_t e1nwf : 1;
4715 uint32_t reserved_8_30 : 23;
4716 uint32_t rwp : 1;
4717 } s;
4718 /* struct ody_gicda_ctlr_s cn; */
4719 };
4720 typedef union ody_gicda_ctlr ody_gicda_ctlr_t;
4721
4722 #define ODY_GICDA_CTLR ODY_GICDA_CTLR_FUNC()
4723 static inline uint64_t ODY_GICDA_CTLR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_CTLR_FUNC(void)4724 static inline uint64_t ODY_GICDA_CTLR_FUNC(void)
4725 {
4726 return 0x801001500000ll;
4727 }
4728
4729 #define typedef_ODY_GICDA_CTLR ody_gicda_ctlr_t
4730 #define bustype_ODY_GICDA_CTLR CSR_TYPE_NCB32b
4731 #define basename_ODY_GICDA_CTLR "GICDA_CTLR"
4732 #define busnum_ODY_GICDA_CTLR 0
4733 #define arguments_ODY_GICDA_CTLR -1, -1, -1, -1
4734
4735 /**
4736 * Register (NCB) gicda_errinsr#
4737 *
4738 * GICDA Errinsr Register
4739 * The GICDA_ERRINSR0 characteristics are:
4740 *
4741 * * Purpose
4742 * This register can inject errors into the SGI RAM. You can use this register to test
4743 * your error recovery software.
4744 *
4745 * * Usage constraints
4746 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the functions of this register.
4747 *
4748 * \> *Note*
4749 * \> The bit assignments within this register depend on whether a write access or read access occurs.
4750 */
4751 union ody_gicda_errinsrx {
4752 uint64_t u;
4753 struct ody_gicda_errinsrx_s {
4754 uint64_t errins1loc : 9;
4755 uint64_t reserved_9_14 : 6;
4756 uint64_t errins1valid : 1;
4757 uint64_t errins2loc : 9;
4758 uint64_t reserved_25_30 : 6;
4759 uint64_t errins2valid : 1;
4760 uint64_t addr : 16;
4761 uint64_t reserved_48_59 : 12;
4762 uint64_t disablewritecheck : 1;
4763 uint64_t reserved_61_62 : 2;
4764 uint64_t valid : 1;
4765 } s;
4766 /* struct ody_gicda_errinsrx_s cn; */
4767 };
4768 typedef union ody_gicda_errinsrx ody_gicda_errinsrx_t;
4769
4770 static inline uint64_t ODY_GICDA_ERRINSRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ERRINSRX(uint64_t a)4771 static inline uint64_t ODY_GICDA_ERRINSRX(uint64_t a)
4772 {
4773 if (a <= 14)
4774 return 0x80100150ea00ll + 8ll * ((a) & 0xf);
4775 __ody_csr_fatal("GICDA_ERRINSRX", 1, a, 0, 0, 0, 0, 0);
4776 }
4777
4778 #define typedef_ODY_GICDA_ERRINSRX(a) ody_gicda_errinsrx_t
4779 #define bustype_ODY_GICDA_ERRINSRX(a) CSR_TYPE_NCB
4780 #define basename_ODY_GICDA_ERRINSRX(a) "GICDA_ERRINSRX"
4781 #define busnum_ODY_GICDA_ERRINSRX(a) (a)
4782 #define arguments_ODY_GICDA_ERRINSRX(a) (a), -1, -1, -1
4783
4784 /**
4785 * Register (NCB32b) gicda_fctlr
4786 *
4787 * GICDA Fctlr Register
4788 * The GICDA_FCTLR characteristics are:
4789 *
4790 * * Purpose
4791 * This register controls non-architectural functionality such as the scrubbing of all
4792 * RAMs in the local Distributor.
4793 *
4794 * * Usage constraints
4795 * Some bits are only accessible by Secure accesses.
4796 */
4797 union ody_gicda_fctlr {
4798 uint32_t u;
4799 struct ody_gicda_fctlr_s {
4800 uint32_t sip : 1;
4801 uint32_t reserved_1_15 : 15;
4802 uint32_t nsacr : 2;
4803 uint32_t reserved_18_19 : 2;
4804 uint32_t clpl : 4;
4805 uint32_t reserved_24_25 : 2;
4806 uint32_t pos : 1;
4807 uint32_t reserved_27_31 : 5;
4808 } s;
4809 struct ody_gicda_fctlr_cn {
4810 uint32_t sip : 1;
4811 uint32_t reserved_1 : 1;
4812 uint32_t reserved_2 : 1;
4813 uint32_t reserved_3 : 1;
4814 uint32_t reserved_4_15 : 12;
4815 uint32_t nsacr : 2;
4816 uint32_t reserved_18 : 1;
4817 uint32_t reserved_19 : 1;
4818 uint32_t clpl : 4;
4819 uint32_t reserved_24_25 : 2;
4820 uint32_t pos : 1;
4821 uint32_t reserved_27_31 : 5;
4822 } cn;
4823 };
4824 typedef union ody_gicda_fctlr ody_gicda_fctlr_t;
4825
4826 #define ODY_GICDA_FCTLR ODY_GICDA_FCTLR_FUNC()
4827 static inline uint64_t ODY_GICDA_FCTLR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_FCTLR_FUNC(void)4828 static inline uint64_t ODY_GICDA_FCTLR_FUNC(void)
4829 {
4830 return 0x801001500020ll;
4831 }
4832
4833 #define typedef_ODY_GICDA_FCTLR ody_gicda_fctlr_t
4834 #define bustype_ODY_GICDA_FCTLR CSR_TYPE_NCB32b
4835 #define basename_ODY_GICDA_FCTLR "GICDA_FCTLR"
4836 #define busnum_ODY_GICDA_FCTLR 0
4837 #define arguments_ODY_GICDA_FCTLR -1, -1, -1, -1
4838
4839 /**
4840 * Register (NCB32b) gicda_fctlr2
4841 *
4842 * GICDA Fctlr2 Register
4843 * The GICDA_FCTLR2 characteristics are:
4844 *
4845 * * Purpose
4846 * This register controls clock gating and other non-architectural controls in the local Distributor.
4847 *
4848 * * Usage constraints
4849 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
4850 */
4851 union ody_gicda_fctlr2 {
4852 uint32_t u;
4853 struct ody_gicda_fctlr2_s {
4854 uint32_t cgo : 12;
4855 uint32_t reserved_12_15 : 4;
4856 uint32_t rws : 1;
4857 uint32_t dcc : 1;
4858 uint32_t qdeny : 1;
4859 uint32_t rwc : 1;
4860 uint32_t reserved_20_24 : 5;
4861 uint32_t slc : 1;
4862 uint32_t reserved_26_27 : 2;
4863 uint32_t rcd : 1;
4864 uint32_t irp : 1;
4865 uint32_t awp : 1;
4866 uint32_t arp : 1;
4867 } s;
4868 struct ody_gicda_fctlr2_cn {
4869 uint32_t cgo : 12;
4870 uint32_t reserved_12_14 : 3;
4871 uint32_t reserved_15 : 1;
4872 uint32_t rws : 1;
4873 uint32_t dcc : 1;
4874 uint32_t qdeny : 1;
4875 uint32_t rwc : 1;
4876 uint32_t reserved_20_24 : 5;
4877 uint32_t slc : 1;
4878 uint32_t reserved_26_27 : 2;
4879 uint32_t rcd : 1;
4880 uint32_t irp : 1;
4881 uint32_t awp : 1;
4882 uint32_t arp : 1;
4883 } cn;
4884 };
4885 typedef union ody_gicda_fctlr2 ody_gicda_fctlr2_t;
4886
4887 #define ODY_GICDA_FCTLR2 ODY_GICDA_FCTLR2_FUNC()
4888 static inline uint64_t ODY_GICDA_FCTLR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_FCTLR2_FUNC(void)4889 static inline uint64_t ODY_GICDA_FCTLR2_FUNC(void)
4890 {
4891 return 0x801001500030ll;
4892 }
4893
4894 #define typedef_ODY_GICDA_FCTLR2 ody_gicda_fctlr2_t
4895 #define bustype_ODY_GICDA_FCTLR2 CSR_TYPE_NCB32b
4896 #define basename_ODY_GICDA_FCTLR2 "GICDA_FCTLR2"
4897 #define busnum_ODY_GICDA_FCTLR2 0
4898 #define arguments_ODY_GICDA_FCTLR2 -1, -1, -1, -1
4899
4900 /**
4901 * Register (NCB32b) gicda_fctlr3
4902 *
4903 * GICDA Fctlr3 Register
4904 * The GICDA_FCTLR3 characteristics are:
4905 *
4906 * * Purpose
4907 *
4908 * This register is RES0.
4909 *
4910 * * Usage constraints
4911 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
4912 */
4913 union ody_gicda_fctlr3 {
4914 uint32_t u;
4915 struct ody_gicda_fctlr3_s {
4916 uint32_t ncp0 : 5;
4917 uint32_t reserved_5_6 : 2;
4918 uint32_t scp1 : 1;
4919 uint32_t reserved_8_31 : 24;
4920 } s;
4921 /* struct ody_gicda_fctlr3_s cn; */
4922 };
4923 typedef union ody_gicda_fctlr3 ody_gicda_fctlr3_t;
4924
4925 #define ODY_GICDA_FCTLR3 ODY_GICDA_FCTLR3_FUNC()
4926 static inline uint64_t ODY_GICDA_FCTLR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_FCTLR3_FUNC(void)4927 static inline uint64_t ODY_GICDA_FCTLR3_FUNC(void)
4928 {
4929 return 0x801001500038ll;
4930 }
4931
4932 #define typedef_ODY_GICDA_FCTLR3 ody_gicda_fctlr3_t
4933 #define bustype_ODY_GICDA_FCTLR3 CSR_TYPE_NCB32b
4934 #define basename_ODY_GICDA_FCTLR3 "GICDA_FCTLR3"
4935 #define busnum_ODY_GICDA_FCTLR3 0
4936 #define arguments_ODY_GICDA_FCTLR3 -1, -1, -1, -1
4937
4938 /**
4939 * Register (NCB32b) gicda_icactiver#
4940 *
4941 * GICDA Icactiver Register
4942 * The GICDGICDA_ICACTIVER1 characteristics are:
4943 *
4944 * * Purpose
4945 * Deactivates the corresponding interrupt. These registers are used when saving and
4946 * restoring state for interrupts 32 to 63.
4947 *
4948 * * Usage constraints
4949 * For INTID m, when DIV and MOD are the integer division and modulo operations:
4950 *
4951 * * The corresponding GICD(A)_ICACTIVER number, n, is given by n = m DIV 32.
4952 * * The offset of the required ICACTIVER is (0x380 + (4*n)).
4953 * * The bit number of the required group modifier bit in this register is m MOD 32.
4954 *
4955 * If GICD(A)_CTLR.DS==0, unless the GICD(A)_NSACR registers permit Non-secure software
4956 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
4957 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
4958 * to Non-secure accesses.
4959 *
4960 * * Configurations
4961 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
4962 * result in an error being logged. (See GICD_ERR0CTLR for details).
4963 */
4964 union ody_gicda_icactiverx {
4965 uint32_t u;
4966 struct ody_gicda_icactiverx_s {
4967 uint32_t clear_active_bit0 : 1;
4968 uint32_t clear_active_bit1 : 1;
4969 uint32_t clear_active_bit2 : 1;
4970 uint32_t clear_active_bit3 : 1;
4971 uint32_t clear_active_bit4 : 1;
4972 uint32_t clear_active_bit5 : 1;
4973 uint32_t clear_active_bit6 : 1;
4974 uint32_t clear_active_bit7 : 1;
4975 uint32_t clear_active_bit8 : 1;
4976 uint32_t clear_active_bit9 : 1;
4977 uint32_t clear_active_bit10 : 1;
4978 uint32_t clear_active_bit11 : 1;
4979 uint32_t clear_active_bit12 : 1;
4980 uint32_t clear_active_bit13 : 1;
4981 uint32_t clear_active_bit14 : 1;
4982 uint32_t clear_active_bit15 : 1;
4983 uint32_t clear_active_bit16 : 1;
4984 uint32_t clear_active_bit17 : 1;
4985 uint32_t clear_active_bit18 : 1;
4986 uint32_t clear_active_bit19 : 1;
4987 uint32_t clear_active_bit20 : 1;
4988 uint32_t clear_active_bit21 : 1;
4989 uint32_t clear_active_bit22 : 1;
4990 uint32_t clear_active_bit23 : 1;
4991 uint32_t clear_active_bit24 : 1;
4992 uint32_t clear_active_bit25 : 1;
4993 uint32_t clear_active_bit26 : 1;
4994 uint32_t clear_active_bit27 : 1;
4995 uint32_t clear_active_bit28 : 1;
4996 uint32_t clear_active_bit29 : 1;
4997 uint32_t clear_active_bit30 : 1;
4998 uint32_t clear_active_bit31 : 1;
4999 } s;
5000 /* struct ody_gicda_icactiverx_s cn; */
5001 };
5002 typedef union ody_gicda_icactiverx ody_gicda_icactiverx_t;
5003
5004 static inline uint64_t ODY_GICDA_ICACTIVERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ICACTIVERX(uint64_t a)5005 static inline uint64_t ODY_GICDA_ICACTIVERX(uint64_t a)
5006 {
5007 if ((a >= 1) && (a <= 16))
5008 return 0x801001500380ll + 4ll * ((a) & 0x1f);
5009 __ody_csr_fatal("GICDA_ICACTIVERX", 1, a, 0, 0, 0, 0, 0);
5010 }
5011
5012 #define typedef_ODY_GICDA_ICACTIVERX(a) ody_gicda_icactiverx_t
5013 #define bustype_ODY_GICDA_ICACTIVERX(a) CSR_TYPE_NCB32b
5014 #define basename_ODY_GICDA_ICACTIVERX(a) "GICDA_ICACTIVERX"
5015 #define busnum_ODY_GICDA_ICACTIVERX(a) (a)
5016 #define arguments_ODY_GICDA_ICACTIVERX(a) (a), -1, -1, -1
5017
5018 /**
5019 * Register (NCB32b) gicda_icenabler#
5020 *
5021 * GICDA Icenabler Register
5022 * The GICDA_ICENABLER1 characteristics are:
5023 *
5024 * * Purpose
5025 * Disables forwarding of the corresponding interrupt to the CPU interfaces for interrupts 32 to 63.
5026 *
5027 * * Usage constraints
5028 * For INTID m, when DIV and MOD are the integer division and modulo operations:
5029 *
5030 * * The corresponding GICD(A)_ICENABLER number, n, is given by n = m DIV 32.
5031 * * The offset of the required ICENABLER is (0x180 + (4*n)).
5032 * * The bit number of the required group modifier bit in this register is m MOD 32.
5033 *
5034 * \> *Note*
5035 * \> Writing a 1 to a GICD(A)_ICENABLER bit only disables the forwarding of the
5036 * corresponding interrupt from the Distributor to any CPU interface. It does not
5037 * prevent the interrupt from changing state, for example becoming pending or active
5038 * and pending if it is already active.
5039 *
5040 * When GICD(A)_CTLR.DS==0, bits corresponding to Group 0 and Secure Group 1 interrupts
5041 * are RAZ/WI to Non-secure accesses.
5042 *
5043 * Completion of a write to this register does not guarantee that the effects of the
5044 * write are visible throughout the affinity hierarchy. To ensure an enable has been
5045 * cleared, software must write to the register with bits set to 1 to clear the
5046 * required enables. Software must then poll GICD(A)_CTLR.RWP until it has the value
5047 * zero.
5048 *
5049 * * Configurations
5050 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
5051 * result in an error being logged. (See GICD_ERR0CTLR for details).
5052 */
5053 union ody_gicda_icenablerx {
5054 uint32_t u;
5055 struct ody_gicda_icenablerx_s {
5056 uint32_t clear_enable_bit0 : 1;
5057 uint32_t clear_enable_bit1 : 1;
5058 uint32_t clear_enable_bit2 : 1;
5059 uint32_t clear_enable_bit3 : 1;
5060 uint32_t clear_enable_bit4 : 1;
5061 uint32_t clear_enable_bit5 : 1;
5062 uint32_t clear_enable_bit6 : 1;
5063 uint32_t clear_enable_bit7 : 1;
5064 uint32_t clear_enable_bit8 : 1;
5065 uint32_t clear_enable_bit9 : 1;
5066 uint32_t clear_enable_bit10 : 1;
5067 uint32_t clear_enable_bit11 : 1;
5068 uint32_t clear_enable_bit12 : 1;
5069 uint32_t clear_enable_bit13 : 1;
5070 uint32_t clear_enable_bit14 : 1;
5071 uint32_t clear_enable_bit15 : 1;
5072 uint32_t clear_enable_bit16 : 1;
5073 uint32_t clear_enable_bit17 : 1;
5074 uint32_t clear_enable_bit18 : 1;
5075 uint32_t clear_enable_bit19 : 1;
5076 uint32_t clear_enable_bit20 : 1;
5077 uint32_t clear_enable_bit21 : 1;
5078 uint32_t clear_enable_bit22 : 1;
5079 uint32_t clear_enable_bit23 : 1;
5080 uint32_t clear_enable_bit24 : 1;
5081 uint32_t clear_enable_bit25 : 1;
5082 uint32_t clear_enable_bit26 : 1;
5083 uint32_t clear_enable_bit27 : 1;
5084 uint32_t clear_enable_bit28 : 1;
5085 uint32_t clear_enable_bit29 : 1;
5086 uint32_t clear_enable_bit30 : 1;
5087 uint32_t clear_enable_bit31 : 1;
5088 } s;
5089 /* struct ody_gicda_icenablerx_s cn; */
5090 };
5091 typedef union ody_gicda_icenablerx ody_gicda_icenablerx_t;
5092
5093 static inline uint64_t ODY_GICDA_ICENABLERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ICENABLERX(uint64_t a)5094 static inline uint64_t ODY_GICDA_ICENABLERX(uint64_t a)
5095 {
5096 if ((a >= 1) && (a <= 16))
5097 return 0x801001500180ll + 4ll * ((a) & 0x1f);
5098 __ody_csr_fatal("GICDA_ICENABLERX", 1, a, 0, 0, 0, 0, 0);
5099 }
5100
5101 #define typedef_ODY_GICDA_ICENABLERX(a) ody_gicda_icenablerx_t
5102 #define bustype_ODY_GICDA_ICENABLERX(a) CSR_TYPE_NCB32b
5103 #define basename_ODY_GICDA_ICENABLERX(a) "GICDA_ICENABLERX"
5104 #define busnum_ODY_GICDA_ICENABLERX(a) (a)
5105 #define arguments_ODY_GICDA_ICENABLERX(a) (a), -1, -1, -1
5106
5107 /**
5108 * Register (NCB32b) gicda_icerrr#
5109 *
5110 * GICDA Icerrr Register
5111 * The GICDA_ICERRR1 characteristics are:
5112 *
5113 * * Purpose
5114 *
5115 * These registers can clear the error status of an SPI or return the error status of
5116 * an SPI for interrupts 16 to 31.
5117 *
5118 * * Usage constraints
5119 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
5120 *
5121 * * The corresponding GICD(A)_ICERRR number, n, is given by n = m DIV 16.
5122 * * The offset of the required ICERRR register is (0xE100 + (4*n)).
5123 *
5124 * * Configurations
5125 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
5126 * result in an error being logged. (See GICD_ERR0CTLR for details).
5127 */
5128 union ody_gicda_icerrrx {
5129 uint32_t u;
5130 struct ody_gicda_icerrrx_s {
5131 uint32_t status0 : 1;
5132 uint32_t status1 : 1;
5133 uint32_t status2 : 1;
5134 uint32_t status3 : 1;
5135 uint32_t status4 : 1;
5136 uint32_t status5 : 1;
5137 uint32_t status6 : 1;
5138 uint32_t status7 : 1;
5139 uint32_t status8 : 1;
5140 uint32_t status9 : 1;
5141 uint32_t status10 : 1;
5142 uint32_t status11 : 1;
5143 uint32_t status12 : 1;
5144 uint32_t status13 : 1;
5145 uint32_t status14 : 1;
5146 uint32_t status15 : 1;
5147 uint32_t status16 : 1;
5148 uint32_t status17 : 1;
5149 uint32_t status18 : 1;
5150 uint32_t status19 : 1;
5151 uint32_t status20 : 1;
5152 uint32_t status21 : 1;
5153 uint32_t status22 : 1;
5154 uint32_t status23 : 1;
5155 uint32_t status24 : 1;
5156 uint32_t status25 : 1;
5157 uint32_t status26 : 1;
5158 uint32_t status27 : 1;
5159 uint32_t status28 : 1;
5160 uint32_t status29 : 1;
5161 uint32_t status30 : 1;
5162 uint32_t status31 : 1;
5163 } s;
5164 /* struct ody_gicda_icerrrx_s cn; */
5165 };
5166 typedef union ody_gicda_icerrrx ody_gicda_icerrrx_t;
5167
5168 static inline uint64_t ODY_GICDA_ICERRRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ICERRRX(uint64_t a)5169 static inline uint64_t ODY_GICDA_ICERRRX(uint64_t a)
5170 {
5171 if ((a >= 1) && (a <= 16))
5172 return 0x80100150e100ll + 4ll * ((a) & 0x1f);
5173 __ody_csr_fatal("GICDA_ICERRRX", 1, a, 0, 0, 0, 0, 0);
5174 }
5175
5176 #define typedef_ODY_GICDA_ICERRRX(a) ody_gicda_icerrrx_t
5177 #define bustype_ODY_GICDA_ICERRRX(a) CSR_TYPE_NCB32b
5178 #define basename_ODY_GICDA_ICERRRX(a) "GICDA_ICERRRX"
5179 #define busnum_ODY_GICDA_ICERRRX(a) (a)
5180 #define arguments_ODY_GICDA_ICERRRX(a) (a), -1, -1, -1
5181
5182 /**
5183 * Register (NCB32b) gicda_icfgr#
5184 *
5185 * GICDA Icfgr Register
5186 * The GICDA_ICFGR2 characteristics are:
5187 *
5188 * * Purpose
5189 * Determines whether the corresponding interrupt is edge-triggered or level-sensitive
5190 * for interrupts 32 to 47.
5191 *
5192 * * Usage constraints
5193 * For INTID m, when DIV and MOD are the integer division and modulo operations:
5194 *
5195 * * The corresponding GICD(A)_ICFGR number, n, is given by n = m DIV 16.
5196 * * The offset of the required ICFGR is (0xC00 + (4*n)).
5197 * * The bit number of the required group modifier bit in this register is m MOD 32.
5198 *
5199 * Possible values for each interrupt are
5200 *
5201 * * 0b00 - Corresponding interrupt is level-sensitive.
5202 * * 0b10 - Corresponding interrupt is edge-triggered.
5203 *
5204 * The GIC will not update the Int_config2 bit if the corresponding interrupt is
5205 * enabled via GICD(A)_ISENABLER2
5206 *
5207 * * Configurations
5208 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
5209 * result in an error being logged. (See GICD_ERR0CTLR for details).
5210 */
5211 union ody_gicda_icfgrx {
5212 uint32_t u;
5213 struct ody_gicda_icfgrx_s {
5214 uint32_t int_config0 : 2;
5215 uint32_t int_config1 : 2;
5216 uint32_t int_config2 : 2;
5217 uint32_t int_config3 : 2;
5218 uint32_t int_config4 : 2;
5219 uint32_t int_config5 : 2;
5220 uint32_t int_config6 : 2;
5221 uint32_t int_config7 : 2;
5222 uint32_t int_config8 : 2;
5223 uint32_t int_config9 : 2;
5224 uint32_t int_config10 : 2;
5225 uint32_t int_config11 : 2;
5226 uint32_t int_config12 : 2;
5227 uint32_t int_config13 : 2;
5228 uint32_t int_config14 : 2;
5229 uint32_t int_config15 : 2;
5230 } s;
5231 /* struct ody_gicda_icfgrx_s cn; */
5232 };
5233 typedef union ody_gicda_icfgrx ody_gicda_icfgrx_t;
5234
5235 static inline uint64_t ODY_GICDA_ICFGRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ICFGRX(uint64_t a)5236 static inline uint64_t ODY_GICDA_ICFGRX(uint64_t a)
5237 {
5238 if ((a >= 2) && (a <= 33))
5239 return 0x801001500c00ll + 4ll * ((a) & 0x3f);
5240 __ody_csr_fatal("GICDA_ICFGRX", 1, a, 0, 0, 0, 0, 0);
5241 }
5242
5243 #define typedef_ODY_GICDA_ICFGRX(a) ody_gicda_icfgrx_t
5244 #define bustype_ODY_GICDA_ICFGRX(a) CSR_TYPE_NCB32b
5245 #define basename_ODY_GICDA_ICFGRX(a) "GICDA_ICFGRX"
5246 #define busnum_ODY_GICDA_ICFGRX(a) (a)
5247 #define arguments_ODY_GICDA_ICFGRX(a) (a), -1, -1, -1
5248
5249 /**
5250 * Register (NCB32b) gicda_icgerrr#
5251 *
5252 * GICDA Icgerrr Register
5253 * The GICDA_ICGERRR1 characteristics are:
5254 *
5255 * * Purpose
5256 *
5257 * These registers can clear the error status of the GICD(A)_IGROUPRn,
5258 * GICD(A)_IGRPMODRn, and GICD(A)_NSACRn registers of an SPI or return the error status
5259 * of an SPI.
5260 * Applies to interrupts 16 to 31.
5261 *
5262 * * Usage constraints
5263 * This register is Secure access only.
5264 *
5265 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
5266 *
5267 * * The corresponding GICD(A)_ICGERRR number, n, is given by n = m DIV 16.
5268 * * The offset of the required ICGERRR register is (0xE180 + (4*n)).
5269 *
5270 * * Configurations
5271 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
5272 * result in an error being logged. (See GICD_ERR0CTLR for details).
5273 */
5274 union ody_gicda_icgerrrx {
5275 uint32_t u;
5276 struct ody_gicda_icgerrrx_s {
5277 uint32_t status0 : 1;
5278 uint32_t status1 : 1;
5279 uint32_t status2 : 1;
5280 uint32_t status3 : 1;
5281 uint32_t status4 : 1;
5282 uint32_t status5 : 1;
5283 uint32_t status6 : 1;
5284 uint32_t status7 : 1;
5285 uint32_t status8 : 1;
5286 uint32_t status9 : 1;
5287 uint32_t status10 : 1;
5288 uint32_t status11 : 1;
5289 uint32_t status12 : 1;
5290 uint32_t status13 : 1;
5291 uint32_t status14 : 1;
5292 uint32_t status15 : 1;
5293 uint32_t status16 : 1;
5294 uint32_t status17 : 1;
5295 uint32_t status18 : 1;
5296 uint32_t status19 : 1;
5297 uint32_t status20 : 1;
5298 uint32_t status21 : 1;
5299 uint32_t status22 : 1;
5300 uint32_t status23 : 1;
5301 uint32_t status24 : 1;
5302 uint32_t status25 : 1;
5303 uint32_t status26 : 1;
5304 uint32_t status27 : 1;
5305 uint32_t status28 : 1;
5306 uint32_t status29 : 1;
5307 uint32_t status30 : 1;
5308 uint32_t status31 : 1;
5309 } s;
5310 /* struct ody_gicda_icgerrrx_s cn; */
5311 };
5312 typedef union ody_gicda_icgerrrx ody_gicda_icgerrrx_t;
5313
5314 static inline uint64_t ODY_GICDA_ICGERRRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ICGERRRX(uint64_t a)5315 static inline uint64_t ODY_GICDA_ICGERRRX(uint64_t a)
5316 {
5317 if ((a >= 1) && (a <= 16))
5318 return 0x80100150e180ll + 4ll * ((a) & 0x1f);
5319 __ody_csr_fatal("GICDA_ICGERRRX", 1, a, 0, 0, 0, 0, 0);
5320 }
5321
5322 #define typedef_ODY_GICDA_ICGERRRX(a) ody_gicda_icgerrrx_t
5323 #define bustype_ODY_GICDA_ICGERRRX(a) CSR_TYPE_NCB32b
5324 #define basename_ODY_GICDA_ICGERRRX(a) "GICDA_ICGERRRX"
5325 #define busnum_ODY_GICDA_ICGERRRX(a) (a)
5326 #define arguments_ODY_GICDA_ICGERRRX(a) (a), -1, -1, -1
5327
5328 /**
5329 * Register (NCB32b) gicda_iclar#
5330 *
5331 * GICDA Iclar Register
5332 * The GICDA_ICLAR2 characteristics are:
5333 *
5334 * * Purpose
5335 * These registers control whether a 1 of N SPI can target a core that is assigned to
5336 * class 0 or class 1 group for interrupts 32 to 47.
5337 *
5338 * * Usage constraints
5339 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
5340 *
5341 * * The corresponding GICD(A)_ICLAR number, n, is given by n = m DIV 16.
5342 * * The offset of the required ICLAR register is (0xE000 + (4*n)).
5343 *
5344 * These registers are only accessible when the corresponding
5345 * GICD(A)_IROUTERn.Interrupt_Routing_Mode == 1.
5346 *
5347 * * Configurations
5348 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
5349 * result in an error being logged. (See GICD_ERR0CTLR for details).
5350 */
5351 union ody_gicda_iclarx {
5352 uint32_t u;
5353 struct ody_gicda_iclarx_s {
5354 uint32_t classes0 : 2;
5355 uint32_t classes1 : 2;
5356 uint32_t classes2 : 2;
5357 uint32_t classes3 : 2;
5358 uint32_t classes4 : 2;
5359 uint32_t classes5 : 2;
5360 uint32_t classes6 : 2;
5361 uint32_t classes7 : 2;
5362 uint32_t classes8 : 2;
5363 uint32_t classes9 : 2;
5364 uint32_t classes10 : 2;
5365 uint32_t classes11 : 2;
5366 uint32_t classes12 : 2;
5367 uint32_t classes13 : 2;
5368 uint32_t classes14 : 2;
5369 uint32_t classes15 : 2;
5370 } s;
5371 /* struct ody_gicda_iclarx_s cn; */
5372 };
5373 typedef union ody_gicda_iclarx ody_gicda_iclarx_t;
5374
5375 static inline uint64_t ODY_GICDA_ICLARX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ICLARX(uint64_t a)5376 static inline uint64_t ODY_GICDA_ICLARX(uint64_t a)
5377 {
5378 if ((a >= 2) && (a <= 33))
5379 return 0x80100150e000ll + 4ll * ((a) & 0x3f);
5380 __ody_csr_fatal("GICDA_ICLARX", 1, a, 0, 0, 0, 0, 0);
5381 }
5382
5383 #define typedef_ODY_GICDA_ICLARX(a) ody_gicda_iclarx_t
5384 #define bustype_ODY_GICDA_ICLARX(a) CSR_TYPE_NCB32b
5385 #define basename_ODY_GICDA_ICLARX(a) "GICDA_ICLARX"
5386 #define busnum_ODY_GICDA_ICLARX(a) (a)
5387 #define arguments_ODY_GICDA_ICLARX(a) (a), -1, -1, -1
5388
5389 /**
5390 * Register (NCB32b) gicda_icpendr#
5391 *
5392 * GICDA Icpendr Register
5393 * The GICDA_ICPENDR1 characteristics are:
5394 *
5395 * * Purpose
5396 * Removes the pending state from the corresponding interrupt for interrupts 32 to 63.
5397 *
5398 * * Usage constraints
5399 * For INTID m, when DIV and MOD are the integer division and modulo operations:
5400 *
5401 * * The corresponding GICD(A)_ICPENDR number, n, is given by n = m DIV 32.
5402 * * The offset of the required ICPENDR is (0x280 + (4*n)).
5403 * * The bit number of the required group modifier bit in this register is m MOD 32.
5404 *
5405 * If GICD(A)_CTLR.DS==0, unless the GICD(A)_NSACR registers permit Non-secure software
5406 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
5407 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
5408 * to Non-secure accesses.
5409 *
5410 * * Configurations
5411 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
5412 * result in an error being logged. (See GICD_ERR0CTLR for details).
5413 */
5414 union ody_gicda_icpendrx {
5415 uint32_t u;
5416 struct ody_gicda_icpendrx_s {
5417 uint32_t clear_pending_bit0 : 1;
5418 uint32_t clear_pending_bit1 : 1;
5419 uint32_t clear_pending_bit2 : 1;
5420 uint32_t clear_pending_bit3 : 1;
5421 uint32_t clear_pending_bit4 : 1;
5422 uint32_t clear_pending_bit5 : 1;
5423 uint32_t clear_pending_bit6 : 1;
5424 uint32_t clear_pending_bit7 : 1;
5425 uint32_t clear_pending_bit8 : 1;
5426 uint32_t clear_pending_bit9 : 1;
5427 uint32_t clear_pending_bit10 : 1;
5428 uint32_t clear_pending_bit11 : 1;
5429 uint32_t clear_pending_bit12 : 1;
5430 uint32_t clear_pending_bit13 : 1;
5431 uint32_t clear_pending_bit14 : 1;
5432 uint32_t clear_pending_bit15 : 1;
5433 uint32_t clear_pending_bit16 : 1;
5434 uint32_t clear_pending_bit17 : 1;
5435 uint32_t clear_pending_bit18 : 1;
5436 uint32_t clear_pending_bit19 : 1;
5437 uint32_t clear_pending_bit20 : 1;
5438 uint32_t clear_pending_bit21 : 1;
5439 uint32_t clear_pending_bit22 : 1;
5440 uint32_t clear_pending_bit23 : 1;
5441 uint32_t clear_pending_bit24 : 1;
5442 uint32_t clear_pending_bit25 : 1;
5443 uint32_t clear_pending_bit26 : 1;
5444 uint32_t clear_pending_bit27 : 1;
5445 uint32_t clear_pending_bit28 : 1;
5446 uint32_t clear_pending_bit29 : 1;
5447 uint32_t clear_pending_bit30 : 1;
5448 uint32_t clear_pending_bit31 : 1;
5449 } s;
5450 /* struct ody_gicda_icpendrx_s cn; */
5451 };
5452 typedef union ody_gicda_icpendrx ody_gicda_icpendrx_t;
5453
5454 static inline uint64_t ODY_GICDA_ICPENDRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ICPENDRX(uint64_t a)5455 static inline uint64_t ODY_GICDA_ICPENDRX(uint64_t a)
5456 {
5457 if ((a >= 1) && (a <= 16))
5458 return 0x801001500280ll + 4ll * ((a) & 0x1f);
5459 __ody_csr_fatal("GICDA_ICPENDRX", 1, a, 0, 0, 0, 0, 0);
5460 }
5461
5462 #define typedef_ODY_GICDA_ICPENDRX(a) ody_gicda_icpendrx_t
5463 #define bustype_ODY_GICDA_ICPENDRX(a) CSR_TYPE_NCB32b
5464 #define basename_ODY_GICDA_ICPENDRX(a) "GICDA_ICPENDRX"
5465 #define busnum_ODY_GICDA_ICPENDRX(a) (a)
5466 #define arguments_ODY_GICDA_ICPENDRX(a) (a), -1, -1, -1
5467
5468 /**
5469 * Register (NCB32b) gicda_igroupr#
5470 *
5471 * GICDA Igroupr Register
5472 * The GICDA_IGROUPR1 characteristics are:
5473 *
5474 * * Purpose
5475 * Controls whether the corresponding interrupt is in Group 0 or Group 1 for interrupts 32 to 63.
5476 *
5477 * * Usage constraints
5478 * When GICD(A)_CTLR.DS==0, the register is RAZ/WI to Non-secure accesses.
5479 *
5480 * For INTID m, when DIV and MOD are the integer division and modulo operations:
5481 *
5482 * * The corresponding GICD(A)_IGROUP number, n, is given by n = m DIV 32.
5483 * * The offset of the required IGROUP register is (0x080 + (4*n)).
5484 * * The bit number of the required group modifier bit in this register is m MOD 32.
5485 *
5486 * * Configurations
5487 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
5488 * result in an error being logged. (See GICD_ERR0CTLR for details).
5489 */
5490 union ody_gicda_igrouprx {
5491 uint32_t u;
5492 struct ody_gicda_igrouprx_s {
5493 uint32_t group_status_bit0 : 1;
5494 uint32_t group_status_bit1 : 1;
5495 uint32_t group_status_bit2 : 1;
5496 uint32_t group_status_bit3 : 1;
5497 uint32_t group_status_bit4 : 1;
5498 uint32_t group_status_bit5 : 1;
5499 uint32_t group_status_bit6 : 1;
5500 uint32_t group_status_bit7 : 1;
5501 uint32_t group_status_bit8 : 1;
5502 uint32_t group_status_bit9 : 1;
5503 uint32_t group_status_bit10 : 1;
5504 uint32_t group_status_bit11 : 1;
5505 uint32_t group_status_bit12 : 1;
5506 uint32_t group_status_bit13 : 1;
5507 uint32_t group_status_bit14 : 1;
5508 uint32_t group_status_bit15 : 1;
5509 uint32_t group_status_bit16 : 1;
5510 uint32_t group_status_bit17 : 1;
5511 uint32_t group_status_bit18 : 1;
5512 uint32_t group_status_bit19 : 1;
5513 uint32_t group_status_bit20 : 1;
5514 uint32_t group_status_bit21 : 1;
5515 uint32_t group_status_bit22 : 1;
5516 uint32_t group_status_bit23 : 1;
5517 uint32_t group_status_bit24 : 1;
5518 uint32_t group_status_bit25 : 1;
5519 uint32_t group_status_bit26 : 1;
5520 uint32_t group_status_bit27 : 1;
5521 uint32_t group_status_bit28 : 1;
5522 uint32_t group_status_bit29 : 1;
5523 uint32_t group_status_bit30 : 1;
5524 uint32_t group_status_bit31 : 1;
5525 } s;
5526 /* struct ody_gicda_igrouprx_s cn; */
5527 };
5528 typedef union ody_gicda_igrouprx ody_gicda_igrouprx_t;
5529
5530 static inline uint64_t ODY_GICDA_IGROUPRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_IGROUPRX(uint64_t a)5531 static inline uint64_t ODY_GICDA_IGROUPRX(uint64_t a)
5532 {
5533 if ((a >= 1) && (a <= 16))
5534 return 0x801001500080ll + 4ll * ((a) & 0x1f);
5535 __ody_csr_fatal("GICDA_IGROUPRX", 1, a, 0, 0, 0, 0, 0);
5536 }
5537
5538 #define typedef_ODY_GICDA_IGROUPRX(a) ody_gicda_igrouprx_t
5539 #define bustype_ODY_GICDA_IGROUPRX(a) CSR_TYPE_NCB32b
5540 #define basename_ODY_GICDA_IGROUPRX(a) "GICDA_IGROUPRX"
5541 #define busnum_ODY_GICDA_IGROUPRX(a) (a)
5542 #define arguments_ODY_GICDA_IGROUPRX(a) (a), -1, -1, -1
5543
5544 /**
5545 * Register (NCB32b) gicda_igrpmodr#
5546 *
5547 * GICDA Igrpmodr Register
5548 * The GICDA_IGRPMODR1 characteristics are:
5549 *
5550 * * Purpose
5551 * When GICD(A)_CTLR.DS==0, this register together with the GICD(A)_IGROUPR1 register,
5552 * controls whether the corresponding interrupt is in:
5553 *
5554 * * Secure Group 0.
5555 * * Non-secure Group 1.
5556 * * Secure Group 1.
5557 *
5558 * Applies to interrupts 32 to 63
5559 *
5560 * * Usage constraints
5561 * For INTID m, when DIV and MOD are the integer division and modulo operations:
5562 *
5563 * * The corresponding GICD(A)_IGRPMODR number, n, is given by n = m DIV 32.
5564 * * The offset of the required IGRPMODR is (0xD00 + (4*n)).
5565 * * The bit number of the required group modifier bit in this register is m MOD 32.
5566 *
5567 * When GICD(A)_CTLR.DS==0, the register is RAZ/WI to Non-secure accesses.
5568 * When GICD(A)_CTLR.DS==1, the GICD(A)_IGRPMODR registers are RAZ/WI.
5569 *
5570 * * Configurations
5571 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
5572 * result in an error being logged. (See GICD_ERR0CTLR for details).
5573 */
5574 union ody_gicda_igrpmodrx {
5575 uint32_t u;
5576 struct ody_gicda_igrpmodrx_s {
5577 uint32_t group_modifier_bit0 : 1;
5578 uint32_t group_modifier_bit1 : 1;
5579 uint32_t group_modifier_bit2 : 1;
5580 uint32_t group_modifier_bit3 : 1;
5581 uint32_t group_modifier_bit4 : 1;
5582 uint32_t group_modifier_bit5 : 1;
5583 uint32_t group_modifier_bit6 : 1;
5584 uint32_t group_modifier_bit7 : 1;
5585 uint32_t group_modifier_bit8 : 1;
5586 uint32_t group_modifier_bit9 : 1;
5587 uint32_t group_modifier_bit10 : 1;
5588 uint32_t group_modifier_bit11 : 1;
5589 uint32_t group_modifier_bit12 : 1;
5590 uint32_t group_modifier_bit13 : 1;
5591 uint32_t group_modifier_bit14 : 1;
5592 uint32_t group_modifier_bit15 : 1;
5593 uint32_t group_modifier_bit16 : 1;
5594 uint32_t group_modifier_bit17 : 1;
5595 uint32_t group_modifier_bit18 : 1;
5596 uint32_t group_modifier_bit19 : 1;
5597 uint32_t group_modifier_bit20 : 1;
5598 uint32_t group_modifier_bit21 : 1;
5599 uint32_t group_modifier_bit22 : 1;
5600 uint32_t group_modifier_bit23 : 1;
5601 uint32_t group_modifier_bit24 : 1;
5602 uint32_t group_modifier_bit25 : 1;
5603 uint32_t group_modifier_bit26 : 1;
5604 uint32_t group_modifier_bit27 : 1;
5605 uint32_t group_modifier_bit28 : 1;
5606 uint32_t group_modifier_bit29 : 1;
5607 uint32_t group_modifier_bit30 : 1;
5608 uint32_t group_modifier_bit31 : 1;
5609 } s;
5610 /* struct ody_gicda_igrpmodrx_s cn; */
5611 };
5612 typedef union ody_gicda_igrpmodrx ody_gicda_igrpmodrx_t;
5613
5614 static inline uint64_t ODY_GICDA_IGRPMODRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_IGRPMODRX(uint64_t a)5615 static inline uint64_t ODY_GICDA_IGRPMODRX(uint64_t a)
5616 {
5617 if ((a >= 1) && (a <= 16))
5618 return 0x801001500d00ll + 4ll * ((a) & 0x1f);
5619 __ody_csr_fatal("GICDA_IGRPMODRX", 1, a, 0, 0, 0, 0, 0);
5620 }
5621
5622 #define typedef_ODY_GICDA_IGRPMODRX(a) ody_gicda_igrpmodrx_t
5623 #define bustype_ODY_GICDA_IGRPMODRX(a) CSR_TYPE_NCB32b
5624 #define basename_ODY_GICDA_IGRPMODRX(a) "GICDA_IGRPMODRX"
5625 #define busnum_ODY_GICDA_IGRPMODRX(a) (a)
5626 #define arguments_ODY_GICDA_IGRPMODRX(a) (a), -1, -1, -1
5627
5628 /**
5629 * Register (NCB32b) gicda_iidr
5630 *
5631 * GICDA Iidr Register
5632 * The GICDA_IIDR characteristics are:
5633 *
5634 * * Purpose
5635 * Provides information about the implementer and revision of the Distributor
5636 *
5637 * * Usage constraints
5638 * There are no usage constraints.
5639 *
5640 * * Configurations
5641 * This register is available in all configurations of the GIC.
5642 */
5643 union ody_gicda_iidr {
5644 uint32_t u;
5645 struct ody_gicda_iidr_s {
5646 uint32_t implementer : 12;
5647 uint32_t revision : 4;
5648 uint32_t variant : 4;
5649 uint32_t reserved_20_23 : 4;
5650 uint32_t productid : 8;
5651 } s;
5652 /* struct ody_gicda_iidr_s cn; */
5653 };
5654 typedef union ody_gicda_iidr ody_gicda_iidr_t;
5655
5656 #define ODY_GICDA_IIDR ODY_GICDA_IIDR_FUNC()
5657 static inline uint64_t ODY_GICDA_IIDR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_IIDR_FUNC(void)5658 static inline uint64_t ODY_GICDA_IIDR_FUNC(void)
5659 {
5660 return 0x801001500008ll;
5661 }
5662
5663 #define typedef_ODY_GICDA_IIDR ody_gicda_iidr_t
5664 #define bustype_ODY_GICDA_IIDR CSR_TYPE_NCB32b
5665 #define basename_ODY_GICDA_IIDR "GICDA_IIDR"
5666 #define busnum_ODY_GICDA_IIDR 0
5667 #define arguments_ODY_GICDA_IIDR -1, -1, -1, -1
5668
5669 /**
5670 * Register (NCB32b) gicda_ipriorityr#
5671 *
5672 * GICDA Ipriorityr Register
5673 * The GICDA_IPRIORITYR8 characteristics are:
5674 *
5675 * * Purpose
5676 * Holds the priority of interrupts 32 to 35.
5677 *
5678 * * Usage constraints
5679 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
5680 *
5681 * * The corresponding GICD(A)_IPRIORITYR8 number, n, is given by n = m DIV 4.
5682 * * The offset of the required IPRIORITYR register is (0x400 + (4*n)).
5683 * * The byte offset of the required Priority field in this register is m MOD 4, where:
5684 * * Byte offset 0 refers to register bits [7:0].
5685 * * Byte offset 1 refers to register bits [15:8].
5686 * * Byte offset 2 refers to register bits [23:16].
5687 * * Byte offset 3 refers to register bits [31:24].
5688 *
5689 * These registers are byte-accessible.
5690 *
5691 * The GIC implements 5 bits of priority and in each field, unimplemented bits are
5692 * RAZ/WI, see Interrupt prioritization on page 4-65.
5693 *
5694 * When GICD(A)_CTLR.DS==0:
5695 *
5696 * * A register bit that corresponds to a Group 0 or Secure Group 1 interrupt is RAZ/WI
5697 * to Non-secure accesses.
5698 * * A Non-secure access to a field that corresponds to a Non-secure Group 1 interrupt
5699 * behaves as described in Software accesses of interrupt priority on page 4-72.
5700 *
5701 * * Configurations
5702 * Accessing registers where n is greater than 4*(GICD(A)_TYPER.ITLinesNumber+1) may
5703 * result in an error being logged. (See GICD_ERR0CTLR for details).
5704 */
5705 union ody_gicda_ipriorityrx {
5706 uint32_t u;
5707 struct ody_gicda_ipriorityrx_s {
5708 uint32_t offset0 : 8;
5709 uint32_t offset1 : 8;
5710 uint32_t offset2 : 8;
5711 uint32_t offset3 : 8;
5712 } s;
5713 /* struct ody_gicda_ipriorityrx_s cn; */
5714 };
5715 typedef union ody_gicda_ipriorityrx ody_gicda_ipriorityrx_t;
5716
5717 static inline uint64_t ODY_GICDA_IPRIORITYRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_IPRIORITYRX(uint64_t a)5718 static inline uint64_t ODY_GICDA_IPRIORITYRX(uint64_t a)
5719 {
5720 if ((a >= 8) && (a <= 135))
5721 return 0x801001500400ll + 4ll * ((a) & 0xff);
5722 __ody_csr_fatal("GICDA_IPRIORITYRX", 1, a, 0, 0, 0, 0, 0);
5723 }
5724
5725 #define typedef_ODY_GICDA_IPRIORITYRX(a) ody_gicda_ipriorityrx_t
5726 #define bustype_ODY_GICDA_IPRIORITYRX(a) CSR_TYPE_NCB32b
5727 #define basename_ODY_GICDA_IPRIORITYRX(a) "GICDA_IPRIORITYRX"
5728 #define busnum_ODY_GICDA_IPRIORITYRX(a) (a)
5729 #define arguments_ODY_GICDA_IPRIORITYRX(a) (a), -1, -1, -1
5730
5731 /**
5732 * Register (NCB) gicda_irouter#
5733 *
5734 * GICDA Irouter Register
5735 * The GICDA_IROUTER32 characteristics are:
5736 *
5737 * * Purpose
5738 * Provides routing information for the corresponding SPI of ID 32:
5739 * * Usage constraints
5740 * When GICD(A)_CTLR.DS==0, a register that corresponds to a Group 0 or Secure Group 1
5741 * interrupt is RAZ/WI to Non-secure accesses (unless enabled by GICD(A)_CTLR.NSACR)
5742 * * Configurations
5743 * These registers are available in all GIC configurations.
5744 *
5745 * Accessing registers where n is greater than 32*(GICD(A)_TYPER.ITLinesNumber+1) may
5746 * result in an error being logged. (See GICD_ERR0CTLR for details).
5747 */
5748 union ody_gicda_irouterx {
5749 uint64_t u;
5750 struct ody_gicda_irouterx_s {
5751 uint64_t affinity0 : 8;
5752 uint64_t affinity1 : 8;
5753 uint64_t affinity2 : 8;
5754 uint64_t reserved_24_30 : 7;
5755 uint64_t interruptroutingmode : 1;
5756 uint64_t affinity3 : 8;
5757 uint64_t reserved_40_63 : 24;
5758 } s;
5759 /* struct ody_gicda_irouterx_s cn; */
5760 };
5761 typedef union ody_gicda_irouterx ody_gicda_irouterx_t;
5762
5763 static inline uint64_t ODY_GICDA_IROUTERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_IROUTERX(uint64_t a)5764 static inline uint64_t ODY_GICDA_IROUTERX(uint64_t a)
5765 {
5766 if ((a >= 32) && (a <= 543))
5767 return 0x801001506000ll + 8ll * ((a) & 0x3ff);
5768 __ody_csr_fatal("GICDA_IROUTERX", 1, a, 0, 0, 0, 0, 0);
5769 }
5770
5771 #define typedef_ODY_GICDA_IROUTERX(a) ody_gicda_irouterx_t
5772 #define bustype_ODY_GICDA_IROUTERX(a) CSR_TYPE_NCB
5773 #define basename_ODY_GICDA_IROUTERX(a) "GICDA_IROUTERX"
5774 #define busnum_ODY_GICDA_IROUTERX(a) (a)
5775 #define arguments_ODY_GICDA_IROUTERX(a) (a), -1, -1, -1
5776
5777 /**
5778 * Register (NCB32b) gicda_isactiver#
5779 *
5780 * GICDA Isactiver Register
5781 * The GICDA_ISACTIVER1 characteristics are:
5782 *
5783 * * Purpose
5784 * Activates the corresponding interrupt. These registers are used when saving and
5785 * restoring state for interrupts 32 to 63.
5786 *
5787 * * Usage constraints
5788 * For INTID m, when DIV and MOD are the integer division and modulo operations:
5789 *
5790 * * The corresponding GICD(A)_ISACTIVER number, n, is given by n = m DIV 32.
5791 * * The offset of the required ISACTIVER is (0x300 + (4*n)).
5792 * * The bit number of the required group modifier bit in this register is m MOD 32.
5793 *
5794 * If GICD(A)_CTLR.DS==0, unless the GICD(A)_NSACR registers permit Non-secure software
5795 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
5796 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
5797 * to Non-secure accesses.
5798 * The bit reads as one if the status of the interrupt is active or active and pending.
5799 * GICD(A)_ISPENDR1 and GICD(A)_ICPENDR1 provide the pending status of the interrupt.
5800 *
5801 * * Configurations
5802 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
5803 * result in an error being logged. (See GICD_ERR0CTLR for details).
5804 */
5805 union ody_gicda_isactiverx {
5806 uint32_t u;
5807 struct ody_gicda_isactiverx_s {
5808 uint32_t set_active_bit0 : 1;
5809 uint32_t set_active_bit1 : 1;
5810 uint32_t set_active_bit2 : 1;
5811 uint32_t set_active_bit3 : 1;
5812 uint32_t set_active_bit4 : 1;
5813 uint32_t set_active_bit5 : 1;
5814 uint32_t set_active_bit6 : 1;
5815 uint32_t set_active_bit7 : 1;
5816 uint32_t set_active_bit8 : 1;
5817 uint32_t set_active_bit9 : 1;
5818 uint32_t set_active_bit10 : 1;
5819 uint32_t set_active_bit11 : 1;
5820 uint32_t set_active_bit12 : 1;
5821 uint32_t set_active_bit13 : 1;
5822 uint32_t set_active_bit14 : 1;
5823 uint32_t set_active_bit15 : 1;
5824 uint32_t set_active_bit16 : 1;
5825 uint32_t set_active_bit17 : 1;
5826 uint32_t set_active_bit18 : 1;
5827 uint32_t set_active_bit19 : 1;
5828 uint32_t set_active_bit20 : 1;
5829 uint32_t set_active_bit21 : 1;
5830 uint32_t set_active_bit22 : 1;
5831 uint32_t set_active_bit23 : 1;
5832 uint32_t set_active_bit24 : 1;
5833 uint32_t set_active_bit25 : 1;
5834 uint32_t set_active_bit26 : 1;
5835 uint32_t set_active_bit27 : 1;
5836 uint32_t set_active_bit28 : 1;
5837 uint32_t set_active_bit29 : 1;
5838 uint32_t set_active_bit30 : 1;
5839 uint32_t set_active_bit31 : 1;
5840 } s;
5841 /* struct ody_gicda_isactiverx_s cn; */
5842 };
5843 typedef union ody_gicda_isactiverx ody_gicda_isactiverx_t;
5844
5845 static inline uint64_t ODY_GICDA_ISACTIVERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ISACTIVERX(uint64_t a)5846 static inline uint64_t ODY_GICDA_ISACTIVERX(uint64_t a)
5847 {
5848 if ((a >= 1) && (a <= 16))
5849 return 0x801001500300ll + 4ll * ((a) & 0x1f);
5850 __ody_csr_fatal("GICDA_ISACTIVERX", 1, a, 0, 0, 0, 0, 0);
5851 }
5852
5853 #define typedef_ODY_GICDA_ISACTIVERX(a) ody_gicda_isactiverx_t
5854 #define bustype_ODY_GICDA_ISACTIVERX(a) CSR_TYPE_NCB32b
5855 #define basename_ODY_GICDA_ISACTIVERX(a) "GICDA_ISACTIVERX"
5856 #define busnum_ODY_GICDA_ISACTIVERX(a) (a)
5857 #define arguments_ODY_GICDA_ISACTIVERX(a) (a), -1, -1, -1
5858
5859 /**
5860 * Register (NCB32b) gicda_isenabler#
5861 *
5862 * GICDA Isenabler Register
5863 * The GICDA_ISENABLER1 characteristics are:
5864 *
5865 * * Purpose
5866 * Enables forwarding of the corresponding interrupt to the CPU interfaces for interrupts 32 to 63.
5867 *
5868 * * Usage constraints
5869 * For INTID m, when DIV and MOD are the integer division and modulo operations:
5870 *
5871 * * The corresponding GICD(A)_ISENABLER number, n, is given by n = m DIV 32.
5872 * * The offset of the ISENABLER is (0x100 + (4*n)).
5873 * * The bit number of the required group modifier bit in this register is m MOD 32.
5874 *
5875 * When GICD(A)_CTLR.DS==0, bits corresponding to Group 0 and Secure Group 1 interrupts
5876 * are RAZ/WI to Non-secure accesses.
5877 *
5878 * At start-up, and after a reset, a PE can use this register to discover which
5879 * peripheral INTIDs the GIC supports. If GICD(A)_CTLR.DS==0 in a system that supports
5880 * EL3, the PE must do this for the Secure view of the available interrupts, and Non-
5881 * secure software running on the PE must do this discovery after the Secure software
5882 * has configured interrupts as Group 0/Secure Group 1 and Non-secure Group 1.
5883 *
5884 * * Configurations
5885 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
5886 * result in an error being logged. (See GICD_ERR0CTLR for details).
5887 */
5888 union ody_gicda_isenablerx {
5889 uint32_t u;
5890 struct ody_gicda_isenablerx_s {
5891 uint32_t set_enable_bit0 : 1;
5892 uint32_t set_enable_bit1 : 1;
5893 uint32_t set_enable_bit2 : 1;
5894 uint32_t set_enable_bit3 : 1;
5895 uint32_t set_enable_bit4 : 1;
5896 uint32_t set_enable_bit5 : 1;
5897 uint32_t set_enable_bit6 : 1;
5898 uint32_t set_enable_bit7 : 1;
5899 uint32_t set_enable_bit8 : 1;
5900 uint32_t set_enable_bit9 : 1;
5901 uint32_t set_enable_bit10 : 1;
5902 uint32_t set_enable_bit11 : 1;
5903 uint32_t set_enable_bit12 : 1;
5904 uint32_t set_enable_bit13 : 1;
5905 uint32_t set_enable_bit14 : 1;
5906 uint32_t set_enable_bit15 : 1;
5907 uint32_t set_enable_bit16 : 1;
5908 uint32_t set_enable_bit17 : 1;
5909 uint32_t set_enable_bit18 : 1;
5910 uint32_t set_enable_bit19 : 1;
5911 uint32_t set_enable_bit20 : 1;
5912 uint32_t set_enable_bit21 : 1;
5913 uint32_t set_enable_bit22 : 1;
5914 uint32_t set_enable_bit23 : 1;
5915 uint32_t set_enable_bit24 : 1;
5916 uint32_t set_enable_bit25 : 1;
5917 uint32_t set_enable_bit26 : 1;
5918 uint32_t set_enable_bit27 : 1;
5919 uint32_t set_enable_bit28 : 1;
5920 uint32_t set_enable_bit29 : 1;
5921 uint32_t set_enable_bit30 : 1;
5922 uint32_t set_enable_bit31 : 1;
5923 } s;
5924 /* struct ody_gicda_isenablerx_s cn; */
5925 };
5926 typedef union ody_gicda_isenablerx ody_gicda_isenablerx_t;
5927
5928 static inline uint64_t ODY_GICDA_ISENABLERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ISENABLERX(uint64_t a)5929 static inline uint64_t ODY_GICDA_ISENABLERX(uint64_t a)
5930 {
5931 if ((a >= 1) && (a <= 16))
5932 return 0x801001500100ll + 4ll * ((a) & 0x1f);
5933 __ody_csr_fatal("GICDA_ISENABLERX", 1, a, 0, 0, 0, 0, 0);
5934 }
5935
5936 #define typedef_ODY_GICDA_ISENABLERX(a) ody_gicda_isenablerx_t
5937 #define bustype_ODY_GICDA_ISENABLERX(a) CSR_TYPE_NCB32b
5938 #define basename_ODY_GICDA_ISENABLERX(a) "GICDA_ISENABLERX"
5939 #define busnum_ODY_GICDA_ISENABLERX(a) (a)
5940 #define arguments_ODY_GICDA_ISENABLERX(a) (a), -1, -1, -1
5941
5942 /**
5943 * Register (NCB32b) gicda_iserrr#
5944 *
5945 * GICDA Iserrr Register
5946 * The GICDA_ISERRR1 characteristics are:
5947 *
5948 * * Purpose
5949 *
5950 * These registers can set the error status of an SPI or return the error status of an
5951 * SPI for interrupts 16 to 31.
5952 *
5953 * * Usage constraints
5954 * This register is Secure access only
5955 *
5956 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
5957 *
5958 * * The corresponding GICD(A)_ISERRR number, n, is given by n = m DIV 16.
5959 * * The offset of the required ISERRR register is (0xE200 + (4*n)).
5960 *
5961 * * Configurations
5962 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
5963 * result in an error being logged. (See GICD_ERR0CTLR for details).
5964 */
5965 union ody_gicda_iserrrx {
5966 uint32_t u;
5967 struct ody_gicda_iserrrx_s {
5968 uint32_t status0 : 1;
5969 uint32_t status1 : 1;
5970 uint32_t status2 : 1;
5971 uint32_t status3 : 1;
5972 uint32_t status4 : 1;
5973 uint32_t status5 : 1;
5974 uint32_t status6 : 1;
5975 uint32_t status7 : 1;
5976 uint32_t status8 : 1;
5977 uint32_t status9 : 1;
5978 uint32_t status10 : 1;
5979 uint32_t status11 : 1;
5980 uint32_t status12 : 1;
5981 uint32_t status13 : 1;
5982 uint32_t status14 : 1;
5983 uint32_t status15 : 1;
5984 uint32_t status16 : 1;
5985 uint32_t status17 : 1;
5986 uint32_t status18 : 1;
5987 uint32_t status19 : 1;
5988 uint32_t status20 : 1;
5989 uint32_t status21 : 1;
5990 uint32_t status22 : 1;
5991 uint32_t status23 : 1;
5992 uint32_t status24 : 1;
5993 uint32_t status25 : 1;
5994 uint32_t status26 : 1;
5995 uint32_t status27 : 1;
5996 uint32_t status28 : 1;
5997 uint32_t status29 : 1;
5998 uint32_t status30 : 1;
5999 uint32_t status31 : 1;
6000 } s;
6001 /* struct ody_gicda_iserrrx_s cn; */
6002 };
6003 typedef union ody_gicda_iserrrx ody_gicda_iserrrx_t;
6004
6005 static inline uint64_t ODY_GICDA_ISERRRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ISERRRX(uint64_t a)6006 static inline uint64_t ODY_GICDA_ISERRRX(uint64_t a)
6007 {
6008 if ((a >= 1) && (a <= 16))
6009 return 0x80100150e200ll + 4ll * ((a) & 0x1f);
6010 __ody_csr_fatal("GICDA_ISERRRX", 1, a, 0, 0, 0, 0, 0);
6011 }
6012
6013 #define typedef_ODY_GICDA_ISERRRX(a) ody_gicda_iserrrx_t
6014 #define bustype_ODY_GICDA_ISERRRX(a) CSR_TYPE_NCB32b
6015 #define basename_ODY_GICDA_ISERRRX(a) "GICDA_ISERRRX"
6016 #define busnum_ODY_GICDA_ISERRRX(a) (a)
6017 #define arguments_ODY_GICDA_ISERRRX(a) (a), -1, -1, -1
6018
6019 /**
6020 * Register (NCB32b) gicda_ispendr#
6021 *
6022 * GICDA Ispendr Register
6023 * The GICDA_ISPENDR1 characteristics are:
6024 *
6025 * * Purpose
6026 * Adds the pending state to the corresponding interrupt for interrupts 32 to 63.
6027 *
6028 * * Usage constraints
6029 * For INTID m, when DIV and MOD are the integer division and modulo operations:
6030 *
6031 * * The corresponding GICD(A)_ISPENDR number, n, is given by n = m DIV 32.
6032 * * The offset of the required ISPENDR is (0x200 + (4*n)).
6033 * * The bit number of the required group modifier bit in this register is m MOD 32.
6034 *
6035 * If GICD(A)_CTLR.DS==0, unless the GICD(A)_NSACR registers permit Non-secure software
6036 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
6037 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
6038 * to Non-secure accesses.
6039 *
6040 * * Configurations
6041 * Accessing registers where n is greater than (GICD(A)_TYPER.ITLinesNumber+1) may
6042 * result in an error being logged. (See GICD_ERR0CTLR for details).
6043 */
6044 union ody_gicda_ispendrx {
6045 uint32_t u;
6046 struct ody_gicda_ispendrx_s {
6047 uint32_t set_pending_bit0 : 1;
6048 uint32_t set_pending_bit1 : 1;
6049 uint32_t set_pending_bit2 : 1;
6050 uint32_t set_pending_bit3 : 1;
6051 uint32_t set_pending_bit4 : 1;
6052 uint32_t set_pending_bit5 : 1;
6053 uint32_t set_pending_bit6 : 1;
6054 uint32_t set_pending_bit7 : 1;
6055 uint32_t set_pending_bit8 : 1;
6056 uint32_t set_pending_bit9 : 1;
6057 uint32_t set_pending_bit10 : 1;
6058 uint32_t set_pending_bit11 : 1;
6059 uint32_t set_pending_bit12 : 1;
6060 uint32_t set_pending_bit13 : 1;
6061 uint32_t set_pending_bit14 : 1;
6062 uint32_t set_pending_bit15 : 1;
6063 uint32_t set_pending_bit16 : 1;
6064 uint32_t set_pending_bit17 : 1;
6065 uint32_t set_pending_bit18 : 1;
6066 uint32_t set_pending_bit19 : 1;
6067 uint32_t set_pending_bit20 : 1;
6068 uint32_t set_pending_bit21 : 1;
6069 uint32_t set_pending_bit22 : 1;
6070 uint32_t set_pending_bit23 : 1;
6071 uint32_t set_pending_bit24 : 1;
6072 uint32_t set_pending_bit25 : 1;
6073 uint32_t set_pending_bit26 : 1;
6074 uint32_t set_pending_bit27 : 1;
6075 uint32_t set_pending_bit28 : 1;
6076 uint32_t set_pending_bit29 : 1;
6077 uint32_t set_pending_bit30 : 1;
6078 uint32_t set_pending_bit31 : 1;
6079 } s;
6080 /* struct ody_gicda_ispendrx_s cn; */
6081 };
6082 typedef union ody_gicda_ispendrx ody_gicda_ispendrx_t;
6083
6084 static inline uint64_t ODY_GICDA_ISPENDRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_ISPENDRX(uint64_t a)6085 static inline uint64_t ODY_GICDA_ISPENDRX(uint64_t a)
6086 {
6087 if ((a >= 1) && (a <= 16))
6088 return 0x801001500200ll + 4ll * ((a) & 0x1f);
6089 __ody_csr_fatal("GICDA_ISPENDRX", 1, a, 0, 0, 0, 0, 0);
6090 }
6091
6092 #define typedef_ODY_GICDA_ISPENDRX(a) ody_gicda_ispendrx_t
6093 #define bustype_ODY_GICDA_ISPENDRX(a) CSR_TYPE_NCB32b
6094 #define basename_ODY_GICDA_ISPENDRX(a) "GICDA_ISPENDRX"
6095 #define busnum_ODY_GICDA_ISPENDRX(a) (a)
6096 #define arguments_ODY_GICDA_ISPENDRX(a) (a), -1, -1, -1
6097
6098 /**
6099 * Register (NCB32b) gicda_nsacr#
6100 *
6101 * GICDA Nsacr Register
6102 * The GICDA_NSACR2 characteristics are:
6103 *
6104 * * Purpose
6105 * Enables Secure software to permit Non-secure software on a particular PE to create
6106 * and control Group 0 interrupts for interrupts 32 to 47.
6107 *
6108 * * Usage constraints
6109 * For interrupt ID m, when DIV and MOD are the integer division and modulo operations:
6110 *
6111 * * The corresponding GICD(A)_NSACR number, n, is given by n = m DIV 16.
6112 * * The offset of the required NSACR register is (0xE00 + (4*n)).
6113 *
6114 * When GICD(A)_CTLR.DS==1, this register is RAZ/WI.
6115 * These registers are Secure, and are RAZ/WI to Non-secure accesses.
6116 *
6117 * * Configurations
6118 * These registers are available in all GIC configurations.
6119 *
6120 * Accessing registers where n is greater than 2*(GICD(A)_TYPER.ITLinesNumber+1) may
6121 * result in an error being logged. (See GICD_ERR0CTLR for details).
6122 */
6123 union ody_gicda_nsacrx {
6124 uint32_t u;
6125 struct ody_gicda_nsacrx_s {
6126 uint32_t ns_access0 : 2;
6127 uint32_t ns_access1 : 2;
6128 uint32_t ns_access2 : 2;
6129 uint32_t ns_access3 : 2;
6130 uint32_t ns_access4 : 2;
6131 uint32_t ns_access5 : 2;
6132 uint32_t ns_access6 : 2;
6133 uint32_t ns_access7 : 2;
6134 uint32_t ns_access8 : 2;
6135 uint32_t ns_access9 : 2;
6136 uint32_t ns_access10 : 2;
6137 uint32_t ns_access11 : 2;
6138 uint32_t ns_access12 : 2;
6139 uint32_t ns_access13 : 2;
6140 uint32_t ns_access14 : 2;
6141 uint32_t ns_access15 : 2;
6142 } s;
6143 /* struct ody_gicda_nsacrx_s cn; */
6144 };
6145 typedef union ody_gicda_nsacrx ody_gicda_nsacrx_t;
6146
6147 static inline uint64_t ODY_GICDA_NSACRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICDA_NSACRX(uint64_t a)6148 static inline uint64_t ODY_GICDA_NSACRX(uint64_t a)
6149 {
6150 if ((a >= 2) && (a <= 33))
6151 return 0x801001500e00ll + 4ll * ((a) & 0x3f);
6152 __ody_csr_fatal("GICDA_NSACRX", 1, a, 0, 0, 0, 0, 0);
6153 }
6154
6155 #define typedef_ODY_GICDA_NSACRX(a) ody_gicda_nsacrx_t
6156 #define bustype_ODY_GICDA_NSACRX(a) CSR_TYPE_NCB32b
6157 #define basename_ODY_GICDA_NSACRX(a) "GICDA_NSACRX"
6158 #define busnum_ODY_GICDA_NSACRX(a) (a)
6159 #define arguments_ODY_GICDA_NSACRX(a) (a), -1, -1, -1
6160
6161 /**
6162 * Register (NCB32b) gicda_pidr0
6163 *
6164 * GICDA Pidr0 Register
6165 * The GICDA_PIDR0 characteristics are:
6166 *
6167 * * Purpose
6168 * This register returns byte[0] of the peripheral ID of the GIC Distributor page.
6169 *
6170 * * Usage constraints
6171 * There are no usage constraints.
6172 */
6173 union ody_gicda_pidr0 {
6174 uint32_t u;
6175 struct ody_gicda_pidr0_s {
6176 uint32_t part_0 : 8;
6177 uint32_t reserved_8_31 : 24;
6178 } s;
6179 /* struct ody_gicda_pidr0_s cn; */
6180 };
6181 typedef union ody_gicda_pidr0 ody_gicda_pidr0_t;
6182
6183 #define ODY_GICDA_PIDR0 ODY_GICDA_PIDR0_FUNC()
6184 static inline uint64_t ODY_GICDA_PIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_PIDR0_FUNC(void)6185 static inline uint64_t ODY_GICDA_PIDR0_FUNC(void)
6186 {
6187 return 0x80100150ffe0ll;
6188 }
6189
6190 #define typedef_ODY_GICDA_PIDR0 ody_gicda_pidr0_t
6191 #define bustype_ODY_GICDA_PIDR0 CSR_TYPE_NCB32b
6192 #define basename_ODY_GICDA_PIDR0 "GICDA_PIDR0"
6193 #define busnum_ODY_GICDA_PIDR0 0
6194 #define arguments_ODY_GICDA_PIDR0 -1, -1, -1, -1
6195
6196 /**
6197 * Register (NCB32b) gicda_pidr1
6198 *
6199 * GICDA Pidr1 Register
6200 * The GICDA_PIDR1 characteristics are:
6201 *
6202 * * Purpose
6203 * This register returns byte[1] of the peripheral ID of the GIC Distributor page.
6204 *
6205 * * Usage constraints
6206 * There are no usage constraints.
6207 */
6208 union ody_gicda_pidr1 {
6209 uint32_t u;
6210 struct ody_gicda_pidr1_s {
6211 uint32_t part_1 : 4;
6212 uint32_t des_0 : 4;
6213 uint32_t reserved_8_31 : 24;
6214 } s;
6215 /* struct ody_gicda_pidr1_s cn; */
6216 };
6217 typedef union ody_gicda_pidr1 ody_gicda_pidr1_t;
6218
6219 #define ODY_GICDA_PIDR1 ODY_GICDA_PIDR1_FUNC()
6220 static inline uint64_t ODY_GICDA_PIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_PIDR1_FUNC(void)6221 static inline uint64_t ODY_GICDA_PIDR1_FUNC(void)
6222 {
6223 return 0x80100150ffe4ll;
6224 }
6225
6226 #define typedef_ODY_GICDA_PIDR1 ody_gicda_pidr1_t
6227 #define bustype_ODY_GICDA_PIDR1 CSR_TYPE_NCB32b
6228 #define basename_ODY_GICDA_PIDR1 "GICDA_PIDR1"
6229 #define busnum_ODY_GICDA_PIDR1 0
6230 #define arguments_ODY_GICDA_PIDR1 -1, -1, -1, -1
6231
6232 /**
6233 * Register (NCB32b) gicda_pidr2
6234 *
6235 * GICDA Pidr2 Register
6236 * The GICDA_PIDR2 characteristics are:
6237 *
6238 * * Purpose
6239 * This register returns byte[2] of the peripheral ID of the GIC Distributor page.
6240 *
6241 * * Usage constraints
6242 * There are no usage constraints.
6243 */
6244 union ody_gicda_pidr2 {
6245 uint32_t u;
6246 struct ody_gicda_pidr2_s {
6247 uint32_t des_1 : 3;
6248 uint32_t jedec : 1;
6249 uint32_t revision : 4;
6250 uint32_t reserved_8_31 : 24;
6251 } s;
6252 /* struct ody_gicda_pidr2_s cn; */
6253 };
6254 typedef union ody_gicda_pidr2 ody_gicda_pidr2_t;
6255
6256 #define ODY_GICDA_PIDR2 ODY_GICDA_PIDR2_FUNC()
6257 static inline uint64_t ODY_GICDA_PIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_PIDR2_FUNC(void)6258 static inline uint64_t ODY_GICDA_PIDR2_FUNC(void)
6259 {
6260 return 0x80100150ffe8ll;
6261 }
6262
6263 #define typedef_ODY_GICDA_PIDR2 ody_gicda_pidr2_t
6264 #define bustype_ODY_GICDA_PIDR2 CSR_TYPE_NCB32b
6265 #define basename_ODY_GICDA_PIDR2 "GICDA_PIDR2"
6266 #define busnum_ODY_GICDA_PIDR2 0
6267 #define arguments_ODY_GICDA_PIDR2 -1, -1, -1, -1
6268
6269 /**
6270 * Register (NCB32b) gicda_pidr3
6271 *
6272 * GICDA Pidr3 Register
6273 * The GICDA_PIDR3 characteristics are:
6274 *
6275 * * Purpose
6276 * This register returns byte[3] of the peripheral ID of the GIC Distributor page.
6277 *
6278 * * Usage constraints
6279 * There are no usage constraints.
6280 */
6281 union ody_gicda_pidr3 {
6282 uint32_t u;
6283 struct ody_gicda_pidr3_s {
6284 uint32_t cmod : 3;
6285 uint32_t reserved_3 : 1;
6286 uint32_t revand : 4;
6287 uint32_t reserved_8_31 : 24;
6288 } s;
6289 /* struct ody_gicda_pidr3_s cn; */
6290 };
6291 typedef union ody_gicda_pidr3 ody_gicda_pidr3_t;
6292
6293 #define ODY_GICDA_PIDR3 ODY_GICDA_PIDR3_FUNC()
6294 static inline uint64_t ODY_GICDA_PIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_PIDR3_FUNC(void)6295 static inline uint64_t ODY_GICDA_PIDR3_FUNC(void)
6296 {
6297 return 0x80100150ffecll;
6298 }
6299
6300 #define typedef_ODY_GICDA_PIDR3 ody_gicda_pidr3_t
6301 #define bustype_ODY_GICDA_PIDR3 CSR_TYPE_NCB32b
6302 #define basename_ODY_GICDA_PIDR3 "GICDA_PIDR3"
6303 #define busnum_ODY_GICDA_PIDR3 0
6304 #define arguments_ODY_GICDA_PIDR3 -1, -1, -1, -1
6305
6306 /**
6307 * Register (NCB32b) gicda_pidr4
6308 *
6309 * GICDA Pidr4 Register
6310 * The GICDA_PIDR4 characteristics are:
6311 *
6312 * * Purpose
6313 * This register returns byte[4] of the peripheral ID of the GIC Distributor page.
6314 *
6315 * * Usage constraints
6316 * There are no usage constraints.
6317 */
6318 union ody_gicda_pidr4 {
6319 uint32_t u;
6320 struct ody_gicda_pidr4_s {
6321 uint32_t des_2 : 4;
6322 uint32_t size : 4;
6323 uint32_t reserved_8_31 : 24;
6324 } s;
6325 /* struct ody_gicda_pidr4_s cn; */
6326 };
6327 typedef union ody_gicda_pidr4 ody_gicda_pidr4_t;
6328
6329 #define ODY_GICDA_PIDR4 ODY_GICDA_PIDR4_FUNC()
6330 static inline uint64_t ODY_GICDA_PIDR4_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_PIDR4_FUNC(void)6331 static inline uint64_t ODY_GICDA_PIDR4_FUNC(void)
6332 {
6333 return 0x80100150ffd0ll;
6334 }
6335
6336 #define typedef_ODY_GICDA_PIDR4 ody_gicda_pidr4_t
6337 #define bustype_ODY_GICDA_PIDR4 CSR_TYPE_NCB32b
6338 #define basename_ODY_GICDA_PIDR4 "GICDA_PIDR4"
6339 #define busnum_ODY_GICDA_PIDR4 0
6340 #define arguments_ODY_GICDA_PIDR4 -1, -1, -1, -1
6341
6342 /**
6343 * Register (NCB32b) gicda_pidr5
6344 *
6345 * GICDA Pidr5 Register
6346 * The GICDA_PIDR5 characteristics are:
6347 *
6348 * * Purpose
6349 * This register returns byte[5] of the peripheral ID of the GIC Distributor page.
6350 *
6351 * * Usage constraints
6352 * There are no usage constraints.
6353 */
6354 union ody_gicda_pidr5 {
6355 uint32_t u;
6356 struct ody_gicda_pidr5_s {
6357 uint32_t reserved_0_31 : 32;
6358 } s;
6359 struct ody_gicda_pidr5_cn {
6360 uint32_t reserved_0_7 : 8;
6361 uint32_t reserved_8_31 : 24;
6362 } cn;
6363 };
6364 typedef union ody_gicda_pidr5 ody_gicda_pidr5_t;
6365
6366 #define ODY_GICDA_PIDR5 ODY_GICDA_PIDR5_FUNC()
6367 static inline uint64_t ODY_GICDA_PIDR5_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_PIDR5_FUNC(void)6368 static inline uint64_t ODY_GICDA_PIDR5_FUNC(void)
6369 {
6370 return 0x80100150ffd4ll;
6371 }
6372
6373 #define typedef_ODY_GICDA_PIDR5 ody_gicda_pidr5_t
6374 #define bustype_ODY_GICDA_PIDR5 CSR_TYPE_NCB32b
6375 #define basename_ODY_GICDA_PIDR5 "GICDA_PIDR5"
6376 #define busnum_ODY_GICDA_PIDR5 0
6377 #define arguments_ODY_GICDA_PIDR5 -1, -1, -1, -1
6378
6379 /**
6380 * Register (NCB32b) gicda_pidr6
6381 *
6382 * GICDA Pidr6 Register
6383 * The GICDA_PIDR6 characteristics are:
6384 *
6385 * * Purpose
6386 * This register returns byte[6] of the peripheral ID of the GIC Distributor page.
6387 *
6388 * * Usage constraints
6389 * There are no usage constraints.
6390 */
6391 union ody_gicda_pidr6 {
6392 uint32_t u;
6393 struct ody_gicda_pidr6_s {
6394 uint32_t reserved_0_31 : 32;
6395 } s;
6396 struct ody_gicda_pidr6_cn {
6397 uint32_t reserved_0_7 : 8;
6398 uint32_t reserved_8_31 : 24;
6399 } cn;
6400 };
6401 typedef union ody_gicda_pidr6 ody_gicda_pidr6_t;
6402
6403 #define ODY_GICDA_PIDR6 ODY_GICDA_PIDR6_FUNC()
6404 static inline uint64_t ODY_GICDA_PIDR6_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_PIDR6_FUNC(void)6405 static inline uint64_t ODY_GICDA_PIDR6_FUNC(void)
6406 {
6407 return 0x80100150ffd8ll;
6408 }
6409
6410 #define typedef_ODY_GICDA_PIDR6 ody_gicda_pidr6_t
6411 #define bustype_ODY_GICDA_PIDR6 CSR_TYPE_NCB32b
6412 #define basename_ODY_GICDA_PIDR6 "GICDA_PIDR6"
6413 #define busnum_ODY_GICDA_PIDR6 0
6414 #define arguments_ODY_GICDA_PIDR6 -1, -1, -1, -1
6415
6416 /**
6417 * Register (NCB32b) gicda_pidr7
6418 *
6419 * GICDA Pidr7 Register
6420 * The GICDA_PIDR7 characteristics are:
6421 *
6422 * * Purpose
6423 * This register returns byte[7] of the peripheral ID of the GIC Distributor page.
6424 *
6425 * * Usage constraints
6426 * There are no usage constraints.
6427 */
6428 union ody_gicda_pidr7 {
6429 uint32_t u;
6430 struct ody_gicda_pidr7_s {
6431 uint32_t reserved_0_31 : 32;
6432 } s;
6433 struct ody_gicda_pidr7_cn {
6434 uint32_t reserved_0_7 : 8;
6435 uint32_t reserved_8_31 : 24;
6436 } cn;
6437 };
6438 typedef union ody_gicda_pidr7 ody_gicda_pidr7_t;
6439
6440 #define ODY_GICDA_PIDR7 ODY_GICDA_PIDR7_FUNC()
6441 static inline uint64_t ODY_GICDA_PIDR7_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_PIDR7_FUNC(void)6442 static inline uint64_t ODY_GICDA_PIDR7_FUNC(void)
6443 {
6444 return 0x80100150ffdcll;
6445 }
6446
6447 #define typedef_ODY_GICDA_PIDR7 ody_gicda_pidr7_t
6448 #define bustype_ODY_GICDA_PIDR7 CSR_TYPE_NCB32b
6449 #define basename_ODY_GICDA_PIDR7 "GICDA_PIDR7"
6450 #define busnum_ODY_GICDA_PIDR7 0
6451 #define arguments_ODY_GICDA_PIDR7 -1, -1, -1, -1
6452
6453 /**
6454 * Register (NCB32b) gicda_sac
6455 *
6456 * GICDA Sac Register
6457 * The GICDA_SAC characteristics are:
6458 *
6459 * * Purpose
6460 * This register allows Secure software to control Non-secure access to GIC-700 Secure
6461 * features by other software.
6462 *
6463 * * Usage constraints
6464 * Only accessible by Secure accesses or when GICD(A)_CTLR.DS == 1.
6465 */
6466 union ody_gicda_sac {
6467 uint32_t u;
6468 struct ody_gicda_sac_s {
6469 uint32_t reserved_0 : 1;
6470 uint32_t gictns : 1;
6471 uint32_t gicpns : 1;
6472 uint32_t reserved_3_31 : 29;
6473 } s;
6474 /* struct ody_gicda_sac_s cn; */
6475 };
6476 typedef union ody_gicda_sac ody_gicda_sac_t;
6477
6478 #define ODY_GICDA_SAC ODY_GICDA_SAC_FUNC()
6479 static inline uint64_t ODY_GICDA_SAC_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_SAC_FUNC(void)6480 static inline uint64_t ODY_GICDA_SAC_FUNC(void)
6481 {
6482 return 0x801001500024ll;
6483 }
6484
6485 #define typedef_ODY_GICDA_SAC ody_gicda_sac_t
6486 #define bustype_ODY_GICDA_SAC CSR_TYPE_NCB32b
6487 #define basename_ODY_GICDA_SAC "GICDA_SAC"
6488 #define busnum_ODY_GICDA_SAC 0
6489 #define arguments_ODY_GICDA_SAC -1, -1, -1, -1
6490
6491 /**
6492 * Register (NCB32b) gicda_setspi_nsr
6493 *
6494 * GICDA Setspi Nsr Register
6495 * The GICDA_SETSPI_NSR characteristics are:
6496 *
6497 * * Purpose
6498 * Adds the pending state to a valid SPI if permitted by the Security state of the
6499 * access and the GICD(A)_NSACR value for that SPI.
6500 * A write to this register changes the state of an inactive SPI to pending, and the
6501 * state of an active SPI to active and pending.
6502 *
6503 * * Usage constraints
6504 * The function of this register depends on whether the targeted SPI is configured to
6505 * be an edge-triggered or level-sensitive interrupt:
6506 *
6507 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
6508 * the pending state to the targeted interrupt. It will stop being pending on
6509 * activation, or if the pending state is removed by a write to GICD(A)_CLRSPI_NSR,
6510 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
6511 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
6512 * the pending state to the targeted interrupt. It will remain pending until it is
6513 * deasserted by a write to GICD(A)_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
6514 * activated between having the pending state added and being deactivated, then the
6515 * interrupt will be active and pending.
6516 *
6517 * Writes to this register have no effect if:
6518 *
6519 * * The value written specifies a Secure SPI, the value is written by a Non-secure
6520 * access, and the value of the corresponding GICD(A)_NSACR register is 0.
6521 * * The value written specifies an invalid SPI.
6522 * * The SPI is already pending.
6523 *
6524 * * Configurations
6525 * When GICD(A)_CTLR.DS==1, this register provides functionality for all SPIs.
6526 */
6527 union ody_gicda_setspi_nsr {
6528 uint32_t u;
6529 struct ody_gicda_setspi_nsr_s {
6530 uint32_t id : 16;
6531 uint32_t reserved_16_31 : 16;
6532 } s;
6533 /* struct ody_gicda_setspi_nsr_s cn; */
6534 };
6535 typedef union ody_gicda_setspi_nsr ody_gicda_setspi_nsr_t;
6536
6537 #define ODY_GICDA_SETSPI_NSR ODY_GICDA_SETSPI_NSR_FUNC()
6538 static inline uint64_t ODY_GICDA_SETSPI_NSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_SETSPI_NSR_FUNC(void)6539 static inline uint64_t ODY_GICDA_SETSPI_NSR_FUNC(void)
6540 {
6541 return 0x801001500040ll;
6542 }
6543
6544 #define typedef_ODY_GICDA_SETSPI_NSR ody_gicda_setspi_nsr_t
6545 #define bustype_ODY_GICDA_SETSPI_NSR CSR_TYPE_NCB32b
6546 #define basename_ODY_GICDA_SETSPI_NSR "GICDA_SETSPI_NSR"
6547 #define busnum_ODY_GICDA_SETSPI_NSR 0
6548 #define arguments_ODY_GICDA_SETSPI_NSR -1, -1, -1, -1
6549
6550 /**
6551 * Register (NCB32b) gicda_setspi_sr
6552 *
6553 * GICDA Setspi Sr Register
6554 * The GICDA_SETSPI_SR characteristics are:
6555 *
6556 * * Purpose
6557 * Adds the pending state to a valid SPI.
6558 * A write to this register changes the state of an inactive SPI to pending, and the
6559 * state of an active SPI to active and pending.
6560 *
6561 * * Usage constraints
6562 * The function of this register depends on whether the targeted SPI is configured to
6563 * be an edge-triggered or level-sensitive interrupt:
6564 *
6565 * * For an edge-triggered interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
6566 * the pending state to the targeted interrupt. It will stop being pending on
6567 * activation, or if the pending state is removed by a write to GICD(A)_CLRSPI_NSR,
6568 * GICx_CLRSPI_SR, or GICD(A)_ICPENDR.
6569 * * For a level-sensitive interrupt, a write to GICx_SETSPI_NSR or GICx_SETSPI_SR adds
6570 * the pending state to the targeted interrupt. It will remain pending until it is
6571 * deasserted by a write to GICD(A)_CLRSPI_NSR or GICx_CLRSPI_SR. If the interrupt is
6572 * activated between having the pending state added and being deactivated, then the
6573 * interrupt will be active and pending.
6574 *
6575 * Writes to this register have no effect if:
6576 *
6577 * * The value is written by a Non-secure access.
6578 * * The value written specifies an invalid SPI.
6579 * * The SPI is already pending.
6580 *
6581 * * Configurations
6582 * When GICD(A)_CTLR.DS==1, this register is WI.
6583 * When GICD(A)_CTLR.DS==0, only secure-access.
6584 */
6585 union ody_gicda_setspi_sr {
6586 uint32_t u;
6587 struct ody_gicda_setspi_sr_s {
6588 uint32_t id : 16;
6589 uint32_t reserved_16_31 : 16;
6590 } s;
6591 /* struct ody_gicda_setspi_sr_s cn; */
6592 };
6593 typedef union ody_gicda_setspi_sr ody_gicda_setspi_sr_t;
6594
6595 #define ODY_GICDA_SETSPI_SR ODY_GICDA_SETSPI_SR_FUNC()
6596 static inline uint64_t ODY_GICDA_SETSPI_SR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_SETSPI_SR_FUNC(void)6597 static inline uint64_t ODY_GICDA_SETSPI_SR_FUNC(void)
6598 {
6599 return 0x801001500050ll;
6600 }
6601
6602 #define typedef_ODY_GICDA_SETSPI_SR ody_gicda_setspi_sr_t
6603 #define bustype_ODY_GICDA_SETSPI_SR CSR_TYPE_NCB32b
6604 #define basename_ODY_GICDA_SETSPI_SR "GICDA_SETSPI_SR"
6605 #define busnum_ODY_GICDA_SETSPI_SR 0
6606 #define arguments_ODY_GICDA_SETSPI_SR -1, -1, -1, -1
6607
6608 /**
6609 * Register (NCB32b) gicda_statusr
6610 *
6611 * GICDA Statusr Register
6612 * The GICDA_STATUS characteristics are:
6613 *
6614 * * Purpose
6615 * This register is not used.
6616 *
6617 * See the GICT register page for details of error reporting by the GIC
6618 *
6619 * * Usage constraints
6620 * There are no usage constraints.
6621 *
6622 * * Configurations
6623 * This register is RES0 in all GIC configurations.
6624 */
6625 union ody_gicda_statusr {
6626 uint32_t u;
6627 struct ody_gicda_statusr_s {
6628 uint32_t reserved_0_31 : 32;
6629 } s;
6630 /* struct ody_gicda_statusr_s cn; */
6631 };
6632 typedef union ody_gicda_statusr ody_gicda_statusr_t;
6633
6634 #define ODY_GICDA_STATUSR ODY_GICDA_STATUSR_FUNC()
6635 static inline uint64_t ODY_GICDA_STATUSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_STATUSR_FUNC(void)6636 static inline uint64_t ODY_GICDA_STATUSR_FUNC(void)
6637 {
6638 return 0x801001500010ll;
6639 }
6640
6641 #define typedef_ODY_GICDA_STATUSR ody_gicda_statusr_t
6642 #define bustype_ODY_GICDA_STATUSR CSR_TYPE_NCB32b
6643 #define basename_ODY_GICDA_STATUSR "GICDA_STATUSR"
6644 #define busnum_ODY_GICDA_STATUSR 0
6645 #define arguments_ODY_GICDA_STATUSR -1, -1, -1, -1
6646
6647 /**
6648 * Register (NCB32b) gicda_typer
6649 *
6650 * GICDA Typer Register
6651 * The GICDA_TYPER characteristics are:
6652 *
6653 * * Purpose
6654 * Provides information about what features the GIC implementation supports. It indicates:
6655 *
6656 * * Whether the GIC implementation supports two Security states.
6657 * * The maximum number of INTIDs that the GIC implementation supports.
6658 * * The number of PEs that can be used as interrupt targets.
6659 *
6660 * * Usage constraints
6661 * There are no usage constraints.
6662 */
6663 union ody_gicda_typer {
6664 uint32_t u;
6665 struct ody_gicda_typer_s {
6666 uint32_t itlinesnumber : 5;
6667 uint32_t cpunumber : 3;
6668 uint32_t espi : 1;
6669 uint32_t reserved_9 : 1;
6670 uint32_t securityextn : 1;
6671 uint32_t lspi : 5;
6672 uint32_t mbis : 1;
6673 uint32_t lpis : 1;
6674 uint32_t dvis : 1;
6675 uint32_t idbits : 5;
6676 uint32_t a3v : 1;
6677 uint32_t no1n : 1;
6678 uint32_t rss : 1;
6679 uint32_t espi_range : 5;
6680 } s;
6681 /* struct ody_gicda_typer_s cn; */
6682 };
6683 typedef union ody_gicda_typer ody_gicda_typer_t;
6684
6685 #define ODY_GICDA_TYPER ODY_GICDA_TYPER_FUNC()
6686 static inline uint64_t ODY_GICDA_TYPER_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_TYPER_FUNC(void)6687 static inline uint64_t ODY_GICDA_TYPER_FUNC(void)
6688 {
6689 return 0x801001500004ll;
6690 }
6691
6692 #define typedef_ODY_GICDA_TYPER ody_gicda_typer_t
6693 #define bustype_ODY_GICDA_TYPER CSR_TYPE_NCB32b
6694 #define basename_ODY_GICDA_TYPER "GICDA_TYPER"
6695 #define busnum_ODY_GICDA_TYPER 0
6696 #define arguments_ODY_GICDA_TYPER -1, -1, -1, -1
6697
6698 /**
6699 * Register (NCB32b) gicda_typer2
6700 *
6701 * GICDA Typer2 Register
6702 * The GICDA_TYPER2 characteristics are:
6703 *
6704 * * Purpose
6705 * Provides information about which features the GIC implementation supports.
6706 *
6707 * * Usage constraints
6708 * There are no usage constraints.
6709 */
6710 union ody_gicda_typer2 {
6711 uint32_t u;
6712 struct ody_gicda_typer2_s {
6713 uint32_t vid : 5;
6714 uint32_t reserved_5_6 : 2;
6715 uint32_t vil : 1;
6716 uint32_t reserved_8_31 : 24;
6717 } s;
6718 /* struct ody_gicda_typer2_s cn; */
6719 };
6720 typedef union ody_gicda_typer2 ody_gicda_typer2_t;
6721
6722 #define ODY_GICDA_TYPER2 ODY_GICDA_TYPER2_FUNC()
6723 static inline uint64_t ODY_GICDA_TYPER2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_TYPER2_FUNC(void)6724 static inline uint64_t ODY_GICDA_TYPER2_FUNC(void)
6725 {
6726 return 0x80100150000cll;
6727 }
6728
6729 #define typedef_ODY_GICDA_TYPER2 ody_gicda_typer2_t
6730 #define bustype_ODY_GICDA_TYPER2 CSR_TYPE_NCB32b
6731 #define basename_ODY_GICDA_TYPER2 "GICDA_TYPER2"
6732 #define busnum_ODY_GICDA_TYPER2 0
6733 #define arguments_ODY_GICDA_TYPER2 -1, -1, -1, -1
6734
6735 /**
6736 * Register (NCB32b) gicda_utilr
6737 *
6738 * GICDA Utilr Register
6739 * The GICDA_UTILR characteristics are:
6740 *
6741 * * Purpose
6742 *
6743 * This register controls the utilization engine in the LPI caches.
6744 *
6745 * * Usage constraints
6746 * There are no usage constraints.
6747 *
6748 * This register is RES0.
6749 */
6750 union ody_gicda_utilr {
6751 uint32_t u;
6752 struct ody_gicda_utilr_s {
6753 uint32_t uedu : 4;
6754 uint32_t reserved_4_12 : 9;
6755 uint32_t ueda : 1;
6756 uint32_t uede : 1;
6757 uint32_t uedt : 1;
6758 uint32_t ueou : 4;
6759 uint32_t reserved_20_28 : 9;
6760 uint32_t ueoa : 1;
6761 uint32_t ueoe : 1;
6762 uint32_t ueot : 1;
6763 } s;
6764 /* struct ody_gicda_utilr_s cn; */
6765 };
6766 typedef union ody_gicda_utilr ody_gicda_utilr_t;
6767
6768 #define ODY_GICDA_UTILR ODY_GICDA_UTILR_FUNC()
6769 static inline uint64_t ODY_GICDA_UTILR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICDA_UTILR_FUNC(void)6770 static inline uint64_t ODY_GICDA_UTILR_FUNC(void)
6771 {
6772 return 0x801001500034ll;
6773 }
6774
6775 #define typedef_ODY_GICDA_UTILR ody_gicda_utilr_t
6776 #define bustype_ODY_GICDA_UTILR CSR_TYPE_NCB32b
6777 #define basename_ODY_GICDA_UTILR "GICDA_UTILR"
6778 #define busnum_ODY_GICDA_UTILR 0
6779 #define arguments_ODY_GICDA_UTILR -1, -1, -1, -1
6780
6781 /**
6782 * Register (NCB32b) gicp_capr
6783 *
6784 * GICP Capr Register
6785 * The GICP_CAPR characteristics are:
6786 *
6787 * * Purpose
6788 * This register controls the counter shadow value capture mechanism.
6789 *
6790 * * Usage constraints
6791 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
6792 */
6793 union ody_gicp_capr {
6794 uint32_t u;
6795 struct ody_gicp_capr_s {
6796 uint32_t capture : 1;
6797 uint32_t reserved_1_31 : 31;
6798 } s;
6799 /* struct ody_gicp_capr_s cn; */
6800 };
6801 typedef union ody_gicp_capr ody_gicp_capr_t;
6802
6803 #define ODY_GICP_CAPR ODY_GICP_CAPR_FUNC()
6804 static inline uint64_t ODY_GICP_CAPR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_CAPR_FUNC(void)6805 static inline uint64_t ODY_GICP_CAPR_FUNC(void)
6806 {
6807 return 0x801000030d88ll;
6808 }
6809
6810 #define typedef_ODY_GICP_CAPR ody_gicp_capr_t
6811 #define bustype_ODY_GICP_CAPR CSR_TYPE_NCB32b
6812 #define basename_ODY_GICP_CAPR "GICP_CAPR"
6813 #define device_bar_ODY_GICP_CAPR 0x0 /* PF_BAR0 */
6814 #define busnum_ODY_GICP_CAPR 0
6815 #define arguments_ODY_GICP_CAPR -1, -1, -1, -1
6816
6817 /**
6818 * Register (NCB32b) gicp_cfgr
6819 *
6820 * GICP Cfgr Register
6821 * The GICP_CFGR characteristics are:
6822 *
6823 * * Purpose
6824 * This register returns information about the PMU implementation.
6825 *
6826 * * Usage constraints
6827 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
6828 */
6829 union ody_gicp_cfgr {
6830 uint32_t u;
6831 struct ody_gicp_cfgr_s {
6832 uint32_t nctr : 6;
6833 uint32_t reserved_6_7 : 2;
6834 uint32_t size : 6;
6835 uint32_t reserved_14_21 : 8;
6836 uint32_t capture : 1;
6837 uint32_t reserved_23_31 : 9;
6838 } s;
6839 /* struct ody_gicp_cfgr_s cn; */
6840 };
6841 typedef union ody_gicp_cfgr ody_gicp_cfgr_t;
6842
6843 #define ODY_GICP_CFGR ODY_GICP_CFGR_FUNC()
6844 static inline uint64_t ODY_GICP_CFGR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_CFGR_FUNC(void)6845 static inline uint64_t ODY_GICP_CFGR_FUNC(void)
6846 {
6847 return 0x801000030e00ll;
6848 }
6849
6850 #define typedef_ODY_GICP_CFGR ody_gicp_cfgr_t
6851 #define bustype_ODY_GICP_CFGR CSR_TYPE_NCB32b
6852 #define basename_ODY_GICP_CFGR "GICP_CFGR"
6853 #define device_bar_ODY_GICP_CFGR 0x0 /* PF_BAR0 */
6854 #define busnum_ODY_GICP_CFGR 0
6855 #define arguments_ODY_GICP_CFGR -1, -1, -1, -1
6856
6857 /**
6858 * Register (NCB32b) gicp_cidr0
6859 *
6860 * GICP Cidr0 Register
6861 * The GICP_CIDR0 characteristics are:
6862 *
6863 * * Purpose
6864 * This register is one of the Component Identification Registers and returns the first
6865 * part of the Preamble.
6866 *
6867 * * Usage constraints
6868 * There are no usage constraints.
6869 */
6870 union ody_gicp_cidr0 {
6871 uint32_t u;
6872 struct ody_gicp_cidr0_s {
6873 uint32_t prmbl_0 : 8;
6874 uint32_t reserved_8_31 : 24;
6875 } s;
6876 /* struct ody_gicp_cidr0_s cn; */
6877 };
6878 typedef union ody_gicp_cidr0 ody_gicp_cidr0_t;
6879
6880 #define ODY_GICP_CIDR0 ODY_GICP_CIDR0_FUNC()
6881 static inline uint64_t ODY_GICP_CIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_CIDR0_FUNC(void)6882 static inline uint64_t ODY_GICP_CIDR0_FUNC(void)
6883 {
6884 return 0x801000030ff0ll;
6885 }
6886
6887 #define typedef_ODY_GICP_CIDR0 ody_gicp_cidr0_t
6888 #define bustype_ODY_GICP_CIDR0 CSR_TYPE_NCB32b
6889 #define basename_ODY_GICP_CIDR0 "GICP_CIDR0"
6890 #define device_bar_ODY_GICP_CIDR0 0x0 /* PF_BAR0 */
6891 #define busnum_ODY_GICP_CIDR0 0
6892 #define arguments_ODY_GICP_CIDR0 -1, -1, -1, -1
6893
6894 /**
6895 * Register (NCB32b) gicp_cidr1
6896 *
6897 * GICP Cidr1 Register
6898 * The GICP_CIDR1 characteristics are:
6899 *
6900 * * Purpose
6901 * This register is one of the Component Identification Registers and returns the
6902 * second part of the Preamble as well as the Component Class.
6903 *
6904 * * Usage constraints
6905 * There are no usage constraints.
6906 */
6907 union ody_gicp_cidr1 {
6908 uint32_t u;
6909 struct ody_gicp_cidr1_s {
6910 uint32_t prmbl_1 : 4;
6911 uint32_t class_f : 4;
6912 uint32_t reserved_8_31 : 24;
6913 } s;
6914 /* struct ody_gicp_cidr1_s cn; */
6915 };
6916 typedef union ody_gicp_cidr1 ody_gicp_cidr1_t;
6917
6918 #define ODY_GICP_CIDR1 ODY_GICP_CIDR1_FUNC()
6919 static inline uint64_t ODY_GICP_CIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_CIDR1_FUNC(void)6920 static inline uint64_t ODY_GICP_CIDR1_FUNC(void)
6921 {
6922 return 0x801000030ff4ll;
6923 }
6924
6925 #define typedef_ODY_GICP_CIDR1 ody_gicp_cidr1_t
6926 #define bustype_ODY_GICP_CIDR1 CSR_TYPE_NCB32b
6927 #define basename_ODY_GICP_CIDR1 "GICP_CIDR1"
6928 #define device_bar_ODY_GICP_CIDR1 0x0 /* PF_BAR0 */
6929 #define busnum_ODY_GICP_CIDR1 0
6930 #define arguments_ODY_GICP_CIDR1 -1, -1, -1, -1
6931
6932 /**
6933 * Register (NCB32b) gicp_cidr2
6934 *
6935 * GICP Cidr2 Register
6936 * The GICP_CIDR2 characteristics are:
6937 *
6938 * * Purpose
6939 * This register is one of the Component Identification Registers and returns the third
6940 * part of the Preamble.
6941 *
6942 * * Usage constraints
6943 * There are no usage constraints.
6944 */
6945 union ody_gicp_cidr2 {
6946 uint32_t u;
6947 struct ody_gicp_cidr2_s {
6948 uint32_t prmbl_2 : 8;
6949 uint32_t reserved_8_31 : 24;
6950 } s;
6951 /* struct ody_gicp_cidr2_s cn; */
6952 };
6953 typedef union ody_gicp_cidr2 ody_gicp_cidr2_t;
6954
6955 #define ODY_GICP_CIDR2 ODY_GICP_CIDR2_FUNC()
6956 static inline uint64_t ODY_GICP_CIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_CIDR2_FUNC(void)6957 static inline uint64_t ODY_GICP_CIDR2_FUNC(void)
6958 {
6959 return 0x801000030ff8ll;
6960 }
6961
6962 #define typedef_ODY_GICP_CIDR2 ody_gicp_cidr2_t
6963 #define bustype_ODY_GICP_CIDR2 CSR_TYPE_NCB32b
6964 #define basename_ODY_GICP_CIDR2 "GICP_CIDR2"
6965 #define device_bar_ODY_GICP_CIDR2 0x0 /* PF_BAR0 */
6966 #define busnum_ODY_GICP_CIDR2 0
6967 #define arguments_ODY_GICP_CIDR2 -1, -1, -1, -1
6968
6969 /**
6970 * Register (NCB32b) gicp_cidr3
6971 *
6972 * GICP Cidr3 Register
6973 * The GICP_CIDR3 characteristics are:
6974 *
6975 * * Purpose
6976 * This register is one of the Component Identification Registers and returns the
6977 * fourth part of the Preamble.
6978 *
6979 * * Usage constraints
6980 * There are no usage constraints.
6981 */
6982 union ody_gicp_cidr3 {
6983 uint32_t u;
6984 struct ody_gicp_cidr3_s {
6985 uint32_t prmbl_3 : 8;
6986 uint32_t reserved_8_31 : 24;
6987 } s;
6988 /* struct ody_gicp_cidr3_s cn; */
6989 };
6990 typedef union ody_gicp_cidr3 ody_gicp_cidr3_t;
6991
6992 #define ODY_GICP_CIDR3 ODY_GICP_CIDR3_FUNC()
6993 static inline uint64_t ODY_GICP_CIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_CIDR3_FUNC(void)6994 static inline uint64_t ODY_GICP_CIDR3_FUNC(void)
6995 {
6996 return 0x801000030ffcll;
6997 }
6998
6999 #define typedef_ODY_GICP_CIDR3 ody_gicp_cidr3_t
7000 #define bustype_ODY_GICP_CIDR3 CSR_TYPE_NCB32b
7001 #define basename_ODY_GICP_CIDR3 "GICP_CIDR3"
7002 #define device_bar_ODY_GICP_CIDR3 0x0 /* PF_BAR0 */
7003 #define busnum_ODY_GICP_CIDR3 0
7004 #define arguments_ODY_GICP_CIDR3 -1, -1, -1, -1
7005
7006 /**
7007 * Register (NCB) gicp_cntenclr0
7008 *
7009 * GICP Cntenclr0 Register
7010 * The GICP_CNTENCLR0 characteristics are:
7011 *
7012 * * Purpose
7013 * This register contains the counter disables for each event counter. The GIC-700
7014 * supports five event counters.
7015 *
7016 * * Usage constraints
7017 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7018 */
7019 union ody_gicp_cntenclr0 {
7020 uint64_t u;
7021 struct ody_gicp_cntenclr0_s {
7022 uint64_t cnten0 : 1;
7023 uint64_t cnten1 : 1;
7024 uint64_t cnten2 : 1;
7025 uint64_t cnten3 : 1;
7026 uint64_t cnten4 : 1;
7027 uint64_t reserved_5_63 : 59;
7028 } s;
7029 /* struct ody_gicp_cntenclr0_s cn; */
7030 };
7031 typedef union ody_gicp_cntenclr0 ody_gicp_cntenclr0_t;
7032
7033 #define ODY_GICP_CNTENCLR0 ODY_GICP_CNTENCLR0_FUNC()
7034 static inline uint64_t ODY_GICP_CNTENCLR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_CNTENCLR0_FUNC(void)7035 static inline uint64_t ODY_GICP_CNTENCLR0_FUNC(void)
7036 {
7037 return 0x801000030c20ll;
7038 }
7039
7040 #define typedef_ODY_GICP_CNTENCLR0 ody_gicp_cntenclr0_t
7041 #define bustype_ODY_GICP_CNTENCLR0 CSR_TYPE_NCB
7042 #define basename_ODY_GICP_CNTENCLR0 "GICP_CNTENCLR0"
7043 #define device_bar_ODY_GICP_CNTENCLR0 0x0 /* PF_BAR0 */
7044 #define busnum_ODY_GICP_CNTENCLR0 0
7045 #define arguments_ODY_GICP_CNTENCLR0 -1, -1, -1, -1
7046
7047 /**
7048 * Register (NCB) gicp_cntenset0
7049 *
7050 * GICP Cntenset0 Register
7051 * The GICP_CNTENSET0 characteristics are:
7052 *
7053 * * Purpose
7054 * These registers contain the counter enables for each event counter. The GIC-700
7055 * supports five event counters.
7056 *
7057 * * Usage constraints
7058 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7059 */
7060 union ody_gicp_cntenset0 {
7061 uint64_t u;
7062 struct ody_gicp_cntenset0_s {
7063 uint64_t cnten0 : 1;
7064 uint64_t cnten1 : 1;
7065 uint64_t cnten2 : 1;
7066 uint64_t cnten3 : 1;
7067 uint64_t cnten4 : 1;
7068 uint64_t reserved_5_63 : 59;
7069 } s;
7070 /* struct ody_gicp_cntenset0_s cn; */
7071 };
7072 typedef union ody_gicp_cntenset0 ody_gicp_cntenset0_t;
7073
7074 #define ODY_GICP_CNTENSET0 ODY_GICP_CNTENSET0_FUNC()
7075 static inline uint64_t ODY_GICP_CNTENSET0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_CNTENSET0_FUNC(void)7076 static inline uint64_t ODY_GICP_CNTENSET0_FUNC(void)
7077 {
7078 return 0x801000030c00ll;
7079 }
7080
7081 #define typedef_ODY_GICP_CNTENSET0 ody_gicp_cntenset0_t
7082 #define bustype_ODY_GICP_CNTENSET0 CSR_TYPE_NCB
7083 #define basename_ODY_GICP_CNTENSET0 "GICP_CNTENSET0"
7084 #define device_bar_ODY_GICP_CNTENSET0 0x0 /* PF_BAR0 */
7085 #define busnum_ODY_GICP_CNTENSET0 0
7086 #define arguments_ODY_GICP_CNTENSET0 -1, -1, -1, -1
7087
7088 /**
7089 * Register (NCB32b) gicp_cr
7090 *
7091 * GICP Cr Register
7092 * The GICP_CR characteristics are:
7093 *
7094 * * Purpose
7095 * This register controls whether all counters are enabled or disabled.
7096 *
7097 * * Usage constraints
7098 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7099 */
7100 union ody_gicp_cr {
7101 uint32_t u;
7102 struct ody_gicp_cr_s {
7103 uint32_t e_f : 1;
7104 uint32_t reserved_1_31 : 31;
7105 } s;
7106 /* struct ody_gicp_cr_s cn; */
7107 };
7108 typedef union ody_gicp_cr ody_gicp_cr_t;
7109
7110 #define ODY_GICP_CR ODY_GICP_CR_FUNC()
7111 static inline uint64_t ODY_GICP_CR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_CR_FUNC(void)7112 static inline uint64_t ODY_GICP_CR_FUNC(void)
7113 {
7114 return 0x801000030e04ll;
7115 }
7116
7117 #define typedef_ODY_GICP_CR ody_gicp_cr_t
7118 #define bustype_ODY_GICP_CR CSR_TYPE_NCB32b
7119 #define basename_ODY_GICP_CR "GICP_CR"
7120 #define device_bar_ODY_GICP_CR 0x0 /* PF_BAR0 */
7121 #define busnum_ODY_GICP_CR 0
7122 #define arguments_ODY_GICP_CR -1, -1, -1, -1
7123
7124 /**
7125 * Register (NCB32b) gicp_evcntr#
7126 *
7127 * GICP Evcntr Register
7128 * The GICP_EVCNTR0 characteristics are:
7129 *
7130 * * Purpose
7131 * These registers contain the values of event counter 0 (of 5)
7132 *
7133 * * Usage constraints
7134 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7135 */
7136 union ody_gicp_evcntrx {
7137 uint32_t u;
7138 struct ody_gicp_evcntrx_s {
7139 uint32_t count : 32;
7140 } s;
7141 /* struct ody_gicp_evcntrx_s cn; */
7142 };
7143 typedef union ody_gicp_evcntrx ody_gicp_evcntrx_t;
7144
7145 static inline uint64_t ODY_GICP_EVCNTRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICP_EVCNTRX(uint64_t a)7146 static inline uint64_t ODY_GICP_EVCNTRX(uint64_t a)
7147 {
7148 if (a <= 4)
7149 return 0x801000030000ll + 4ll * ((a) & 0x7);
7150 __ody_csr_fatal("GICP_EVCNTRX", 1, a, 0, 0, 0, 0, 0);
7151 }
7152
7153 #define typedef_ODY_GICP_EVCNTRX(a) ody_gicp_evcntrx_t
7154 #define bustype_ODY_GICP_EVCNTRX(a) CSR_TYPE_NCB32b
7155 #define basename_ODY_GICP_EVCNTRX(a) "GICP_EVCNTRX"
7156 #define device_bar_ODY_GICP_EVCNTRX(a) 0x0 /* PF_BAR0 */
7157 #define busnum_ODY_GICP_EVCNTRX(a) (a)
7158 #define arguments_ODY_GICP_EVCNTRX(a) (a), -1, -1, -1
7159
7160 /**
7161 * Register (NCB32b) gicp_evtyper#
7162 *
7163 * GICP Evtyper Register
7164 * The GICP_EVTYPERn characteristics are:
7165 *
7166 * * Purpose
7167 * These registers configure which events that event counter n counts. The GIC-700
7168 * supports five counters, n = 0-4.
7169 *
7170 * * Usage constraints
7171 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7172 */
7173 union ody_gicp_evtyperx {
7174 uint32_t u;
7175 struct ody_gicp_evtyperx_s {
7176 uint32_t event_f : 8;
7177 uint32_t reserved_8_15 : 8;
7178 uint32_t event_type : 2;
7179 uint32_t reserved_18_30 : 13;
7180 uint32_t ovcap : 1;
7181 } s;
7182 /* struct ody_gicp_evtyperx_s cn; */
7183 };
7184 typedef union ody_gicp_evtyperx ody_gicp_evtyperx_t;
7185
7186 static inline uint64_t ODY_GICP_EVTYPERX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICP_EVTYPERX(uint64_t a)7187 static inline uint64_t ODY_GICP_EVTYPERX(uint64_t a)
7188 {
7189 if (a <= 4)
7190 return 0x801000030400ll + 4ll * ((a) & 0x7);
7191 __ody_csr_fatal("GICP_EVTYPERX", 1, a, 0, 0, 0, 0, 0);
7192 }
7193
7194 #define typedef_ODY_GICP_EVTYPERX(a) ody_gicp_evtyperx_t
7195 #define bustype_ODY_GICP_EVTYPERX(a) CSR_TYPE_NCB32b
7196 #define basename_ODY_GICP_EVTYPERX(a) "GICP_EVTYPERX"
7197 #define device_bar_ODY_GICP_EVTYPERX(a) 0x0 /* PF_BAR0 */
7198 #define busnum_ODY_GICP_EVTYPERX(a) (a)
7199 #define arguments_ODY_GICP_EVTYPERX(a) (a), -1, -1, -1
7200
7201 /**
7202 * Register (NCB32b) gicp_fr#
7203 *
7204 * GICP Fr Register
7205 * The GICP_FRn characteristics are:
7206 *
7207 * * Purpose
7208 * These registers configure the filtering of event counter n. The GIC-700 supports
7209 * five counters, n = 0-4.
7210 *
7211 * * Usage constraints
7212 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7213 */
7214 union ody_gicp_frx {
7215 uint32_t u;
7216 struct ody_gicp_frx_s {
7217 uint32_t filter : 16;
7218 uint32_t reserved_16_28 : 13;
7219 uint32_t filterencoding : 1;
7220 uint32_t filtertype : 2;
7221 } s;
7222 /* struct ody_gicp_frx_s cn; */
7223 };
7224 typedef union ody_gicp_frx ody_gicp_frx_t;
7225
7226 static inline uint64_t ODY_GICP_FRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICP_FRX(uint64_t a)7227 static inline uint64_t ODY_GICP_FRX(uint64_t a)
7228 {
7229 if (a <= 4)
7230 return 0x801000030a00ll + 4ll * ((a) & 0x7);
7231 __ody_csr_fatal("GICP_FRX", 1, a, 0, 0, 0, 0, 0);
7232 }
7233
7234 #define typedef_ODY_GICP_FRX(a) ody_gicp_frx_t
7235 #define bustype_ODY_GICP_FRX(a) CSR_TYPE_NCB32b
7236 #define basename_ODY_GICP_FRX(a) "GICP_FRX"
7237 #define device_bar_ODY_GICP_FRX(a) 0x0 /* PF_BAR0 */
7238 #define busnum_ODY_GICP_FRX(a) (a)
7239 #define arguments_ODY_GICP_FRX(a) (a), -1, -1, -1
7240
7241 /**
7242 * Register (NCB) gicp_intenclr0
7243 *
7244 * GICP Intenclr0 Register
7245 * The GICP_INTENCLR0 characteristics are:
7246 *
7247 * * Purpose
7248 * This register contains the clear mechanism for the counter interrupt contribution
7249 * enables. The GIC-700 supports five counters, n = 0-4.
7250 *
7251 * * Usage constraints
7252 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7253 */
7254 union ody_gicp_intenclr0 {
7255 uint64_t u;
7256 struct ody_gicp_intenclr0_s {
7257 uint64_t inten : 5;
7258 uint64_t reserved_5_63 : 59;
7259 } s;
7260 /* struct ody_gicp_intenclr0_s cn; */
7261 };
7262 typedef union ody_gicp_intenclr0 ody_gicp_intenclr0_t;
7263
7264 #define ODY_GICP_INTENCLR0 ODY_GICP_INTENCLR0_FUNC()
7265 static inline uint64_t ODY_GICP_INTENCLR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_INTENCLR0_FUNC(void)7266 static inline uint64_t ODY_GICP_INTENCLR0_FUNC(void)
7267 {
7268 return 0x801000030c60ll;
7269 }
7270
7271 #define typedef_ODY_GICP_INTENCLR0 ody_gicp_intenclr0_t
7272 #define bustype_ODY_GICP_INTENCLR0 CSR_TYPE_NCB
7273 #define basename_ODY_GICP_INTENCLR0 "GICP_INTENCLR0"
7274 #define device_bar_ODY_GICP_INTENCLR0 0x0 /* PF_BAR0 */
7275 #define busnum_ODY_GICP_INTENCLR0 0
7276 #define arguments_ODY_GICP_INTENCLR0 -1, -1, -1, -1
7277
7278 /**
7279 * Register (NCB) gicp_intenset0
7280 *
7281 * GICP Intenset0 Register
7282 * The GICP_INTENSET0 characteristics are:
7283 *
7284 * * Purpose
7285 * This register contains the set mechanism for the counter interrupt contribution
7286 * enables. The GIC-700 supports five counters, n = 0-4.
7287 *
7288 * * Usage constraints
7289 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7290 */
7291 union ody_gicp_intenset0 {
7292 uint64_t u;
7293 struct ody_gicp_intenset0_s {
7294 uint64_t inten : 5;
7295 uint64_t reserved_5_63 : 59;
7296 } s;
7297 /* struct ody_gicp_intenset0_s cn; */
7298 };
7299 typedef union ody_gicp_intenset0 ody_gicp_intenset0_t;
7300
7301 #define ODY_GICP_INTENSET0 ODY_GICP_INTENSET0_FUNC()
7302 static inline uint64_t ODY_GICP_INTENSET0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_INTENSET0_FUNC(void)7303 static inline uint64_t ODY_GICP_INTENSET0_FUNC(void)
7304 {
7305 return 0x801000030c40ll;
7306 }
7307
7308 #define typedef_ODY_GICP_INTENSET0 ody_gicp_intenset0_t
7309 #define bustype_ODY_GICP_INTENSET0 CSR_TYPE_NCB
7310 #define basename_ODY_GICP_INTENSET0 "GICP_INTENSET0"
7311 #define device_bar_ODY_GICP_INTENSET0 0x0 /* PF_BAR0 */
7312 #define busnum_ODY_GICP_INTENSET0 0
7313 #define arguments_ODY_GICP_INTENSET0 -1, -1, -1, -1
7314
7315 /**
7316 * Register (NCB32b) gicp_irqcr
7317 *
7318 * GICP Irqcr Register
7319 * The GICP_IRQCR characteristics are:
7320 *
7321 * * Purpose
7322 * This register controls which SPI is generated when a PMU overflow interrupt occurs.
7323 *
7324 * * Usage constraints
7325 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7326 */
7327 union ody_gicp_irqcr {
7328 uint32_t u;
7329 struct ody_gicp_irqcr_s {
7330 uint32_t spiid : 13;
7331 uint32_t reserved_13_31 : 19;
7332 } s;
7333 /* struct ody_gicp_irqcr_s cn; */
7334 };
7335 typedef union ody_gicp_irqcr ody_gicp_irqcr_t;
7336
7337 #define ODY_GICP_IRQCR ODY_GICP_IRQCR_FUNC()
7338 static inline uint64_t ODY_GICP_IRQCR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_IRQCR_FUNC(void)7339 static inline uint64_t ODY_GICP_IRQCR_FUNC(void)
7340 {
7341 return 0x801000030e50ll;
7342 }
7343
7344 #define typedef_ODY_GICP_IRQCR ody_gicp_irqcr_t
7345 #define bustype_ODY_GICP_IRQCR CSR_TYPE_NCB32b
7346 #define basename_ODY_GICP_IRQCR "GICP_IRQCR"
7347 #define device_bar_ODY_GICP_IRQCR 0x0 /* PF_BAR0 */
7348 #define busnum_ODY_GICP_IRQCR 0
7349 #define arguments_ODY_GICP_IRQCR -1, -1, -1, -1
7350
7351 /**
7352 * Register (NCB) gicp_ovsclr0
7353 *
7354 * GICP Ovsclr0 Register
7355 * The GICP_OVSCLR0 characteristics are:
7356 *
7357 * * Purpose
7358 * This register provides the clear mechanism for the counter overflow status bits and
7359 * provides read access to the counter overflow status bit values. The GIC-700 supports
7360 * five counters, n = 0-4.
7361 *
7362 * * Usage constraints
7363 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7364 */
7365 union ody_gicp_ovsclr0 {
7366 uint64_t u;
7367 struct ody_gicp_ovsclr0_s {
7368 uint64_t ovs : 5;
7369 uint64_t reserved_5_63 : 59;
7370 } s;
7371 /* struct ody_gicp_ovsclr0_s cn; */
7372 };
7373 typedef union ody_gicp_ovsclr0 ody_gicp_ovsclr0_t;
7374
7375 #define ODY_GICP_OVSCLR0 ODY_GICP_OVSCLR0_FUNC()
7376 static inline uint64_t ODY_GICP_OVSCLR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_OVSCLR0_FUNC(void)7377 static inline uint64_t ODY_GICP_OVSCLR0_FUNC(void)
7378 {
7379 return 0x801000030c80ll;
7380 }
7381
7382 #define typedef_ODY_GICP_OVSCLR0 ody_gicp_ovsclr0_t
7383 #define bustype_ODY_GICP_OVSCLR0 CSR_TYPE_NCB
7384 #define basename_ODY_GICP_OVSCLR0 "GICP_OVSCLR0"
7385 #define device_bar_ODY_GICP_OVSCLR0 0x0 /* PF_BAR0 */
7386 #define busnum_ODY_GICP_OVSCLR0 0
7387 #define arguments_ODY_GICP_OVSCLR0 -1, -1, -1, -1
7388
7389 /**
7390 * Register (NCB) gicp_ovsset0
7391 *
7392 * GICP Ovsset0 Register
7393 * The GICP_OVSCLR0 characteristics are:
7394 *
7395 * * Purpose
7396 * This register provides the set mechanism for the counter overflow status bits and
7397 * provides read access to the counter overflow status bit values. The GIC-700 supports
7398 * five counters, n = 0-4.
7399 *
7400 * * Usage constraints
7401 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7402 */
7403 union ody_gicp_ovsset0 {
7404 uint64_t u;
7405 struct ody_gicp_ovsset0_s {
7406 uint64_t ovs : 5;
7407 uint64_t reserved_5_63 : 59;
7408 } s;
7409 /* struct ody_gicp_ovsset0_s cn; */
7410 };
7411 typedef union ody_gicp_ovsset0 ody_gicp_ovsset0_t;
7412
7413 #define ODY_GICP_OVSSET0 ODY_GICP_OVSSET0_FUNC()
7414 static inline uint64_t ODY_GICP_OVSSET0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_OVSSET0_FUNC(void)7415 static inline uint64_t ODY_GICP_OVSSET0_FUNC(void)
7416 {
7417 return 0x801000030cc0ll;
7418 }
7419
7420 #define typedef_ODY_GICP_OVSSET0 ody_gicp_ovsset0_t
7421 #define bustype_ODY_GICP_OVSSET0 CSR_TYPE_NCB
7422 #define basename_ODY_GICP_OVSSET0 "GICP_OVSSET0"
7423 #define device_bar_ODY_GICP_OVSSET0 0x0 /* PF_BAR0 */
7424 #define busnum_ODY_GICP_OVSSET0 0
7425 #define arguments_ODY_GICP_OVSSET0 -1, -1, -1, -1
7426
7427 /**
7428 * Register (NCB32b) gicp_pidr0
7429 *
7430 * GICP Pidr0 Register
7431 * The GICP_PIDR0 characteristics are:
7432 *
7433 * * Purpose
7434 * This register returns byte[0] of the peripheral ID of the GIC PMU page.
7435 *
7436 * * Usage constraints
7437 * There are no usage constraints.
7438 */
7439 union ody_gicp_pidr0 {
7440 uint32_t u;
7441 struct ody_gicp_pidr0_s {
7442 uint32_t part_0 : 8;
7443 uint32_t reserved_8_31 : 24;
7444 } s;
7445 /* struct ody_gicp_pidr0_s cn; */
7446 };
7447 typedef union ody_gicp_pidr0 ody_gicp_pidr0_t;
7448
7449 #define ODY_GICP_PIDR0 ODY_GICP_PIDR0_FUNC()
7450 static inline uint64_t ODY_GICP_PIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PIDR0_FUNC(void)7451 static inline uint64_t ODY_GICP_PIDR0_FUNC(void)
7452 {
7453 return 0x801000030fe0ll;
7454 }
7455
7456 #define typedef_ODY_GICP_PIDR0 ody_gicp_pidr0_t
7457 #define bustype_ODY_GICP_PIDR0 CSR_TYPE_NCB32b
7458 #define basename_ODY_GICP_PIDR0 "GICP_PIDR0"
7459 #define device_bar_ODY_GICP_PIDR0 0x0 /* PF_BAR0 */
7460 #define busnum_ODY_GICP_PIDR0 0
7461 #define arguments_ODY_GICP_PIDR0 -1, -1, -1, -1
7462
7463 /**
7464 * Register (NCB32b) gicp_pidr1
7465 *
7466 * GICP Pidr1 Register
7467 * The GICP_PIDR1 characteristics are:
7468 *
7469 * * Purpose
7470 * This register returns byte[1] of the peripheral ID of the GIC PMU page.
7471 *
7472 * * Usage constraints
7473 * There are no usage constraints.
7474 */
7475 union ody_gicp_pidr1 {
7476 uint32_t u;
7477 struct ody_gicp_pidr1_s {
7478 uint32_t part_1 : 4;
7479 uint32_t des_0 : 4;
7480 uint32_t reserved_8_31 : 24;
7481 } s;
7482 /* struct ody_gicp_pidr1_s cn; */
7483 };
7484 typedef union ody_gicp_pidr1 ody_gicp_pidr1_t;
7485
7486 #define ODY_GICP_PIDR1 ODY_GICP_PIDR1_FUNC()
7487 static inline uint64_t ODY_GICP_PIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PIDR1_FUNC(void)7488 static inline uint64_t ODY_GICP_PIDR1_FUNC(void)
7489 {
7490 return 0x801000030fe4ll;
7491 }
7492
7493 #define typedef_ODY_GICP_PIDR1 ody_gicp_pidr1_t
7494 #define bustype_ODY_GICP_PIDR1 CSR_TYPE_NCB32b
7495 #define basename_ODY_GICP_PIDR1 "GICP_PIDR1"
7496 #define device_bar_ODY_GICP_PIDR1 0x0 /* PF_BAR0 */
7497 #define busnum_ODY_GICP_PIDR1 0
7498 #define arguments_ODY_GICP_PIDR1 -1, -1, -1, -1
7499
7500 /**
7501 * Register (NCB32b) gicp_pidr2
7502 *
7503 * GICP Pidr2 Register
7504 * The GICP_PIDR2 characteristics are:
7505 *
7506 * * Purpose
7507 * This register returns byte[2] of the peripheral ID of the GIC PMU page.
7508 *
7509 * * Usage constraints
7510 * There are no usage constraints.
7511 */
7512 union ody_gicp_pidr2 {
7513 uint32_t u;
7514 struct ody_gicp_pidr2_s {
7515 uint32_t des_1 : 3;
7516 uint32_t jedec : 1;
7517 uint32_t revision : 4;
7518 uint32_t reserved_8_31 : 24;
7519 } s;
7520 /* struct ody_gicp_pidr2_s cn; */
7521 };
7522 typedef union ody_gicp_pidr2 ody_gicp_pidr2_t;
7523
7524 #define ODY_GICP_PIDR2 ODY_GICP_PIDR2_FUNC()
7525 static inline uint64_t ODY_GICP_PIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PIDR2_FUNC(void)7526 static inline uint64_t ODY_GICP_PIDR2_FUNC(void)
7527 {
7528 return 0x801000030fe8ll;
7529 }
7530
7531 #define typedef_ODY_GICP_PIDR2 ody_gicp_pidr2_t
7532 #define bustype_ODY_GICP_PIDR2 CSR_TYPE_NCB32b
7533 #define basename_ODY_GICP_PIDR2 "GICP_PIDR2"
7534 #define device_bar_ODY_GICP_PIDR2 0x0 /* PF_BAR0 */
7535 #define busnum_ODY_GICP_PIDR2 0
7536 #define arguments_ODY_GICP_PIDR2 -1, -1, -1, -1
7537
7538 /**
7539 * Register (NCB32b) gicp_pidr3
7540 *
7541 * GICP Pidr3 Register
7542 * The GICP_PIDR3 characteristics are:
7543 *
7544 * * Purpose
7545 * This register returns byte[3] of the peripheral ID of the GIC PMU page.
7546 *
7547 * * Usage constraints
7548 * There are no usage constraints.
7549 */
7550 union ody_gicp_pidr3 {
7551 uint32_t u;
7552 struct ody_gicp_pidr3_s {
7553 uint32_t cmod : 3;
7554 uint32_t reserved_3 : 1;
7555 uint32_t revand : 4;
7556 uint32_t reserved_8_31 : 24;
7557 } s;
7558 /* struct ody_gicp_pidr3_s cn; */
7559 };
7560 typedef union ody_gicp_pidr3 ody_gicp_pidr3_t;
7561
7562 #define ODY_GICP_PIDR3 ODY_GICP_PIDR3_FUNC()
7563 static inline uint64_t ODY_GICP_PIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PIDR3_FUNC(void)7564 static inline uint64_t ODY_GICP_PIDR3_FUNC(void)
7565 {
7566 return 0x801000030fecll;
7567 }
7568
7569 #define typedef_ODY_GICP_PIDR3 ody_gicp_pidr3_t
7570 #define bustype_ODY_GICP_PIDR3 CSR_TYPE_NCB32b
7571 #define basename_ODY_GICP_PIDR3 "GICP_PIDR3"
7572 #define device_bar_ODY_GICP_PIDR3 0x0 /* PF_BAR0 */
7573 #define busnum_ODY_GICP_PIDR3 0
7574 #define arguments_ODY_GICP_PIDR3 -1, -1, -1, -1
7575
7576 /**
7577 * Register (NCB32b) gicp_pidr4
7578 *
7579 * GICP Pidr4 Register
7580 * The GICP_PIDR4 characteristics are:
7581 *
7582 * * Purpose
7583 * This register returns byte[4] of the peripheral ID of the GIC PMU page.
7584 *
7585 * * Usage constraints
7586 * There are no usage constraints.
7587 */
7588 union ody_gicp_pidr4 {
7589 uint32_t u;
7590 struct ody_gicp_pidr4_s {
7591 uint32_t des_2 : 4;
7592 uint32_t size : 4;
7593 uint32_t reserved_8_31 : 24;
7594 } s;
7595 /* struct ody_gicp_pidr4_s cn; */
7596 };
7597 typedef union ody_gicp_pidr4 ody_gicp_pidr4_t;
7598
7599 #define ODY_GICP_PIDR4 ODY_GICP_PIDR4_FUNC()
7600 static inline uint64_t ODY_GICP_PIDR4_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PIDR4_FUNC(void)7601 static inline uint64_t ODY_GICP_PIDR4_FUNC(void)
7602 {
7603 return 0x801000030fd0ll;
7604 }
7605
7606 #define typedef_ODY_GICP_PIDR4 ody_gicp_pidr4_t
7607 #define bustype_ODY_GICP_PIDR4 CSR_TYPE_NCB32b
7608 #define basename_ODY_GICP_PIDR4 "GICP_PIDR4"
7609 #define device_bar_ODY_GICP_PIDR4 0x0 /* PF_BAR0 */
7610 #define busnum_ODY_GICP_PIDR4 0
7611 #define arguments_ODY_GICP_PIDR4 -1, -1, -1, -1
7612
7613 /**
7614 * Register (NCB32b) gicp_pidr5
7615 *
7616 * GICP Pidr5 Register
7617 * The GICP_PIDR5 characteristics are:
7618 *
7619 * * Purpose
7620 * This register returns byte[5] of the peripheral ID of the GIC PMU page.
7621 *
7622 * * Usage constraints
7623 * There are no usage constraints.
7624 */
7625 union ody_gicp_pidr5 {
7626 uint32_t u;
7627 struct ody_gicp_pidr5_s {
7628 uint32_t reserved_0_31 : 32;
7629 } s;
7630 struct ody_gicp_pidr5_cn {
7631 uint32_t reserved_0_7 : 8;
7632 uint32_t reserved_8_31 : 24;
7633 } cn;
7634 };
7635 typedef union ody_gicp_pidr5 ody_gicp_pidr5_t;
7636
7637 #define ODY_GICP_PIDR5 ODY_GICP_PIDR5_FUNC()
7638 static inline uint64_t ODY_GICP_PIDR5_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PIDR5_FUNC(void)7639 static inline uint64_t ODY_GICP_PIDR5_FUNC(void)
7640 {
7641 return 0x801000030fd4ll;
7642 }
7643
7644 #define typedef_ODY_GICP_PIDR5 ody_gicp_pidr5_t
7645 #define bustype_ODY_GICP_PIDR5 CSR_TYPE_NCB32b
7646 #define basename_ODY_GICP_PIDR5 "GICP_PIDR5"
7647 #define device_bar_ODY_GICP_PIDR5 0x0 /* PF_BAR0 */
7648 #define busnum_ODY_GICP_PIDR5 0
7649 #define arguments_ODY_GICP_PIDR5 -1, -1, -1, -1
7650
7651 /**
7652 * Register (NCB32b) gicp_pidr6
7653 *
7654 * GICP Pidr6 Register
7655 * The GICP_PIDR6 characteristics are:
7656 *
7657 * * Purpose
7658 * This register returns byte[6] of the peripheral ID of the GIC PMU page.
7659 *
7660 * * Usage constraints
7661 * There are no usage constraints.
7662 */
7663 union ody_gicp_pidr6 {
7664 uint32_t u;
7665 struct ody_gicp_pidr6_s {
7666 uint32_t reserved_0_31 : 32;
7667 } s;
7668 struct ody_gicp_pidr6_cn {
7669 uint32_t reserved_0_7 : 8;
7670 uint32_t reserved_8_31 : 24;
7671 } cn;
7672 };
7673 typedef union ody_gicp_pidr6 ody_gicp_pidr6_t;
7674
7675 #define ODY_GICP_PIDR6 ODY_GICP_PIDR6_FUNC()
7676 static inline uint64_t ODY_GICP_PIDR6_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PIDR6_FUNC(void)7677 static inline uint64_t ODY_GICP_PIDR6_FUNC(void)
7678 {
7679 return 0x801000030fd8ll;
7680 }
7681
7682 #define typedef_ODY_GICP_PIDR6 ody_gicp_pidr6_t
7683 #define bustype_ODY_GICP_PIDR6 CSR_TYPE_NCB32b
7684 #define basename_ODY_GICP_PIDR6 "GICP_PIDR6"
7685 #define device_bar_ODY_GICP_PIDR6 0x0 /* PF_BAR0 */
7686 #define busnum_ODY_GICP_PIDR6 0
7687 #define arguments_ODY_GICP_PIDR6 -1, -1, -1, -1
7688
7689 /**
7690 * Register (NCB32b) gicp_pidr7
7691 *
7692 * GICP Pidr7 Register
7693 * The GICP_PIDR7 characteristics are:
7694 *
7695 * * Purpose
7696 * This register returns byte[7] of the peripheral ID of the GIC PMU page.
7697 *
7698 * * Usage constraints
7699 * There are no usage constraints.
7700 */
7701 union ody_gicp_pidr7 {
7702 uint32_t u;
7703 struct ody_gicp_pidr7_s {
7704 uint32_t reserved_0_31 : 32;
7705 } s;
7706 struct ody_gicp_pidr7_cn {
7707 uint32_t reserved_0_7 : 8;
7708 uint32_t reserved_8_31 : 24;
7709 } cn;
7710 };
7711 typedef union ody_gicp_pidr7 ody_gicp_pidr7_t;
7712
7713 #define ODY_GICP_PIDR7 ODY_GICP_PIDR7_FUNC()
7714 static inline uint64_t ODY_GICP_PIDR7_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PIDR7_FUNC(void)7715 static inline uint64_t ODY_GICP_PIDR7_FUNC(void)
7716 {
7717 return 0x801000030fdcll;
7718 }
7719
7720 #define typedef_ODY_GICP_PIDR7 ody_gicp_pidr7_t
7721 #define bustype_ODY_GICP_PIDR7 CSR_TYPE_NCB32b
7722 #define basename_ODY_GICP_PIDR7 "GICP_PIDR7"
7723 #define device_bar_ODY_GICP_PIDR7 0x0 /* PF_BAR0 */
7724 #define busnum_ODY_GICP_PIDR7 0
7725 #define arguments_ODY_GICP_PIDR7 -1, -1, -1, -1
7726
7727 /**
7728 * Register (NCB32b) gicp_pmauthstatus
7729 *
7730 * GICP Pmauthstatus Register
7731 * GICP_PMAUTHSTATUS.
7732 */
7733 union ody_gicp_pmauthstatus {
7734 uint32_t u;
7735 struct ody_gicp_pmauthstatus_s {
7736 uint32_t nse : 1;
7737 uint32_t nsi : 1;
7738 uint32_t nsne : 1;
7739 uint32_t nsni : 1;
7740 uint32_t se : 1;
7741 uint32_t si : 1;
7742 uint32_t sne : 1;
7743 uint32_t sni : 1;
7744 uint32_t reserved_8_31 : 24;
7745 } s;
7746 /* struct ody_gicp_pmauthstatus_s cn; */
7747 };
7748 typedef union ody_gicp_pmauthstatus ody_gicp_pmauthstatus_t;
7749
7750 #define ODY_GICP_PMAUTHSTATUS ODY_GICP_PMAUTHSTATUS_FUNC()
7751 static inline uint64_t ODY_GICP_PMAUTHSTATUS_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PMAUTHSTATUS_FUNC(void)7752 static inline uint64_t ODY_GICP_PMAUTHSTATUS_FUNC(void)
7753 {
7754 return 0x801000030fb8ll;
7755 }
7756
7757 #define typedef_ODY_GICP_PMAUTHSTATUS ody_gicp_pmauthstatus_t
7758 #define bustype_ODY_GICP_PMAUTHSTATUS CSR_TYPE_NCB32b
7759 #define basename_ODY_GICP_PMAUTHSTATUS "GICP_PMAUTHSTATUS"
7760 #define device_bar_ODY_GICP_PMAUTHSTATUS 0x0 /* PF_BAR0 */
7761 #define busnum_ODY_GICP_PMAUTHSTATUS 0
7762 #define arguments_ODY_GICP_PMAUTHSTATUS -1, -1, -1, -1
7763
7764 /**
7765 * Register (NCB32b) gicp_pmdevarch
7766 *
7767 * GICP Pmdevarch Register
7768 * GICP_PMDEVARCH.
7769 */
7770 union ody_gicp_pmdevarch {
7771 uint32_t u;
7772 struct ody_gicp_pmdevarch_s {
7773 uint32_t archid : 16;
7774 uint32_t revision : 4;
7775 uint32_t present : 1;
7776 uint32_t architect : 11;
7777 } s;
7778 /* struct ody_gicp_pmdevarch_s cn; */
7779 };
7780 typedef union ody_gicp_pmdevarch ody_gicp_pmdevarch_t;
7781
7782 #define ODY_GICP_PMDEVARCH ODY_GICP_PMDEVARCH_FUNC()
7783 static inline uint64_t ODY_GICP_PMDEVARCH_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PMDEVARCH_FUNC(void)7784 static inline uint64_t ODY_GICP_PMDEVARCH_FUNC(void)
7785 {
7786 return 0x801000030fbcll;
7787 }
7788
7789 #define typedef_ODY_GICP_PMDEVARCH ody_gicp_pmdevarch_t
7790 #define bustype_ODY_GICP_PMDEVARCH CSR_TYPE_NCB32b
7791 #define basename_ODY_GICP_PMDEVARCH "GICP_PMDEVARCH"
7792 #define device_bar_ODY_GICP_PMDEVARCH 0x0 /* PF_BAR0 */
7793 #define busnum_ODY_GICP_PMDEVARCH 0
7794 #define arguments_ODY_GICP_PMDEVARCH -1, -1, -1, -1
7795
7796 /**
7797 * Register (NCB32b) gicp_pmdevtype
7798 *
7799 * GICP Pmdevtype Register
7800 * GICP_PMDEVTYPE.
7801 */
7802 union ody_gicp_pmdevtype {
7803 uint32_t u;
7804 struct ody_gicp_pmdevtype_s {
7805 uint32_t class_f : 4;
7806 uint32_t subtype : 4;
7807 uint32_t reserved_8_31 : 24;
7808 } s;
7809 /* struct ody_gicp_pmdevtype_s cn; */
7810 };
7811 typedef union ody_gicp_pmdevtype ody_gicp_pmdevtype_t;
7812
7813 #define ODY_GICP_PMDEVTYPE ODY_GICP_PMDEVTYPE_FUNC()
7814 static inline uint64_t ODY_GICP_PMDEVTYPE_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICP_PMDEVTYPE_FUNC(void)7815 static inline uint64_t ODY_GICP_PMDEVTYPE_FUNC(void)
7816 {
7817 return 0x801000030fccll;
7818 }
7819
7820 #define typedef_ODY_GICP_PMDEVTYPE ody_gicp_pmdevtype_t
7821 #define bustype_ODY_GICP_PMDEVTYPE CSR_TYPE_NCB32b
7822 #define basename_ODY_GICP_PMDEVTYPE "GICP_PMDEVTYPE"
7823 #define device_bar_ODY_GICP_PMDEVTYPE 0x0 /* PF_BAR0 */
7824 #define busnum_ODY_GICP_PMDEVTYPE 0
7825 #define arguments_ODY_GICP_PMDEVTYPE -1, -1, -1, -1
7826
7827 /**
7828 * Register (NCB32b) gicp_svr#
7829 *
7830 * GICP Svr Register
7831 * The GICP_SVRn characteristics are:
7832 *
7833 * * Purpose
7834 * These registers contain the shadow value of event counter n. The GIC-700 supports
7835 * five counters, n = 0-4.
7836 *
7837 * * Usage constraints
7838 * If GICD(A)_SAC.GICPNS == 0, then only Secure software can access this register.
7839 */
7840 union ody_gicp_svrx {
7841 uint32_t u;
7842 struct ody_gicp_svrx_s {
7843 uint32_t count : 32;
7844 } s;
7845 /* struct ody_gicp_svrx_s cn; */
7846 };
7847 typedef union ody_gicp_svrx ody_gicp_svrx_t;
7848
7849 static inline uint64_t ODY_GICP_SVRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICP_SVRX(uint64_t a)7850 static inline uint64_t ODY_GICP_SVRX(uint64_t a)
7851 {
7852 if (a <= 4)
7853 return 0x801000030600ll + 4ll * ((a) & 0x7);
7854 __ody_csr_fatal("GICP_SVRX", 1, a, 0, 0, 0, 0, 0);
7855 }
7856
7857 #define typedef_ODY_GICP_SVRX(a) ody_gicp_svrx_t
7858 #define bustype_ODY_GICP_SVRX(a) CSR_TYPE_NCB32b
7859 #define basename_ODY_GICP_SVRX(a) "GICP_SVRX"
7860 #define device_bar_ODY_GICP_SVRX(a) 0x0 /* PF_BAR0 */
7861 #define busnum_ODY_GICP_SVRX(a) (a)
7862 #define arguments_ODY_GICP_SVRX(a) (a), -1, -1, -1
7863
7864 /**
7865 * Register (NCB32b) gicr#_cfgid0
7866 *
7867 * GICR Cfgid0 Register
7868 * The GICR0_CFGID0 characteristics are:
7869 *
7870 * * Purpose
7871 * This register returns information about the configuration of the GCI.
7872 *
7873 * * Usage constraints
7874 * There are no usage constraints.
7875 */
7876 union ody_gicrx_cfgid0 {
7877 uint32_t u;
7878 struct ody_gicrx_cfgid0_s {
7879 uint32_t ppinumber : 9;
7880 uint32_t eccsupport : 1;
7881 uint32_t reserved_10_31 : 22;
7882 } s;
7883 /* struct ody_gicrx_cfgid0_s cn; */
7884 };
7885 typedef union ody_gicrx_cfgid0 ody_gicrx_cfgid0_t;
7886
7887 static inline uint64_t ODY_GICRX_CFGID0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_CFGID0(uint64_t a)7888 static inline uint64_t ODY_GICRX_CFGID0(uint64_t a)
7889 {
7890 if (a <= 81)
7891 return 0x80100009f000ll + 0x40000ll * ((a) & 0x7f);
7892 __ody_csr_fatal("GICRX_CFGID0", 1, a, 0, 0, 0, 0, 0);
7893 }
7894
7895 #define typedef_ODY_GICRX_CFGID0(a) ody_gicrx_cfgid0_t
7896 #define bustype_ODY_GICRX_CFGID0(a) CSR_TYPE_NCB32b
7897 #define basename_ODY_GICRX_CFGID0(a) "GICRX_CFGID0"
7898 #define device_bar_ODY_GICRX_CFGID0(a) 0x0 /* PF_BAR0 */
7899 #define busnum_ODY_GICRX_CFGID0(a) (a)
7900 #define arguments_ODY_GICRX_CFGID0(a) (a), -1, -1, -1
7901
7902 /**
7903 * Register (NCB32b) gicr#_cfgid1
7904 *
7905 * GICR Cfgid1 Register
7906 * The GICR0_CFGID1 characteristics are:
7907 *
7908 * * Purpose
7909 * This register returns information about the configuration of the Redistributors.
7910 *
7911 * * Usage constraints
7912 * There are no usage constraints.
7913 */
7914 union ody_gicrx_cfgid1 {
7915 uint32_t u;
7916 struct ody_gicrx_cfgid1_s {
7917 uint32_t reserved_0_3 : 4;
7918 uint32_t numcpus : 8;
7919 uint32_t reserved_12_15 : 4;
7920 uint32_t ppisperprocessor : 8;
7921 uint32_t revand : 4;
7922 uint32_t version_f : 4;
7923 } s;
7924 /* struct ody_gicrx_cfgid1_s cn; */
7925 };
7926 typedef union ody_gicrx_cfgid1 ody_gicrx_cfgid1_t;
7927
7928 static inline uint64_t ODY_GICRX_CFGID1(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_CFGID1(uint64_t a)7929 static inline uint64_t ODY_GICRX_CFGID1(uint64_t a)
7930 {
7931 if (a <= 81)
7932 return 0x80100009f004ll + 0x40000ll * ((a) & 0x7f);
7933 __ody_csr_fatal("GICRX_CFGID1", 1, a, 0, 0, 0, 0, 0);
7934 }
7935
7936 #define typedef_ODY_GICRX_CFGID1(a) ody_gicrx_cfgid1_t
7937 #define bustype_ODY_GICRX_CFGID1(a) CSR_TYPE_NCB32b
7938 #define basename_ODY_GICRX_CFGID1(a) "GICRX_CFGID1"
7939 #define device_bar_ODY_GICRX_CFGID1(a) 0x0 /* PF_BAR0 */
7940 #define busnum_ODY_GICRX_CFGID1(a) (a)
7941 #define arguments_ODY_GICRX_CFGID1(a) (a), -1, -1, -1
7942
7943 /**
7944 * Register (NCB32b) gicr#_cidr0
7945 *
7946 * GICR Cidr0 Register
7947 * The GICR0_CIDR0 characteristics are:
7948 *
7949 * * Purpose
7950 * This register is one of the Component Identification Registers and returns the first
7951 * part of the Preamble.
7952 *
7953 * * Usage constraints
7954 * There are no usage constraints.
7955 */
7956 union ody_gicrx_cidr0 {
7957 uint32_t u;
7958 struct ody_gicrx_cidr0_s {
7959 uint32_t prmbl_0 : 8;
7960 uint32_t reserved_8_31 : 24;
7961 } s;
7962 /* struct ody_gicrx_cidr0_s cn; */
7963 };
7964 typedef union ody_gicrx_cidr0 ody_gicrx_cidr0_t;
7965
7966 static inline uint64_t ODY_GICRX_CIDR0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_CIDR0(uint64_t a)7967 static inline uint64_t ODY_GICRX_CIDR0(uint64_t a)
7968 {
7969 if (a <= 81)
7970 return 0x80100008fff0ll + 0x40000ll * ((a) & 0x7f);
7971 __ody_csr_fatal("GICRX_CIDR0", 1, a, 0, 0, 0, 0, 0);
7972 }
7973
7974 #define typedef_ODY_GICRX_CIDR0(a) ody_gicrx_cidr0_t
7975 #define bustype_ODY_GICRX_CIDR0(a) CSR_TYPE_NCB32b
7976 #define basename_ODY_GICRX_CIDR0(a) "GICRX_CIDR0"
7977 #define device_bar_ODY_GICRX_CIDR0(a) 0x0 /* PF_BAR0 */
7978 #define busnum_ODY_GICRX_CIDR0(a) (a)
7979 #define arguments_ODY_GICRX_CIDR0(a) (a), -1, -1, -1
7980
7981 /**
7982 * Register (NCB32b) gicr#_cidr1
7983 *
7984 * GICR Cidr1 Register
7985 * The GICR0_CIDR1 characteristics are:
7986 *
7987 * * Purpose
7988 * This register is one of the Component Identification Registers and returns the
7989 * second part of the Preamble as well as the Component Class.
7990 *
7991 * * Usage constraints
7992 * There are no usage constraints.
7993 */
7994 union ody_gicrx_cidr1 {
7995 uint32_t u;
7996 struct ody_gicrx_cidr1_s {
7997 uint32_t prmbl_1 : 4;
7998 uint32_t class_f : 4;
7999 uint32_t reserved_8_31 : 24;
8000 } s;
8001 /* struct ody_gicrx_cidr1_s cn; */
8002 };
8003 typedef union ody_gicrx_cidr1 ody_gicrx_cidr1_t;
8004
8005 static inline uint64_t ODY_GICRX_CIDR1(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_CIDR1(uint64_t a)8006 static inline uint64_t ODY_GICRX_CIDR1(uint64_t a)
8007 {
8008 if (a <= 81)
8009 return 0x80100008fff4ll + 0x40000ll * ((a) & 0x7f);
8010 __ody_csr_fatal("GICRX_CIDR1", 1, a, 0, 0, 0, 0, 0);
8011 }
8012
8013 #define typedef_ODY_GICRX_CIDR1(a) ody_gicrx_cidr1_t
8014 #define bustype_ODY_GICRX_CIDR1(a) CSR_TYPE_NCB32b
8015 #define basename_ODY_GICRX_CIDR1(a) "GICRX_CIDR1"
8016 #define device_bar_ODY_GICRX_CIDR1(a) 0x0 /* PF_BAR0 */
8017 #define busnum_ODY_GICRX_CIDR1(a) (a)
8018 #define arguments_ODY_GICRX_CIDR1(a) (a), -1, -1, -1
8019
8020 /**
8021 * Register (NCB32b) gicr#_cidr2
8022 *
8023 * GICR Cidr2 Register
8024 * The GICR0_CIDR2 characteristics are:
8025 *
8026 * * Purpose
8027 * This register is one of the Component Identification Registers and returns the third
8028 * part of the Preamble.
8029 *
8030 * * Usage constraints
8031 * There are no usage constraints.
8032 */
8033 union ody_gicrx_cidr2 {
8034 uint32_t u;
8035 struct ody_gicrx_cidr2_s {
8036 uint32_t prmbl_2 : 8;
8037 uint32_t reserved_8_31 : 24;
8038 } s;
8039 /* struct ody_gicrx_cidr2_s cn; */
8040 };
8041 typedef union ody_gicrx_cidr2 ody_gicrx_cidr2_t;
8042
8043 static inline uint64_t ODY_GICRX_CIDR2(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_CIDR2(uint64_t a)8044 static inline uint64_t ODY_GICRX_CIDR2(uint64_t a)
8045 {
8046 if (a <= 81)
8047 return 0x80100008fff8ll + 0x40000ll * ((a) & 0x7f);
8048 __ody_csr_fatal("GICRX_CIDR2", 1, a, 0, 0, 0, 0, 0);
8049 }
8050
8051 #define typedef_ODY_GICRX_CIDR2(a) ody_gicrx_cidr2_t
8052 #define bustype_ODY_GICRX_CIDR2(a) CSR_TYPE_NCB32b
8053 #define basename_ODY_GICRX_CIDR2(a) "GICRX_CIDR2"
8054 #define device_bar_ODY_GICRX_CIDR2(a) 0x0 /* PF_BAR0 */
8055 #define busnum_ODY_GICRX_CIDR2(a) (a)
8056 #define arguments_ODY_GICRX_CIDR2(a) (a), -1, -1, -1
8057
8058 /**
8059 * Register (NCB32b) gicr#_cidr3
8060 *
8061 * GICR Cidr3 Register
8062 * The GICR0_CIDR3 characteristics are:
8063 *
8064 * * Purpose
8065 * This register is one of the Component Identification Registers and returns the
8066 * fourth part of the Preamble.
8067 *
8068 * * Usage constraints
8069 * There are no usage constraints.
8070 */
8071 union ody_gicrx_cidr3 {
8072 uint32_t u;
8073 struct ody_gicrx_cidr3_s {
8074 uint32_t prmbl_3 : 8;
8075 uint32_t reserved_8_31 : 24;
8076 } s;
8077 /* struct ody_gicrx_cidr3_s cn; */
8078 };
8079 typedef union ody_gicrx_cidr3 ody_gicrx_cidr3_t;
8080
8081 static inline uint64_t ODY_GICRX_CIDR3(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_CIDR3(uint64_t a)8082 static inline uint64_t ODY_GICRX_CIDR3(uint64_t a)
8083 {
8084 if (a <= 81)
8085 return 0x80100008fffcll + 0x40000ll * ((a) & 0x7f);
8086 __ody_csr_fatal("GICRX_CIDR3", 1, a, 0, 0, 0, 0, 0);
8087 }
8088
8089 #define typedef_ODY_GICRX_CIDR3(a) ody_gicrx_cidr3_t
8090 #define bustype_ODY_GICRX_CIDR3(a) CSR_TYPE_NCB32b
8091 #define basename_ODY_GICRX_CIDR3(a) "GICRX_CIDR3"
8092 #define device_bar_ODY_GICRX_CIDR3(a) 0x0 /* PF_BAR0 */
8093 #define busnum_ODY_GICRX_CIDR3(a) (a)
8094 #define arguments_ODY_GICRX_CIDR3(a) (a), -1, -1, -1
8095
8096 /**
8097 * Register (NCB32b) gicr#_class
8098 *
8099 * GICR Class Register
8100 * The GICR0_CLASSR characteristics are:
8101 *
8102 * * Purpose
8103 * This register specifies which class of 1 of N interrupt the PE accepts.
8104 *
8105 * * Usage constraints
8106 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1
8107 */
8108 union ody_gicrx_class {
8109 uint32_t u;
8110 struct ody_gicrx_class_s {
8111 uint32_t class_f : 1;
8112 uint32_t reserved_1_31 : 31;
8113 } s;
8114 /* struct ody_gicrx_class_s cn; */
8115 };
8116 typedef union ody_gicrx_class ody_gicrx_class_t;
8117
8118 static inline uint64_t ODY_GICRX_CLASS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_CLASS(uint64_t a)8119 static inline uint64_t ODY_GICRX_CLASS(uint64_t a)
8120 {
8121 if (a <= 81)
8122 return 0x801000080028ll + 0x40000ll * ((a) & 0x7f);
8123 __ody_csr_fatal("GICRX_CLASS", 1, a, 0, 0, 0, 0, 0);
8124 }
8125
8126 #define typedef_ODY_GICRX_CLASS(a) ody_gicrx_class_t
8127 #define bustype_ODY_GICRX_CLASS(a) CSR_TYPE_NCB32b
8128 #define basename_ODY_GICRX_CLASS(a) "GICRX_CLASS"
8129 #define device_bar_ODY_GICRX_CLASS(a) 0x0 /* PF_BAR0 */
8130 #define busnum_ODY_GICRX_CLASS(a) (a)
8131 #define arguments_ODY_GICRX_CLASS(a) (a), -1, -1, -1
8132
8133 /**
8134 * Register (NCB32b) gicr#_ctlr
8135 *
8136 * GICR Ctlr Register
8137 * The GICR0_CTLR characteristics are:
8138 *
8139 * * Purpose
8140 * This register controls the operation of the Redistributor for a single PE, and
8141 * enables the signaling of LPIs by the Redistributor to the connected core.
8142 *
8143 * * Usage constraints
8144 * There are no usage constraints.
8145 */
8146 union ody_gicrx_ctlr {
8147 uint32_t u;
8148 struct ody_gicrx_ctlr_s {
8149 uint32_t enablelpis : 1;
8150 uint32_t ces : 1;
8151 uint32_t ir : 1;
8152 uint32_t rwp : 1;
8153 uint32_t reserved_4_23 : 20;
8154 uint32_t dpg0 : 1;
8155 uint32_t dpg1ns : 1;
8156 uint32_t dpg1s : 1;
8157 uint32_t reserved_27_30 : 4;
8158 uint32_t uwp : 1;
8159 } s;
8160 /* struct ody_gicrx_ctlr_s cn; */
8161 };
8162 typedef union ody_gicrx_ctlr ody_gicrx_ctlr_t;
8163
8164 static inline uint64_t ODY_GICRX_CTLR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_CTLR(uint64_t a)8165 static inline uint64_t ODY_GICRX_CTLR(uint64_t a)
8166 {
8167 if (a <= 81)
8168 return 0x801000080000ll + 0x40000ll * ((a) & 0x7f);
8169 __ody_csr_fatal("GICRX_CTLR", 1, a, 0, 0, 0, 0, 0);
8170 }
8171
8172 #define typedef_ODY_GICRX_CTLR(a) ody_gicrx_ctlr_t
8173 #define bustype_ODY_GICRX_CTLR(a) CSR_TYPE_NCB32b
8174 #define basename_ODY_GICRX_CTLR(a) "GICRX_CTLR"
8175 #define device_bar_ODY_GICRX_CTLR(a) 0x0 /* PF_BAR0 */
8176 #define busnum_ODY_GICRX_CTLR(a) (a)
8177 #define arguments_ODY_GICRX_CTLR(a) (a), -1, -1, -1
8178
8179 /**
8180 * Register (NCB32b) gicr#_dprir
8181 *
8182 * GICR Dprir Register
8183 * The GICR0_DPRIR characteristics are:
8184 *
8185 * * Purpose
8186 *
8187 * This register controls the default priority of errored interrupts.
8188 *
8189 * * Usage constraints
8190 * Some fields are only writable by using a Secure access.
8191 */
8192 union ody_gicrx_dprir {
8193 uint32_t u;
8194 struct ody_gicrx_dprir_s {
8195 uint32_t reserved_0_2 : 3;
8196 uint32_t gpr0_pri : 5;
8197 uint32_t reserved_8_10 : 3;
8198 uint32_t gpr1ns_pri : 5;
8199 uint32_t reserved_16_18 : 3;
8200 uint32_t gpr1sec_pri : 5;
8201 uint32_t reserved_24_31 : 8;
8202 } s;
8203 /* struct ody_gicrx_dprir_s cn; */
8204 };
8205 typedef union ody_gicrx_dprir ody_gicrx_dprir_t;
8206
8207 static inline uint64_t ODY_GICRX_DPRIR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_DPRIR(uint64_t a)8208 static inline uint64_t ODY_GICRX_DPRIR(uint64_t a)
8209 {
8210 if (a <= 81)
8211 return 0x80100009c018ll + 0x40000ll * ((a) & 0x7f);
8212 __ody_csr_fatal("GICRX_DPRIR", 1, a, 0, 0, 0, 0, 0);
8213 }
8214
8215 #define typedef_ODY_GICRX_DPRIR(a) ody_gicrx_dprir_t
8216 #define bustype_ODY_GICRX_DPRIR(a) CSR_TYPE_NCB32b
8217 #define basename_ODY_GICRX_DPRIR(a) "GICRX_DPRIR"
8218 #define device_bar_ODY_GICRX_DPRIR(a) 0x0 /* PF_BAR0 */
8219 #define busnum_ODY_GICRX_DPRIR(a) (a)
8220 #define arguments_ODY_GICRX_DPRIR(a) (a), -1, -1, -1
8221
8222 /**
8223 * Register (NCB) gicr#_errinsr
8224 *
8225 * GICR Errinsr Register
8226 * The GICR0_ERRINSR characteristics are:
8227 *
8228 * * Purpose
8229 * This register can inject errors into the PPI RAM. You can use this register to test
8230 * your error recovery software.
8231 *
8232 * * Usage constraints
8233 * If GICD_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
8234 */
8235 union ody_gicrx_errinsr {
8236 uint64_t u;
8237 struct ody_gicrx_errinsr_s {
8238 uint64_t errins1loc : 9;
8239 uint64_t reserved_9_14 : 6;
8240 uint64_t errins1valid : 1;
8241 uint64_t errins2loc : 9;
8242 uint64_t reserved_25_30 : 6;
8243 uint64_t errins2valid : 1;
8244 uint64_t addr : 16;
8245 uint64_t reserved_48_59 : 12;
8246 uint64_t disablewritecheck : 1;
8247 uint64_t reserved_61_62 : 2;
8248 uint64_t valid : 1;
8249 } s;
8250 /* struct ody_gicrx_errinsr_s cn; */
8251 };
8252 typedef union ody_gicrx_errinsr ody_gicrx_errinsr_t;
8253
8254 static inline uint64_t ODY_GICRX_ERRINSR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ERRINSR(uint64_t a)8255 static inline uint64_t ODY_GICRX_ERRINSR(uint64_t a)
8256 {
8257 if (a <= 81)
8258 return 0x80100009f010ll + 0x40000ll * ((a) & 0x7f);
8259 __ody_csr_fatal("GICRX_ERRINSR", 1, a, 0, 0, 0, 0, 0);
8260 }
8261
8262 #define typedef_ODY_GICRX_ERRINSR(a) ody_gicrx_errinsr_t
8263 #define bustype_ODY_GICRX_ERRINSR(a) CSR_TYPE_NCB
8264 #define basename_ODY_GICRX_ERRINSR(a) "GICRX_ERRINSR"
8265 #define device_bar_ODY_GICRX_ERRINSR(a) 0x0 /* PF_BAR0 */
8266 #define busnum_ODY_GICRX_ERRINSR(a) (a)
8267 #define arguments_ODY_GICRX_ERRINSR(a) (a), -1, -1, -1
8268
8269 /**
8270 * Register (NCB32b) gicr#_fctlr
8271 *
8272 * GICR Fctlr Register
8273 * The GICR0_FCTLR characteristics are:
8274 *
8275 * * Purpose
8276 * This register controls functions in the GCI such as Q-Channel, clock gating, and RAM scrubs.
8277 *
8278 * * Usage constraints
8279 * There are no usage constraints.
8280 */
8281 union ody_gicrx_fctlr {
8282 uint32_t u;
8283 struct ody_gicrx_fctlr_s {
8284 uint32_t sip : 1;
8285 uint32_t qdeny : 1;
8286 uint32_t cgo : 3;
8287 uint32_t reserved_5_31 : 27;
8288 } s;
8289 struct ody_gicrx_fctlr_cn {
8290 uint32_t sip : 1;
8291 uint32_t qdeny : 1;
8292 uint32_t cgo : 3;
8293 uint32_t reserved_5_9 : 5;
8294 uint32_t reserved_10_31 : 22;
8295 } cn;
8296 };
8297 typedef union ody_gicrx_fctlr ody_gicrx_fctlr_t;
8298
8299 static inline uint64_t ODY_GICRX_FCTLR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_FCTLR(uint64_t a)8300 static inline uint64_t ODY_GICRX_FCTLR(uint64_t a)
8301 {
8302 if (a <= 81)
8303 return 0x801000080020ll + 0x40000ll * ((a) & 0x7f);
8304 __ody_csr_fatal("GICRX_FCTLR", 1, a, 0, 0, 0, 0, 0);
8305 }
8306
8307 #define typedef_ODY_GICRX_FCTLR(a) ody_gicrx_fctlr_t
8308 #define bustype_ODY_GICRX_FCTLR(a) CSR_TYPE_NCB32b
8309 #define basename_ODY_GICRX_FCTLR(a) "GICRX_FCTLR"
8310 #define device_bar_ODY_GICRX_FCTLR(a) 0x0 /* PF_BAR0 */
8311 #define busnum_ODY_GICRX_FCTLR(a) (a)
8312 #define arguments_ODY_GICRX_FCTLR(a) (a), -1, -1, -1
8313
8314 /**
8315 * Register (NCB32b) gicr#_icactiver0
8316 *
8317 * GICR Icactiver0 Register
8318 * The GICR0_ICACTIVER0 characteristics are:
8319 *
8320 * * Purpose
8321 * Deactivates the corresponding SGI (IDs 0-15) or PPI (IDs 16-31). These registers are
8322 * used when saving and restoring GIC state.
8323 *
8324 * * Usage constraints
8325 * If GICD(A)_CTLR.DS==0, unless the GICR0_NSACR register permits Non-secure software
8326 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
8327 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
8328 * to Non-secure accesses.
8329 */
8330 union ody_gicrx_icactiver0 {
8331 uint32_t u;
8332 struct ody_gicrx_icactiver0_s {
8333 uint32_t clear_active_bit0 : 1;
8334 uint32_t clear_active_bit1 : 1;
8335 uint32_t clear_active_bit2 : 1;
8336 uint32_t clear_active_bit3 : 1;
8337 uint32_t clear_active_bit4 : 1;
8338 uint32_t clear_active_bit5 : 1;
8339 uint32_t clear_active_bit6 : 1;
8340 uint32_t clear_active_bit7 : 1;
8341 uint32_t clear_active_bit8 : 1;
8342 uint32_t clear_active_bit9 : 1;
8343 uint32_t clear_active_bit10 : 1;
8344 uint32_t clear_active_bit11 : 1;
8345 uint32_t clear_active_bit12 : 1;
8346 uint32_t clear_active_bit13 : 1;
8347 uint32_t clear_active_bit14 : 1;
8348 uint32_t clear_active_bit15 : 1;
8349 uint32_t clear_active_bit16 : 1;
8350 uint32_t clear_active_bit17 : 1;
8351 uint32_t clear_active_bit18 : 1;
8352 uint32_t clear_active_bit19 : 1;
8353 uint32_t clear_active_bit20 : 1;
8354 uint32_t clear_active_bit21 : 1;
8355 uint32_t clear_active_bit22 : 1;
8356 uint32_t clear_active_bit23 : 1;
8357 uint32_t clear_active_bit24 : 1;
8358 uint32_t clear_active_bit25 : 1;
8359 uint32_t clear_active_bit26 : 1;
8360 uint32_t clear_active_bit27 : 1;
8361 uint32_t clear_active_bit28 : 1;
8362 uint32_t clear_active_bit29 : 1;
8363 uint32_t clear_active_bit30 : 1;
8364 uint32_t clear_active_bit31 : 1;
8365 } s;
8366 /* struct ody_gicrx_icactiver0_s cn; */
8367 };
8368 typedef union ody_gicrx_icactiver0 ody_gicrx_icactiver0_t;
8369
8370 static inline uint64_t ODY_GICRX_ICACTIVER0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICACTIVER0(uint64_t a)8371 static inline uint64_t ODY_GICRX_ICACTIVER0(uint64_t a)
8372 {
8373 if (a <= 81)
8374 return 0x801000090380ll + 0x40000ll * ((a) & 0x7f);
8375 __ody_csr_fatal("GICRX_ICACTIVER0", 1, a, 0, 0, 0, 0, 0);
8376 }
8377
8378 #define typedef_ODY_GICRX_ICACTIVER0(a) ody_gicrx_icactiver0_t
8379 #define bustype_ODY_GICRX_ICACTIVER0(a) CSR_TYPE_NCB32b
8380 #define basename_ODY_GICRX_ICACTIVER0(a) "GICRX_ICACTIVER0"
8381 #define device_bar_ODY_GICRX_ICACTIVER0(a) 0x0 /* PF_BAR0 */
8382 #define busnum_ODY_GICRX_ICACTIVER0(a) (a)
8383 #define arguments_ODY_GICRX_ICACTIVER0(a) (a), -1, -1, -1
8384
8385 /**
8386 * Register (NCB32b) gicr#_icactiver1e
8387 *
8388 * GICR Icactiver1e Register
8389 * The GICR0_ICACTIVER1E characteristics are:
8390 *
8391 * * Purpose
8392 * Deactivates the corresponding extended range PPI. These registers are used when
8393 * saving and restoring GIC state.
8394 *
8395 * * Usage constraints
8396 * If GICD(A)_CTLR.DS==0, unless the GICR0_NSACR register permits Non-secure software
8397 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
8398 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
8399 * to Non-secure accesses.
8400 */
8401 union ody_gicrx_icactiver1e {
8402 uint32_t u;
8403 struct ody_gicrx_icactiver1e_s {
8404 uint32_t clear_active_bit0 : 1;
8405 uint32_t clear_active_bit1 : 1;
8406 uint32_t clear_active_bit2 : 1;
8407 uint32_t clear_active_bit3 : 1;
8408 uint32_t clear_active_bit4 : 1;
8409 uint32_t clear_active_bit5 : 1;
8410 uint32_t clear_active_bit6 : 1;
8411 uint32_t clear_active_bit7 : 1;
8412 uint32_t clear_active_bit8 : 1;
8413 uint32_t clear_active_bit9 : 1;
8414 uint32_t clear_active_bit10 : 1;
8415 uint32_t clear_active_bit11 : 1;
8416 uint32_t clear_active_bit12 : 1;
8417 uint32_t clear_active_bit13 : 1;
8418 uint32_t clear_active_bit14 : 1;
8419 uint32_t clear_active_bit15 : 1;
8420 uint32_t clear_active_bit16 : 1;
8421 uint32_t clear_active_bit17 : 1;
8422 uint32_t clear_active_bit18 : 1;
8423 uint32_t clear_active_bit19 : 1;
8424 uint32_t clear_active_bit20 : 1;
8425 uint32_t clear_active_bit21 : 1;
8426 uint32_t clear_active_bit22 : 1;
8427 uint32_t clear_active_bit23 : 1;
8428 uint32_t clear_active_bit24 : 1;
8429 uint32_t clear_active_bit25 : 1;
8430 uint32_t clear_active_bit26 : 1;
8431 uint32_t clear_active_bit27 : 1;
8432 uint32_t clear_active_bit28 : 1;
8433 uint32_t clear_active_bit29 : 1;
8434 uint32_t clear_active_bit30 : 1;
8435 uint32_t clear_active_bit31 : 1;
8436 } s;
8437 /* struct ody_gicrx_icactiver1e_s cn; */
8438 };
8439 typedef union ody_gicrx_icactiver1e ody_gicrx_icactiver1e_t;
8440
8441 static inline uint64_t ODY_GICRX_ICACTIVER1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICACTIVER1E(uint64_t a)8442 static inline uint64_t ODY_GICRX_ICACTIVER1E(uint64_t a)
8443 {
8444 if (a <= 81)
8445 return 0x801000090384ll + 0x40000ll * ((a) & 0x7f);
8446 __ody_csr_fatal("GICRX_ICACTIVER1E", 1, a, 0, 0, 0, 0, 0);
8447 }
8448
8449 #define typedef_ODY_GICRX_ICACTIVER1E(a) ody_gicrx_icactiver1e_t
8450 #define bustype_ODY_GICRX_ICACTIVER1E(a) CSR_TYPE_NCB32b
8451 #define basename_ODY_GICRX_ICACTIVER1E(a) "GICRX_ICACTIVER1E"
8452 #define device_bar_ODY_GICRX_ICACTIVER1E(a) 0x0 /* PF_BAR0 */
8453 #define busnum_ODY_GICRX_ICACTIVER1E(a) (a)
8454 #define arguments_ODY_GICRX_ICACTIVER1E(a) (a), -1, -1, -1
8455
8456 /**
8457 * Register (NCB32b) gicr#_icenabler0
8458 *
8459 * GICR Icenabler0 Register
8460 * The GICR0_ICENABLER0 characteristics are:
8461 *
8462 * * Purpose
8463 * Disables forwarding of the corresponding SGI (IDs 0-15) or PPI (IDs 16-31) to the CPU interface.
8464 *
8465 * * Usage constraints
8466 * When GICD(A)_CTLR.DS==0, bits corresponding to Group 0 and Secure Group 1 interrupts
8467 * are RAZ/WI to Non-secure accesses.
8468 */
8469 union ody_gicrx_icenabler0 {
8470 uint32_t u;
8471 struct ody_gicrx_icenabler0_s {
8472 uint32_t clear_enable_bit0 : 1;
8473 uint32_t clear_enable_bit1 : 1;
8474 uint32_t clear_enable_bit2 : 1;
8475 uint32_t clear_enable_bit3 : 1;
8476 uint32_t clear_enable_bit4 : 1;
8477 uint32_t clear_enable_bit5 : 1;
8478 uint32_t clear_enable_bit6 : 1;
8479 uint32_t clear_enable_bit7 : 1;
8480 uint32_t clear_enable_bit8 : 1;
8481 uint32_t clear_enable_bit9 : 1;
8482 uint32_t clear_enable_bit10 : 1;
8483 uint32_t clear_enable_bit11 : 1;
8484 uint32_t clear_enable_bit12 : 1;
8485 uint32_t clear_enable_bit13 : 1;
8486 uint32_t clear_enable_bit14 : 1;
8487 uint32_t clear_enable_bit15 : 1;
8488 uint32_t clear_enable_bit16 : 1;
8489 uint32_t clear_enable_bit17 : 1;
8490 uint32_t clear_enable_bit18 : 1;
8491 uint32_t clear_enable_bit19 : 1;
8492 uint32_t clear_enable_bit20 : 1;
8493 uint32_t clear_enable_bit21 : 1;
8494 uint32_t clear_enable_bit22 : 1;
8495 uint32_t clear_enable_bit23 : 1;
8496 uint32_t clear_enable_bit24 : 1;
8497 uint32_t clear_enable_bit25 : 1;
8498 uint32_t clear_enable_bit26 : 1;
8499 uint32_t clear_enable_bit27 : 1;
8500 uint32_t clear_enable_bit28 : 1;
8501 uint32_t clear_enable_bit29 : 1;
8502 uint32_t clear_enable_bit30 : 1;
8503 uint32_t clear_enable_bit31 : 1;
8504 } s;
8505 /* struct ody_gicrx_icenabler0_s cn; */
8506 };
8507 typedef union ody_gicrx_icenabler0 ody_gicrx_icenabler0_t;
8508
8509 static inline uint64_t ODY_GICRX_ICENABLER0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICENABLER0(uint64_t a)8510 static inline uint64_t ODY_GICRX_ICENABLER0(uint64_t a)
8511 {
8512 if (a <= 81)
8513 return 0x801000090180ll + 0x40000ll * ((a) & 0x7f);
8514 __ody_csr_fatal("GICRX_ICENABLER0", 1, a, 0, 0, 0, 0, 0);
8515 }
8516
8517 #define typedef_ODY_GICRX_ICENABLER0(a) ody_gicrx_icenabler0_t
8518 #define bustype_ODY_GICRX_ICENABLER0(a) CSR_TYPE_NCB32b
8519 #define basename_ODY_GICRX_ICENABLER0(a) "GICRX_ICENABLER0"
8520 #define device_bar_ODY_GICRX_ICENABLER0(a) 0x0 /* PF_BAR0 */
8521 #define busnum_ODY_GICRX_ICENABLER0(a) (a)
8522 #define arguments_ODY_GICRX_ICENABLER0(a) (a), -1, -1, -1
8523
8524 /**
8525 * Register (NCB32b) gicr#_icenabler1e
8526 *
8527 * GICR Icenabler1e Register
8528 * The GICR0_ICENABLER1E characteristics are:
8529 *
8530 * * Purpose
8531 * Disables forwarding of the corresponding extended range PPI to the CPU interfaces.
8532 *
8533 * * Usage constraints
8534 * When GICD(A)_CTLR.DS==0, bits corresponding to Group 0 and Secure Group 1 interrupts
8535 * are RAZ/WI to Non-secure accesses.
8536 * A copy of this register is provided for each Redistributor.
8537 */
8538 union ody_gicrx_icenabler1e {
8539 uint32_t u;
8540 struct ody_gicrx_icenabler1e_s {
8541 uint32_t clear_enable_bit0 : 1;
8542 uint32_t clear_enable_bit1 : 1;
8543 uint32_t clear_enable_bit2 : 1;
8544 uint32_t clear_enable_bit3 : 1;
8545 uint32_t clear_enable_bit4 : 1;
8546 uint32_t clear_enable_bit5 : 1;
8547 uint32_t clear_enable_bit6 : 1;
8548 uint32_t clear_enable_bit7 : 1;
8549 uint32_t clear_enable_bit8 : 1;
8550 uint32_t clear_enable_bit9 : 1;
8551 uint32_t clear_enable_bit10 : 1;
8552 uint32_t clear_enable_bit11 : 1;
8553 uint32_t clear_enable_bit12 : 1;
8554 uint32_t clear_enable_bit13 : 1;
8555 uint32_t clear_enable_bit14 : 1;
8556 uint32_t clear_enable_bit15 : 1;
8557 uint32_t clear_enable_bit16 : 1;
8558 uint32_t clear_enable_bit17 : 1;
8559 uint32_t clear_enable_bit18 : 1;
8560 uint32_t clear_enable_bit19 : 1;
8561 uint32_t clear_enable_bit20 : 1;
8562 uint32_t clear_enable_bit21 : 1;
8563 uint32_t clear_enable_bit22 : 1;
8564 uint32_t clear_enable_bit23 : 1;
8565 uint32_t clear_enable_bit24 : 1;
8566 uint32_t clear_enable_bit25 : 1;
8567 uint32_t clear_enable_bit26 : 1;
8568 uint32_t clear_enable_bit27 : 1;
8569 uint32_t clear_enable_bit28 : 1;
8570 uint32_t clear_enable_bit29 : 1;
8571 uint32_t clear_enable_bit30 : 1;
8572 uint32_t clear_enable_bit31 : 1;
8573 } s;
8574 /* struct ody_gicrx_icenabler1e_s cn; */
8575 };
8576 typedef union ody_gicrx_icenabler1e ody_gicrx_icenabler1e_t;
8577
8578 static inline uint64_t ODY_GICRX_ICENABLER1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICENABLER1E(uint64_t a)8579 static inline uint64_t ODY_GICRX_ICENABLER1E(uint64_t a)
8580 {
8581 if (a <= 81)
8582 return 0x801000090184ll + 0x40000ll * ((a) & 0x7f);
8583 __ody_csr_fatal("GICRX_ICENABLER1E", 1, a, 0, 0, 0, 0, 0);
8584 }
8585
8586 #define typedef_ODY_GICRX_ICENABLER1E(a) ody_gicrx_icenabler1e_t
8587 #define bustype_ODY_GICRX_ICENABLER1E(a) CSR_TYPE_NCB32b
8588 #define basename_ODY_GICRX_ICENABLER1E(a) "GICRX_ICENABLER1E"
8589 #define device_bar_ODY_GICRX_ICENABLER1E(a) 0x0 /* PF_BAR0 */
8590 #define busnum_ODY_GICRX_ICENABLER1E(a) (a)
8591 #define arguments_ODY_GICRX_ICENABLER1E(a) (a), -1, -1, -1
8592
8593 /**
8594 * Register (NCB32b) gicr#_icerrr0
8595 *
8596 * GICR Icerrr0 Register
8597 * The GICR0_ICERRR0 characteristics are:
8598 *
8599 * * Purpose
8600 *
8601 * This register indicates if the SGI or PPI data has been corrupted in the GCI RAM.
8602 * Software can use this register to clear an SGI or PPI error.
8603 *
8604 * * Usage constraints
8605 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
8606 */
8607 union ody_gicrx_icerrr0 {
8608 uint32_t u;
8609 struct ody_gicrx_icerrr0_s {
8610 uint32_t valid_bit0 : 1;
8611 uint32_t valid_bit1 : 1;
8612 uint32_t valid_bit2 : 1;
8613 uint32_t valid_bit3 : 1;
8614 uint32_t valid_bit4 : 1;
8615 uint32_t valid_bit5 : 1;
8616 uint32_t valid_bit6 : 1;
8617 uint32_t valid_bit7 : 1;
8618 uint32_t valid_bit8 : 1;
8619 uint32_t valid_bit9 : 1;
8620 uint32_t valid_bit10 : 1;
8621 uint32_t valid_bit11 : 1;
8622 uint32_t valid_bit12 : 1;
8623 uint32_t valid_bit13 : 1;
8624 uint32_t valid_bit14 : 1;
8625 uint32_t valid_bit15 : 1;
8626 uint32_t valid_bit16 : 1;
8627 uint32_t valid_bit17 : 1;
8628 uint32_t valid_bit18 : 1;
8629 uint32_t valid_bit19 : 1;
8630 uint32_t valid_bit20 : 1;
8631 uint32_t valid_bit21 : 1;
8632 uint32_t valid_bit22 : 1;
8633 uint32_t valid_bit23 : 1;
8634 uint32_t valid_bit24 : 1;
8635 uint32_t valid_bit25 : 1;
8636 uint32_t valid_bit26 : 1;
8637 uint32_t valid_bit27 : 1;
8638 uint32_t valid_bit28 : 1;
8639 uint32_t valid_bit29 : 1;
8640 uint32_t valid_bit30 : 1;
8641 uint32_t valid_bit31 : 1;
8642 } s;
8643 /* struct ody_gicrx_icerrr0_s cn; */
8644 };
8645 typedef union ody_gicrx_icerrr0 ody_gicrx_icerrr0_t;
8646
8647 static inline uint64_t ODY_GICRX_ICERRR0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICERRR0(uint64_t a)8648 static inline uint64_t ODY_GICRX_ICERRR0(uint64_t a)
8649 {
8650 if (a <= 81)
8651 return 0x80100009c100ll + 0x40000ll * ((a) & 0x7f);
8652 __ody_csr_fatal("GICRX_ICERRR0", 1, a, 0, 0, 0, 0, 0);
8653 }
8654
8655 #define typedef_ODY_GICRX_ICERRR0(a) ody_gicrx_icerrr0_t
8656 #define bustype_ODY_GICRX_ICERRR0(a) CSR_TYPE_NCB32b
8657 #define basename_ODY_GICRX_ICERRR0(a) "GICRX_ICERRR0"
8658 #define device_bar_ODY_GICRX_ICERRR0(a) 0x0 /* PF_BAR0 */
8659 #define busnum_ODY_GICRX_ICERRR0(a) (a)
8660 #define arguments_ODY_GICRX_ICERRR0(a) (a), -1, -1, -1
8661
8662 /**
8663 * Register (NCB32b) gicr#_icerrr1e
8664 *
8665 * GICR Icerrr1e Register
8666 * The GICR0_ICERRR1E characteristics are:
8667 *
8668 * * Purpose
8669 *
8670 * This register indicates if extended range PPI data has been corrupted in the GCI
8671 * RAM. Software can use this register to clear the error.
8672 *
8673 * * Usage constraints
8674 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
8675 */
8676 union ody_gicrx_icerrr1e {
8677 uint32_t u;
8678 struct ody_gicrx_icerrr1e_s {
8679 uint32_t valid_bit0 : 1;
8680 uint32_t valid_bit1 : 1;
8681 uint32_t valid_bit2 : 1;
8682 uint32_t valid_bit3 : 1;
8683 uint32_t valid_bit4 : 1;
8684 uint32_t valid_bit5 : 1;
8685 uint32_t valid_bit6 : 1;
8686 uint32_t valid_bit7 : 1;
8687 uint32_t valid_bit8 : 1;
8688 uint32_t valid_bit9 : 1;
8689 uint32_t valid_bit10 : 1;
8690 uint32_t valid_bit11 : 1;
8691 uint32_t valid_bit12 : 1;
8692 uint32_t valid_bit13 : 1;
8693 uint32_t valid_bit14 : 1;
8694 uint32_t valid_bit15 : 1;
8695 uint32_t valid_bit16 : 1;
8696 uint32_t valid_bit17 : 1;
8697 uint32_t valid_bit18 : 1;
8698 uint32_t valid_bit19 : 1;
8699 uint32_t valid_bit20 : 1;
8700 uint32_t valid_bit21 : 1;
8701 uint32_t valid_bit22 : 1;
8702 uint32_t valid_bit23 : 1;
8703 uint32_t valid_bit24 : 1;
8704 uint32_t valid_bit25 : 1;
8705 uint32_t valid_bit26 : 1;
8706 uint32_t valid_bit27 : 1;
8707 uint32_t valid_bit28 : 1;
8708 uint32_t valid_bit29 : 1;
8709 uint32_t valid_bit30 : 1;
8710 uint32_t valid_bit31 : 1;
8711 } s;
8712 /* struct ody_gicrx_icerrr1e_s cn; */
8713 };
8714 typedef union ody_gicrx_icerrr1e ody_gicrx_icerrr1e_t;
8715
8716 static inline uint64_t ODY_GICRX_ICERRR1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICERRR1E(uint64_t a)8717 static inline uint64_t ODY_GICRX_ICERRR1E(uint64_t a)
8718 {
8719 if (a <= 81)
8720 return 0x80100009c104ll + 0x40000ll * ((a) & 0x7f);
8721 __ody_csr_fatal("GICRX_ICERRR1E", 1, a, 0, 0, 0, 0, 0);
8722 }
8723
8724 #define typedef_ODY_GICRX_ICERRR1E(a) ody_gicrx_icerrr1e_t
8725 #define bustype_ODY_GICRX_ICERRR1E(a) CSR_TYPE_NCB32b
8726 #define basename_ODY_GICRX_ICERRR1E(a) "GICRX_ICERRR1E"
8727 #define device_bar_ODY_GICRX_ICERRR1E(a) 0x0 /* PF_BAR0 */
8728 #define busnum_ODY_GICRX_ICERRR1E(a) (a)
8729 #define arguments_ODY_GICRX_ICERRR1E(a) (a), -1, -1, -1
8730
8731 /**
8732 * Register (NCB32b) gicr#_icfgr0
8733 *
8734 * GICR Icfgr0 Register
8735 * The GICR0_ICFGR0 characteristics are:
8736 *
8737 * * Purpose
8738 * Reports that all SGIs are edge triggered.
8739 *
8740 * * Usage constraints
8741 * When GICD_CTLR.DS==0, a register bit that corresponds to a Group 0 or Secure Group 1
8742 * interrupt is RAZ/WI to Non-secure accesses.
8743 */
8744 union ody_gicrx_icfgr0 {
8745 uint32_t u;
8746 struct ody_gicrx_icfgr0_s {
8747 uint32_t int_config0 : 2;
8748 uint32_t int_config1 : 2;
8749 uint32_t int_config2 : 2;
8750 uint32_t int_config3 : 2;
8751 uint32_t int_config4 : 2;
8752 uint32_t int_config5 : 2;
8753 uint32_t int_config6 : 2;
8754 uint32_t int_config7 : 2;
8755 uint32_t int_config8 : 2;
8756 uint32_t int_config9 : 2;
8757 uint32_t int_config10 : 2;
8758 uint32_t int_config11 : 2;
8759 uint32_t int_config12 : 2;
8760 uint32_t int_config13 : 2;
8761 uint32_t int_config14 : 2;
8762 uint32_t int_config15 : 2;
8763 } s;
8764 /* struct ody_gicrx_icfgr0_s cn; */
8765 };
8766 typedef union ody_gicrx_icfgr0 ody_gicrx_icfgr0_t;
8767
8768 static inline uint64_t ODY_GICRX_ICFGR0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICFGR0(uint64_t a)8769 static inline uint64_t ODY_GICRX_ICFGR0(uint64_t a)
8770 {
8771 if (a <= 81)
8772 return 0x801000090c00ll + 0x40000ll * ((a) & 0x7f);
8773 __ody_csr_fatal("GICRX_ICFGR0", 1, a, 0, 0, 0, 0, 0);
8774 }
8775
8776 #define typedef_ODY_GICRX_ICFGR0(a) ody_gicrx_icfgr0_t
8777 #define bustype_ODY_GICRX_ICFGR0(a) CSR_TYPE_NCB32b
8778 #define basename_ODY_GICRX_ICFGR0(a) "GICRX_ICFGR0"
8779 #define device_bar_ODY_GICRX_ICFGR0(a) 0x0 /* PF_BAR0 */
8780 #define busnum_ODY_GICRX_ICFGR0(a) (a)
8781 #define arguments_ODY_GICRX_ICFGR0(a) (a), -1, -1, -1
8782
8783 /**
8784 * Register (NCB32b) gicr#_icfgr1
8785 *
8786 * GICR Icfgr1 Register
8787 * The GICR0_ICFGR0 characteristics are:
8788 *
8789 * * Purpose
8790 * Determines whether the corresponding PPI is edge-triggered or level-sensitive
8791 *
8792 * * Usage constraints
8793 * When GICD(A)_CTLR.DS==0, a register bit that corresponds to a Group 0 or Secure
8794 * Group 1 interrupt is RAZ/WI to Non-secure accesses.
8795 */
8796 union ody_gicrx_icfgr1 {
8797 uint32_t u;
8798 struct ody_gicrx_icfgr1_s {
8799 uint32_t int_config0 : 2;
8800 uint32_t int_config1 : 2;
8801 uint32_t int_config2 : 2;
8802 uint32_t int_config3 : 2;
8803 uint32_t int_config4 : 2;
8804 uint32_t int_config5 : 2;
8805 uint32_t int_config6 : 2;
8806 uint32_t int_config7 : 2;
8807 uint32_t int_config8 : 2;
8808 uint32_t int_config9 : 2;
8809 uint32_t int_config10 : 2;
8810 uint32_t int_config11 : 2;
8811 uint32_t int_config12 : 2;
8812 uint32_t int_config13 : 2;
8813 uint32_t int_config14 : 2;
8814 uint32_t int_config15 : 2;
8815 } s;
8816 /* struct ody_gicrx_icfgr1_s cn; */
8817 };
8818 typedef union ody_gicrx_icfgr1 ody_gicrx_icfgr1_t;
8819
8820 static inline uint64_t ODY_GICRX_ICFGR1(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICFGR1(uint64_t a)8821 static inline uint64_t ODY_GICRX_ICFGR1(uint64_t a)
8822 {
8823 if (a <= 81)
8824 return 0x801000090c04ll + 0x40000ll * ((a) & 0x7f);
8825 __ody_csr_fatal("GICRX_ICFGR1", 1, a, 0, 0, 0, 0, 0);
8826 }
8827
8828 #define typedef_ODY_GICRX_ICFGR1(a) ody_gicrx_icfgr1_t
8829 #define bustype_ODY_GICRX_ICFGR1(a) CSR_TYPE_NCB32b
8830 #define basename_ODY_GICRX_ICFGR1(a) "GICRX_ICFGR1"
8831 #define device_bar_ODY_GICRX_ICFGR1(a) 0x0 /* PF_BAR0 */
8832 #define busnum_ODY_GICRX_ICFGR1(a) (a)
8833 #define arguments_ODY_GICRX_ICFGR1(a) (a), -1, -1, -1
8834
8835 /**
8836 * Register (NCB32b) gicr#_icfgr2e
8837 *
8838 * GICR Icfgr2e Register
8839 * The GICR0_ICFGR2E characteristics are:
8840 *
8841 * * Purpose
8842 * Determines whether the corresponding extended range PPI (1056-1071) is edge-
8843 * triggered or level-sensitive
8844 *
8845 * * Usage constraints
8846 * When GICD_CTLR.DS==0, a register bit that corresponds to a Group 0 or Secure Group 1
8847 * interrupt is RAZ/WI to Non-secure accesses.
8848 */
8849 union ody_gicrx_icfgr2e {
8850 uint32_t u;
8851 struct ody_gicrx_icfgr2e_s {
8852 uint32_t int_config0 : 2;
8853 uint32_t int_config1 : 2;
8854 uint32_t int_config2 : 2;
8855 uint32_t int_config3 : 2;
8856 uint32_t int_config4 : 2;
8857 uint32_t int_config5 : 2;
8858 uint32_t int_config6 : 2;
8859 uint32_t int_config7 : 2;
8860 uint32_t int_config8 : 2;
8861 uint32_t int_config9 : 2;
8862 uint32_t int_config10 : 2;
8863 uint32_t int_config11 : 2;
8864 uint32_t int_config12 : 2;
8865 uint32_t int_config13 : 2;
8866 uint32_t int_config14 : 2;
8867 uint32_t int_config15 : 2;
8868 } s;
8869 /* struct ody_gicrx_icfgr2e_s cn; */
8870 };
8871 typedef union ody_gicrx_icfgr2e ody_gicrx_icfgr2e_t;
8872
8873 static inline uint64_t ODY_GICRX_ICFGR2E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICFGR2E(uint64_t a)8874 static inline uint64_t ODY_GICRX_ICFGR2E(uint64_t a)
8875 {
8876 if (a <= 81)
8877 return 0x801000090c08ll + 0x40000ll * ((a) & 0x7f);
8878 __ody_csr_fatal("GICRX_ICFGR2E", 1, a, 0, 0, 0, 0, 0);
8879 }
8880
8881 #define typedef_ODY_GICRX_ICFGR2E(a) ody_gicrx_icfgr2e_t
8882 #define bustype_ODY_GICRX_ICFGR2E(a) CSR_TYPE_NCB32b
8883 #define basename_ODY_GICRX_ICFGR2E(a) "GICRX_ICFGR2E"
8884 #define device_bar_ODY_GICRX_ICFGR2E(a) 0x0 /* PF_BAR0 */
8885 #define busnum_ODY_GICRX_ICFGR2E(a) (a)
8886 #define arguments_ODY_GICRX_ICFGR2E(a) (a), -1, -1, -1
8887
8888 /**
8889 * Register (NCB32b) gicr#_icfgr3e
8890 *
8891 * GICR Icfgr3e Register
8892 * The GICR0_ICFGR3E characteristics are:
8893 *
8894 * * Purpose
8895 * Determines whether the corresponding extended range PPI (1072-1087) is edge-
8896 * triggered or level-sensitive
8897 *
8898 * * Usage constraints
8899 * When GICD_CTLR.DS==0, a register bit that corresponds to a Group 0 or Secure Group 1
8900 * interrupt is RAZ/WI to Non-secure accesses.
8901 */
8902 union ody_gicrx_icfgr3e {
8903 uint32_t u;
8904 struct ody_gicrx_icfgr3e_s {
8905 uint32_t int_config0 : 2;
8906 uint32_t int_config1 : 2;
8907 uint32_t int_config2 : 2;
8908 uint32_t int_config3 : 2;
8909 uint32_t int_config4 : 2;
8910 uint32_t int_config5 : 2;
8911 uint32_t int_config6 : 2;
8912 uint32_t int_config7 : 2;
8913 uint32_t int_config8 : 2;
8914 uint32_t int_config9 : 2;
8915 uint32_t int_config10 : 2;
8916 uint32_t int_config11 : 2;
8917 uint32_t int_config12 : 2;
8918 uint32_t int_config13 : 2;
8919 uint32_t int_config14 : 2;
8920 uint32_t int_config15 : 2;
8921 } s;
8922 /* struct ody_gicrx_icfgr3e_s cn; */
8923 };
8924 typedef union ody_gicrx_icfgr3e ody_gicrx_icfgr3e_t;
8925
8926 static inline uint64_t ODY_GICRX_ICFGR3E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICFGR3E(uint64_t a)8927 static inline uint64_t ODY_GICRX_ICFGR3E(uint64_t a)
8928 {
8929 if (a <= 81)
8930 return 0x801000090c0cll + 0x40000ll * ((a) & 0x7f);
8931 __ody_csr_fatal("GICRX_ICFGR3E", 1, a, 0, 0, 0, 0, 0);
8932 }
8933
8934 #define typedef_ODY_GICRX_ICFGR3E(a) ody_gicrx_icfgr3e_t
8935 #define bustype_ODY_GICRX_ICFGR3E(a) CSR_TYPE_NCB32b
8936 #define basename_ODY_GICRX_ICFGR3E(a) "GICRX_ICFGR3E"
8937 #define device_bar_ODY_GICRX_ICFGR3E(a) 0x0 /* PF_BAR0 */
8938 #define busnum_ODY_GICRX_ICFGR3E(a) (a)
8939 #define arguments_ODY_GICRX_ICFGR3E(a) (a), -1, -1, -1
8940
8941 /**
8942 * Register (NCB32b) gicr#_icpendr0
8943 *
8944 * GICR Icpendr0 Register
8945 * The GICR0_ICPENDR0 characteristics are:
8946 *
8947 * * Purpose
8948 * Removes the pending state from the corresponding SGI (IDs 0-15) or PPI (IDs 16-31).
8949 *
8950 * * Usage constraints
8951 * If GICD(A)_CTLR.DS==0, unless the GICR0_NSACR register permits Non-secure software
8952 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
8953 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
8954 * to Non-secure accesses.
8955 */
8956 union ody_gicrx_icpendr0 {
8957 uint32_t u;
8958 struct ody_gicrx_icpendr0_s {
8959 uint32_t clear_pending_bit0 : 1;
8960 uint32_t clear_pending_bit1 : 1;
8961 uint32_t clear_pending_bit2 : 1;
8962 uint32_t clear_pending_bit3 : 1;
8963 uint32_t clear_pending_bit4 : 1;
8964 uint32_t clear_pending_bit5 : 1;
8965 uint32_t clear_pending_bit6 : 1;
8966 uint32_t clear_pending_bit7 : 1;
8967 uint32_t clear_pending_bit8 : 1;
8968 uint32_t clear_pending_bit9 : 1;
8969 uint32_t clear_pending_bit10 : 1;
8970 uint32_t clear_pending_bit11 : 1;
8971 uint32_t clear_pending_bit12 : 1;
8972 uint32_t clear_pending_bit13 : 1;
8973 uint32_t clear_pending_bit14 : 1;
8974 uint32_t clear_pending_bit15 : 1;
8975 uint32_t clear_pending_bit16 : 1;
8976 uint32_t clear_pending_bit17 : 1;
8977 uint32_t clear_pending_bit18 : 1;
8978 uint32_t clear_pending_bit19 : 1;
8979 uint32_t clear_pending_bit20 : 1;
8980 uint32_t clear_pending_bit21 : 1;
8981 uint32_t clear_pending_bit22 : 1;
8982 uint32_t clear_pending_bit23 : 1;
8983 uint32_t clear_pending_bit24 : 1;
8984 uint32_t clear_pending_bit25 : 1;
8985 uint32_t clear_pending_bit26 : 1;
8986 uint32_t clear_pending_bit27 : 1;
8987 uint32_t clear_pending_bit28 : 1;
8988 uint32_t clear_pending_bit29 : 1;
8989 uint32_t clear_pending_bit30 : 1;
8990 uint32_t clear_pending_bit31 : 1;
8991 } s;
8992 /* struct ody_gicrx_icpendr0_s cn; */
8993 };
8994 typedef union ody_gicrx_icpendr0 ody_gicrx_icpendr0_t;
8995
8996 static inline uint64_t ODY_GICRX_ICPENDR0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICPENDR0(uint64_t a)8997 static inline uint64_t ODY_GICRX_ICPENDR0(uint64_t a)
8998 {
8999 if (a <= 81)
9000 return 0x801000090280ll + 0x40000ll * ((a) & 0x7f);
9001 __ody_csr_fatal("GICRX_ICPENDR0", 1, a, 0, 0, 0, 0, 0);
9002 }
9003
9004 #define typedef_ODY_GICRX_ICPENDR0(a) ody_gicrx_icpendr0_t
9005 #define bustype_ODY_GICRX_ICPENDR0(a) CSR_TYPE_NCB32b
9006 #define basename_ODY_GICRX_ICPENDR0(a) "GICRX_ICPENDR0"
9007 #define device_bar_ODY_GICRX_ICPENDR0(a) 0x0 /* PF_BAR0 */
9008 #define busnum_ODY_GICRX_ICPENDR0(a) (a)
9009 #define arguments_ODY_GICRX_ICPENDR0(a) (a), -1, -1, -1
9010
9011 /**
9012 * Register (NCB32b) gicr#_icpendr1e
9013 *
9014 * GICR Icpendr1e Register
9015 * The GICR0_ICPENDR1E characteristics are:
9016 *
9017 * * Purpose
9018 * Removes the pending state from the corresponding extended range PPI.
9019 *
9020 * * Usage constraints
9021 * If GICD(A)_CTLR.DS==0, unless the GICR0_NSACR register permits Non-secure software
9022 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
9023 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
9024 * to Non-secure accesses.
9025 */
9026 union ody_gicrx_icpendr1e {
9027 uint32_t u;
9028 struct ody_gicrx_icpendr1e_s {
9029 uint32_t clear_pending_bit0 : 1;
9030 uint32_t clear_pending_bit1 : 1;
9031 uint32_t clear_pending_bit2 : 1;
9032 uint32_t clear_pending_bit3 : 1;
9033 uint32_t clear_pending_bit4 : 1;
9034 uint32_t clear_pending_bit5 : 1;
9035 uint32_t clear_pending_bit6 : 1;
9036 uint32_t clear_pending_bit7 : 1;
9037 uint32_t clear_pending_bit8 : 1;
9038 uint32_t clear_pending_bit9 : 1;
9039 uint32_t clear_pending_bit10 : 1;
9040 uint32_t clear_pending_bit11 : 1;
9041 uint32_t clear_pending_bit12 : 1;
9042 uint32_t clear_pending_bit13 : 1;
9043 uint32_t clear_pending_bit14 : 1;
9044 uint32_t clear_pending_bit15 : 1;
9045 uint32_t clear_pending_bit16 : 1;
9046 uint32_t clear_pending_bit17 : 1;
9047 uint32_t clear_pending_bit18 : 1;
9048 uint32_t clear_pending_bit19 : 1;
9049 uint32_t clear_pending_bit20 : 1;
9050 uint32_t clear_pending_bit21 : 1;
9051 uint32_t clear_pending_bit22 : 1;
9052 uint32_t clear_pending_bit23 : 1;
9053 uint32_t clear_pending_bit24 : 1;
9054 uint32_t clear_pending_bit25 : 1;
9055 uint32_t clear_pending_bit26 : 1;
9056 uint32_t clear_pending_bit27 : 1;
9057 uint32_t clear_pending_bit28 : 1;
9058 uint32_t clear_pending_bit29 : 1;
9059 uint32_t clear_pending_bit30 : 1;
9060 uint32_t clear_pending_bit31 : 1;
9061 } s;
9062 /* struct ody_gicrx_icpendr1e_s cn; */
9063 };
9064 typedef union ody_gicrx_icpendr1e ody_gicrx_icpendr1e_t;
9065
9066 static inline uint64_t ODY_GICRX_ICPENDR1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ICPENDR1E(uint64_t a)9067 static inline uint64_t ODY_GICRX_ICPENDR1E(uint64_t a)
9068 {
9069 if (a <= 81)
9070 return 0x801000090284ll + 0x40000ll * ((a) & 0x7f);
9071 __ody_csr_fatal("GICRX_ICPENDR1E", 1, a, 0, 0, 0, 0, 0);
9072 }
9073
9074 #define typedef_ODY_GICRX_ICPENDR1E(a) ody_gicrx_icpendr1e_t
9075 #define bustype_ODY_GICRX_ICPENDR1E(a) CSR_TYPE_NCB32b
9076 #define basename_ODY_GICRX_ICPENDR1E(a) "GICRX_ICPENDR1E"
9077 #define device_bar_ODY_GICRX_ICPENDR1E(a) 0x0 /* PF_BAR0 */
9078 #define busnum_ODY_GICRX_ICPENDR1E(a) (a)
9079 #define arguments_ODY_GICRX_ICPENDR1E(a) (a), -1, -1, -1
9080
9081 /**
9082 * Register (NCB32b) gicr#_ierrvr
9083 *
9084 * GICR Ierrvr Register
9085 * The GICR0_IERRVR characteristics are:
9086 *
9087 * This register is also referred to as GICR0_ICDERRR.
9088 *
9089 * * Purpose
9090 *
9091 * This register indicates that SGI programming has been corrupted in the SGI RAM in the distributor.
9092 * Software can use this register to acknowledge the error and enable reprogramming of
9093 * the affected SGIs
9094 *
9095 * * Usage constraints
9096 * Only accessible by Secure accesses or when GICD(A)_DS.DS === 1
9097 */
9098 union ody_gicrx_ierrvr {
9099 uint32_t u;
9100 struct ody_gicrx_ierrvr_s {
9101 uint32_t valid_bit0 : 1;
9102 uint32_t valid_bit1 : 1;
9103 uint32_t valid_bit2 : 1;
9104 uint32_t valid_bit3 : 1;
9105 uint32_t valid_bit4 : 1;
9106 uint32_t valid_bit5 : 1;
9107 uint32_t valid_bit6 : 1;
9108 uint32_t valid_bit7 : 1;
9109 uint32_t valid_bit8 : 1;
9110 uint32_t valid_bit9 : 1;
9111 uint32_t valid_bit10 : 1;
9112 uint32_t valid_bit11 : 1;
9113 uint32_t valid_bit12 : 1;
9114 uint32_t valid_bit13 : 1;
9115 uint32_t valid_bit14 : 1;
9116 uint32_t valid_bit15 : 1;
9117 uint32_t valid_bit16 : 1;
9118 uint32_t valid_bit17 : 1;
9119 uint32_t valid_bit18 : 1;
9120 uint32_t valid_bit19 : 1;
9121 uint32_t valid_bit20 : 1;
9122 uint32_t valid_bit21 : 1;
9123 uint32_t valid_bit22 : 1;
9124 uint32_t valid_bit23 : 1;
9125 uint32_t valid_bit24 : 1;
9126 uint32_t valid_bit25 : 1;
9127 uint32_t valid_bit26 : 1;
9128 uint32_t valid_bit27 : 1;
9129 uint32_t valid_bit28 : 1;
9130 uint32_t valid_bit29 : 1;
9131 uint32_t valid_bit30 : 1;
9132 uint32_t valid_bit31 : 1;
9133 } s;
9134 /* struct ody_gicrx_ierrvr_s cn; */
9135 };
9136 typedef union ody_gicrx_ierrvr ody_gicrx_ierrvr_t;
9137
9138 static inline uint64_t ODY_GICRX_IERRVR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IERRVR(uint64_t a)9139 static inline uint64_t ODY_GICRX_IERRVR(uint64_t a)
9140 {
9141 if (a <= 81)
9142 return 0x80100009c008ll + 0x40000ll * ((a) & 0x7f);
9143 __ody_csr_fatal("GICRX_IERRVR", 1, a, 0, 0, 0, 0, 0);
9144 }
9145
9146 #define typedef_ODY_GICRX_IERRVR(a) ody_gicrx_ierrvr_t
9147 #define bustype_ODY_GICRX_IERRVR(a) CSR_TYPE_NCB32b
9148 #define basename_ODY_GICRX_IERRVR(a) "GICRX_IERRVR"
9149 #define device_bar_ODY_GICRX_IERRVR(a) 0x0 /* PF_BAR0 */
9150 #define busnum_ODY_GICRX_IERRVR(a) (a)
9151 #define arguments_ODY_GICRX_IERRVR(a) (a), -1, -1, -1
9152
9153 /**
9154 * Register (NCB32b) gicr#_igroupr0
9155 *
9156 * GICR Igroupr0 Register
9157 * The GICR0_IGROUPR0 characteristics are:
9158 *
9159 * * Purpose
9160 * Controls whether the corresponding SGI (IDs 0-15) or PPI (16-31) is in Group 0 or Group 1.
9161 *
9162 * * Usage constraints
9163 * When GICD_CTLR.DS == 0, the register is RAZ/WI to Non-secure accesses.
9164 */
9165 union ody_gicrx_igroupr0 {
9166 uint32_t u;
9167 struct ody_gicrx_igroupr0_s {
9168 uint32_t group_status_bit0 : 1;
9169 uint32_t group_status_bit1 : 1;
9170 uint32_t group_status_bit2 : 1;
9171 uint32_t group_status_bit3 : 1;
9172 uint32_t group_status_bit4 : 1;
9173 uint32_t group_status_bit5 : 1;
9174 uint32_t group_status_bit6 : 1;
9175 uint32_t group_status_bit7 : 1;
9176 uint32_t group_status_bit8 : 1;
9177 uint32_t group_status_bit9 : 1;
9178 uint32_t group_status_bit10 : 1;
9179 uint32_t group_status_bit11 : 1;
9180 uint32_t group_status_bit12 : 1;
9181 uint32_t group_status_bit13 : 1;
9182 uint32_t group_status_bit14 : 1;
9183 uint32_t group_status_bit15 : 1;
9184 uint32_t group_status_bit16 : 1;
9185 uint32_t group_status_bit17 : 1;
9186 uint32_t group_status_bit18 : 1;
9187 uint32_t group_status_bit19 : 1;
9188 uint32_t group_status_bit20 : 1;
9189 uint32_t group_status_bit21 : 1;
9190 uint32_t group_status_bit22 : 1;
9191 uint32_t group_status_bit23 : 1;
9192 uint32_t group_status_bit24 : 1;
9193 uint32_t group_status_bit25 : 1;
9194 uint32_t group_status_bit26 : 1;
9195 uint32_t group_status_bit27 : 1;
9196 uint32_t group_status_bit28 : 1;
9197 uint32_t group_status_bit29 : 1;
9198 uint32_t group_status_bit30 : 1;
9199 uint32_t group_status_bit31 : 1;
9200 } s;
9201 /* struct ody_gicrx_igroupr0_s cn; */
9202 };
9203 typedef union ody_gicrx_igroupr0 ody_gicrx_igroupr0_t;
9204
9205 static inline uint64_t ODY_GICRX_IGROUPR0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IGROUPR0(uint64_t a)9206 static inline uint64_t ODY_GICRX_IGROUPR0(uint64_t a)
9207 {
9208 if (a <= 81)
9209 return 0x801000090080ll + 0x40000ll * ((a) & 0x7f);
9210 __ody_csr_fatal("GICRX_IGROUPR0", 1, a, 0, 0, 0, 0, 0);
9211 }
9212
9213 #define typedef_ODY_GICRX_IGROUPR0(a) ody_gicrx_igroupr0_t
9214 #define bustype_ODY_GICRX_IGROUPR0(a) CSR_TYPE_NCB32b
9215 #define basename_ODY_GICRX_IGROUPR0(a) "GICRX_IGROUPR0"
9216 #define device_bar_ODY_GICRX_IGROUPR0(a) 0x0 /* PF_BAR0 */
9217 #define busnum_ODY_GICRX_IGROUPR0(a) (a)
9218 #define arguments_ODY_GICRX_IGROUPR0(a) (a), -1, -1, -1
9219
9220 /**
9221 * Register (NCB32b) gicr#_igroupr1e
9222 *
9223 * GICR Igroupr1e Register
9224 * The GICR0_IGROUPR1E characteristics are:
9225 *
9226 * * Purpose
9227 * Controls whether the corresponding extended range PPI is in Group 0 or Group 1.
9228 *
9229 * * Usage constraints
9230 * When GICD_CTLR.DS == 0, the register is RAZ/WI to Non-secure accesses.
9231 */
9232 union ody_gicrx_igroupr1e {
9233 uint32_t u;
9234 struct ody_gicrx_igroupr1e_s {
9235 uint32_t group_status_bit0 : 1;
9236 uint32_t group_status_bit1 : 1;
9237 uint32_t group_status_bit2 : 1;
9238 uint32_t group_status_bit3 : 1;
9239 uint32_t group_status_bit4 : 1;
9240 uint32_t group_status_bit5 : 1;
9241 uint32_t group_status_bit6 : 1;
9242 uint32_t group_status_bit7 : 1;
9243 uint32_t group_status_bit8 : 1;
9244 uint32_t group_status_bit9 : 1;
9245 uint32_t group_status_bit10 : 1;
9246 uint32_t group_status_bit11 : 1;
9247 uint32_t group_status_bit12 : 1;
9248 uint32_t group_status_bit13 : 1;
9249 uint32_t group_status_bit14 : 1;
9250 uint32_t group_status_bit15 : 1;
9251 uint32_t group_status_bit16 : 1;
9252 uint32_t group_status_bit17 : 1;
9253 uint32_t group_status_bit18 : 1;
9254 uint32_t group_status_bit19 : 1;
9255 uint32_t group_status_bit20 : 1;
9256 uint32_t group_status_bit21 : 1;
9257 uint32_t group_status_bit22 : 1;
9258 uint32_t group_status_bit23 : 1;
9259 uint32_t group_status_bit24 : 1;
9260 uint32_t group_status_bit25 : 1;
9261 uint32_t group_status_bit26 : 1;
9262 uint32_t group_status_bit27 : 1;
9263 uint32_t group_status_bit28 : 1;
9264 uint32_t group_status_bit29 : 1;
9265 uint32_t group_status_bit30 : 1;
9266 uint32_t group_status_bit31 : 1;
9267 } s;
9268 /* struct ody_gicrx_igroupr1e_s cn; */
9269 };
9270 typedef union ody_gicrx_igroupr1e ody_gicrx_igroupr1e_t;
9271
9272 static inline uint64_t ODY_GICRX_IGROUPR1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IGROUPR1E(uint64_t a)9273 static inline uint64_t ODY_GICRX_IGROUPR1E(uint64_t a)
9274 {
9275 if (a <= 81)
9276 return 0x801000090084ll + 0x40000ll * ((a) & 0x7f);
9277 __ody_csr_fatal("GICRX_IGROUPR1E", 1, a, 0, 0, 0, 0, 0);
9278 }
9279
9280 #define typedef_ODY_GICRX_IGROUPR1E(a) ody_gicrx_igroupr1e_t
9281 #define bustype_ODY_GICRX_IGROUPR1E(a) CSR_TYPE_NCB32b
9282 #define basename_ODY_GICRX_IGROUPR1E(a) "GICRX_IGROUPR1E"
9283 #define device_bar_ODY_GICRX_IGROUPR1E(a) 0x0 /* PF_BAR0 */
9284 #define busnum_ODY_GICRX_IGROUPR1E(a) (a)
9285 #define arguments_ODY_GICRX_IGROUPR1E(a) (a), -1, -1, -1
9286
9287 /**
9288 * Register (NCB32b) gicr#_igrpmodr0
9289 *
9290 * GICR Igrpmodr0 Register
9291 * The GICR0_IGRPMODR0 characteristics are:
9292 *
9293 * * Purpose
9294 * When GICD_CTLR.DS==0, this register together with the GICR0_IGROUPR0 register, controls
9295 * whether the corresponding interrupt is in:
9296 *
9297 * * Secure Group 0.
9298 * * Non-secure Group 1.
9299 * * Secure Group 1.
9300 *
9301 * * Usage constraints
9302 *
9303 * When GICD(A)_CTLR.DS==0, the register is RAZ/WI to Non-secure accesses.
9304 * When GICD(A)_CTLR.DS==1, the GICR0_IGRPMODR registers are RAZ/WI.
9305 */
9306 union ody_gicrx_igrpmodr0 {
9307 uint32_t u;
9308 struct ody_gicrx_igrpmodr0_s {
9309 uint32_t group_modifier_bit0 : 1;
9310 uint32_t group_modifier_bit1 : 1;
9311 uint32_t group_modifier_bit2 : 1;
9312 uint32_t group_modifier_bit3 : 1;
9313 uint32_t group_modifier_bit4 : 1;
9314 uint32_t group_modifier_bit5 : 1;
9315 uint32_t group_modifier_bit6 : 1;
9316 uint32_t group_modifier_bit7 : 1;
9317 uint32_t group_modifier_bit8 : 1;
9318 uint32_t group_modifier_bit9 : 1;
9319 uint32_t group_modifier_bit10 : 1;
9320 uint32_t group_modifier_bit11 : 1;
9321 uint32_t group_modifier_bit12 : 1;
9322 uint32_t group_modifier_bit13 : 1;
9323 uint32_t group_modifier_bit14 : 1;
9324 uint32_t group_modifier_bit15 : 1;
9325 uint32_t group_modifier_bit16 : 1;
9326 uint32_t group_modifier_bit17 : 1;
9327 uint32_t group_modifier_bit18 : 1;
9328 uint32_t group_modifier_bit19 : 1;
9329 uint32_t group_modifier_bit20 : 1;
9330 uint32_t group_modifier_bit21 : 1;
9331 uint32_t group_modifier_bit22 : 1;
9332 uint32_t group_modifier_bit23 : 1;
9333 uint32_t group_modifier_bit24 : 1;
9334 uint32_t group_modifier_bit25 : 1;
9335 uint32_t group_modifier_bit26 : 1;
9336 uint32_t group_modifier_bit27 : 1;
9337 uint32_t group_modifier_bit28 : 1;
9338 uint32_t group_modifier_bit29 : 1;
9339 uint32_t group_modifier_bit30 : 1;
9340 uint32_t group_modifier_bit31 : 1;
9341 } s;
9342 /* struct ody_gicrx_igrpmodr0_s cn; */
9343 };
9344 typedef union ody_gicrx_igrpmodr0 ody_gicrx_igrpmodr0_t;
9345
9346 static inline uint64_t ODY_GICRX_IGRPMODR0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IGRPMODR0(uint64_t a)9347 static inline uint64_t ODY_GICRX_IGRPMODR0(uint64_t a)
9348 {
9349 if (a <= 81)
9350 return 0x801000090d00ll + 0x40000ll * ((a) & 0x7f);
9351 __ody_csr_fatal("GICRX_IGRPMODR0", 1, a, 0, 0, 0, 0, 0);
9352 }
9353
9354 #define typedef_ODY_GICRX_IGRPMODR0(a) ody_gicrx_igrpmodr0_t
9355 #define bustype_ODY_GICRX_IGRPMODR0(a) CSR_TYPE_NCB32b
9356 #define basename_ODY_GICRX_IGRPMODR0(a) "GICRX_IGRPMODR0"
9357 #define device_bar_ODY_GICRX_IGRPMODR0(a) 0x0 /* PF_BAR0 */
9358 #define busnum_ODY_GICRX_IGRPMODR0(a) (a)
9359 #define arguments_ODY_GICRX_IGRPMODR0(a) (a), -1, -1, -1
9360
9361 /**
9362 * Register (NCB32b) gicr#_igrpmodr1e
9363 *
9364 * GICR Igrpmodr1e Register
9365 * The GICR0_IGRPMODR1E characteristics are:
9366 *
9367 * * Purpose
9368 * When GICD_CTLR.DS==0, this register together with the GICR0_IGROUPR1E register, controls
9369 * whether the corresponding interrupt is in:
9370 *
9371 * * Secure Group 0.
9372 * * Non-secure Group 1.
9373 * * When System register access is enabled, Secure Group 1.
9374 *
9375 * * Usage constraints
9376 *
9377 * When GICD(A)_CTLR.DS==0, the register is RAZ/WI to Non-secure accesses.
9378 * When GICD(A)_CTLR.DS==1, the GICR0_IGRPMODR registers are RAZ/WI.
9379 */
9380 union ody_gicrx_igrpmodr1e {
9381 uint32_t u;
9382 struct ody_gicrx_igrpmodr1e_s {
9383 uint32_t group_modifier_bit0 : 1;
9384 uint32_t group_modifier_bit1 : 1;
9385 uint32_t group_modifier_bit2 : 1;
9386 uint32_t group_modifier_bit3 : 1;
9387 uint32_t group_modifier_bit4 : 1;
9388 uint32_t group_modifier_bit5 : 1;
9389 uint32_t group_modifier_bit6 : 1;
9390 uint32_t group_modifier_bit7 : 1;
9391 uint32_t group_modifier_bit8 : 1;
9392 uint32_t group_modifier_bit9 : 1;
9393 uint32_t group_modifier_bit10 : 1;
9394 uint32_t group_modifier_bit11 : 1;
9395 uint32_t group_modifier_bit12 : 1;
9396 uint32_t group_modifier_bit13 : 1;
9397 uint32_t group_modifier_bit14 : 1;
9398 uint32_t group_modifier_bit15 : 1;
9399 uint32_t group_modifier_bit16 : 1;
9400 uint32_t group_modifier_bit17 : 1;
9401 uint32_t group_modifier_bit18 : 1;
9402 uint32_t group_modifier_bit19 : 1;
9403 uint32_t group_modifier_bit20 : 1;
9404 uint32_t group_modifier_bit21 : 1;
9405 uint32_t group_modifier_bit22 : 1;
9406 uint32_t group_modifier_bit23 : 1;
9407 uint32_t group_modifier_bit24 : 1;
9408 uint32_t group_modifier_bit25 : 1;
9409 uint32_t group_modifier_bit26 : 1;
9410 uint32_t group_modifier_bit27 : 1;
9411 uint32_t group_modifier_bit28 : 1;
9412 uint32_t group_modifier_bit29 : 1;
9413 uint32_t group_modifier_bit30 : 1;
9414 uint32_t group_modifier_bit31 : 1;
9415 } s;
9416 /* struct ody_gicrx_igrpmodr1e_s cn; */
9417 };
9418 typedef union ody_gicrx_igrpmodr1e ody_gicrx_igrpmodr1e_t;
9419
9420 static inline uint64_t ODY_GICRX_IGRPMODR1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IGRPMODR1E(uint64_t a)9421 static inline uint64_t ODY_GICRX_IGRPMODR1E(uint64_t a)
9422 {
9423 if (a <= 81)
9424 return 0x801000090d04ll + 0x40000ll * ((a) & 0x7f);
9425 __ody_csr_fatal("GICRX_IGRPMODR1E", 1, a, 0, 0, 0, 0, 0);
9426 }
9427
9428 #define typedef_ODY_GICRX_IGRPMODR1E(a) ody_gicrx_igrpmodr1e_t
9429 #define bustype_ODY_GICRX_IGRPMODR1E(a) CSR_TYPE_NCB32b
9430 #define basename_ODY_GICRX_IGRPMODR1E(a) "GICRX_IGRPMODR1E"
9431 #define device_bar_ODY_GICRX_IGRPMODR1E(a) 0x0 /* PF_BAR0 */
9432 #define busnum_ODY_GICRX_IGRPMODR1E(a) (a)
9433 #define arguments_ODY_GICRX_IGRPMODR1E(a) (a), -1, -1, -1
9434
9435 /**
9436 * Register (NCB32b) gicr#_iidr
9437 *
9438 * GICR Iidr Register
9439 * The GICR0_IIDR characteristics are:
9440 *
9441 * * Purpose
9442 * Provides information about the implementer and revision of the Redistributor.
9443 *
9444 * * Usage constraints
9445 * There are no usage constraints.
9446 */
9447 union ody_gicrx_iidr {
9448 uint32_t u;
9449 struct ody_gicrx_iidr_s {
9450 uint32_t implementer : 12;
9451 uint32_t revision : 4;
9452 uint32_t variant : 4;
9453 uint32_t reserved_20_23 : 4;
9454 uint32_t productid : 8;
9455 } s;
9456 /* struct ody_gicrx_iidr_s cn; */
9457 };
9458 typedef union ody_gicrx_iidr ody_gicrx_iidr_t;
9459
9460 static inline uint64_t ODY_GICRX_IIDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IIDR(uint64_t a)9461 static inline uint64_t ODY_GICRX_IIDR(uint64_t a)
9462 {
9463 if (a <= 81)
9464 return 0x801000080004ll + 0x40000ll * ((a) & 0x7f);
9465 __ody_csr_fatal("GICRX_IIDR", 1, a, 0, 0, 0, 0, 0);
9466 }
9467
9468 #define typedef_ODY_GICRX_IIDR(a) ody_gicrx_iidr_t
9469 #define bustype_ODY_GICRX_IIDR(a) CSR_TYPE_NCB32b
9470 #define basename_ODY_GICRX_IIDR(a) "GICRX_IIDR"
9471 #define device_bar_ODY_GICRX_IIDR(a) 0x0 /* PF_BAR0 */
9472 #define busnum_ODY_GICRX_IIDR(a) (a)
9473 #define arguments_ODY_GICRX_IIDR(a) (a), -1, -1, -1
9474
9475 /**
9476 * Register (NCB) gicr#_invallr
9477 *
9478 * GICR Invallr Register
9479 * The GICRR0_INVALLR characteristics are:
9480 *
9481 * * Purpose
9482 * Invalidates the cached configuration data of all Physical or Virtual LPIs on a PE or vPE
9483 *
9484 * * Usage constraints
9485 * When written with a 32-bit write to the lower half, the data is zero-extended to 64 bits.
9486 * 32-bit accesses to the upper half are not supported.
9487 *
9488 * A copy of this register is provided for each Redistributor.
9489 */
9490 union ody_gicrx_invallr {
9491 uint64_t u;
9492 struct ody_gicrx_invallr_s {
9493 uint64_t reserved_0_31 : 32;
9494 uint64_t vpeid : 16;
9495 uint64_t reserved_48_62 : 15;
9496 uint64_t v : 1;
9497 } s;
9498 /* struct ody_gicrx_invallr_s cn; */
9499 };
9500 typedef union ody_gicrx_invallr ody_gicrx_invallr_t;
9501
9502 static inline uint64_t ODY_GICRX_INVALLR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_INVALLR(uint64_t a)9503 static inline uint64_t ODY_GICRX_INVALLR(uint64_t a)
9504 {
9505 if (a <= 81)
9506 return 0x8010000800b0ll + 0x40000ll * ((a) & 0x7f);
9507 __ody_csr_fatal("GICRX_INVALLR", 1, a, 0, 0, 0, 0, 0);
9508 }
9509
9510 #define typedef_ODY_GICRX_INVALLR(a) ody_gicrx_invallr_t
9511 #define bustype_ODY_GICRX_INVALLR(a) CSR_TYPE_NCB
9512 #define basename_ODY_GICRX_INVALLR(a) "GICRX_INVALLR"
9513 #define device_bar_ODY_GICRX_INVALLR(a) 0x0 /* PF_BAR0 */
9514 #define busnum_ODY_GICRX_INVALLR(a) (a)
9515 #define arguments_ODY_GICRX_INVALLR(a) (a), -1, -1, -1
9516
9517 /**
9518 * Register (NCB) gicr#_invlpir
9519 *
9520 * GICR Invlpir Register
9521 * The GICR0_INVLPIR characteristics are:
9522 *
9523 * * Purpose
9524 * Invalidates the cached configuration data of a specified LPI
9525 *
9526 * * Usage constraints
9527 * When written with a 32-bit write to the lower half, the data is zero-extended to 64 bits.
9528 * 32-bit accesses to the upper half are not supported.
9529 *
9530 * A copy of this register is provided for each Redistributor.
9531 */
9532 union ody_gicrx_invlpir {
9533 uint64_t u;
9534 struct ody_gicrx_invlpir_s {
9535 uint64_t intid : 32;
9536 uint64_t vpeid : 16;
9537 uint64_t reserved_48_62 : 15;
9538 uint64_t v : 1;
9539 } s;
9540 /* struct ody_gicrx_invlpir_s cn; */
9541 };
9542 typedef union ody_gicrx_invlpir ody_gicrx_invlpir_t;
9543
9544 static inline uint64_t ODY_GICRX_INVLPIR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_INVLPIR(uint64_t a)9545 static inline uint64_t ODY_GICRX_INVLPIR(uint64_t a)
9546 {
9547 if (a <= 81)
9548 return 0x8010000800a0ll + 0x40000ll * ((a) & 0x7f);
9549 __ody_csr_fatal("GICRX_INVLPIR", 1, a, 0, 0, 0, 0, 0);
9550 }
9551
9552 #define typedef_ODY_GICRX_INVLPIR(a) ody_gicrx_invlpir_t
9553 #define bustype_ODY_GICRX_INVLPIR(a) CSR_TYPE_NCB
9554 #define basename_ODY_GICRX_INVLPIR(a) "GICRX_INVLPIR"
9555 #define device_bar_ODY_GICRX_INVLPIR(a) 0x0 /* PF_BAR0 */
9556 #define busnum_ODY_GICRX_INVLPIR(a) (a)
9557 #define arguments_ODY_GICRX_INVLPIR(a) (a), -1, -1, -1
9558
9559 /**
9560 * Register (NCB32b) gicr#_ipriorityr10e
9561 *
9562 * GICR Ipriorityr10e Register
9563 * The GICR0_IPRIORITYR10E characteristics are:
9564 *
9565 * * Purpose
9566 * Holds the priority of the corresponding interrupt for extended range PPI IDs 1064-1067.
9567 *
9568 * * Usage constraints
9569 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9570 * 1 interrupt is RAZ/WI to Non-secure accesses.
9571 *
9572 * These registers are byte-accessible.
9573 *
9574 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9575 */
9576 union ody_gicrx_ipriorityr10e {
9577 uint32_t u;
9578 struct ody_gicrx_ipriorityr10e_s {
9579 uint32_t offset0 : 8;
9580 uint32_t offset1 : 8;
9581 uint32_t offset2 : 8;
9582 uint32_t offset3 : 8;
9583 } s;
9584 /* struct ody_gicrx_ipriorityr10e_s cn; */
9585 };
9586 typedef union ody_gicrx_ipriorityr10e ody_gicrx_ipriorityr10e_t;
9587
9588 static inline uint64_t ODY_GICRX_IPRIORITYR10E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR10E(uint64_t a)9589 static inline uint64_t ODY_GICRX_IPRIORITYR10E(uint64_t a)
9590 {
9591 if (a <= 81)
9592 return 0x801000090428ll + 0x40000ll * ((a) & 0x7f);
9593 __ody_csr_fatal("GICRX_IPRIORITYR10E", 1, a, 0, 0, 0, 0, 0);
9594 }
9595
9596 #define typedef_ODY_GICRX_IPRIORITYR10E(a) ody_gicrx_ipriorityr10e_t
9597 #define bustype_ODY_GICRX_IPRIORITYR10E(a) CSR_TYPE_NCB32b
9598 #define basename_ODY_GICRX_IPRIORITYR10E(a) "GICRX_IPRIORITYR10E"
9599 #define device_bar_ODY_GICRX_IPRIORITYR10E(a) 0x0 /* PF_BAR0 */
9600 #define busnum_ODY_GICRX_IPRIORITYR10E(a) (a)
9601 #define arguments_ODY_GICRX_IPRIORITYR10E(a) (a), -1, -1, -1
9602
9603 /**
9604 * Register (NCB32b) gicr#_ipriorityr11e
9605 *
9606 * GICR Ipriorityr11e Register
9607 * The GICR0_IPRIORITYR11E characteristics are:
9608 *
9609 * * Purpose
9610 * Holds the priority of the corresponding interrupt for extended range PPI IDs 1068-1071.
9611 *
9612 * * Usage constraints
9613 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9614 * 1 interrupt is RAZ/WI to Non-secure accesses.
9615 *
9616 * These registers are byte-accessible.
9617 *
9618 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9619 */
9620 union ody_gicrx_ipriorityr11e {
9621 uint32_t u;
9622 struct ody_gicrx_ipriorityr11e_s {
9623 uint32_t offset0 : 8;
9624 uint32_t offset1 : 8;
9625 uint32_t offset2 : 8;
9626 uint32_t offset3 : 8;
9627 } s;
9628 /* struct ody_gicrx_ipriorityr11e_s cn; */
9629 };
9630 typedef union ody_gicrx_ipriorityr11e ody_gicrx_ipriorityr11e_t;
9631
9632 static inline uint64_t ODY_GICRX_IPRIORITYR11E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR11E(uint64_t a)9633 static inline uint64_t ODY_GICRX_IPRIORITYR11E(uint64_t a)
9634 {
9635 if (a <= 81)
9636 return 0x80100009042cll + 0x40000ll * ((a) & 0x7f);
9637 __ody_csr_fatal("GICRX_IPRIORITYR11E", 1, a, 0, 0, 0, 0, 0);
9638 }
9639
9640 #define typedef_ODY_GICRX_IPRIORITYR11E(a) ody_gicrx_ipriorityr11e_t
9641 #define bustype_ODY_GICRX_IPRIORITYR11E(a) CSR_TYPE_NCB32b
9642 #define basename_ODY_GICRX_IPRIORITYR11E(a) "GICRX_IPRIORITYR11E"
9643 #define device_bar_ODY_GICRX_IPRIORITYR11E(a) 0x0 /* PF_BAR0 */
9644 #define busnum_ODY_GICRX_IPRIORITYR11E(a) (a)
9645 #define arguments_ODY_GICRX_IPRIORITYR11E(a) (a), -1, -1, -1
9646
9647 /**
9648 * Register (NCB32b) gicr#_ipriorityr12e
9649 *
9650 * GICR Ipriorityr12e Register
9651 * The GICR0_IPRIORITYR12E characteristics are:
9652 *
9653 * * Purpose
9654 *
9655 * Holds the priority of the corresponding interrupt for extended range PPI IDs 1072-1075.
9656 *
9657 * * Usage constraints
9658 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9659 * 1 interrupt is RAZ/WI to Non-secure accesses.
9660 *
9661 * These registers are byte-accessible.
9662 *
9663 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9664 */
9665 union ody_gicrx_ipriorityr12e {
9666 uint32_t u;
9667 struct ody_gicrx_ipriorityr12e_s {
9668 uint32_t offset0 : 8;
9669 uint32_t offset1 : 8;
9670 uint32_t offset2 : 8;
9671 uint32_t offset3 : 8;
9672 } s;
9673 /* struct ody_gicrx_ipriorityr12e_s cn; */
9674 };
9675 typedef union ody_gicrx_ipriorityr12e ody_gicrx_ipriorityr12e_t;
9676
9677 static inline uint64_t ODY_GICRX_IPRIORITYR12E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR12E(uint64_t a)9678 static inline uint64_t ODY_GICRX_IPRIORITYR12E(uint64_t a)
9679 {
9680 if (a <= 81)
9681 return 0x801000090430ll + 0x40000ll * ((a) & 0x7f);
9682 __ody_csr_fatal("GICRX_IPRIORITYR12E", 1, a, 0, 0, 0, 0, 0);
9683 }
9684
9685 #define typedef_ODY_GICRX_IPRIORITYR12E(a) ody_gicrx_ipriorityr12e_t
9686 #define bustype_ODY_GICRX_IPRIORITYR12E(a) CSR_TYPE_NCB32b
9687 #define basename_ODY_GICRX_IPRIORITYR12E(a) "GICRX_IPRIORITYR12E"
9688 #define device_bar_ODY_GICRX_IPRIORITYR12E(a) 0x0 /* PF_BAR0 */
9689 #define busnum_ODY_GICRX_IPRIORITYR12E(a) (a)
9690 #define arguments_ODY_GICRX_IPRIORITYR12E(a) (a), -1, -1, -1
9691
9692 /**
9693 * Register (NCB32b) gicr#_ipriorityr13e
9694 *
9695 * GICR Ipriorityr13e Register
9696 * The GICR0_IPRIORITYR13E characteristics are:
9697 *
9698 * * Purpose
9699 *
9700 * Holds the priority of the corresponding interrupt for extended range PPI IDs 1076-1079.
9701 *
9702 * * Usage constraints
9703 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9704 * 1 interrupt is RAZ/WI to Non-secure accesses.
9705 *
9706 * These registers are byte-accessible.
9707 *
9708 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9709 */
9710 union ody_gicrx_ipriorityr13e {
9711 uint32_t u;
9712 struct ody_gicrx_ipriorityr13e_s {
9713 uint32_t offset0 : 8;
9714 uint32_t offset1 : 8;
9715 uint32_t offset2 : 8;
9716 uint32_t offset3 : 8;
9717 } s;
9718 /* struct ody_gicrx_ipriorityr13e_s cn; */
9719 };
9720 typedef union ody_gicrx_ipriorityr13e ody_gicrx_ipriorityr13e_t;
9721
9722 static inline uint64_t ODY_GICRX_IPRIORITYR13E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR13E(uint64_t a)9723 static inline uint64_t ODY_GICRX_IPRIORITYR13E(uint64_t a)
9724 {
9725 if (a <= 81)
9726 return 0x801000090434ll + 0x40000ll * ((a) & 0x7f);
9727 __ody_csr_fatal("GICRX_IPRIORITYR13E", 1, a, 0, 0, 0, 0, 0);
9728 }
9729
9730 #define typedef_ODY_GICRX_IPRIORITYR13E(a) ody_gicrx_ipriorityr13e_t
9731 #define bustype_ODY_GICRX_IPRIORITYR13E(a) CSR_TYPE_NCB32b
9732 #define basename_ODY_GICRX_IPRIORITYR13E(a) "GICRX_IPRIORITYR13E"
9733 #define device_bar_ODY_GICRX_IPRIORITYR13E(a) 0x0 /* PF_BAR0 */
9734 #define busnum_ODY_GICRX_IPRIORITYR13E(a) (a)
9735 #define arguments_ODY_GICRX_IPRIORITYR13E(a) (a), -1, -1, -1
9736
9737 /**
9738 * Register (NCB32b) gicr#_ipriorityr14e
9739 *
9740 * GICR Ipriorityr14e Register
9741 * The GICR0_IPRIORITYR14E characteristics are:
9742 *
9743 * * Purpose
9744 *
9745 * Holds the priority of the corresponding interrupt for extended range PPI IDs 1080-1083.
9746 *
9747 * * Usage constraints
9748 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9749 * 1 interrupt is RAZ/WI to Non-secure accesses.
9750 *
9751 * These registers are byte-accessible.
9752 *
9753 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9754 */
9755 union ody_gicrx_ipriorityr14e {
9756 uint32_t u;
9757 struct ody_gicrx_ipriorityr14e_s {
9758 uint32_t offset0 : 8;
9759 uint32_t offset1 : 8;
9760 uint32_t offset2 : 8;
9761 uint32_t offset3 : 8;
9762 } s;
9763 /* struct ody_gicrx_ipriorityr14e_s cn; */
9764 };
9765 typedef union ody_gicrx_ipriorityr14e ody_gicrx_ipriorityr14e_t;
9766
9767 static inline uint64_t ODY_GICRX_IPRIORITYR14E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR14E(uint64_t a)9768 static inline uint64_t ODY_GICRX_IPRIORITYR14E(uint64_t a)
9769 {
9770 if (a <= 81)
9771 return 0x801000090438ll + 0x40000ll * ((a) & 0x7f);
9772 __ody_csr_fatal("GICRX_IPRIORITYR14E", 1, a, 0, 0, 0, 0, 0);
9773 }
9774
9775 #define typedef_ODY_GICRX_IPRIORITYR14E(a) ody_gicrx_ipriorityr14e_t
9776 #define bustype_ODY_GICRX_IPRIORITYR14E(a) CSR_TYPE_NCB32b
9777 #define basename_ODY_GICRX_IPRIORITYR14E(a) "GICRX_IPRIORITYR14E"
9778 #define device_bar_ODY_GICRX_IPRIORITYR14E(a) 0x0 /* PF_BAR0 */
9779 #define busnum_ODY_GICRX_IPRIORITYR14E(a) (a)
9780 #define arguments_ODY_GICRX_IPRIORITYR14E(a) (a), -1, -1, -1
9781
9782 /**
9783 * Register (NCB32b) gicr#_ipriorityr15e
9784 *
9785 * GICR Ipriorityr15e Register
9786 * The GICR0_IPRIORITYR15E characteristics are:
9787 *
9788 * * Purpose
9789 *
9790 * Holds the priority of the corresponding interrupt for extended range PPI IDs 1084-1087.
9791 *
9792 * * Usage constraints
9793 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9794 * 1 interrupt is RAZ/WI to Non-secure accesses.
9795 *
9796 * These registers are byte-accessible.
9797 *
9798 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9799 */
9800 union ody_gicrx_ipriorityr15e {
9801 uint32_t u;
9802 struct ody_gicrx_ipriorityr15e_s {
9803 uint32_t offset0 : 8;
9804 uint32_t offset1 : 8;
9805 uint32_t offset2 : 8;
9806 uint32_t offset3 : 8;
9807 } s;
9808 /* struct ody_gicrx_ipriorityr15e_s cn; */
9809 };
9810 typedef union ody_gicrx_ipriorityr15e ody_gicrx_ipriorityr15e_t;
9811
9812 static inline uint64_t ODY_GICRX_IPRIORITYR15E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR15E(uint64_t a)9813 static inline uint64_t ODY_GICRX_IPRIORITYR15E(uint64_t a)
9814 {
9815 if (a <= 81)
9816 return 0x80100009043cll + 0x40000ll * ((a) & 0x7f);
9817 __ody_csr_fatal("GICRX_IPRIORITYR15E", 1, a, 0, 0, 0, 0, 0);
9818 }
9819
9820 #define typedef_ODY_GICRX_IPRIORITYR15E(a) ody_gicrx_ipriorityr15e_t
9821 #define bustype_ODY_GICRX_IPRIORITYR15E(a) CSR_TYPE_NCB32b
9822 #define basename_ODY_GICRX_IPRIORITYR15E(a) "GICRX_IPRIORITYR15E"
9823 #define device_bar_ODY_GICRX_IPRIORITYR15E(a) 0x0 /* PF_BAR0 */
9824 #define busnum_ODY_GICRX_IPRIORITYR15E(a) (a)
9825 #define arguments_ODY_GICRX_IPRIORITYR15E(a) (a), -1, -1, -1
9826
9827 /**
9828 * Register (NCB32b) gicr#_ipriorityr8e
9829 *
9830 * GICR Ipriorityr8e Register
9831 * The GICR0_IPRIORITYR8E characteristics are:
9832 *
9833 * * Purpose
9834 * Holds the priority of the corresponding interrupt for extended range PPI IDs 1056-1059.
9835 *
9836 * * Usage constraints
9837 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9838 * 1 interrupt is RAZ/WI to Non-secure accesses.
9839 *
9840 * These registers are byte-accessible.
9841 *
9842 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9843 */
9844 union ody_gicrx_ipriorityr8e {
9845 uint32_t u;
9846 struct ody_gicrx_ipriorityr8e_s {
9847 uint32_t offset0 : 8;
9848 uint32_t offset1 : 8;
9849 uint32_t offset2 : 8;
9850 uint32_t offset3 : 8;
9851 } s;
9852 /* struct ody_gicrx_ipriorityr8e_s cn; */
9853 };
9854 typedef union ody_gicrx_ipriorityr8e ody_gicrx_ipriorityr8e_t;
9855
9856 static inline uint64_t ODY_GICRX_IPRIORITYR8E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR8E(uint64_t a)9857 static inline uint64_t ODY_GICRX_IPRIORITYR8E(uint64_t a)
9858 {
9859 if (a <= 81)
9860 return 0x801000090420ll + 0x40000ll * ((a) & 0x7f);
9861 __ody_csr_fatal("GICRX_IPRIORITYR8E", 1, a, 0, 0, 0, 0, 0);
9862 }
9863
9864 #define typedef_ODY_GICRX_IPRIORITYR8E(a) ody_gicrx_ipriorityr8e_t
9865 #define bustype_ODY_GICRX_IPRIORITYR8E(a) CSR_TYPE_NCB32b
9866 #define basename_ODY_GICRX_IPRIORITYR8E(a) "GICRX_IPRIORITYR8E"
9867 #define device_bar_ODY_GICRX_IPRIORITYR8E(a) 0x0 /* PF_BAR0 */
9868 #define busnum_ODY_GICRX_IPRIORITYR8E(a) (a)
9869 #define arguments_ODY_GICRX_IPRIORITYR8E(a) (a), -1, -1, -1
9870
9871 /**
9872 * Register (NCB32b) gicr#_ipriorityr9e
9873 *
9874 * GICR Ipriorityr9e Register
9875 * The GICR0_IPRIORITYR9E characteristics are:
9876 *
9877 * * Purpose
9878 * Holds the priority of the corresponding interrupt for extended range PPI IDs 1060-1063.
9879 *
9880 * * Usage constraints
9881 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9882 * 1 interrupt is RAZ/WI to Non-secure accesses.
9883 *
9884 * These registers are byte-accessible.
9885 *
9886 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9887 */
9888 union ody_gicrx_ipriorityr9e {
9889 uint32_t u;
9890 struct ody_gicrx_ipriorityr9e_s {
9891 uint32_t offset0 : 8;
9892 uint32_t offset1 : 8;
9893 uint32_t offset2 : 8;
9894 uint32_t offset3 : 8;
9895 } s;
9896 /* struct ody_gicrx_ipriorityr9e_s cn; */
9897 };
9898 typedef union ody_gicrx_ipriorityr9e ody_gicrx_ipriorityr9e_t;
9899
9900 static inline uint64_t ODY_GICRX_IPRIORITYR9E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR9E(uint64_t a)9901 static inline uint64_t ODY_GICRX_IPRIORITYR9E(uint64_t a)
9902 {
9903 if (a <= 81)
9904 return 0x801000090424ll + 0x40000ll * ((a) & 0x7f);
9905 __ody_csr_fatal("GICRX_IPRIORITYR9E", 1, a, 0, 0, 0, 0, 0);
9906 }
9907
9908 #define typedef_ODY_GICRX_IPRIORITYR9E(a) ody_gicrx_ipriorityr9e_t
9909 #define bustype_ODY_GICRX_IPRIORITYR9E(a) CSR_TYPE_NCB32b
9910 #define basename_ODY_GICRX_IPRIORITYR9E(a) "GICRX_IPRIORITYR9E"
9911 #define device_bar_ODY_GICRX_IPRIORITYR9E(a) 0x0 /* PF_BAR0 */
9912 #define busnum_ODY_GICRX_IPRIORITYR9E(a) (a)
9913 #define arguments_ODY_GICRX_IPRIORITYR9E(a) (a), -1, -1, -1
9914
9915 /**
9916 * Register (NCB32b) gicr#_ipriorityr_0
9917 *
9918 * GICR Ipriorityr0 Register
9919 * The GICR0_IPRIORITYR0 characteristics are:
9920 *
9921 * * Purpose
9922 * Holds the priority of the corresponding interrupt for SGIs 0-3.
9923 *
9924 * * Usage constraints
9925 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9926 * 1 interrupt is RAZ/WI to Non-secure accesses.
9927 *
9928 * These registers are byte-accessible.
9929 *
9930 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9931 */
9932 union ody_gicrx_ipriorityr_0 {
9933 uint32_t u;
9934 struct ody_gicrx_ipriorityr_0_s {
9935 uint32_t offset0 : 8;
9936 uint32_t offset1 : 8;
9937 uint32_t offset2 : 8;
9938 uint32_t offset3 : 8;
9939 } s;
9940 /* struct ody_gicrx_ipriorityr_0_s cn; */
9941 };
9942 typedef union ody_gicrx_ipriorityr_0 ody_gicrx_ipriorityr_0_t;
9943
9944 static inline uint64_t ODY_GICRX_IPRIORITYR_0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR_0(uint64_t a)9945 static inline uint64_t ODY_GICRX_IPRIORITYR_0(uint64_t a)
9946 {
9947 if (a <= 81)
9948 return 0x801000090400ll + 0x40000ll * ((a) & 0x7f);
9949 __ody_csr_fatal("GICRX_IPRIORITYR_0", 1, a, 0, 0, 0, 0, 0);
9950 }
9951
9952 #define typedef_ODY_GICRX_IPRIORITYR_0(a) ody_gicrx_ipriorityr_0_t
9953 #define bustype_ODY_GICRX_IPRIORITYR_0(a) CSR_TYPE_NCB32b
9954 #define basename_ODY_GICRX_IPRIORITYR_0(a) "GICRX_IPRIORITYR_0"
9955 #define device_bar_ODY_GICRX_IPRIORITYR_0(a) 0x0 /* PF_BAR0 */
9956 #define busnum_ODY_GICRX_IPRIORITYR_0(a) (a)
9957 #define arguments_ODY_GICRX_IPRIORITYR_0(a) (a), -1, -1, -1
9958
9959 /**
9960 * Register (NCB32b) gicr#_ipriorityr_1
9961 *
9962 * GICR Ipriorityr1 Register
9963 * The GICR0_IPRIORITYR1 characteristics are:
9964 *
9965 * * Purpose
9966 * Holds the priority of the corresponding interrupt for SGIs 4-7.
9967 *
9968 * * Usage constraints
9969 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
9970 * 1 interrupt is RAZ/WI to Non-secure accesses.
9971 *
9972 * These registers are byte-accessible.
9973 *
9974 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
9975 */
9976 union ody_gicrx_ipriorityr_1 {
9977 uint32_t u;
9978 struct ody_gicrx_ipriorityr_1_s {
9979 uint32_t offset0 : 8;
9980 uint32_t offset1 : 8;
9981 uint32_t offset2 : 8;
9982 uint32_t offset3 : 8;
9983 } s;
9984 /* struct ody_gicrx_ipriorityr_1_s cn; */
9985 };
9986 typedef union ody_gicrx_ipriorityr_1 ody_gicrx_ipriorityr_1_t;
9987
9988 static inline uint64_t ODY_GICRX_IPRIORITYR_1(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR_1(uint64_t a)9989 static inline uint64_t ODY_GICRX_IPRIORITYR_1(uint64_t a)
9990 {
9991 if (a <= 81)
9992 return 0x801000090404ll + 0x40000ll * ((a) & 0x7f);
9993 __ody_csr_fatal("GICRX_IPRIORITYR_1", 1, a, 0, 0, 0, 0, 0);
9994 }
9995
9996 #define typedef_ODY_GICRX_IPRIORITYR_1(a) ody_gicrx_ipriorityr_1_t
9997 #define bustype_ODY_GICRX_IPRIORITYR_1(a) CSR_TYPE_NCB32b
9998 #define basename_ODY_GICRX_IPRIORITYR_1(a) "GICRX_IPRIORITYR_1"
9999 #define device_bar_ODY_GICRX_IPRIORITYR_1(a) 0x0 /* PF_BAR0 */
10000 #define busnum_ODY_GICRX_IPRIORITYR_1(a) (a)
10001 #define arguments_ODY_GICRX_IPRIORITYR_1(a) (a), -1, -1, -1
10002
10003 /**
10004 * Register (NCB32b) gicr#_ipriorityr_2
10005 *
10006 * GICR Ipriorityr2 Register
10007 * The GICR0_IPRIORITYR2 characteristics are:
10008 *
10009 * * Purpose
10010 * Holds the priority of the corresponding interrupt for SGIs 8-11.
10011 *
10012 * * Usage constraints
10013 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
10014 * 1 interrupt is RAZ/WI to Non-secure accesses.
10015 *
10016 * These registers are byte-accessible.
10017 *
10018 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
10019 */
10020 union ody_gicrx_ipriorityr_2 {
10021 uint32_t u;
10022 struct ody_gicrx_ipriorityr_2_s {
10023 uint32_t offset0 : 8;
10024 uint32_t offset1 : 8;
10025 uint32_t offset2 : 8;
10026 uint32_t offset3 : 8;
10027 } s;
10028 /* struct ody_gicrx_ipriorityr_2_s cn; */
10029 };
10030 typedef union ody_gicrx_ipriorityr_2 ody_gicrx_ipriorityr_2_t;
10031
10032 static inline uint64_t ODY_GICRX_IPRIORITYR_2(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR_2(uint64_t a)10033 static inline uint64_t ODY_GICRX_IPRIORITYR_2(uint64_t a)
10034 {
10035 if (a <= 81)
10036 return 0x801000090408ll + 0x40000ll * ((a) & 0x7f);
10037 __ody_csr_fatal("GICRX_IPRIORITYR_2", 1, a, 0, 0, 0, 0, 0);
10038 }
10039
10040 #define typedef_ODY_GICRX_IPRIORITYR_2(a) ody_gicrx_ipriorityr_2_t
10041 #define bustype_ODY_GICRX_IPRIORITYR_2(a) CSR_TYPE_NCB32b
10042 #define basename_ODY_GICRX_IPRIORITYR_2(a) "GICRX_IPRIORITYR_2"
10043 #define device_bar_ODY_GICRX_IPRIORITYR_2(a) 0x0 /* PF_BAR0 */
10044 #define busnum_ODY_GICRX_IPRIORITYR_2(a) (a)
10045 #define arguments_ODY_GICRX_IPRIORITYR_2(a) (a), -1, -1, -1
10046
10047 /**
10048 * Register (NCB32b) gicr#_ipriorityr_3
10049 *
10050 * GICR Ipriorityr3 Register
10051 * The GICR0_IPRIORITYR3 characteristics are:
10052 *
10053 * * Purpose
10054 * Holds the priority of the corresponding interrupt for SGIs 12-15.
10055 *
10056 * * Usage constraints
10057 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
10058 * 1 interrupt is RAZ/WI to Non-secure accesses.
10059 *
10060 * These registers are byte-accessible.
10061 *
10062 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
10063 */
10064 union ody_gicrx_ipriorityr_3 {
10065 uint32_t u;
10066 struct ody_gicrx_ipriorityr_3_s {
10067 uint32_t offset0 : 8;
10068 uint32_t offset1 : 8;
10069 uint32_t offset2 : 8;
10070 uint32_t offset3 : 8;
10071 } s;
10072 /* struct ody_gicrx_ipriorityr_3_s cn; */
10073 };
10074 typedef union ody_gicrx_ipriorityr_3 ody_gicrx_ipriorityr_3_t;
10075
10076 static inline uint64_t ODY_GICRX_IPRIORITYR_3(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR_3(uint64_t a)10077 static inline uint64_t ODY_GICRX_IPRIORITYR_3(uint64_t a)
10078 {
10079 if (a <= 81)
10080 return 0x80100009040cll + 0x40000ll * ((a) & 0x7f);
10081 __ody_csr_fatal("GICRX_IPRIORITYR_3", 1, a, 0, 0, 0, 0, 0);
10082 }
10083
10084 #define typedef_ODY_GICRX_IPRIORITYR_3(a) ody_gicrx_ipriorityr_3_t
10085 #define bustype_ODY_GICRX_IPRIORITYR_3(a) CSR_TYPE_NCB32b
10086 #define basename_ODY_GICRX_IPRIORITYR_3(a) "GICRX_IPRIORITYR_3"
10087 #define device_bar_ODY_GICRX_IPRIORITYR_3(a) 0x0 /* PF_BAR0 */
10088 #define busnum_ODY_GICRX_IPRIORITYR_3(a) (a)
10089 #define arguments_ODY_GICRX_IPRIORITYR_3(a) (a), -1, -1, -1
10090
10091 /**
10092 * Register (NCB32b) gicr#_ipriorityr_4
10093 *
10094 * GICR Ipriorityr4 Register
10095 * The GICR0_IPRIORITYR4 characteristics are:
10096 *
10097 * * Purpose
10098 * Holds the priority of the corresponding interrupt for PPIs 16-19.
10099 *
10100 * * Usage constraints
10101 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
10102 * 1 interrupt is RAZ/WI to Non-secure accesses.
10103 *
10104 * These registers are byte-accessible.
10105 *
10106 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
10107 */
10108 union ody_gicrx_ipriorityr_4 {
10109 uint32_t u;
10110 struct ody_gicrx_ipriorityr_4_s {
10111 uint32_t offset0 : 8;
10112 uint32_t offset1 : 8;
10113 uint32_t offset2 : 8;
10114 uint32_t offset3 : 8;
10115 } s;
10116 /* struct ody_gicrx_ipriorityr_4_s cn; */
10117 };
10118 typedef union ody_gicrx_ipriorityr_4 ody_gicrx_ipriorityr_4_t;
10119
10120 static inline uint64_t ODY_GICRX_IPRIORITYR_4(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR_4(uint64_t a)10121 static inline uint64_t ODY_GICRX_IPRIORITYR_4(uint64_t a)
10122 {
10123 if (a <= 81)
10124 return 0x801000090410ll + 0x40000ll * ((a) & 0x7f);
10125 __ody_csr_fatal("GICRX_IPRIORITYR_4", 1, a, 0, 0, 0, 0, 0);
10126 }
10127
10128 #define typedef_ODY_GICRX_IPRIORITYR_4(a) ody_gicrx_ipriorityr_4_t
10129 #define bustype_ODY_GICRX_IPRIORITYR_4(a) CSR_TYPE_NCB32b
10130 #define basename_ODY_GICRX_IPRIORITYR_4(a) "GICRX_IPRIORITYR_4"
10131 #define device_bar_ODY_GICRX_IPRIORITYR_4(a) 0x0 /* PF_BAR0 */
10132 #define busnum_ODY_GICRX_IPRIORITYR_4(a) (a)
10133 #define arguments_ODY_GICRX_IPRIORITYR_4(a) (a), -1, -1, -1
10134
10135 /**
10136 * Register (NCB32b) gicr#_ipriorityr_5
10137 *
10138 * GICR Ipriorityr5 Register
10139 * The GICR0_IPRIORITYR5 characteristics are:
10140 *
10141 * * Purpose
10142 * Holds the priority of the corresponding interrupt for PPIs 20-23.
10143 *
10144 * * Usage constraints
10145 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
10146 * 1 interrupt is RAZ/WI to Non-secure accesses.
10147 *
10148 * These registers are byte-accessible.
10149 *
10150 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
10151 */
10152 union ody_gicrx_ipriorityr_5 {
10153 uint32_t u;
10154 struct ody_gicrx_ipriorityr_5_s {
10155 uint32_t offset0 : 8;
10156 uint32_t offset1 : 8;
10157 uint32_t offset2 : 8;
10158 uint32_t offset3 : 8;
10159 } s;
10160 /* struct ody_gicrx_ipriorityr_5_s cn; */
10161 };
10162 typedef union ody_gicrx_ipriorityr_5 ody_gicrx_ipriorityr_5_t;
10163
10164 static inline uint64_t ODY_GICRX_IPRIORITYR_5(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR_5(uint64_t a)10165 static inline uint64_t ODY_GICRX_IPRIORITYR_5(uint64_t a)
10166 {
10167 if (a <= 81)
10168 return 0x801000090414ll + 0x40000ll * ((a) & 0x7f);
10169 __ody_csr_fatal("GICRX_IPRIORITYR_5", 1, a, 0, 0, 0, 0, 0);
10170 }
10171
10172 #define typedef_ODY_GICRX_IPRIORITYR_5(a) ody_gicrx_ipriorityr_5_t
10173 #define bustype_ODY_GICRX_IPRIORITYR_5(a) CSR_TYPE_NCB32b
10174 #define basename_ODY_GICRX_IPRIORITYR_5(a) "GICRX_IPRIORITYR_5"
10175 #define device_bar_ODY_GICRX_IPRIORITYR_5(a) 0x0 /* PF_BAR0 */
10176 #define busnum_ODY_GICRX_IPRIORITYR_5(a) (a)
10177 #define arguments_ODY_GICRX_IPRIORITYR_5(a) (a), -1, -1, -1
10178
10179 /**
10180 * Register (NCB32b) gicr#_ipriorityr_6
10181 *
10182 * GICR Ipriorityr6 Register
10183 * The GICR0_IPRIORITYR6 characteristics are:
10184 *
10185 * * Purpose
10186 * Holds the priority of the corresponding interrupt for PPIs 24-27.
10187 *
10188 * * Usage constraints
10189 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
10190 * 1 interrupt is RAZ/WI to Non-secure accesses.
10191 *
10192 * These registers are byte-accessible.
10193 *
10194 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
10195 */
10196 union ody_gicrx_ipriorityr_6 {
10197 uint32_t u;
10198 struct ody_gicrx_ipriorityr_6_s {
10199 uint32_t offset0 : 8;
10200 uint32_t offset1 : 8;
10201 uint32_t offset2 : 8;
10202 uint32_t offset3 : 8;
10203 } s;
10204 /* struct ody_gicrx_ipriorityr_6_s cn; */
10205 };
10206 typedef union ody_gicrx_ipriorityr_6 ody_gicrx_ipriorityr_6_t;
10207
10208 static inline uint64_t ODY_GICRX_IPRIORITYR_6(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR_6(uint64_t a)10209 static inline uint64_t ODY_GICRX_IPRIORITYR_6(uint64_t a)
10210 {
10211 if (a <= 81)
10212 return 0x801000090418ll + 0x40000ll * ((a) & 0x7f);
10213 __ody_csr_fatal("GICRX_IPRIORITYR_6", 1, a, 0, 0, 0, 0, 0);
10214 }
10215
10216 #define typedef_ODY_GICRX_IPRIORITYR_6(a) ody_gicrx_ipriorityr_6_t
10217 #define bustype_ODY_GICRX_IPRIORITYR_6(a) CSR_TYPE_NCB32b
10218 #define basename_ODY_GICRX_IPRIORITYR_6(a) "GICRX_IPRIORITYR_6"
10219 #define device_bar_ODY_GICRX_IPRIORITYR_6(a) 0x0 /* PF_BAR0 */
10220 #define busnum_ODY_GICRX_IPRIORITYR_6(a) (a)
10221 #define arguments_ODY_GICRX_IPRIORITYR_6(a) (a), -1, -1, -1
10222
10223 /**
10224 * Register (NCB32b) gicr#_ipriorityr_7
10225 *
10226 * GICR Ipriorityr7 Register
10227 * The GICR0_IPRIORITYR7 characteristics are:
10228 *
10229 * * Purpose
10230 * Holds the priority of the corresponding interrupt for PPIs 28-31.
10231 *
10232 * * Usage constraints
10233 * When GICD(A)_CTLR.DS==0 a register bit that corresponds to a Group 0 or Secure Group
10234 * 1 interrupt is RAZ/WI to Non-secure accesses.
10235 *
10236 * These registers are byte-accessible.
10237 *
10238 * The GIC implements 5 bits of priority and in each field, unimplemented bits are RAZ/WI.
10239 */
10240 union ody_gicrx_ipriorityr_7 {
10241 uint32_t u;
10242 struct ody_gicrx_ipriorityr_7_s {
10243 uint32_t offset0 : 8;
10244 uint32_t offset1 : 8;
10245 uint32_t offset2 : 8;
10246 uint32_t offset3 : 8;
10247 } s;
10248 /* struct ody_gicrx_ipriorityr_7_s cn; */
10249 };
10250 typedef union ody_gicrx_ipriorityr_7 ody_gicrx_ipriorityr_7_t;
10251
10252 static inline uint64_t ODY_GICRX_IPRIORITYR_7(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_IPRIORITYR_7(uint64_t a)10253 static inline uint64_t ODY_GICRX_IPRIORITYR_7(uint64_t a)
10254 {
10255 if (a <= 81)
10256 return 0x80100009041cll + 0x40000ll * ((a) & 0x7f);
10257 __ody_csr_fatal("GICRX_IPRIORITYR_7", 1, a, 0, 0, 0, 0, 0);
10258 }
10259
10260 #define typedef_ODY_GICRX_IPRIORITYR_7(a) ody_gicrx_ipriorityr_7_t
10261 #define bustype_ODY_GICRX_IPRIORITYR_7(a) CSR_TYPE_NCB32b
10262 #define basename_ODY_GICRX_IPRIORITYR_7(a) "GICRX_IPRIORITYR_7"
10263 #define device_bar_ODY_GICRX_IPRIORITYR_7(a) 0x0 /* PF_BAR0 */
10264 #define busnum_ODY_GICRX_IPRIORITYR_7(a) (a)
10265 #define arguments_ODY_GICRX_IPRIORITYR_7(a) (a), -1, -1, -1
10266
10267 /**
10268 * Register (NCB32b) gicr#_isactiver0
10269 *
10270 * GICR Isactiver0 Register
10271 * The GICR0_ISACTIVER0 characteristics are:
10272 *
10273 * * Purpose
10274 * Activates the corresponding SGI (IDs 0-15) or PPI (IDs 16-31). These registers are
10275 * used when saving and restoring GIC state.
10276 *
10277 * * Usage constraints
10278 * If GICD(A)_CTLR.DS==0, unless the GICR0_NSACR register permits Non-secure software
10279 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
10280 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
10281 * to Non-secure accesses.
10282 */
10283 union ody_gicrx_isactiver0 {
10284 uint32_t u;
10285 struct ody_gicrx_isactiver0_s {
10286 uint32_t set_active_bit0 : 1;
10287 uint32_t set_active_bit1 : 1;
10288 uint32_t set_active_bit2 : 1;
10289 uint32_t set_active_bit3 : 1;
10290 uint32_t set_active_bit4 : 1;
10291 uint32_t set_active_bit5 : 1;
10292 uint32_t set_active_bit6 : 1;
10293 uint32_t set_active_bit7 : 1;
10294 uint32_t set_active_bit8 : 1;
10295 uint32_t set_active_bit9 : 1;
10296 uint32_t set_active_bit10 : 1;
10297 uint32_t set_active_bit11 : 1;
10298 uint32_t set_active_bit12 : 1;
10299 uint32_t set_active_bit13 : 1;
10300 uint32_t set_active_bit14 : 1;
10301 uint32_t set_active_bit15 : 1;
10302 uint32_t set_active_bit16 : 1;
10303 uint32_t set_active_bit17 : 1;
10304 uint32_t set_active_bit18 : 1;
10305 uint32_t set_active_bit19 : 1;
10306 uint32_t set_active_bit20 : 1;
10307 uint32_t set_active_bit21 : 1;
10308 uint32_t set_active_bit22 : 1;
10309 uint32_t set_active_bit23 : 1;
10310 uint32_t set_active_bit24 : 1;
10311 uint32_t set_active_bit25 : 1;
10312 uint32_t set_active_bit26 : 1;
10313 uint32_t set_active_bit27 : 1;
10314 uint32_t set_active_bit28 : 1;
10315 uint32_t set_active_bit29 : 1;
10316 uint32_t set_active_bit30 : 1;
10317 uint32_t set_active_bit31 : 1;
10318 } s;
10319 /* struct ody_gicrx_isactiver0_s cn; */
10320 };
10321 typedef union ody_gicrx_isactiver0 ody_gicrx_isactiver0_t;
10322
10323 static inline uint64_t ODY_GICRX_ISACTIVER0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ISACTIVER0(uint64_t a)10324 static inline uint64_t ODY_GICRX_ISACTIVER0(uint64_t a)
10325 {
10326 if (a <= 81)
10327 return 0x801000090300ll + 0x40000ll * ((a) & 0x7f);
10328 __ody_csr_fatal("GICRX_ISACTIVER0", 1, a, 0, 0, 0, 0, 0);
10329 }
10330
10331 #define typedef_ODY_GICRX_ISACTIVER0(a) ody_gicrx_isactiver0_t
10332 #define bustype_ODY_GICRX_ISACTIVER0(a) CSR_TYPE_NCB32b
10333 #define basename_ODY_GICRX_ISACTIVER0(a) "GICRX_ISACTIVER0"
10334 #define device_bar_ODY_GICRX_ISACTIVER0(a) 0x0 /* PF_BAR0 */
10335 #define busnum_ODY_GICRX_ISACTIVER0(a) (a)
10336 #define arguments_ODY_GICRX_ISACTIVER0(a) (a), -1, -1, -1
10337
10338 /**
10339 * Register (NCB32b) gicr#_isactiver1e
10340 *
10341 * GICR Isactiver1e Register
10342 * The GICR0_ISACTIVER1E characteristics are:
10343 *
10344 * * Purpose
10345 * Activates the corresponding extended range PPI. These registers are used when
10346 * saving and restoring GIC state.
10347 *
10348 * * Usage constraints
10349 * If GICD(A)_CTLR.DS==0, unless the GICR0_NSACR register permits Non-secure software
10350 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
10351 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
10352 * to Non-secure accesses.
10353 */
10354 union ody_gicrx_isactiver1e {
10355 uint32_t u;
10356 struct ody_gicrx_isactiver1e_s {
10357 uint32_t set_active_bit0 : 1;
10358 uint32_t set_active_bit1 : 1;
10359 uint32_t set_active_bit2 : 1;
10360 uint32_t set_active_bit3 : 1;
10361 uint32_t set_active_bit4 : 1;
10362 uint32_t set_active_bit5 : 1;
10363 uint32_t set_active_bit6 : 1;
10364 uint32_t set_active_bit7 : 1;
10365 uint32_t set_active_bit8 : 1;
10366 uint32_t set_active_bit9 : 1;
10367 uint32_t set_active_bit10 : 1;
10368 uint32_t set_active_bit11 : 1;
10369 uint32_t set_active_bit12 : 1;
10370 uint32_t set_active_bit13 : 1;
10371 uint32_t set_active_bit14 : 1;
10372 uint32_t set_active_bit15 : 1;
10373 uint32_t set_active_bit16 : 1;
10374 uint32_t set_active_bit17 : 1;
10375 uint32_t set_active_bit18 : 1;
10376 uint32_t set_active_bit19 : 1;
10377 uint32_t set_active_bit20 : 1;
10378 uint32_t set_active_bit21 : 1;
10379 uint32_t set_active_bit22 : 1;
10380 uint32_t set_active_bit23 : 1;
10381 uint32_t set_active_bit24 : 1;
10382 uint32_t set_active_bit25 : 1;
10383 uint32_t set_active_bit26 : 1;
10384 uint32_t set_active_bit27 : 1;
10385 uint32_t set_active_bit28 : 1;
10386 uint32_t set_active_bit29 : 1;
10387 uint32_t set_active_bit30 : 1;
10388 uint32_t set_active_bit31 : 1;
10389 } s;
10390 /* struct ody_gicrx_isactiver1e_s cn; */
10391 };
10392 typedef union ody_gicrx_isactiver1e ody_gicrx_isactiver1e_t;
10393
10394 static inline uint64_t ODY_GICRX_ISACTIVER1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ISACTIVER1E(uint64_t a)10395 static inline uint64_t ODY_GICRX_ISACTIVER1E(uint64_t a)
10396 {
10397 if (a <= 81)
10398 return 0x801000090304ll + 0x40000ll * ((a) & 0x7f);
10399 __ody_csr_fatal("GICRX_ISACTIVER1E", 1, a, 0, 0, 0, 0, 0);
10400 }
10401
10402 #define typedef_ODY_GICRX_ISACTIVER1E(a) ody_gicrx_isactiver1e_t
10403 #define bustype_ODY_GICRX_ISACTIVER1E(a) CSR_TYPE_NCB32b
10404 #define basename_ODY_GICRX_ISACTIVER1E(a) "GICRX_ISACTIVER1E"
10405 #define device_bar_ODY_GICRX_ISACTIVER1E(a) 0x0 /* PF_BAR0 */
10406 #define busnum_ODY_GICRX_ISACTIVER1E(a) (a)
10407 #define arguments_ODY_GICRX_ISACTIVER1E(a) (a), -1, -1, -1
10408
10409 /**
10410 * Register (NCB32b) gicr#_isenabler0
10411 *
10412 * GICR Isenabler0 Register
10413 * The GICR0_ISENABLER0 characteristics are:
10414 *
10415 * * Purpose
10416 * Enables forwarding of the corresponding SGI (IDs 0-15) or PPI (IDs 16-31) to the CPU interface.
10417 *
10418 * * Usage constraints
10419 * When GICD(A)_CTLR.DS==0, bits corresponding to Group 0 and Secure Group 1 interrupts
10420 * are RAZ/WI to Non-secure accesses.
10421 */
10422 union ody_gicrx_isenabler0 {
10423 uint32_t u;
10424 struct ody_gicrx_isenabler0_s {
10425 uint32_t set_enable_bit0 : 1;
10426 uint32_t set_enable_bit1 : 1;
10427 uint32_t set_enable_bit2 : 1;
10428 uint32_t set_enable_bit3 : 1;
10429 uint32_t set_enable_bit4 : 1;
10430 uint32_t set_enable_bit5 : 1;
10431 uint32_t set_enable_bit6 : 1;
10432 uint32_t set_enable_bit7 : 1;
10433 uint32_t set_enable_bit8 : 1;
10434 uint32_t set_enable_bit9 : 1;
10435 uint32_t set_enable_bit10 : 1;
10436 uint32_t set_enable_bit11 : 1;
10437 uint32_t set_enable_bit12 : 1;
10438 uint32_t set_enable_bit13 : 1;
10439 uint32_t set_enable_bit14 : 1;
10440 uint32_t set_enable_bit15 : 1;
10441 uint32_t set_enable_bit16 : 1;
10442 uint32_t set_enable_bit17 : 1;
10443 uint32_t set_enable_bit18 : 1;
10444 uint32_t set_enable_bit19 : 1;
10445 uint32_t set_enable_bit20 : 1;
10446 uint32_t set_enable_bit21 : 1;
10447 uint32_t set_enable_bit22 : 1;
10448 uint32_t set_enable_bit23 : 1;
10449 uint32_t set_enable_bit24 : 1;
10450 uint32_t set_enable_bit25 : 1;
10451 uint32_t set_enable_bit26 : 1;
10452 uint32_t set_enable_bit27 : 1;
10453 uint32_t set_enable_bit28 : 1;
10454 uint32_t set_enable_bit29 : 1;
10455 uint32_t set_enable_bit30 : 1;
10456 uint32_t set_enable_bit31 : 1;
10457 } s;
10458 /* struct ody_gicrx_isenabler0_s cn; */
10459 };
10460 typedef union ody_gicrx_isenabler0 ody_gicrx_isenabler0_t;
10461
10462 static inline uint64_t ODY_GICRX_ISENABLER0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ISENABLER0(uint64_t a)10463 static inline uint64_t ODY_GICRX_ISENABLER0(uint64_t a)
10464 {
10465 if (a <= 81)
10466 return 0x801000090100ll + 0x40000ll * ((a) & 0x7f);
10467 __ody_csr_fatal("GICRX_ISENABLER0", 1, a, 0, 0, 0, 0, 0);
10468 }
10469
10470 #define typedef_ODY_GICRX_ISENABLER0(a) ody_gicrx_isenabler0_t
10471 #define bustype_ODY_GICRX_ISENABLER0(a) CSR_TYPE_NCB32b
10472 #define basename_ODY_GICRX_ISENABLER0(a) "GICRX_ISENABLER0"
10473 #define device_bar_ODY_GICRX_ISENABLER0(a) 0x0 /* PF_BAR0 */
10474 #define busnum_ODY_GICRX_ISENABLER0(a) (a)
10475 #define arguments_ODY_GICRX_ISENABLER0(a) (a), -1, -1, -1
10476
10477 /**
10478 * Register (NCB32b) gicr#_isenabler1e
10479 *
10480 * GICR Isenabler1e Register
10481 * The GICR0_ISENABLER1E characteristics are:
10482 *
10483 * * Purpose
10484 * Enables forwarding of the corresponding extended range PPI to the CPU interface.
10485 *
10486 * * Usage constraints
10487 * When GICD(A)_CTLR.DS==0, bits corresponding to Group 0 and Secure Group 1 interrupts
10488 * are RAZ/WI to Non-secure accesses.
10489 */
10490 union ody_gicrx_isenabler1e {
10491 uint32_t u;
10492 struct ody_gicrx_isenabler1e_s {
10493 uint32_t set_enable_bit0 : 1;
10494 uint32_t set_enable_bit1 : 1;
10495 uint32_t set_enable_bit2 : 1;
10496 uint32_t set_enable_bit3 : 1;
10497 uint32_t set_enable_bit4 : 1;
10498 uint32_t set_enable_bit5 : 1;
10499 uint32_t set_enable_bit6 : 1;
10500 uint32_t set_enable_bit7 : 1;
10501 uint32_t set_enable_bit8 : 1;
10502 uint32_t set_enable_bit9 : 1;
10503 uint32_t set_enable_bit10 : 1;
10504 uint32_t set_enable_bit11 : 1;
10505 uint32_t set_enable_bit12 : 1;
10506 uint32_t set_enable_bit13 : 1;
10507 uint32_t set_enable_bit14 : 1;
10508 uint32_t set_enable_bit15 : 1;
10509 uint32_t set_enable_bit16 : 1;
10510 uint32_t set_enable_bit17 : 1;
10511 uint32_t set_enable_bit18 : 1;
10512 uint32_t set_enable_bit19 : 1;
10513 uint32_t set_enable_bit20 : 1;
10514 uint32_t set_enable_bit21 : 1;
10515 uint32_t set_enable_bit22 : 1;
10516 uint32_t set_enable_bit23 : 1;
10517 uint32_t set_enable_bit24 : 1;
10518 uint32_t set_enable_bit25 : 1;
10519 uint32_t set_enable_bit26 : 1;
10520 uint32_t set_enable_bit27 : 1;
10521 uint32_t set_enable_bit28 : 1;
10522 uint32_t set_enable_bit29 : 1;
10523 uint32_t set_enable_bit30 : 1;
10524 uint32_t set_enable_bit31 : 1;
10525 } s;
10526 /* struct ody_gicrx_isenabler1e_s cn; */
10527 };
10528 typedef union ody_gicrx_isenabler1e ody_gicrx_isenabler1e_t;
10529
10530 static inline uint64_t ODY_GICRX_ISENABLER1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ISENABLER1E(uint64_t a)10531 static inline uint64_t ODY_GICRX_ISENABLER1E(uint64_t a)
10532 {
10533 if (a <= 81)
10534 return 0x801000090104ll + 0x40000ll * ((a) & 0x7f);
10535 __ody_csr_fatal("GICRX_ISENABLER1E", 1, a, 0, 0, 0, 0, 0);
10536 }
10537
10538 #define typedef_ODY_GICRX_ISENABLER1E(a) ody_gicrx_isenabler1e_t
10539 #define bustype_ODY_GICRX_ISENABLER1E(a) CSR_TYPE_NCB32b
10540 #define basename_ODY_GICRX_ISENABLER1E(a) "GICRX_ISENABLER1E"
10541 #define device_bar_ODY_GICRX_ISENABLER1E(a) 0x0 /* PF_BAR0 */
10542 #define busnum_ODY_GICRX_ISENABLER1E(a) (a)
10543 #define arguments_ODY_GICRX_ISENABLER1E(a) (a), -1, -1, -1
10544
10545 /**
10546 * Register (NCB32b) gicr#_iserrr0
10547 *
10548 * GICR Iserrr0 Register
10549 * The GICR0_ISERRR0 characteristics are:
10550 *
10551 * * Purpose
10552 *
10553 * This register indicates if the SGI or PPI data has been corrupted in the GCI RAM.
10554 * For testing purposes, software can use this register to set the error.
10555 *
10556 * * Usage constraints
10557 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
10558 */
10559 union ody_gicrx_iserrr0 {
10560 uint32_t u;
10561 struct ody_gicrx_iserrr0_s {
10562 uint32_t valid_bit0 : 1;
10563 uint32_t valid_bit1 : 1;
10564 uint32_t valid_bit2 : 1;
10565 uint32_t valid_bit3 : 1;
10566 uint32_t valid_bit4 : 1;
10567 uint32_t valid_bit5 : 1;
10568 uint32_t valid_bit6 : 1;
10569 uint32_t valid_bit7 : 1;
10570 uint32_t valid_bit8 : 1;
10571 uint32_t valid_bit9 : 1;
10572 uint32_t valid_bit10 : 1;
10573 uint32_t valid_bit11 : 1;
10574 uint32_t valid_bit12 : 1;
10575 uint32_t valid_bit13 : 1;
10576 uint32_t valid_bit14 : 1;
10577 uint32_t valid_bit15 : 1;
10578 uint32_t valid_bit16 : 1;
10579 uint32_t valid_bit17 : 1;
10580 uint32_t valid_bit18 : 1;
10581 uint32_t valid_bit19 : 1;
10582 uint32_t valid_bit20 : 1;
10583 uint32_t valid_bit21 : 1;
10584 uint32_t valid_bit22 : 1;
10585 uint32_t valid_bit23 : 1;
10586 uint32_t valid_bit24 : 1;
10587 uint32_t valid_bit25 : 1;
10588 uint32_t valid_bit26 : 1;
10589 uint32_t valid_bit27 : 1;
10590 uint32_t valid_bit28 : 1;
10591 uint32_t valid_bit29 : 1;
10592 uint32_t valid_bit30 : 1;
10593 uint32_t valid_bit31 : 1;
10594 } s;
10595 /* struct ody_gicrx_iserrr0_s cn; */
10596 };
10597 typedef union ody_gicrx_iserrr0 ody_gicrx_iserrr0_t;
10598
10599 static inline uint64_t ODY_GICRX_ISERRR0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ISERRR0(uint64_t a)10600 static inline uint64_t ODY_GICRX_ISERRR0(uint64_t a)
10601 {
10602 if (a <= 81)
10603 return 0x80100009c180ll + 0x40000ll * ((a) & 0x7f);
10604 __ody_csr_fatal("GICRX_ISERRR0", 1, a, 0, 0, 0, 0, 0);
10605 }
10606
10607 #define typedef_ODY_GICRX_ISERRR0(a) ody_gicrx_iserrr0_t
10608 #define bustype_ODY_GICRX_ISERRR0(a) CSR_TYPE_NCB32b
10609 #define basename_ODY_GICRX_ISERRR0(a) "GICRX_ISERRR0"
10610 #define device_bar_ODY_GICRX_ISERRR0(a) 0x0 /* PF_BAR0 */
10611 #define busnum_ODY_GICRX_ISERRR0(a) (a)
10612 #define arguments_ODY_GICRX_ISERRR0(a) (a), -1, -1, -1
10613
10614 /**
10615 * Register (NCB32b) gicr#_iserrr1e
10616 *
10617 * GICR Iserrr1e Register
10618 * The GICR0_ISERRR1E characteristics are:
10619 *
10620 * * Purpose
10621 *
10622 * This register indicates if extended range PPI data has been corrupted in the GCI
10623 * RAM. For testing purposes, software can use this register to set the error.
10624 *
10625 * * Usage constraints
10626 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
10627 */
10628 union ody_gicrx_iserrr1e {
10629 uint32_t u;
10630 struct ody_gicrx_iserrr1e_s {
10631 uint32_t valid_bit0 : 1;
10632 uint32_t valid_bit1 : 1;
10633 uint32_t valid_bit2 : 1;
10634 uint32_t valid_bit3 : 1;
10635 uint32_t valid_bit4 : 1;
10636 uint32_t valid_bit5 : 1;
10637 uint32_t valid_bit6 : 1;
10638 uint32_t valid_bit7 : 1;
10639 uint32_t valid_bit8 : 1;
10640 uint32_t valid_bit9 : 1;
10641 uint32_t valid_bit10 : 1;
10642 uint32_t valid_bit11 : 1;
10643 uint32_t valid_bit12 : 1;
10644 uint32_t valid_bit13 : 1;
10645 uint32_t valid_bit14 : 1;
10646 uint32_t valid_bit15 : 1;
10647 uint32_t valid_bit16 : 1;
10648 uint32_t valid_bit17 : 1;
10649 uint32_t valid_bit18 : 1;
10650 uint32_t valid_bit19 : 1;
10651 uint32_t valid_bit20 : 1;
10652 uint32_t valid_bit21 : 1;
10653 uint32_t valid_bit22 : 1;
10654 uint32_t valid_bit23 : 1;
10655 uint32_t valid_bit24 : 1;
10656 uint32_t valid_bit25 : 1;
10657 uint32_t valid_bit26 : 1;
10658 uint32_t valid_bit27 : 1;
10659 uint32_t valid_bit28 : 1;
10660 uint32_t valid_bit29 : 1;
10661 uint32_t valid_bit30 : 1;
10662 uint32_t valid_bit31 : 1;
10663 } s;
10664 /* struct ody_gicrx_iserrr1e_s cn; */
10665 };
10666 typedef union ody_gicrx_iserrr1e ody_gicrx_iserrr1e_t;
10667
10668 static inline uint64_t ODY_GICRX_ISERRR1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ISERRR1E(uint64_t a)10669 static inline uint64_t ODY_GICRX_ISERRR1E(uint64_t a)
10670 {
10671 if (a <= 81)
10672 return 0x80100009c184ll + 0x40000ll * ((a) & 0x7f);
10673 __ody_csr_fatal("GICRX_ISERRR1E", 1, a, 0, 0, 0, 0, 0);
10674 }
10675
10676 #define typedef_ODY_GICRX_ISERRR1E(a) ody_gicrx_iserrr1e_t
10677 #define bustype_ODY_GICRX_ISERRR1E(a) CSR_TYPE_NCB32b
10678 #define basename_ODY_GICRX_ISERRR1E(a) "GICRX_ISERRR1E"
10679 #define device_bar_ODY_GICRX_ISERRR1E(a) 0x0 /* PF_BAR0 */
10680 #define busnum_ODY_GICRX_ISERRR1E(a) (a)
10681 #define arguments_ODY_GICRX_ISERRR1E(a) (a), -1, -1, -1
10682
10683 /**
10684 * Register (NCB32b) gicr#_ispendr0
10685 *
10686 * GICR Ispendr0 Register
10687 * The GICR0_ISPENDR0 characteristics are:
10688 *
10689 * * Purpose
10690 * Adds the pending state to the corresponding SGI (IDs 0-15) or PPI (IDs 16-31).
10691 *
10692 * * Usage constraints
10693 * If GICD(A)_CTLR.DS==0, unless the GICR0_NSACR register permits Non-secure software
10694 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
10695 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
10696 * to Non-secure accesses.
10697 */
10698 union ody_gicrx_ispendr0 {
10699 uint32_t u;
10700 struct ody_gicrx_ispendr0_s {
10701 uint32_t set_pending_bit0 : 1;
10702 uint32_t set_pending_bit1 : 1;
10703 uint32_t set_pending_bit2 : 1;
10704 uint32_t set_pending_bit3 : 1;
10705 uint32_t set_pending_bit4 : 1;
10706 uint32_t set_pending_bit5 : 1;
10707 uint32_t set_pending_bit6 : 1;
10708 uint32_t set_pending_bit7 : 1;
10709 uint32_t set_pending_bit8 : 1;
10710 uint32_t set_pending_bit9 : 1;
10711 uint32_t set_pending_bit10 : 1;
10712 uint32_t set_pending_bit11 : 1;
10713 uint32_t set_pending_bit12 : 1;
10714 uint32_t set_pending_bit13 : 1;
10715 uint32_t set_pending_bit14 : 1;
10716 uint32_t set_pending_bit15 : 1;
10717 uint32_t set_pending_bit16 : 1;
10718 uint32_t set_pending_bit17 : 1;
10719 uint32_t set_pending_bit18 : 1;
10720 uint32_t set_pending_bit19 : 1;
10721 uint32_t set_pending_bit20 : 1;
10722 uint32_t set_pending_bit21 : 1;
10723 uint32_t set_pending_bit22 : 1;
10724 uint32_t set_pending_bit23 : 1;
10725 uint32_t set_pending_bit24 : 1;
10726 uint32_t set_pending_bit25 : 1;
10727 uint32_t set_pending_bit26 : 1;
10728 uint32_t set_pending_bit27 : 1;
10729 uint32_t set_pending_bit28 : 1;
10730 uint32_t set_pending_bit29 : 1;
10731 uint32_t set_pending_bit30 : 1;
10732 uint32_t set_pending_bit31 : 1;
10733 } s;
10734 /* struct ody_gicrx_ispendr0_s cn; */
10735 };
10736 typedef union ody_gicrx_ispendr0 ody_gicrx_ispendr0_t;
10737
10738 static inline uint64_t ODY_GICRX_ISPENDR0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ISPENDR0(uint64_t a)10739 static inline uint64_t ODY_GICRX_ISPENDR0(uint64_t a)
10740 {
10741 if (a <= 81)
10742 return 0x801000090200ll + 0x40000ll * ((a) & 0x7f);
10743 __ody_csr_fatal("GICRX_ISPENDR0", 1, a, 0, 0, 0, 0, 0);
10744 }
10745
10746 #define typedef_ODY_GICRX_ISPENDR0(a) ody_gicrx_ispendr0_t
10747 #define bustype_ODY_GICRX_ISPENDR0(a) CSR_TYPE_NCB32b
10748 #define basename_ODY_GICRX_ISPENDR0(a) "GICRX_ISPENDR0"
10749 #define device_bar_ODY_GICRX_ISPENDR0(a) 0x0 /* PF_BAR0 */
10750 #define busnum_ODY_GICRX_ISPENDR0(a) (a)
10751 #define arguments_ODY_GICRX_ISPENDR0(a) (a), -1, -1, -1
10752
10753 /**
10754 * Register (NCB32b) gicr#_ispendr1e
10755 *
10756 * GICR Ispendr1e Register
10757 * The GICR0_ISPENDR1E characteristics are:
10758 *
10759 * * Purpose
10760 * Adds the pending state to the corresponding extended range PPI.
10761 *
10762 * * Usage constraints
10763 * If GICD(A)_CTLR.DS==0, unless the GICR0_NSACR register permits Non-secure software
10764 * to control Group 0 and Secure Group 1 interrupts, any bits that correspond to Group
10765 * 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI
10766 * to Non-secure accesses.
10767 */
10768 union ody_gicrx_ispendr1e {
10769 uint32_t u;
10770 struct ody_gicrx_ispendr1e_s {
10771 uint32_t set_pending_bit0 : 1;
10772 uint32_t set_pending_bit1 : 1;
10773 uint32_t set_pending_bit2 : 1;
10774 uint32_t set_pending_bit3 : 1;
10775 uint32_t set_pending_bit4 : 1;
10776 uint32_t set_pending_bit5 : 1;
10777 uint32_t set_pending_bit6 : 1;
10778 uint32_t set_pending_bit7 : 1;
10779 uint32_t set_pending_bit8 : 1;
10780 uint32_t set_pending_bit9 : 1;
10781 uint32_t set_pending_bit10 : 1;
10782 uint32_t set_pending_bit11 : 1;
10783 uint32_t set_pending_bit12 : 1;
10784 uint32_t set_pending_bit13 : 1;
10785 uint32_t set_pending_bit14 : 1;
10786 uint32_t set_pending_bit15 : 1;
10787 uint32_t set_pending_bit16 : 1;
10788 uint32_t set_pending_bit17 : 1;
10789 uint32_t set_pending_bit18 : 1;
10790 uint32_t set_pending_bit19 : 1;
10791 uint32_t set_pending_bit20 : 1;
10792 uint32_t set_pending_bit21 : 1;
10793 uint32_t set_pending_bit22 : 1;
10794 uint32_t set_pending_bit23 : 1;
10795 uint32_t set_pending_bit24 : 1;
10796 uint32_t set_pending_bit25 : 1;
10797 uint32_t set_pending_bit26 : 1;
10798 uint32_t set_pending_bit27 : 1;
10799 uint32_t set_pending_bit28 : 1;
10800 uint32_t set_pending_bit29 : 1;
10801 uint32_t set_pending_bit30 : 1;
10802 uint32_t set_pending_bit31 : 1;
10803 } s;
10804 /* struct ody_gicrx_ispendr1e_s cn; */
10805 };
10806 typedef union ody_gicrx_ispendr1e ody_gicrx_ispendr1e_t;
10807
10808 static inline uint64_t ODY_GICRX_ISPENDR1E(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_ISPENDR1E(uint64_t a)10809 static inline uint64_t ODY_GICRX_ISPENDR1E(uint64_t a)
10810 {
10811 if (a <= 81)
10812 return 0x801000090204ll + 0x40000ll * ((a) & 0x7f);
10813 __ody_csr_fatal("GICRX_ISPENDR1E", 1, a, 0, 0, 0, 0, 0);
10814 }
10815
10816 #define typedef_ODY_GICRX_ISPENDR1E(a) ody_gicrx_ispendr1e_t
10817 #define bustype_ODY_GICRX_ISPENDR1E(a) CSR_TYPE_NCB32b
10818 #define basename_ODY_GICRX_ISPENDR1E(a) "GICRX_ISPENDR1E"
10819 #define device_bar_ODY_GICRX_ISPENDR1E(a) 0x0 /* PF_BAR0 */
10820 #define busnum_ODY_GICRX_ISPENDR1E(a) (a)
10821 #define arguments_ODY_GICRX_ISPENDR1E(a) (a), -1, -1, -1
10822
10823 /**
10824 * Register (NCB32b) gicr#_miscstatusr
10825 *
10826 * GICR Miscstatusr Register
10827 * The GICR0_MISCSTATUSR characteristics are:
10828 *
10829 * * Purpose
10830 * Use this register to test the integration of the cpu_active and wake_request input
10831 * signals. You can also use the register to debug the CPU interface enables as seen by
10832 * the GIC
10833 *
10834 * * Usage constraints
10835 * There are no usage constraints.
10836 */
10837 union ody_gicrx_miscstatusr {
10838 uint32_t u;
10839 struct ody_gicrx_miscstatusr_s {
10840 uint32_t enablegrp0 : 1;
10841 uint32_t enablegrp1_ns : 1;
10842 uint32_t enablegrp1_s : 1;
10843 uint32_t reserved_3 : 1;
10844 uint32_t access_type : 1;
10845 uint32_t reserved_5_29 : 25;
10846 uint32_t wake_request : 1;
10847 uint32_t cpu_active : 1;
10848 } s;
10849 /* struct ody_gicrx_miscstatusr_s cn; */
10850 };
10851 typedef union ody_gicrx_miscstatusr ody_gicrx_miscstatusr_t;
10852
10853 static inline uint64_t ODY_GICRX_MISCSTATUSR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_MISCSTATUSR(uint64_t a)10854 static inline uint64_t ODY_GICRX_MISCSTATUSR(uint64_t a)
10855 {
10856 if (a <= 81)
10857 return 0x80100009c000ll + 0x40000ll * ((a) & 0x7f);
10858 __ody_csr_fatal("GICRX_MISCSTATUSR", 1, a, 0, 0, 0, 0, 0);
10859 }
10860
10861 #define typedef_ODY_GICRX_MISCSTATUSR(a) ody_gicrx_miscstatusr_t
10862 #define bustype_ODY_GICRX_MISCSTATUSR(a) CSR_TYPE_NCB32b
10863 #define basename_ODY_GICRX_MISCSTATUSR(a) "GICRX_MISCSTATUSR"
10864 #define device_bar_ODY_GICRX_MISCSTATUSR(a) 0x0 /* PF_BAR0 */
10865 #define busnum_ODY_GICRX_MISCSTATUSR(a) (a)
10866 #define arguments_ODY_GICRX_MISCSTATUSR(a) (a), -1, -1, -1
10867
10868 /**
10869 * Register (NCB32b) gicr#_mpamidr
10870 *
10871 * GICR Mpamidr Register
10872 * GICR() MPAMIDR
10873 * The GICR0_MPAMIDR characteristics are:
10874 *
10875 * * Purpose
10876 *
10877 * Reports the maximum supported PARTID and PMG values.
10878 *
10879 * * Usage constraints
10880 * There are no usage constraints.
10881 */
10882 union ody_gicrx_mpamidr {
10883 uint32_t u;
10884 struct ody_gicrx_mpamidr_s {
10885 uint32_t partid_max : 9;
10886 uint32_t reserved_9_15 : 7;
10887 uint32_t pmg_max : 1;
10888 uint32_t reserved_17_31 : 15;
10889 } s;
10890 /* struct ody_gicrx_mpamidr_s cn; */
10891 };
10892 typedef union ody_gicrx_mpamidr ody_gicrx_mpamidr_t;
10893
10894 static inline uint64_t ODY_GICRX_MPAMIDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_MPAMIDR(uint64_t a)10895 static inline uint64_t ODY_GICRX_MPAMIDR(uint64_t a)
10896 {
10897 if (a <= 81)
10898 return 0x801000080018ll + 0x40000ll * ((a) & 0x7f);
10899 __ody_csr_fatal("GICRX_MPAMIDR", 1, a, 0, 0, 0, 0, 0);
10900 }
10901
10902 #define typedef_ODY_GICRX_MPAMIDR(a) ody_gicrx_mpamidr_t
10903 #define bustype_ODY_GICRX_MPAMIDR(a) CSR_TYPE_NCB32b
10904 #define basename_ODY_GICRX_MPAMIDR(a) "GICRX_MPAMIDR"
10905 #define device_bar_ODY_GICRX_MPAMIDR(a) 0x0 /* PF_BAR0 */
10906 #define busnum_ODY_GICRX_MPAMIDR(a) (a)
10907 #define arguments_ODY_GICRX_MPAMIDR(a) (a), -1, -1, -1
10908
10909 /**
10910 * Register (NCB32b) gicr#_nsacr
10911 *
10912 * GICR Nsacr Register
10913 * The GICR0_NSACR characteristics are:
10914 *
10915 * * Purpose
10916 * Enables Secure software to permit Non-secure software to create SGIs targeting the
10917 * PE connected to this Redistributor by writing to ICC_SGI1R_EL1, ICC_ASGI1R_EL1 or
10918 * ICC_SGI0R_EL1.
10919 *
10920 * * Usage constraints
10921 * When GICD_CTLR.DS == 1, this register is RAZ/WI.
10922 * When GICD_CTLR.DS == 0, this register is Secure, and is RAZ/WI to Non-secure accesses.
10923 *
10924 * * Configurations
10925 * A copy of this register is provided for each Redistributor.`
10926 */
10927 union ody_gicrx_nsacr {
10928 uint32_t u;
10929 struct ody_gicrx_nsacr_s {
10930 uint32_t ns_access0 : 2;
10931 uint32_t ns_access1 : 2;
10932 uint32_t ns_access2 : 2;
10933 uint32_t ns_access3 : 2;
10934 uint32_t ns_access4 : 2;
10935 uint32_t ns_access5 : 2;
10936 uint32_t ns_access6 : 2;
10937 uint32_t ns_access7 : 2;
10938 uint32_t ns_access8 : 2;
10939 uint32_t ns_access9 : 2;
10940 uint32_t ns_access10 : 2;
10941 uint32_t ns_access11 : 2;
10942 uint32_t ns_access12 : 2;
10943 uint32_t ns_access13 : 2;
10944 uint32_t ns_access14 : 2;
10945 uint32_t ns_access15 : 2;
10946 } s;
10947 /* struct ody_gicrx_nsacr_s cn; */
10948 };
10949 typedef union ody_gicrx_nsacr ody_gicrx_nsacr_t;
10950
10951 static inline uint64_t ODY_GICRX_NSACR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_NSACR(uint64_t a)10952 static inline uint64_t ODY_GICRX_NSACR(uint64_t a)
10953 {
10954 if (a <= 81)
10955 return 0x801000090e00ll + 0x40000ll * ((a) & 0x7f);
10956 __ody_csr_fatal("GICRX_NSACR", 1, a, 0, 0, 0, 0, 0);
10957 }
10958
10959 #define typedef_ODY_GICRX_NSACR(a) ody_gicrx_nsacr_t
10960 #define bustype_ODY_GICRX_NSACR(a) CSR_TYPE_NCB32b
10961 #define basename_ODY_GICRX_NSACR(a) "GICRX_NSACR"
10962 #define device_bar_ODY_GICRX_NSACR(a) 0x0 /* PF_BAR0 */
10963 #define busnum_ODY_GICRX_NSACR(a) (a)
10964 #define arguments_ODY_GICRX_NSACR(a) (a), -1, -1, -1
10965
10966 /**
10967 * Register (NCB32b) gicr#_partidr
10968 *
10969 * GICR Partidr Register
10970 * GICR() PARTIDR
10971 * The GICR0_PARTIDR characteristics are:
10972 *
10973 * * Purpose
10974 *
10975 * Sets the PARTID and PMG values used for memory accesses by the Redistributor
10976 *
10977 * * Usage constraints
10978 * There are no usage constraints
10979 *
10980 * \> *Note*
10981 * \> This register is shared across all PEs on the GIC.
10982 */
10983 union ody_gicrx_partidr {
10984 uint32_t u;
10985 struct ody_gicrx_partidr_s {
10986 uint32_t partid : 9;
10987 uint32_t reserved_9_15 : 7;
10988 uint32_t pmg : 1;
10989 uint32_t reserved_17_31 : 15;
10990 } s;
10991 /* struct ody_gicrx_partidr_s cn; */
10992 };
10993 typedef union ody_gicrx_partidr ody_gicrx_partidr_t;
10994
10995 static inline uint64_t ODY_GICRX_PARTIDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PARTIDR(uint64_t a)10996 static inline uint64_t ODY_GICRX_PARTIDR(uint64_t a)
10997 {
10998 if (a <= 81)
10999 return 0x80100008001cll + 0x40000ll * ((a) & 0x7f);
11000 __ody_csr_fatal("GICRX_PARTIDR", 1, a, 0, 0, 0, 0, 0);
11001 }
11002
11003 #define typedef_ODY_GICRX_PARTIDR(a) ody_gicrx_partidr_t
11004 #define bustype_ODY_GICRX_PARTIDR(a) CSR_TYPE_NCB32b
11005 #define basename_ODY_GICRX_PARTIDR(a) "GICRX_PARTIDR"
11006 #define device_bar_ODY_GICRX_PARTIDR(a) 0x0 /* PF_BAR0 */
11007 #define busnum_ODY_GICRX_PARTIDR(a) (a)
11008 #define arguments_ODY_GICRX_PARTIDR(a) (a), -1, -1, -1
11009
11010 /**
11011 * Register (NCB) gicr#_pendbaser
11012 *
11013 * GICR Pendbaser Register
11014 * The GICR0_PENDBASER characteristics are:
11015 *
11016 * * Purpose
11017 * Specifies the base address, Shareability and Cacheability of accesses to the LPI Pending table.
11018 *
11019 * * Usage constraints
11020 * A copy of this register is provided for each Redistributor, however, some fields are
11021 * shared according to GICR0_TYPER.CommonLPIAff and should be programmed to matching
11022 * values.
11023 */
11024 union ody_gicrx_pendbaser {
11025 uint64_t u;
11026 struct ody_gicrx_pendbaser_s {
11027 uint64_t reserved_0_6 : 7;
11028 uint64_t cacheability : 3;
11029 uint64_t shareability : 2;
11030 uint64_t reserved_12_15 : 4;
11031 uint64_t physicaladdress : 36;
11032 uint64_t reserved_52_55 : 4;
11033 uint64_t outercacheability : 3;
11034 uint64_t reserved_59_61 : 3;
11035 uint64_t pendingtablezero : 1;
11036 uint64_t reserved_63 : 1;
11037 } s;
11038 /* struct ody_gicrx_pendbaser_s cn; */
11039 };
11040 typedef union ody_gicrx_pendbaser ody_gicrx_pendbaser_t;
11041
11042 static inline uint64_t ODY_GICRX_PENDBASER(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PENDBASER(uint64_t a)11043 static inline uint64_t ODY_GICRX_PENDBASER(uint64_t a)
11044 {
11045 if (a <= 81)
11046 return 0x801000080078ll + 0x40000ll * ((a) & 0x7f);
11047 __ody_csr_fatal("GICRX_PENDBASER", 1, a, 0, 0, 0, 0, 0);
11048 }
11049
11050 #define typedef_ODY_GICRX_PENDBASER(a) ody_gicrx_pendbaser_t
11051 #define bustype_ODY_GICRX_PENDBASER(a) CSR_TYPE_NCB
11052 #define basename_ODY_GICRX_PENDBASER(a) "GICRX_PENDBASER"
11053 #define device_bar_ODY_GICRX_PENDBASER(a) 0x0 /* PF_BAR0 */
11054 #define busnum_ODY_GICRX_PENDBASER(a) (a)
11055 #define arguments_ODY_GICRX_PENDBASER(a) (a), -1, -1, -1
11056
11057 /**
11058 * Register (NCB32b) gicr#_pidr0
11059 *
11060 * GICR Pidr0 Register
11061 * The GICR0_PIDR0 characteristics are:
11062 *
11063 * * Purpose
11064 * This register returns byte[0] of the peripheral ID of the GIC Redistributor page.
11065 *
11066 * * Usage constraints
11067 * There are no usage constraints.
11068 */
11069 union ody_gicrx_pidr0 {
11070 uint32_t u;
11071 struct ody_gicrx_pidr0_s {
11072 uint32_t part_0 : 8;
11073 uint32_t reserved_8_31 : 24;
11074 } s;
11075 /* struct ody_gicrx_pidr0_s cn; */
11076 };
11077 typedef union ody_gicrx_pidr0 ody_gicrx_pidr0_t;
11078
11079 static inline uint64_t ODY_GICRX_PIDR0(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PIDR0(uint64_t a)11080 static inline uint64_t ODY_GICRX_PIDR0(uint64_t a)
11081 {
11082 if (a <= 81)
11083 return 0x80100008ffe0ll + 0x40000ll * ((a) & 0x7f);
11084 __ody_csr_fatal("GICRX_PIDR0", 1, a, 0, 0, 0, 0, 0);
11085 }
11086
11087 #define typedef_ODY_GICRX_PIDR0(a) ody_gicrx_pidr0_t
11088 #define bustype_ODY_GICRX_PIDR0(a) CSR_TYPE_NCB32b
11089 #define basename_ODY_GICRX_PIDR0(a) "GICRX_PIDR0"
11090 #define device_bar_ODY_GICRX_PIDR0(a) 0x0 /* PF_BAR0 */
11091 #define busnum_ODY_GICRX_PIDR0(a) (a)
11092 #define arguments_ODY_GICRX_PIDR0(a) (a), -1, -1, -1
11093
11094 /**
11095 * Register (NCB32b) gicr#_pidr1
11096 *
11097 * GICR Pidr1 Register
11098 * The GICR0_PIDR1 characteristics are:
11099 *
11100 * * Purpose
11101 * This register returns byte[1] of the peripheral ID of the GIC Redistributor page.
11102 *
11103 * * Usage constraints
11104 * There are no usage constraints.
11105 */
11106 union ody_gicrx_pidr1 {
11107 uint32_t u;
11108 struct ody_gicrx_pidr1_s {
11109 uint32_t part_1 : 4;
11110 uint32_t des_0 : 4;
11111 uint32_t reserved_8_31 : 24;
11112 } s;
11113 /* struct ody_gicrx_pidr1_s cn; */
11114 };
11115 typedef union ody_gicrx_pidr1 ody_gicrx_pidr1_t;
11116
11117 static inline uint64_t ODY_GICRX_PIDR1(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PIDR1(uint64_t a)11118 static inline uint64_t ODY_GICRX_PIDR1(uint64_t a)
11119 {
11120 if (a <= 81)
11121 return 0x80100008ffe4ll + 0x40000ll * ((a) & 0x7f);
11122 __ody_csr_fatal("GICRX_PIDR1", 1, a, 0, 0, 0, 0, 0);
11123 }
11124
11125 #define typedef_ODY_GICRX_PIDR1(a) ody_gicrx_pidr1_t
11126 #define bustype_ODY_GICRX_PIDR1(a) CSR_TYPE_NCB32b
11127 #define basename_ODY_GICRX_PIDR1(a) "GICRX_PIDR1"
11128 #define device_bar_ODY_GICRX_PIDR1(a) 0x0 /* PF_BAR0 */
11129 #define busnum_ODY_GICRX_PIDR1(a) (a)
11130 #define arguments_ODY_GICRX_PIDR1(a) (a), -1, -1, -1
11131
11132 /**
11133 * Register (NCB32b) gicr#_pidr2
11134 *
11135 * GICR Pidr2 Register
11136 * The GICR0_PIDR2 characteristics are:
11137 *
11138 * * Purpose
11139 * This register returns byte[2] of the peripheral ID of the GIC Redistributor page.
11140 *
11141 * * Usage constraints
11142 * There are no usage constraints.
11143 */
11144 union ody_gicrx_pidr2 {
11145 uint32_t u;
11146 struct ody_gicrx_pidr2_s {
11147 uint32_t des_1 : 3;
11148 uint32_t jedec : 1;
11149 uint32_t revision : 4;
11150 uint32_t reserved_8_31 : 24;
11151 } s;
11152 /* struct ody_gicrx_pidr2_s cn; */
11153 };
11154 typedef union ody_gicrx_pidr2 ody_gicrx_pidr2_t;
11155
11156 static inline uint64_t ODY_GICRX_PIDR2(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PIDR2(uint64_t a)11157 static inline uint64_t ODY_GICRX_PIDR2(uint64_t a)
11158 {
11159 if (a <= 81)
11160 return 0x80100008ffe8ll + 0x40000ll * ((a) & 0x7f);
11161 __ody_csr_fatal("GICRX_PIDR2", 1, a, 0, 0, 0, 0, 0);
11162 }
11163
11164 #define typedef_ODY_GICRX_PIDR2(a) ody_gicrx_pidr2_t
11165 #define bustype_ODY_GICRX_PIDR2(a) CSR_TYPE_NCB32b
11166 #define basename_ODY_GICRX_PIDR2(a) "GICRX_PIDR2"
11167 #define device_bar_ODY_GICRX_PIDR2(a) 0x0 /* PF_BAR0 */
11168 #define busnum_ODY_GICRX_PIDR2(a) (a)
11169 #define arguments_ODY_GICRX_PIDR2(a) (a), -1, -1, -1
11170
11171 /**
11172 * Register (NCB32b) gicr#_pidr3
11173 *
11174 * GICR Pidr3 Register
11175 * The GICR0_PIDR3 characteristics are:
11176 *
11177 * * Purpose
11178 * This register returns byte[3] of the peripheral ID of the GIC Redistributor page.
11179 *
11180 * * Usage constraints
11181 * There are no usage constraints.
11182 */
11183 union ody_gicrx_pidr3 {
11184 uint32_t u;
11185 struct ody_gicrx_pidr3_s {
11186 uint32_t cmod : 3;
11187 uint32_t reserved_3 : 1;
11188 uint32_t revand : 4;
11189 uint32_t reserved_8_31 : 24;
11190 } s;
11191 /* struct ody_gicrx_pidr3_s cn; */
11192 };
11193 typedef union ody_gicrx_pidr3 ody_gicrx_pidr3_t;
11194
11195 static inline uint64_t ODY_GICRX_PIDR3(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PIDR3(uint64_t a)11196 static inline uint64_t ODY_GICRX_PIDR3(uint64_t a)
11197 {
11198 if (a <= 81)
11199 return 0x80100008ffecll + 0x40000ll * ((a) & 0x7f);
11200 __ody_csr_fatal("GICRX_PIDR3", 1, a, 0, 0, 0, 0, 0);
11201 }
11202
11203 #define typedef_ODY_GICRX_PIDR3(a) ody_gicrx_pidr3_t
11204 #define bustype_ODY_GICRX_PIDR3(a) CSR_TYPE_NCB32b
11205 #define basename_ODY_GICRX_PIDR3(a) "GICRX_PIDR3"
11206 #define device_bar_ODY_GICRX_PIDR3(a) 0x0 /* PF_BAR0 */
11207 #define busnum_ODY_GICRX_PIDR3(a) (a)
11208 #define arguments_ODY_GICRX_PIDR3(a) (a), -1, -1, -1
11209
11210 /**
11211 * Register (NCB32b) gicr#_pidr4
11212 *
11213 * GICR Pidr4 Register
11214 * The GICR0_PIDR4 characteristics are:
11215 *
11216 * * Purpose
11217 * This register returns byte[4] of the peripheral ID of the GIC Redistributor page.
11218 *
11219 * * Usage constraints
11220 * There are no usage constraints.
11221 */
11222 union ody_gicrx_pidr4 {
11223 uint32_t u;
11224 struct ody_gicrx_pidr4_s {
11225 uint32_t des_2 : 4;
11226 uint32_t size : 4;
11227 uint32_t reserved_8_31 : 24;
11228 } s;
11229 /* struct ody_gicrx_pidr4_s cn; */
11230 };
11231 typedef union ody_gicrx_pidr4 ody_gicrx_pidr4_t;
11232
11233 static inline uint64_t ODY_GICRX_PIDR4(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PIDR4(uint64_t a)11234 static inline uint64_t ODY_GICRX_PIDR4(uint64_t a)
11235 {
11236 if (a <= 81)
11237 return 0x80100008ffd0ll + 0x40000ll * ((a) & 0x7f);
11238 __ody_csr_fatal("GICRX_PIDR4", 1, a, 0, 0, 0, 0, 0);
11239 }
11240
11241 #define typedef_ODY_GICRX_PIDR4(a) ody_gicrx_pidr4_t
11242 #define bustype_ODY_GICRX_PIDR4(a) CSR_TYPE_NCB32b
11243 #define basename_ODY_GICRX_PIDR4(a) "GICRX_PIDR4"
11244 #define device_bar_ODY_GICRX_PIDR4(a) 0x0 /* PF_BAR0 */
11245 #define busnum_ODY_GICRX_PIDR4(a) (a)
11246 #define arguments_ODY_GICRX_PIDR4(a) (a), -1, -1, -1
11247
11248 /**
11249 * Register (NCB32b) gicr#_pidr5
11250 *
11251 * GICR Pidr5 Register
11252 * The GICR0_PIDR5 characteristics are:
11253 *
11254 * * Purpose
11255 * This register returns byte[5] of the peripheral ID of the GIC Redistributor page.
11256 *
11257 * * Usage constraints
11258 * There are no usage constraints.
11259 */
11260 union ody_gicrx_pidr5 {
11261 uint32_t u;
11262 struct ody_gicrx_pidr5_s {
11263 uint32_t reserved_0_31 : 32;
11264 } s;
11265 struct ody_gicrx_pidr5_cn {
11266 uint32_t reserved_0_7 : 8;
11267 uint32_t reserved_8_31 : 24;
11268 } cn;
11269 };
11270 typedef union ody_gicrx_pidr5 ody_gicrx_pidr5_t;
11271
11272 static inline uint64_t ODY_GICRX_PIDR5(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PIDR5(uint64_t a)11273 static inline uint64_t ODY_GICRX_PIDR5(uint64_t a)
11274 {
11275 if (a <= 81)
11276 return 0x80100008ffd4ll + 0x40000ll * ((a) & 0x7f);
11277 __ody_csr_fatal("GICRX_PIDR5", 1, a, 0, 0, 0, 0, 0);
11278 }
11279
11280 #define typedef_ODY_GICRX_PIDR5(a) ody_gicrx_pidr5_t
11281 #define bustype_ODY_GICRX_PIDR5(a) CSR_TYPE_NCB32b
11282 #define basename_ODY_GICRX_PIDR5(a) "GICRX_PIDR5"
11283 #define device_bar_ODY_GICRX_PIDR5(a) 0x0 /* PF_BAR0 */
11284 #define busnum_ODY_GICRX_PIDR5(a) (a)
11285 #define arguments_ODY_GICRX_PIDR5(a) (a), -1, -1, -1
11286
11287 /**
11288 * Register (NCB32b) gicr#_pidr6
11289 *
11290 * GICR Pidr6 Register
11291 * The GICR0_PIDR6 characteristics are:
11292 *
11293 * * Purpose
11294 * This register returns byte[6] of the peripheral ID of the GIC Redistributor page.
11295 *
11296 * * Usage constraints
11297 * There are no usage constraints.
11298 */
11299 union ody_gicrx_pidr6 {
11300 uint32_t u;
11301 struct ody_gicrx_pidr6_s {
11302 uint32_t reserved_0_31 : 32;
11303 } s;
11304 struct ody_gicrx_pidr6_cn {
11305 uint32_t reserved_0_7 : 8;
11306 uint32_t reserved_8_31 : 24;
11307 } cn;
11308 };
11309 typedef union ody_gicrx_pidr6 ody_gicrx_pidr6_t;
11310
11311 static inline uint64_t ODY_GICRX_PIDR6(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PIDR6(uint64_t a)11312 static inline uint64_t ODY_GICRX_PIDR6(uint64_t a)
11313 {
11314 if (a <= 81)
11315 return 0x80100008ffd8ll + 0x40000ll * ((a) & 0x7f);
11316 __ody_csr_fatal("GICRX_PIDR6", 1, a, 0, 0, 0, 0, 0);
11317 }
11318
11319 #define typedef_ODY_GICRX_PIDR6(a) ody_gicrx_pidr6_t
11320 #define bustype_ODY_GICRX_PIDR6(a) CSR_TYPE_NCB32b
11321 #define basename_ODY_GICRX_PIDR6(a) "GICRX_PIDR6"
11322 #define device_bar_ODY_GICRX_PIDR6(a) 0x0 /* PF_BAR0 */
11323 #define busnum_ODY_GICRX_PIDR6(a) (a)
11324 #define arguments_ODY_GICRX_PIDR6(a) (a), -1, -1, -1
11325
11326 /**
11327 * Register (NCB32b) gicr#_pidr7
11328 *
11329 * GICR Pidr7 Register
11330 * The GICR0_PIDR7 characteristics are:
11331 *
11332 * * Purpose
11333 * This register returns byte[7] of the peripheral ID of the GIC Redistributor page.
11334 *
11335 * * Usage constraints
11336 * There are no usage constraints.
11337 */
11338 union ody_gicrx_pidr7 {
11339 uint32_t u;
11340 struct ody_gicrx_pidr7_s {
11341 uint32_t reserved_0_31 : 32;
11342 } s;
11343 struct ody_gicrx_pidr7_cn {
11344 uint32_t reserved_0_7 : 8;
11345 uint32_t reserved_8_31 : 24;
11346 } cn;
11347 };
11348 typedef union ody_gicrx_pidr7 ody_gicrx_pidr7_t;
11349
11350 static inline uint64_t ODY_GICRX_PIDR7(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PIDR7(uint64_t a)11351 static inline uint64_t ODY_GICRX_PIDR7(uint64_t a)
11352 {
11353 if (a <= 81)
11354 return 0x80100008ffdcll + 0x40000ll * ((a) & 0x7f);
11355 __ody_csr_fatal("GICRX_PIDR7", 1, a, 0, 0, 0, 0, 0);
11356 }
11357
11358 #define typedef_ODY_GICRX_PIDR7(a) ody_gicrx_pidr7_t
11359 #define bustype_ODY_GICRX_PIDR7(a) CSR_TYPE_NCB32b
11360 #define basename_ODY_GICRX_PIDR7(a) "GICRX_PIDR7"
11361 #define device_bar_ODY_GICRX_PIDR7(a) 0x0 /* PF_BAR0 */
11362 #define busnum_ODY_GICRX_PIDR7(a) (a)
11363 #define arguments_ODY_GICRX_PIDR7(a) (a), -1, -1, -1
11364
11365 /**
11366 * Register (NCB) gicr#_propbaser
11367 *
11368 * GICR Propbaser Register
11369 * The GICR0_PROPBASER characteristics are:
11370 *
11371 * * Purpose
11372 * Specifies the base address, Shareability and Cacheability of accesses to the LPI
11373 * Configuration table.
11374 *
11375 * * Usage constraints
11376 * A copy of this register is provided for each Redistributor, however, the state is
11377 * shared according to GICR0_TYPER.CommonLPIAff and should be programmed to matching
11378 * values.
11379 */
11380 union ody_gicrx_propbaser {
11381 uint64_t u;
11382 struct ody_gicrx_propbaser_s {
11383 uint64_t idbits : 5;
11384 uint64_t reserved_5_6 : 2;
11385 uint64_t cacheability : 3;
11386 uint64_t shareability : 2;
11387 uint64_t physicaladdress : 40;
11388 uint64_t reserved_52_55 : 4;
11389 uint64_t outercacheability : 3;
11390 uint64_t reserved_59_63 : 5;
11391 } s;
11392 /* struct ody_gicrx_propbaser_s cn; */
11393 };
11394 typedef union ody_gicrx_propbaser ody_gicrx_propbaser_t;
11395
11396 static inline uint64_t ODY_GICRX_PROPBASER(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PROPBASER(uint64_t a)11397 static inline uint64_t ODY_GICRX_PROPBASER(uint64_t a)
11398 {
11399 if (a <= 81)
11400 return 0x801000080070ll + 0x40000ll * ((a) & 0x7f);
11401 __ody_csr_fatal("GICRX_PROPBASER", 1, a, 0, 0, 0, 0, 0);
11402 }
11403
11404 #define typedef_ODY_GICRX_PROPBASER(a) ody_gicrx_propbaser_t
11405 #define bustype_ODY_GICRX_PROPBASER(a) CSR_TYPE_NCB
11406 #define basename_ODY_GICRX_PROPBASER(a) "GICRX_PROPBASER"
11407 #define device_bar_ODY_GICRX_PROPBASER(a) 0x0 /* PF_BAR0 */
11408 #define busnum_ODY_GICRX_PROPBASER(a) (a)
11409 #define arguments_ODY_GICRX_PROPBASER(a) (a), -1, -1, -1
11410
11411 /**
11412 * Register (NCB32b) gicr#_pwrr
11413 *
11414 * GICR Pwrr Register
11415 * The GICR0_PWRR characteristics are:
11416 *
11417 * * Purpose
11418 * This register controls the powerup sequence of the Redistributors. Software must
11419 * write to this register during the powerup sequence.
11420 *
11421 * * Usage constraints
11422 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
11423 */
11424 union ody_gicrx_pwrr {
11425 uint32_t u;
11426 struct ody_gicrx_pwrr_s {
11427 uint32_t rdpd : 1;
11428 uint32_t rdag : 1;
11429 uint32_t rdgpd : 1;
11430 uint32_t rdgpo : 1;
11431 uint32_t reserved_4_7 : 4;
11432 uint32_t rdgo : 7;
11433 uint32_t rdg : 9;
11434 uint32_t reserved_24_31 : 8;
11435 } s;
11436 /* struct ody_gicrx_pwrr_s cn; */
11437 };
11438 typedef union ody_gicrx_pwrr ody_gicrx_pwrr_t;
11439
11440 static inline uint64_t ODY_GICRX_PWRR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_PWRR(uint64_t a)11441 static inline uint64_t ODY_GICRX_PWRR(uint64_t a)
11442 {
11443 if (a <= 81)
11444 return 0x801000080024ll + 0x40000ll * ((a) & 0x7f);
11445 __ody_csr_fatal("GICRX_PWRR", 1, a, 0, 0, 0, 0, 0);
11446 }
11447
11448 #define typedef_ODY_GICRX_PWRR(a) ody_gicrx_pwrr_t
11449 #define bustype_ODY_GICRX_PWRR(a) CSR_TYPE_NCB32b
11450 #define basename_ODY_GICRX_PWRR(a) "GICRX_PWRR"
11451 #define device_bar_ODY_GICRX_PWRR(a) 0x0 /* PF_BAR0 */
11452 #define busnum_ODY_GICRX_PWRR(a) (a)
11453 #define arguments_ODY_GICRX_PWRR(a) (a), -1, -1, -1
11454
11455 /**
11456 * Register (NCB) gicr#_sgidr
11457 *
11458 * GICR Sgidr Register
11459 * The GICR0_SGIDR characteristics are:
11460 *
11461 * * Purpose
11462 * This register controls the default value of SGI settings, for use in the case of a
11463 * Double-bit Error Detect Error (DEDERR).
11464 *
11465 * * Usage constraints
11466 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
11467 *
11468 * \> *Note*
11469 * \> This register is shared across all PEs on the GIC
11470 */
11471 union ody_gicrx_sgidr {
11472 uint64_t u;
11473 struct ody_gicrx_sgidr_s {
11474 uint64_t nsacr0 : 1;
11475 uint64_t grp0 : 1;
11476 uint64_t grpmod0 : 1;
11477 uint64_t reserved_3 : 1;
11478 uint64_t nsacr1 : 1;
11479 uint64_t grp1 : 1;
11480 uint64_t grpmod1 : 1;
11481 uint64_t reserved_7 : 1;
11482 uint64_t nsacr2 : 1;
11483 uint64_t grp2 : 1;
11484 uint64_t grpmod2 : 1;
11485 uint64_t reserved_11 : 1;
11486 uint64_t nsacr3 : 1;
11487 uint64_t grp3 : 1;
11488 uint64_t grpmod3 : 1;
11489 uint64_t reserved_15 : 1;
11490 uint64_t nsacr4 : 1;
11491 uint64_t grp4 : 1;
11492 uint64_t grpmod4 : 1;
11493 uint64_t reserved_19 : 1;
11494 uint64_t nsacr5 : 1;
11495 uint64_t grp5 : 1;
11496 uint64_t grpmod5 : 1;
11497 uint64_t reserved_23 : 1;
11498 uint64_t nsacr6 : 1;
11499 uint64_t grp6 : 1;
11500 uint64_t grpmod6 : 1;
11501 uint64_t reserved_27 : 1;
11502 uint64_t nsacr7 : 1;
11503 uint64_t grp7 : 1;
11504 uint64_t grpmod7 : 1;
11505 uint64_t reserved_31 : 1;
11506 uint64_t nsacr8 : 1;
11507 uint64_t grp8 : 1;
11508 uint64_t grpmod8 : 1;
11509 uint64_t reserved_35 : 1;
11510 uint64_t nsacr9 : 1;
11511 uint64_t grp9 : 1;
11512 uint64_t grpmod9 : 1;
11513 uint64_t reserved_39 : 1;
11514 uint64_t nsacr10 : 1;
11515 uint64_t grp10 : 1;
11516 uint64_t grpmod10 : 1;
11517 uint64_t reserved_43 : 1;
11518 uint64_t nsacr11 : 1;
11519 uint64_t grp11 : 1;
11520 uint64_t grpmod11 : 1;
11521 uint64_t reserved_47 : 1;
11522 uint64_t nsacr12 : 1;
11523 uint64_t grp12 : 1;
11524 uint64_t grpmod12 : 1;
11525 uint64_t reserved_51 : 1;
11526 uint64_t nsacr13 : 1;
11527 uint64_t grp13 : 1;
11528 uint64_t grpmod13 : 1;
11529 uint64_t reserved_55 : 1;
11530 uint64_t nsacr14 : 1;
11531 uint64_t grp14 : 1;
11532 uint64_t grpmod14 : 1;
11533 uint64_t reserved_59 : 1;
11534 uint64_t nsacr15 : 1;
11535 uint64_t grp15 : 1;
11536 uint64_t grpmod15 : 1;
11537 uint64_t reserved_63 : 1;
11538 } s;
11539 /* struct ody_gicrx_sgidr_s cn; */
11540 };
11541 typedef union ody_gicrx_sgidr ody_gicrx_sgidr_t;
11542
11543 static inline uint64_t ODY_GICRX_SGIDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_SGIDR(uint64_t a)11544 static inline uint64_t ODY_GICRX_SGIDR(uint64_t a)
11545 {
11546 if (a <= 81)
11547 return 0x80100009c010ll + 0x40000ll * ((a) & 0x7f);
11548 __ody_csr_fatal("GICRX_SGIDR", 1, a, 0, 0, 0, 0, 0);
11549 }
11550
11551 #define typedef_ODY_GICRX_SGIDR(a) ody_gicrx_sgidr_t
11552 #define bustype_ODY_GICRX_SGIDR(a) CSR_TYPE_NCB
11553 #define basename_ODY_GICRX_SGIDR(a) "GICRX_SGIDR"
11554 #define device_bar_ODY_GICRX_SGIDR(a) 0x0 /* PF_BAR0 */
11555 #define busnum_ODY_GICRX_SGIDR(a) (a)
11556 #define arguments_ODY_GICRX_SGIDR(a) (a), -1, -1, -1
11557
11558 /**
11559 * Register (NCB32b) gicr#_statusr
11560 *
11561 * GICR Statusr Register
11562 * The GICR0_STATUS characteristics are:
11563 *
11564 * * Purpose
11565 * This register is not used.
11566 *
11567 * See the GICT register page for details of error reporting by the GIC
11568 *
11569 * * Usage constraints
11570 * There are no usage constraints.
11571 */
11572 union ody_gicrx_statusr {
11573 uint32_t u;
11574 struct ody_gicrx_statusr_s {
11575 uint32_t reserved_0_31 : 32;
11576 } s;
11577 /* struct ody_gicrx_statusr_s cn; */
11578 };
11579 typedef union ody_gicrx_statusr ody_gicrx_statusr_t;
11580
11581 static inline uint64_t ODY_GICRX_STATUSR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_STATUSR(uint64_t a)11582 static inline uint64_t ODY_GICRX_STATUSR(uint64_t a)
11583 {
11584 if (a <= 81)
11585 return 0x801000080010ll + 0x40000ll * ((a) & 0x7f);
11586 __ody_csr_fatal("GICRX_STATUSR", 1, a, 0, 0, 0, 0, 0);
11587 }
11588
11589 #define typedef_ODY_GICRX_STATUSR(a) ody_gicrx_statusr_t
11590 #define bustype_ODY_GICRX_STATUSR(a) CSR_TYPE_NCB32b
11591 #define basename_ODY_GICRX_STATUSR(a) "GICRX_STATUSR"
11592 #define device_bar_ODY_GICRX_STATUSR(a) 0x0 /* PF_BAR0 */
11593 #define busnum_ODY_GICRX_STATUSR(a) (a)
11594 #define arguments_ODY_GICRX_STATUSR(a) (a), -1, -1, -1
11595
11596 /**
11597 * Register (NCB32b) gicr#_syncr
11598 *
11599 * GICR Syncr Register
11600 * The GICR0_SYNCR characteristics are:
11601 *
11602 * * Purpose
11603 * Indicates completion of register based invalidation operations.
11604 *
11605 * * Usage constraints
11606 * None
11607 *
11608 * A copy of this register is provided for each Redistributor.
11609 */
11610 union ody_gicrx_syncr {
11611 uint32_t u;
11612 struct ody_gicrx_syncr_s {
11613 uint32_t busy : 1;
11614 uint32_t reserved_1_31 : 31;
11615 } s;
11616 /* struct ody_gicrx_syncr_s cn; */
11617 };
11618 typedef union ody_gicrx_syncr ody_gicrx_syncr_t;
11619
11620 static inline uint64_t ODY_GICRX_SYNCR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_SYNCR(uint64_t a)11621 static inline uint64_t ODY_GICRX_SYNCR(uint64_t a)
11622 {
11623 if (a <= 81)
11624 return 0x8010000800c0ll + 0x40000ll * ((a) & 0x7f);
11625 __ody_csr_fatal("GICRX_SYNCR", 1, a, 0, 0, 0, 0, 0);
11626 }
11627
11628 #define typedef_ODY_GICRX_SYNCR(a) ody_gicrx_syncr_t
11629 #define bustype_ODY_GICRX_SYNCR(a) CSR_TYPE_NCB32b
11630 #define basename_ODY_GICRX_SYNCR(a) "GICRX_SYNCR"
11631 #define device_bar_ODY_GICRX_SYNCR(a) 0x0 /* PF_BAR0 */
11632 #define busnum_ODY_GICRX_SYNCR(a) (a)
11633 #define arguments_ODY_GICRX_SYNCR(a) (a), -1, -1, -1
11634
11635 /**
11636 * Register (NCB) gicr#_typer
11637 *
11638 * GICR Typer Register
11639 * The GICR0_TYPER characteristics are:
11640 *
11641 * * Purpose
11642 * Provides information about the configuration of this Redistributor.
11643 *
11644 * * Usage constraints
11645 * There are no usage constraints
11646 */
11647 union ody_gicrx_typer {
11648 uint64_t u;
11649 struct ody_gicrx_typer_s {
11650 uint64_t plpis : 1;
11651 uint64_t vlpis : 1;
11652 uint64_t dirty : 1;
11653 uint64_t directlpi : 1;
11654 uint64_t last : 1;
11655 uint64_t dpgs : 1;
11656 uint64_t mpam : 1;
11657 uint64_t rvpeid : 1;
11658 uint64_t processornumber : 16;
11659 uint64_t commonlpiaff : 2;
11660 uint64_t vsgi : 1;
11661 uint64_t ppinum : 5;
11662 uint64_t affinityvalue : 32;
11663 } s;
11664 /* struct ody_gicrx_typer_s cn; */
11665 };
11666 typedef union ody_gicrx_typer ody_gicrx_typer_t;
11667
11668 static inline uint64_t ODY_GICRX_TYPER(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_TYPER(uint64_t a)11669 static inline uint64_t ODY_GICRX_TYPER(uint64_t a)
11670 {
11671 if (a <= 81)
11672 return 0x801000080008ll + 0x40000ll * ((a) & 0x7f);
11673 __ody_csr_fatal("GICRX_TYPER", 1, a, 0, 0, 0, 0, 0);
11674 }
11675
11676 #define typedef_ODY_GICRX_TYPER(a) ody_gicrx_typer_t
11677 #define bustype_ODY_GICRX_TYPER(a) CSR_TYPE_NCB
11678 #define basename_ODY_GICRX_TYPER(a) "GICRX_TYPER"
11679 #define device_bar_ODY_GICRX_TYPER(a) 0x0 /* PF_BAR0 */
11680 #define busnum_ODY_GICRX_TYPER(a) (a)
11681 #define arguments_ODY_GICRX_TYPER(a) (a), -1, -1, -1
11682
11683 /**
11684 * Register (NCB) gicr#_vcfgbaser
11685 *
11686 * GICR Vcfgbaser Register
11687 * The GICR0_VCFGBASER characteristics are:
11688 *
11689 * * Purpose
11690 * This register returns the access attributes of the vPE CFG table.
11691 *
11692 * * Usage constraints
11693 * There are no usage constraints.
11694 */
11695 union ody_gicrx_vcfgbaser {
11696 uint64_t u;
11697 struct ody_gicrx_vcfgbaser_s {
11698 uint64_t size : 7;
11699 uint64_t innercache : 3;
11700 uint64_t shareability : 2;
11701 uint64_t addr : 40;
11702 uint64_t reserved_52 : 1;
11703 uint64_t page_size : 2;
11704 uint64_t indirect : 1;
11705 uint64_t outercache : 3;
11706 uint64_t entry_size : 3;
11707 uint64_t sleep : 1;
11708 uint64_t valid : 1;
11709 } s;
11710 /* struct ody_gicrx_vcfgbaser_s cn; */
11711 };
11712 typedef union ody_gicrx_vcfgbaser ody_gicrx_vcfgbaser_t;
11713
11714 static inline uint64_t ODY_GICRX_VCFGBASER(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_VCFGBASER(uint64_t a)11715 static inline uint64_t ODY_GICRX_VCFGBASER(uint64_t a)
11716 {
11717 if (a <= 81)
11718 return 0x8010000ac100ll + 0x40000ll * ((a) & 0x7f);
11719 __ody_csr_fatal("GICRX_VCFGBASER", 1, a, 0, 0, 0, 0, 0);
11720 }
11721
11722 #define typedef_ODY_GICRX_VCFGBASER(a) ody_gicrx_vcfgbaser_t
11723 #define bustype_ODY_GICRX_VCFGBASER(a) CSR_TYPE_NCB
11724 #define basename_ODY_GICRX_VCFGBASER(a) "GICRX_VCFGBASER"
11725 #define device_bar_ODY_GICRX_VCFGBASER(a) 0x0 /* PF_BAR0 */
11726 #define busnum_ODY_GICRX_VCFGBASER(a) (a)
11727 #define arguments_ODY_GICRX_VCFGBASER(a) (a), -1, -1, -1
11728
11729 /**
11730 * Register (NCB) gicr#_verrr
11731 *
11732 * GICR Verrr Register
11733 * The GICR_VERRR characteristics are:
11734 *
11735 * * Purpose
11736 * This register can set and clear the error bit for a vPE in the vICM RAM.
11737 * You can use the register to find vPEs with an error and obtain vPE information from
11738 * the vTGT and VICM RAMs.
11739 *
11740 * * Usage constraints
11741 * Only accessible using a 64-bit access.
11742 */
11743 union ody_gicrx_verrr {
11744 uint64_t u;
11745 struct ody_gicrx_verrr_s {
11746 uint64_t vpeid : 11;
11747 uint64_t reserved_11_13 : 3;
11748 uint64_t readblock : 3;
11749 uint64_t reserved_17_59 : 43;
11750 uint64_t opcode : 2;
11751 uint64_t response : 1;
11752 uint64_t busy : 1;
11753 } s;
11754 /* struct ody_gicrx_verrr_s cn; */
11755 };
11756 typedef union ody_gicrx_verrr ody_gicrx_verrr_t;
11757
11758 static inline uint64_t ODY_GICRX_VERRR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_VERRR(uint64_t a)11759 static inline uint64_t ODY_GICRX_VERRR(uint64_t a)
11760 {
11761 if (a <= 81)
11762 return 0x8010000ae100ll + 0x40000ll * ((a) & 0x7f);
11763 __ody_csr_fatal("GICRX_VERRR", 1, a, 0, 0, 0, 0, 0);
11764 }
11765
11766 #define typedef_ODY_GICRX_VERRR(a) ody_gicrx_verrr_t
11767 #define bustype_ODY_GICRX_VERRR(a) CSR_TYPE_NCB
11768 #define basename_ODY_GICRX_VERRR(a) "GICRX_VERRR"
11769 #define device_bar_ODY_GICRX_VERRR(a) 0x0 /* PF_BAR0 */
11770 #define busnum_ODY_GICRX_VERRR(a) (a)
11771 #define arguments_ODY_GICRX_VERRR(a) (a), -1, -1, -1
11772
11773 /**
11774 * Register (NCB32b) gicr#_vfctlr
11775 *
11776 * GICR Vfctlr Register
11777 * The GICR0_VFCTLR characteristics are:
11778 *
11779 * * Purpose
11780 * This register controls the non-Architectural features associated with virtual
11781 * interrupts in the GIC.
11782 *
11783 * * Usage constraints
11784 * Only accessible by Secure accesses or when GICD(A)_DS.DS == 1.
11785 */
11786 union ody_gicrx_vfctlr {
11787 uint32_t u;
11788 struct ody_gicrx_vfctlr_s {
11789 uint32_t credlim : 1;
11790 uint32_t sgilim : 1;
11791 uint32_t lpilim : 1;
11792 uint32_t credlimcount : 2;
11793 uint32_t reserved_5_31 : 27;
11794 } s;
11795 struct ody_gicrx_vfctlr_cn {
11796 uint32_t credlim : 1;
11797 uint32_t sgilim : 1;
11798 uint32_t lpilim : 1;
11799 uint32_t credlimcount : 2;
11800 uint32_t reserved_5_8 : 4;
11801 uint32_t reserved_9 : 1;
11802 uint32_t reserved_10_31 : 22;
11803 } cn;
11804 };
11805 typedef union ody_gicrx_vfctlr ody_gicrx_vfctlr_t;
11806
11807 static inline uint64_t ODY_GICRX_VFCTLR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_VFCTLR(uint64_t a)11808 static inline uint64_t ODY_GICRX_VFCTLR(uint64_t a)
11809 {
11810 if (a <= 81)
11811 return 0x8010000ac000ll + 0x40000ll * ((a) & 0x7f);
11812 __ody_csr_fatal("GICRX_VFCTLR", 1, a, 0, 0, 0, 0, 0);
11813 }
11814
11815 #define typedef_ODY_GICRX_VFCTLR(a) ody_gicrx_vfctlr_t
11816 #define bustype_ODY_GICRX_VFCTLR(a) CSR_TYPE_NCB32b
11817 #define basename_ODY_GICRX_VFCTLR(a) "GICRX_VFCTLR"
11818 #define device_bar_ODY_GICRX_VFCTLR(a) 0x0 /* PF_BAR0 */
11819 #define busnum_ODY_GICRX_VFCTLR(a) (a)
11820 #define arguments_ODY_GICRX_VFCTLR(a) (a), -1, -1, -1
11821
11822 /**
11823 * Register (NCB32b) gicr#_vinvchipr
11824 *
11825 * GICR Vinvchipr Register
11826 * The GICR_VINVCHIPR characteristics are:
11827 *
11828 * * Purpose
11829 *
11830 * This register is RES0.
11831 */
11832 union ody_gicrx_vinvchipr {
11833 uint32_t u;
11834 struct ody_gicrx_vinvchipr_s {
11835 uint32_t chiplist : 1;
11836 uint32_t reserved_1_29 : 29;
11837 uint32_t vid : 1;
11838 uint32_t valid : 1;
11839 } s;
11840 /* struct ody_gicrx_vinvchipr_s cn; */
11841 };
11842 typedef union ody_gicrx_vinvchipr ody_gicrx_vinvchipr_t;
11843
11844 static inline uint64_t ODY_GICRX_VINVCHIPR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_VINVCHIPR(uint64_t a)11845 static inline uint64_t ODY_GICRX_VINVCHIPR(uint64_t a)
11846 {
11847 if (a <= 81)
11848 return 0x8010000a0120ll + 0x40000ll * ((a) & 0x7f);
11849 __ody_csr_fatal("GICRX_VINVCHIPR", 1, a, 0, 0, 0, 0, 0);
11850 }
11851
11852 #define typedef_ODY_GICRX_VINVCHIPR(a) ody_gicrx_vinvchipr_t
11853 #define bustype_ODY_GICRX_VINVCHIPR(a) CSR_TYPE_NCB32b
11854 #define basename_ODY_GICRX_VINVCHIPR(a) "GICRX_VINVCHIPR"
11855 #define device_bar_ODY_GICRX_VINVCHIPR(a) 0x0 /* PF_BAR0 */
11856 #define busnum_ODY_GICRX_VINVCHIPR(a) (a)
11857 #define arguments_ODY_GICRX_VINVCHIPR(a) (a), -1, -1, -1
11858
11859 /**
11860 * Register (NCB) gicr#_vpendbaser
11861 *
11862 * GICR Vpendbaser Register
11863 * The GICR0_VPENDBASER characteristics are:
11864 *
11865 * * Purpose
11866 * Specifies the base address of the memory that holds the virtual LPI Pending table
11867 * for the currently scheduled virtual machine.
11868 *
11869 * * Usage constraints
11870 * There are no usage constraints.
11871 */
11872 union ody_gicrx_vpendbaser {
11873 uint64_t u;
11874 struct ody_gicrx_vpendbaser_s {
11875 uint64_t vpeid : 11;
11876 uint64_t reserved_11_57 : 47;
11877 uint64_t vgrp1en : 1;
11878 uint64_t vgrp0en : 1;
11879 uint64_t dirty : 1;
11880 uint64_t pendinglast : 1;
11881 uint64_t doorbell : 1;
11882 uint64_t valid : 1;
11883 } s;
11884 /* struct ody_gicrx_vpendbaser_s cn; */
11885 };
11886 typedef union ody_gicrx_vpendbaser ody_gicrx_vpendbaser_t;
11887
11888 static inline uint64_t ODY_GICRX_VPENDBASER(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_VPENDBASER(uint64_t a)11889 static inline uint64_t ODY_GICRX_VPENDBASER(uint64_t a)
11890 {
11891 if (a <= 81)
11892 return 0x8010000a0078ll + 0x40000ll * ((a) & 0x7f);
11893 __ody_csr_fatal("GICRX_VPENDBASER", 1, a, 0, 0, 0, 0, 0);
11894 }
11895
11896 #define typedef_ODY_GICRX_VPENDBASER(a) ody_gicrx_vpendbaser_t
11897 #define bustype_ODY_GICRX_VPENDBASER(a) CSR_TYPE_NCB
11898 #define basename_ODY_GICRX_VPENDBASER(a) "GICRX_VPENDBASER"
11899 #define device_bar_ODY_GICRX_VPENDBASER(a) 0x0 /* PF_BAR0 */
11900 #define busnum_ODY_GICRX_VPENDBASER(a) (a)
11901 #define arguments_ODY_GICRX_VPENDBASER(a) (a), -1, -1, -1
11902
11903 /**
11904 * Register (NCB) gicr#_vpropbaser
11905 *
11906 * GICR Vpropbaser Register
11907 * The GICR0_VPROPBASER characteristics are:
11908 *
11909 * * Purpose
11910 * Specifies the base address of the memory that holds the vPE Configuration table.
11911 *
11912 * * Usage constraints
11913 * There are no usage constraints.
11914 */
11915 union ody_gicrx_vpropbaser {
11916 uint64_t u;
11917 struct ody_gicrx_vpropbaser_s {
11918 uint64_t size : 7;
11919 uint64_t innercache : 3;
11920 uint64_t shareability : 2;
11921 uint64_t addr : 40;
11922 uint64_t z : 1;
11923 uint64_t page_size : 2;
11924 uint64_t indirect : 1;
11925 uint64_t outercache : 3;
11926 uint64_t entry_size : 3;
11927 uint64_t reserved_62 : 1;
11928 uint64_t valid : 1;
11929 } s;
11930 /* struct ody_gicrx_vpropbaser_s cn; */
11931 };
11932 typedef union ody_gicrx_vpropbaser ody_gicrx_vpropbaser_t;
11933
11934 static inline uint64_t ODY_GICRX_VPROPBASER(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_VPROPBASER(uint64_t a)11935 static inline uint64_t ODY_GICRX_VPROPBASER(uint64_t a)
11936 {
11937 if (a <= 81)
11938 return 0x8010000a0070ll + 0x40000ll * ((a) & 0x7f);
11939 __ody_csr_fatal("GICRX_VPROPBASER", 1, a, 0, 0, 0, 0, 0);
11940 }
11941
11942 #define typedef_ODY_GICRX_VPROPBASER(a) ody_gicrx_vpropbaser_t
11943 #define bustype_ODY_GICRX_VPROPBASER(a) CSR_TYPE_NCB
11944 #define basename_ODY_GICRX_VPROPBASER(a) "GICRX_VPROPBASER"
11945 #define device_bar_ODY_GICRX_VPROPBASER(a) 0x0 /* PF_BAR0 */
11946 #define busnum_ODY_GICRX_VPROPBASER(a) (a)
11947 #define arguments_ODY_GICRX_VPROPBASER(a) (a), -1, -1, -1
11948
11949 /**
11950 * Register (NCB32b) gicr#_vsgipendr
11951 *
11952 * GICR Vsgipendr Register
11953 * The GICR_VSGIPENDR characteristics are:
11954 *
11955 * * Purpose
11956 * Requests the pending state of virtual SGIs for a specified vPE.
11957 *
11958 * * Usage constraints
11959 * There are no usage constraints.
11960 */
11961 union ody_gicrx_vsgipendr {
11962 uint32_t u;
11963 struct ody_gicrx_vsgipendr_s {
11964 uint32_t pending : 16;
11965 uint32_t reserved_16_30 : 15;
11966 uint32_t busy : 1;
11967 } s;
11968 /* struct ody_gicrx_vsgipendr_s cn; */
11969 };
11970 typedef union ody_gicrx_vsgipendr ody_gicrx_vsgipendr_t;
11971
11972 static inline uint64_t ODY_GICRX_VSGIPENDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_VSGIPENDR(uint64_t a)11973 static inline uint64_t ODY_GICRX_VSGIPENDR(uint64_t a)
11974 {
11975 if (a <= 81)
11976 return 0x8010000a0088ll + 0x40000ll * ((a) & 0x7f);
11977 __ody_csr_fatal("GICRX_VSGIPENDR", 1, a, 0, 0, 0, 0, 0);
11978 }
11979
11980 #define typedef_ODY_GICRX_VSGIPENDR(a) ody_gicrx_vsgipendr_t
11981 #define bustype_ODY_GICRX_VSGIPENDR(a) CSR_TYPE_NCB32b
11982 #define basename_ODY_GICRX_VSGIPENDR(a) "GICRX_VSGIPENDR"
11983 #define device_bar_ODY_GICRX_VSGIPENDR(a) 0x0 /* PF_BAR0 */
11984 #define busnum_ODY_GICRX_VSGIPENDR(a) (a)
11985 #define arguments_ODY_GICRX_VSGIPENDR(a) (a), -1, -1, -1
11986
11987 /**
11988 * Register (NCB) gicr#_vsgir
11989 *
11990 * GICR Vsgir Register
11991 * The GICR_VSGIR characteristics are:
11992 * *Purpose
11993 * Requests the pending state of virtual SGIs for a specified vPE.
11994 *
11995 * *Usage constraints
11996 * 64-bit access only.
11997 */
11998 union ody_gicrx_vsgir {
11999 uint64_t u;
12000 struct ody_gicrx_vsgir_s {
12001 uint64_t vpeid : 11;
12002 uint64_t reserved_11_63 : 53;
12003 } s;
12004 /* struct ody_gicrx_vsgir_s cn; */
12005 };
12006 typedef union ody_gicrx_vsgir ody_gicrx_vsgir_t;
12007
12008 static inline uint64_t ODY_GICRX_VSGIR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_VSGIR(uint64_t a)12009 static inline uint64_t ODY_GICRX_VSGIR(uint64_t a)
12010 {
12011 if (a <= 81)
12012 return 0x8010000a0080ll + 0x40000ll * ((a) & 0x7f);
12013 __ody_csr_fatal("GICRX_VSGIR", 1, a, 0, 0, 0, 0, 0);
12014 }
12015
12016 #define typedef_ODY_GICRX_VSGIR(a) ody_gicrx_vsgir_t
12017 #define bustype_ODY_GICRX_VSGIR(a) CSR_TYPE_NCB
12018 #define basename_ODY_GICRX_VSGIR(a) "GICRX_VSGIR"
12019 #define device_bar_ODY_GICRX_VSGIR(a) 0x0 /* PF_BAR0 */
12020 #define busnum_ODY_GICRX_VSGIR(a) (a)
12021 #define arguments_ODY_GICRX_VSGIR(a) (a), -1, -1, -1
12022
12023 /**
12024 * Register (NCB32b) gicr#_waker
12025 *
12026 * GICR Waker Register
12027 * The GICR0_WAKER characteristics are:
12028 *
12029 * * Purpose
12030 * Permits software to control the behavior of the WakeRequest power management signal
12031 * corresponding to the Redistributor. Power management operations follow the rules in
12032 * Power management section in TRM.
12033 *
12034 * * Usage constraints
12035 * Secure only when GICD_CTLR.DS==0, this is a Secure register.
12036 */
12037 union ody_gicrx_waker {
12038 uint32_t u;
12039 struct ody_gicrx_waker_s {
12040 uint32_t sleep : 1;
12041 uint32_t processorsleep : 1;
12042 uint32_t childrenasleep : 1;
12043 uint32_t reserved_3_30 : 28;
12044 uint32_t quiescent : 1;
12045 } s;
12046 /* struct ody_gicrx_waker_s cn; */
12047 };
12048 typedef union ody_gicrx_waker ody_gicrx_waker_t;
12049
12050 static inline uint64_t ODY_GICRX_WAKER(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICRX_WAKER(uint64_t a)12051 static inline uint64_t ODY_GICRX_WAKER(uint64_t a)
12052 {
12053 if (a <= 81)
12054 return 0x801000080014ll + 0x40000ll * ((a) & 0x7f);
12055 __ody_csr_fatal("GICRX_WAKER", 1, a, 0, 0, 0, 0, 0);
12056 }
12057
12058 #define typedef_ODY_GICRX_WAKER(a) ody_gicrx_waker_t
12059 #define bustype_ODY_GICRX_WAKER(a) CSR_TYPE_NCB32b
12060 #define basename_ODY_GICRX_WAKER(a) "GICRX_WAKER"
12061 #define device_bar_ODY_GICRX_WAKER(a) 0x0 /* PF_BAR0 */
12062 #define busnum_ODY_GICRX_WAKER(a) (a)
12063 #define arguments_ODY_GICRX_WAKER(a) (a), -1, -1, -1
12064
12065 /**
12066 * Register (NCB32b) gict_cidr0
12067 *
12068 * GICT Cidr0 Register
12069 * The GICT_CIDR0 characteristics are:
12070 *
12071 * * Purpose
12072 * This register is one of the Component Identification Registers and returns the first
12073 * part of the Preamble.
12074 *
12075 * * Usage constraints
12076 * There are no usage constraints.
12077 */
12078 union ody_gict_cidr0 {
12079 uint32_t u;
12080 struct ody_gict_cidr0_s {
12081 uint32_t prmbl_0 : 8;
12082 uint32_t reserved_8_31 : 24;
12083 } s;
12084 /* struct ody_gict_cidr0_s cn; */
12085 };
12086 typedef union ody_gict_cidr0 ody_gict_cidr0_t;
12087
12088 #define ODY_GICT_CIDR0 ODY_GICT_CIDR0_FUNC()
12089 static inline uint64_t ODY_GICT_CIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_CIDR0_FUNC(void)12090 static inline uint64_t ODY_GICT_CIDR0_FUNC(void)
12091 {
12092 return 0x80100002fff0ll;
12093 }
12094
12095 #define typedef_ODY_GICT_CIDR0 ody_gict_cidr0_t
12096 #define bustype_ODY_GICT_CIDR0 CSR_TYPE_NCB32b
12097 #define basename_ODY_GICT_CIDR0 "GICT_CIDR0"
12098 #define device_bar_ODY_GICT_CIDR0 0x0 /* PF_BAR0 */
12099 #define busnum_ODY_GICT_CIDR0 0
12100 #define arguments_ODY_GICT_CIDR0 -1, -1, -1, -1
12101
12102 /**
12103 * Register (NCB32b) gict_cidr1
12104 *
12105 * GICT Cidr1 Register
12106 * The GICT_CIDR1 characteristics are:
12107 *
12108 * * Purpose
12109 * This register is one of the Component Identification Registers and returns the
12110 * second part of the Preamble as well as the Component Class.
12111 *
12112 * * Usage constraints
12113 * There are no usage constraints.
12114 */
12115 union ody_gict_cidr1 {
12116 uint32_t u;
12117 struct ody_gict_cidr1_s {
12118 uint32_t prmbl_1 : 4;
12119 uint32_t class_f : 4;
12120 uint32_t reserved_8_31 : 24;
12121 } s;
12122 /* struct ody_gict_cidr1_s cn; */
12123 };
12124 typedef union ody_gict_cidr1 ody_gict_cidr1_t;
12125
12126 #define ODY_GICT_CIDR1 ODY_GICT_CIDR1_FUNC()
12127 static inline uint64_t ODY_GICT_CIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_CIDR1_FUNC(void)12128 static inline uint64_t ODY_GICT_CIDR1_FUNC(void)
12129 {
12130 return 0x80100002fff4ll;
12131 }
12132
12133 #define typedef_ODY_GICT_CIDR1 ody_gict_cidr1_t
12134 #define bustype_ODY_GICT_CIDR1 CSR_TYPE_NCB32b
12135 #define basename_ODY_GICT_CIDR1 "GICT_CIDR1"
12136 #define device_bar_ODY_GICT_CIDR1 0x0 /* PF_BAR0 */
12137 #define busnum_ODY_GICT_CIDR1 0
12138 #define arguments_ODY_GICT_CIDR1 -1, -1, -1, -1
12139
12140 /**
12141 * Register (NCB32b) gict_cidr2
12142 *
12143 * GICT Cidr2 Register
12144 * The GICT_CIDR2 characteristics are:
12145 *
12146 * * Purpose
12147 * This register is one of the Component Identification Registers and returns the third
12148 * part of the Preamble.
12149 *
12150 * * Usage constraints
12151 * There are no usage constraints.
12152 */
12153 union ody_gict_cidr2 {
12154 uint32_t u;
12155 struct ody_gict_cidr2_s {
12156 uint32_t prmbl_2 : 8;
12157 uint32_t reserved_8_31 : 24;
12158 } s;
12159 /* struct ody_gict_cidr2_s cn; */
12160 };
12161 typedef union ody_gict_cidr2 ody_gict_cidr2_t;
12162
12163 #define ODY_GICT_CIDR2 ODY_GICT_CIDR2_FUNC()
12164 static inline uint64_t ODY_GICT_CIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_CIDR2_FUNC(void)12165 static inline uint64_t ODY_GICT_CIDR2_FUNC(void)
12166 {
12167 return 0x80100002fff8ll;
12168 }
12169
12170 #define typedef_ODY_GICT_CIDR2 ody_gict_cidr2_t
12171 #define bustype_ODY_GICT_CIDR2 CSR_TYPE_NCB32b
12172 #define basename_ODY_GICT_CIDR2 "GICT_CIDR2"
12173 #define device_bar_ODY_GICT_CIDR2 0x0 /* PF_BAR0 */
12174 #define busnum_ODY_GICT_CIDR2 0
12175 #define arguments_ODY_GICT_CIDR2 -1, -1, -1, -1
12176
12177 /**
12178 * Register (NCB32b) gict_cidr3
12179 *
12180 * GICT Cidr3 Register
12181 * The GICT_CIDR3 characteristics are:
12182 *
12183 * * Purpose
12184 * This register is one of the Component Identification Registers and returns the
12185 * fourth part of the Preamble.
12186 *
12187 * * Usage constraints
12188 * There are no usage constraints.
12189 */
12190 union ody_gict_cidr3 {
12191 uint32_t u;
12192 struct ody_gict_cidr3_s {
12193 uint32_t prmbl_3 : 8;
12194 uint32_t reserved_8_31 : 24;
12195 } s;
12196 /* struct ody_gict_cidr3_s cn; */
12197 };
12198 typedef union ody_gict_cidr3 ody_gict_cidr3_t;
12199
12200 #define ODY_GICT_CIDR3 ODY_GICT_CIDR3_FUNC()
12201 static inline uint64_t ODY_GICT_CIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_CIDR3_FUNC(void)12202 static inline uint64_t ODY_GICT_CIDR3_FUNC(void)
12203 {
12204 return 0x80100002fffcll;
12205 }
12206
12207 #define typedef_ODY_GICT_CIDR3 ody_gict_cidr3_t
12208 #define bustype_ODY_GICT_CIDR3 CSR_TYPE_NCB32b
12209 #define basename_ODY_GICT_CIDR3 "GICT_CIDR3"
12210 #define device_bar_ODY_GICT_CIDR3 0x0 /* PF_BAR0 */
12211 #define busnum_ODY_GICT_CIDR3 0
12212 #define arguments_ODY_GICT_CIDR3 -1, -1, -1, -1
12213
12214 /**
12215 * Register (NCB32b) gict_devarch
12216 *
12217 * GICT Devarch Register
12218 * The GICT_DEVARCH characteristics are:
12219 *
12220 * * Purpose
12221 * Stores the Device Architecture ID
12222 *
12223 * * Usage constraints
12224 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the functions of this register.
12225 */
12226 union ody_gict_devarch {
12227 uint32_t u;
12228 struct ody_gict_devarch_s {
12229 uint32_t archid : 12;
12230 uint32_t reserved_12_15 : 4;
12231 uint32_t revision : 4;
12232 uint32_t present : 1;
12233 uint32_t architect : 11;
12234 } s;
12235 /* struct ody_gict_devarch_s cn; */
12236 };
12237 typedef union ody_gict_devarch ody_gict_devarch_t;
12238
12239 #define ODY_GICT_DEVARCH ODY_GICT_DEVARCH_FUNC()
12240 static inline uint64_t ODY_GICT_DEVARCH_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_DEVARCH_FUNC(void)12241 static inline uint64_t ODY_GICT_DEVARCH_FUNC(void)
12242 {
12243 return 0x80100002ffbcll;
12244 }
12245
12246 #define typedef_ODY_GICT_DEVARCH ody_gict_devarch_t
12247 #define bustype_ODY_GICT_DEVARCH CSR_TYPE_NCB32b
12248 #define basename_ODY_GICT_DEVARCH "GICT_DEVARCH"
12249 #define device_bar_ODY_GICT_DEVARCH 0x0 /* PF_BAR0 */
12250 #define busnum_ODY_GICT_DEVARCH 0
12251 #define arguments_ODY_GICT_DEVARCH -1, -1, -1, -1
12252
12253 /**
12254 * Register (NCB32b) gict_devid
12255 *
12256 * GICT Devid Register
12257 * The GICT_DEVID characteristics are:
12258 *
12259 * * Purpose
12260 * This register returns information about the configuration of the GIC-700 GICT such
12261 * as whether an LPI or ITS is available.
12262 *
12263 * * Usage constraints
12264 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can read this register.
12265 *
12266 * \> *Note*
12267 * \> GICT_DEVID was previously known as GICT_ERRIDR.
12268 */
12269 union ody_gict_devid {
12270 uint32_t u;
12271 struct ody_gict_devid_s {
12272 uint32_t numrecords : 16;
12273 uint32_t reserved_16_31 : 16;
12274 } s;
12275 /* struct ody_gict_devid_s cn; */
12276 };
12277 typedef union ody_gict_devid ody_gict_devid_t;
12278
12279 #define ODY_GICT_DEVID ODY_GICT_DEVID_FUNC()
12280 static inline uint64_t ODY_GICT_DEVID_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_DEVID_FUNC(void)12281 static inline uint64_t ODY_GICT_DEVID_FUNC(void)
12282 {
12283 return 0x80100002ffc8ll;
12284 }
12285
12286 #define typedef_ODY_GICT_DEVID ody_gict_devid_t
12287 #define bustype_ODY_GICT_DEVID CSR_TYPE_NCB32b
12288 #define basename_ODY_GICT_DEVID "GICT_DEVID"
12289 #define device_bar_ODY_GICT_DEVID 0x0 /* PF_BAR0 */
12290 #define busnum_ODY_GICT_DEVID 0
12291 #define arguments_ODY_GICT_DEVID -1, -1, -1, -1
12292
12293 /**
12294 * Register (NCB) gict_err#_addr
12295 *
12296 * GICT Err Addr Register
12297 * The GICT_ERR0ADDR characteristics are:
12298 *
12299 * * Purpose
12300 * This register contains the address and security status of the write. This register
12301 * is only present for GICT software record 0.
12302 *
12303 * * Usage constraints
12304 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
12305 * Ignores writes if GICT_ERR0STATUS.AV == 1.
12306 * All bits are RAZ/WI if GICT_ERR0STATUS.IERR = 0, 12, or 13.
12307 */
12308 union ody_gict_errx_addr {
12309 uint64_t u;
12310 struct ody_gict_errx_addr_s {
12311 uint64_t paddr : 48;
12312 uint64_t reserved_48_62 : 15;
12313 uint64_t ns_f : 1;
12314 } s;
12315 /* struct ody_gict_errx_addr_s cn; */
12316 };
12317 typedef union ody_gict_errx_addr ody_gict_errx_addr_t;
12318
12319 static inline uint64_t ODY_GICT_ERRX_ADDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICT_ERRX_ADDR(uint64_t a)12320 static inline uint64_t ODY_GICT_ERRX_ADDR(uint64_t a)
12321 {
12322 if (a <= 27)
12323 return 0x801000020018ll + 0x40ll * ((a) & 0x1f);
12324 __ody_csr_fatal("GICT_ERRX_ADDR", 1, a, 0, 0, 0, 0, 0);
12325 }
12326
12327 #define typedef_ODY_GICT_ERRX_ADDR(a) ody_gict_errx_addr_t
12328 #define bustype_ODY_GICT_ERRX_ADDR(a) CSR_TYPE_NCB
12329 #define basename_ODY_GICT_ERRX_ADDR(a) "GICT_ERRX_ADDR"
12330 #define device_bar_ODY_GICT_ERRX_ADDR(a) 0x0 /* PF_BAR0 */
12331 #define busnum_ODY_GICT_ERRX_ADDR(a) (a)
12332 #define arguments_ODY_GICT_ERRX_ADDR(a) (a), -1, -1, -1
12333
12334 /**
12335 * Register (NCB) gict_err#_ctlr
12336 *
12337 * GICT Err Ctlr Register
12338 * The GICT_ERR0CTLR characteristics are:
12339 *
12340 * * Purpose
12341 * This register controls how interrupts are handled.
12342 *
12343 * * Usage constraints
12344 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
12345 */
12346 union ody_gict_errx_ctlr {
12347 uint64_t u;
12348 struct ody_gict_errx_ctlr_s {
12349 uint64_t reserved_0_1 : 2;
12350 uint64_t ui : 1;
12351 uint64_t fi : 1;
12352 uint64_t ue : 1;
12353 uint64_t reserved_5_7 : 3;
12354 uint64_t cfi : 1;
12355 uint64_t reserved_9_14 : 6;
12356 uint64_t rp : 1;
12357 uint64_t reserved_16_31 : 16;
12358 uint64_t dis_col_oor : 1;
12359 uint64_t dis_deact : 1;
12360 uint64_t dis_spi_oor : 2;
12361 uint64_t dis_spi_dst : 1;
12362 uint64_t dis_sgi : 1;
12363 uint64_t dis_ace : 1;
12364 uint64_t reserved_39_63 : 25;
12365 } s;
12366 /* struct ody_gict_errx_ctlr_s cn; */
12367 };
12368 typedef union ody_gict_errx_ctlr ody_gict_errx_ctlr_t;
12369
12370 static inline uint64_t ODY_GICT_ERRX_CTLR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICT_ERRX_CTLR(uint64_t a)12371 static inline uint64_t ODY_GICT_ERRX_CTLR(uint64_t a)
12372 {
12373 if (a <= 27)
12374 return 0x801000020008ll + 0x40ll * ((a) & 0x1f);
12375 __ody_csr_fatal("GICT_ERRX_CTLR", 1, a, 0, 0, 0, 0, 0);
12376 }
12377
12378 #define typedef_ODY_GICT_ERRX_CTLR(a) ody_gict_errx_ctlr_t
12379 #define bustype_ODY_GICT_ERRX_CTLR(a) CSR_TYPE_NCB
12380 #define basename_ODY_GICT_ERRX_CTLR(a) "GICT_ERRX_CTLR"
12381 #define device_bar_ODY_GICT_ERRX_CTLR(a) 0x0 /* PF_BAR0 */
12382 #define busnum_ODY_GICT_ERRX_CTLR(a) (a)
12383 #define arguments_ODY_GICT_ERRX_CTLR(a) (a), -1, -1, -1
12384
12385 /**
12386 * Register (NCB) gict_err#_fr
12387 *
12388 * GICT Err Fr Register
12389 * The GICT_ERR0FR characteristics are:
12390 *
12391 * * Purpose
12392 * This register returns information about the Armv8.2 RAS features that the GIC-700 implements.
12393 *
12394 * * Usage constraints
12395 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
12396 */
12397 union ody_gict_errx_fr {
12398 uint64_t u;
12399 struct ody_gict_errx_fr_s {
12400 uint64_t ed : 2;
12401 uint64_t de : 2;
12402 uint64_t ui : 2;
12403 uint64_t fi : 2;
12404 uint64_t ue : 2;
12405 uint64_t cfi : 2;
12406 uint64_t cec : 3;
12407 uint64_t rp : 1;
12408 uint64_t reserved_16_63 : 48;
12409 } s;
12410 /* struct ody_gict_errx_fr_s cn; */
12411 };
12412 typedef union ody_gict_errx_fr ody_gict_errx_fr_t;
12413
12414 static inline uint64_t ODY_GICT_ERRX_FR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICT_ERRX_FR(uint64_t a)12415 static inline uint64_t ODY_GICT_ERRX_FR(uint64_t a)
12416 {
12417 if (a <= 27)
12418 return 0x801000020000ll + 0x40ll * ((a) & 0x1f);
12419 __ody_csr_fatal("GICT_ERRX_FR", 1, a, 0, 0, 0, 0, 0);
12420 }
12421
12422 #define typedef_ODY_GICT_ERRX_FR(a) ody_gict_errx_fr_t
12423 #define bustype_ODY_GICT_ERRX_FR(a) CSR_TYPE_NCB
12424 #define basename_ODY_GICT_ERRX_FR(a) "GICT_ERRX_FR"
12425 #define device_bar_ODY_GICT_ERRX_FR(a) 0x0 /* PF_BAR0 */
12426 #define busnum_ODY_GICT_ERRX_FR(a) (a)
12427 #define arguments_ODY_GICT_ERRX_FR(a) (a), -1, -1, -1
12428
12429 /**
12430 * Register (NCB) gict_err#_misc0_a
12431 *
12432 * GICT Err Misc0 A Register
12433 * The GICT_ERR0MISC0 characteristics are:
12434 *
12435 * * Purpose
12436 * This register contains the Corrected error counter and information that assists with
12437 * identifying the RAM in which the error was detected.
12438 * For error record 0, it will contain information that assists with identifying where
12439 * the SW error was detected.
12440 *
12441 * * Usage constraints
12442 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
12443 * If GICT_ERRSTATUS.MV == 1, then GICT_ERRMISC0 ignores writes to the Data field.
12444 */
12445 union ody_gict_errx_misc0_a {
12446 uint64_t u;
12447 struct ody_gict_errx_misc0_a_s {
12448 uint64_t data : 32;
12449 uint64_t cnt : 8;
12450 uint64_t of : 1;
12451 uint64_t re : 1;
12452 uint64_t reserved_42_63 : 22;
12453 } s;
12454 /* struct ody_gict_errx_misc0_a_s cn; */
12455 };
12456 typedef union ody_gict_errx_misc0_a ody_gict_errx_misc0_a_t;
12457
12458 static inline uint64_t ODY_GICT_ERRX_MISC0_A(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICT_ERRX_MISC0_A(uint64_t a)12459 static inline uint64_t ODY_GICT_ERRX_MISC0_A(uint64_t a)
12460 {
12461 if (a <= 27)
12462 return 0x801000020020ll + 0x40ll * ((a) & 0x1f);
12463 __ody_csr_fatal("GICT_ERRX_MISC0_A", 1, a, 0, 0, 0, 0, 0);
12464 }
12465
12466 #define typedef_ODY_GICT_ERRX_MISC0_A(a) ody_gict_errx_misc0_a_t
12467 #define bustype_ODY_GICT_ERRX_MISC0_A(a) CSR_TYPE_NCB
12468 #define basename_ODY_GICT_ERRX_MISC0_A(a) "GICT_ERRX_MISC0_A"
12469 #define device_bar_ODY_GICT_ERRX_MISC0_A(a) 0x0 /* PF_BAR0 */
12470 #define busnum_ODY_GICT_ERRX_MISC0_A(a) (a)
12471 #define arguments_ODY_GICT_ERRX_MISC0_A(a) (a), -1, -1, -1
12472
12473 /**
12474 * Register (NCB) gict_err#_misc1_b
12475 *
12476 * GICT Err Misc1 B Register
12477 * The GICT_ERR0MISC1 characteristics are:
12478 *
12479 * * Purpose
12480 * This register contains the data value of an uncorrectable error in the LPI RAM, TGT-
12481 * LPI RAM, or ITS software information. The register is not present for other error
12482 * records.
12483 *
12484 * * Usage constraints
12485 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
12486 * If GICT_ERRSTATUS.MV == 1, then GICT_ERRMISC1 ignores writes.
12487 */
12488 union ody_gict_errx_misc1_b {
12489 uint64_t u;
12490 struct ody_gict_errx_misc1_b_s {
12491 uint64_t data : 64;
12492 } s;
12493 /* struct ody_gict_errx_misc1_b_s cn; */
12494 };
12495 typedef union ody_gict_errx_misc1_b ody_gict_errx_misc1_b_t;
12496
12497 static inline uint64_t ODY_GICT_ERRX_MISC1_B(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICT_ERRX_MISC1_B(uint64_t a)12498 static inline uint64_t ODY_GICT_ERRX_MISC1_B(uint64_t a)
12499 {
12500 if (a <= 27)
12501 return 0x801000020028ll + 0x40ll * ((a) & 0x1f);
12502 __ody_csr_fatal("GICT_ERRX_MISC1_B", 1, a, 0, 0, 0, 0, 0);
12503 }
12504
12505 #define typedef_ODY_GICT_ERRX_MISC1_B(a) ody_gict_errx_misc1_b_t
12506 #define bustype_ODY_GICT_ERRX_MISC1_B(a) CSR_TYPE_NCB
12507 #define basename_ODY_GICT_ERRX_MISC1_B(a) "GICT_ERRX_MISC1_B"
12508 #define device_bar_ODY_GICT_ERRX_MISC1_B(a) 0x0 /* PF_BAR0 */
12509 #define busnum_ODY_GICT_ERRX_MISC1_B(a) (a)
12510 #define arguments_ODY_GICT_ERRX_MISC1_B(a) (a), -1, -1, -1
12511
12512 /**
12513 * Register (NCB) gict_err#_status
12514 *
12515 * GICT Err Status Register
12516 * The GICT_ERR0STATUS characteristics are:
12517 *
12518 * * Purpose
12519 * This register indicates information relating to the recorded errors. Error record 0
12520 * is for SW errors
12521 *
12522 * * Usage constraints
12523 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
12524 */
12525 union ody_gict_errx_status {
12526 uint64_t u;
12527 struct ody_gict_errx_status_s {
12528 uint64_t serr : 8;
12529 uint64_t ierr : 8;
12530 uint64_t reserved_16_19 : 4;
12531 uint64_t uet : 2;
12532 uint64_t reserved_22_23 : 2;
12533 uint64_t ce : 2;
12534 uint64_t mv : 1;
12535 uint64_t of : 1;
12536 uint64_t er : 1;
12537 uint64_t ue : 1;
12538 uint64_t v : 1;
12539 uint64_t av : 1;
12540 uint64_t reserved_32_63 : 32;
12541 } s;
12542 /* struct ody_gict_errx_status_s cn; */
12543 };
12544 typedef union ody_gict_errx_status ody_gict_errx_status_t;
12545
12546 static inline uint64_t ODY_GICT_ERRX_STATUS(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICT_ERRX_STATUS(uint64_t a)12547 static inline uint64_t ODY_GICT_ERRX_STATUS(uint64_t a)
12548 {
12549 if (a <= 27)
12550 return 0x801000020010ll + 0x40ll * ((a) & 0x1f);
12551 __ody_csr_fatal("GICT_ERRX_STATUS", 1, a, 0, 0, 0, 0, 0);
12552 }
12553
12554 #define typedef_ODY_GICT_ERRX_STATUS(a) ody_gict_errx_status_t
12555 #define bustype_ODY_GICT_ERRX_STATUS(a) CSR_TYPE_NCB
12556 #define basename_ODY_GICT_ERRX_STATUS(a) "GICT_ERRX_STATUS"
12557 #define device_bar_ODY_GICT_ERRX_STATUS(a) 0x0 /* PF_BAR0 */
12558 #define busnum_ODY_GICT_ERRX_STATUS(a) (a)
12559 #define arguments_ODY_GICT_ERRX_STATUS(a) (a), -1, -1, -1
12560
12561 /**
12562 * Register (NCB) gict_errgsr0
12563 *
12564 * GICT Errgsr0 Register
12565 * The GICT_ERRGSR0 characteristics are:
12566 *
12567 * * Purpose
12568 * This register shows the status of the GIC-700 Armv8.2 RAS architecture-compliant error records for
12569 * correctable and uncorrectable RAM ECC errors, ITS command and translation errors, and uncorrectable
12570 * software errors.
12571 *
12572 * * Usage constraints
12573 * There are no usage constraints.
12574 */
12575 union ody_gict_errgsr0 {
12576 uint64_t u;
12577 struct ody_gict_errgsr0_s {
12578 uint64_t status : 64;
12579 } s;
12580 /* struct ody_gict_errgsr0_s cn; */
12581 };
12582 typedef union ody_gict_errgsr0 ody_gict_errgsr0_t;
12583
12584 #define ODY_GICT_ERRGSR0 ODY_GICT_ERRGSR0_FUNC()
12585 static inline uint64_t ODY_GICT_ERRGSR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_ERRGSR0_FUNC(void)12586 static inline uint64_t ODY_GICT_ERRGSR0_FUNC(void)
12587 {
12588 return 0x80100002e000ll;
12589 }
12590
12591 #define typedef_ODY_GICT_ERRGSR0 ody_gict_errgsr0_t
12592 #define bustype_ODY_GICT_ERRGSR0 CSR_TYPE_NCB
12593 #define basename_ODY_GICT_ERRGSR0 "GICT_ERRGSR0"
12594 #define device_bar_ODY_GICT_ERRGSR0 0x0 /* PF_BAR0 */
12595 #define busnum_ODY_GICT_ERRGSR0 0
12596 #define arguments_ODY_GICT_ERRGSR0 -1, -1, -1, -1
12597
12598 /**
12599 * Register (NCB) gict_errirqcr#
12600 *
12601 * GICT Errirqcr Register
12602 * The GICT_ERRIRQCR0 characteristics are:
12603 *
12604 * * Purpose
12605 * GICT_ERRIRQCR0 controls which SPI is generated when a fault handling interrupt occurs.
12606 *
12607 * * Usage constraints
12608 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the functions of this register.
12609 */
12610 union ody_gict_errirqcrx {
12611 uint64_t u;
12612 struct ody_gict_errirqcrx_s {
12613 uint64_t spiid : 13;
12614 uint64_t reserved_13_63 : 51;
12615 } s;
12616 /* struct ody_gict_errirqcrx_s cn; */
12617 };
12618 typedef union ody_gict_errirqcrx ody_gict_errirqcrx_t;
12619
12620 static inline uint64_t ODY_GICT_ERRIRQCRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GICT_ERRIRQCRX(uint64_t a)12621 static inline uint64_t ODY_GICT_ERRIRQCRX(uint64_t a)
12622 {
12623 if (a <= 1)
12624 return 0x80100002e800ll + 8ll * ((a) & 0x1);
12625 __ody_csr_fatal("GICT_ERRIRQCRX", 1, a, 0, 0, 0, 0, 0);
12626 }
12627
12628 #define typedef_ODY_GICT_ERRIRQCRX(a) ody_gict_errirqcrx_t
12629 #define bustype_ODY_GICT_ERRIRQCRX(a) CSR_TYPE_NCB
12630 #define basename_ODY_GICT_ERRIRQCRX(a) "GICT_ERRIRQCRX"
12631 #define device_bar_ODY_GICT_ERRIRQCRX(a) 0x0 /* PF_BAR0 */
12632 #define busnum_ODY_GICT_ERRIRQCRX(a) (a)
12633 #define arguments_ODY_GICT_ERRIRQCRX(a) (a), -1, -1, -1
12634
12635 /**
12636 * Register (NCB32b) gict_pidr0
12637 *
12638 * GICT Pidr0 Register
12639 * The GICT_PIDR0 characteristics are:
12640 *
12641 * * Purpose
12642 * This register returns byte[0] of the peripheral ID of the GIC Trace and Debug page.
12643 *
12644 * * Usage constraints
12645 * There are no usage constraints.
12646 */
12647 union ody_gict_pidr0 {
12648 uint32_t u;
12649 struct ody_gict_pidr0_s {
12650 uint32_t part_0 : 8;
12651 uint32_t reserved_8_31 : 24;
12652 } s;
12653 /* struct ody_gict_pidr0_s cn; */
12654 };
12655 typedef union ody_gict_pidr0 ody_gict_pidr0_t;
12656
12657 #define ODY_GICT_PIDR0 ODY_GICT_PIDR0_FUNC()
12658 static inline uint64_t ODY_GICT_PIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_PIDR0_FUNC(void)12659 static inline uint64_t ODY_GICT_PIDR0_FUNC(void)
12660 {
12661 return 0x80100002ffe0ll;
12662 }
12663
12664 #define typedef_ODY_GICT_PIDR0 ody_gict_pidr0_t
12665 #define bustype_ODY_GICT_PIDR0 CSR_TYPE_NCB32b
12666 #define basename_ODY_GICT_PIDR0 "GICT_PIDR0"
12667 #define device_bar_ODY_GICT_PIDR0 0x0 /* PF_BAR0 */
12668 #define busnum_ODY_GICT_PIDR0 0
12669 #define arguments_ODY_GICT_PIDR0 -1, -1, -1, -1
12670
12671 /**
12672 * Register (NCB32b) gict_pidr1
12673 *
12674 * GICT Pidr1 Register
12675 * The GICT_PIDR1 characteristics are:
12676 *
12677 * * Purpose
12678 * This register returns byte[1] of the peripheral ID of the GIC Trace and Debug page.
12679 *
12680 * * Usage constraints
12681 * There are no usage constraints.
12682 */
12683 union ody_gict_pidr1 {
12684 uint32_t u;
12685 struct ody_gict_pidr1_s {
12686 uint32_t part_1 : 4;
12687 uint32_t des_0 : 4;
12688 uint32_t reserved_8_31 : 24;
12689 } s;
12690 /* struct ody_gict_pidr1_s cn; */
12691 };
12692 typedef union ody_gict_pidr1 ody_gict_pidr1_t;
12693
12694 #define ODY_GICT_PIDR1 ODY_GICT_PIDR1_FUNC()
12695 static inline uint64_t ODY_GICT_PIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_PIDR1_FUNC(void)12696 static inline uint64_t ODY_GICT_PIDR1_FUNC(void)
12697 {
12698 return 0x80100002ffe4ll;
12699 }
12700
12701 #define typedef_ODY_GICT_PIDR1 ody_gict_pidr1_t
12702 #define bustype_ODY_GICT_PIDR1 CSR_TYPE_NCB32b
12703 #define basename_ODY_GICT_PIDR1 "GICT_PIDR1"
12704 #define device_bar_ODY_GICT_PIDR1 0x0 /* PF_BAR0 */
12705 #define busnum_ODY_GICT_PIDR1 0
12706 #define arguments_ODY_GICT_PIDR1 -1, -1, -1, -1
12707
12708 /**
12709 * Register (NCB32b) gict_pidr2
12710 *
12711 * GICT Pidr2 Register
12712 * The GICT_PIDR2 characteristics are:
12713 *
12714 * * Purpose
12715 * This register returns byte[2] of the peripheral ID of the GIC Trace and Debug page.
12716 *
12717 * * Usage constraints
12718 * There are no usage constraints.
12719 */
12720 union ody_gict_pidr2 {
12721 uint32_t u;
12722 struct ody_gict_pidr2_s {
12723 uint32_t des_1 : 3;
12724 uint32_t jedec : 1;
12725 uint32_t revision : 4;
12726 uint32_t reserved_8_31 : 24;
12727 } s;
12728 /* struct ody_gict_pidr2_s cn; */
12729 };
12730 typedef union ody_gict_pidr2 ody_gict_pidr2_t;
12731
12732 #define ODY_GICT_PIDR2 ODY_GICT_PIDR2_FUNC()
12733 static inline uint64_t ODY_GICT_PIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_PIDR2_FUNC(void)12734 static inline uint64_t ODY_GICT_PIDR2_FUNC(void)
12735 {
12736 return 0x80100002ffe8ll;
12737 }
12738
12739 #define typedef_ODY_GICT_PIDR2 ody_gict_pidr2_t
12740 #define bustype_ODY_GICT_PIDR2 CSR_TYPE_NCB32b
12741 #define basename_ODY_GICT_PIDR2 "GICT_PIDR2"
12742 #define device_bar_ODY_GICT_PIDR2 0x0 /* PF_BAR0 */
12743 #define busnum_ODY_GICT_PIDR2 0
12744 #define arguments_ODY_GICT_PIDR2 -1, -1, -1, -1
12745
12746 /**
12747 * Register (NCB32b) gict_pidr3
12748 *
12749 * GICT Pidr3 Register
12750 * The GICT_PIDR3 characteristics are:
12751 *
12752 * * Purpose
12753 * This register returns byte[3] of the peripheral ID of the GIC Trace and Debug page.
12754 *
12755 * * Usage constraints
12756 * There are no usage constraints.
12757 */
12758 union ody_gict_pidr3 {
12759 uint32_t u;
12760 struct ody_gict_pidr3_s {
12761 uint32_t cmod : 3;
12762 uint32_t reserved_3 : 1;
12763 uint32_t revand : 4;
12764 uint32_t reserved_8_31 : 24;
12765 } s;
12766 /* struct ody_gict_pidr3_s cn; */
12767 };
12768 typedef union ody_gict_pidr3 ody_gict_pidr3_t;
12769
12770 #define ODY_GICT_PIDR3 ODY_GICT_PIDR3_FUNC()
12771 static inline uint64_t ODY_GICT_PIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_PIDR3_FUNC(void)12772 static inline uint64_t ODY_GICT_PIDR3_FUNC(void)
12773 {
12774 return 0x80100002ffecll;
12775 }
12776
12777 #define typedef_ODY_GICT_PIDR3 ody_gict_pidr3_t
12778 #define bustype_ODY_GICT_PIDR3 CSR_TYPE_NCB32b
12779 #define basename_ODY_GICT_PIDR3 "GICT_PIDR3"
12780 #define device_bar_ODY_GICT_PIDR3 0x0 /* PF_BAR0 */
12781 #define busnum_ODY_GICT_PIDR3 0
12782 #define arguments_ODY_GICT_PIDR3 -1, -1, -1, -1
12783
12784 /**
12785 * Register (NCB32b) gict_pidr4
12786 *
12787 * GICT Pidr4 Register
12788 * The GICT_PIDR4 characteristics are:
12789 *
12790 * * Purpose
12791 * This register returns byte[4] of the peripheral ID of the GIC Trace and Debug page.
12792 *
12793 * * Usage constraints
12794 * There are no usage constraints.
12795 */
12796 union ody_gict_pidr4 {
12797 uint32_t u;
12798 struct ody_gict_pidr4_s {
12799 uint32_t des_2 : 4;
12800 uint32_t size : 4;
12801 uint32_t reserved_8_31 : 24;
12802 } s;
12803 /* struct ody_gict_pidr4_s cn; */
12804 };
12805 typedef union ody_gict_pidr4 ody_gict_pidr4_t;
12806
12807 #define ODY_GICT_PIDR4 ODY_GICT_PIDR4_FUNC()
12808 static inline uint64_t ODY_GICT_PIDR4_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_PIDR4_FUNC(void)12809 static inline uint64_t ODY_GICT_PIDR4_FUNC(void)
12810 {
12811 return 0x80100002ffd0ll;
12812 }
12813
12814 #define typedef_ODY_GICT_PIDR4 ody_gict_pidr4_t
12815 #define bustype_ODY_GICT_PIDR4 CSR_TYPE_NCB32b
12816 #define basename_ODY_GICT_PIDR4 "GICT_PIDR4"
12817 #define device_bar_ODY_GICT_PIDR4 0x0 /* PF_BAR0 */
12818 #define busnum_ODY_GICT_PIDR4 0
12819 #define arguments_ODY_GICT_PIDR4 -1, -1, -1, -1
12820
12821 /**
12822 * Register (NCB32b) gict_pidr5
12823 *
12824 * GICT Pidr5 Register
12825 * The GICT_PIDR5 characteristics are:
12826 *
12827 * * Purpose
12828 * This register returns byte[5] of the peripheral ID of the GIC Trace and Debug page.
12829 *
12830 * * Usage constraints
12831 * There are no usage constraints.
12832 */
12833 union ody_gict_pidr5 {
12834 uint32_t u;
12835 struct ody_gict_pidr5_s {
12836 uint32_t reserved_0_31 : 32;
12837 } s;
12838 struct ody_gict_pidr5_cn {
12839 uint32_t reserved_0_7 : 8;
12840 uint32_t reserved_8_31 : 24;
12841 } cn;
12842 };
12843 typedef union ody_gict_pidr5 ody_gict_pidr5_t;
12844
12845 #define ODY_GICT_PIDR5 ODY_GICT_PIDR5_FUNC()
12846 static inline uint64_t ODY_GICT_PIDR5_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_PIDR5_FUNC(void)12847 static inline uint64_t ODY_GICT_PIDR5_FUNC(void)
12848 {
12849 return 0x80100002ffd4ll;
12850 }
12851
12852 #define typedef_ODY_GICT_PIDR5 ody_gict_pidr5_t
12853 #define bustype_ODY_GICT_PIDR5 CSR_TYPE_NCB32b
12854 #define basename_ODY_GICT_PIDR5 "GICT_PIDR5"
12855 #define device_bar_ODY_GICT_PIDR5 0x0 /* PF_BAR0 */
12856 #define busnum_ODY_GICT_PIDR5 0
12857 #define arguments_ODY_GICT_PIDR5 -1, -1, -1, -1
12858
12859 /**
12860 * Register (NCB32b) gict_pidr6
12861 *
12862 * GICT Pidr6 Register
12863 * The GICT_PIDR6 characteristics are:
12864 *
12865 * * Purpose
12866 * This register returns byte[6] of the peripheral ID of the GIC Trace and Debug page.
12867 *
12868 * * Usage constraints
12869 * There are no usage constraints.
12870 */
12871 union ody_gict_pidr6 {
12872 uint32_t u;
12873 struct ody_gict_pidr6_s {
12874 uint32_t reserved_0_31 : 32;
12875 } s;
12876 struct ody_gict_pidr6_cn {
12877 uint32_t reserved_0_7 : 8;
12878 uint32_t reserved_8_31 : 24;
12879 } cn;
12880 };
12881 typedef union ody_gict_pidr6 ody_gict_pidr6_t;
12882
12883 #define ODY_GICT_PIDR6 ODY_GICT_PIDR6_FUNC()
12884 static inline uint64_t ODY_GICT_PIDR6_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_PIDR6_FUNC(void)12885 static inline uint64_t ODY_GICT_PIDR6_FUNC(void)
12886 {
12887 return 0x80100002ffd8ll;
12888 }
12889
12890 #define typedef_ODY_GICT_PIDR6 ody_gict_pidr6_t
12891 #define bustype_ODY_GICT_PIDR6 CSR_TYPE_NCB32b
12892 #define basename_ODY_GICT_PIDR6 "GICT_PIDR6"
12893 #define device_bar_ODY_GICT_PIDR6 0x0 /* PF_BAR0 */
12894 #define busnum_ODY_GICT_PIDR6 0
12895 #define arguments_ODY_GICT_PIDR6 -1, -1, -1, -1
12896
12897 /**
12898 * Register (NCB32b) gict_pidr7
12899 *
12900 * GICT Pidr7 Register
12901 * The GICT_PIDR7 characteristics are:
12902 *
12903 * * Purpose
12904 * This register returns byte[7] of the peripheral ID of the GIC Trace and Debug page.
12905 *
12906 * * Usage constraints
12907 * There are no usage constraints.
12908 */
12909 union ody_gict_pidr7 {
12910 uint32_t u;
12911 struct ody_gict_pidr7_s {
12912 uint32_t reserved_0_31 : 32;
12913 } s;
12914 struct ody_gict_pidr7_cn {
12915 uint32_t reserved_0_7 : 8;
12916 uint32_t reserved_8_31 : 24;
12917 } cn;
12918 };
12919 typedef union ody_gict_pidr7 ody_gict_pidr7_t;
12920
12921 #define ODY_GICT_PIDR7 ODY_GICT_PIDR7_FUNC()
12922 static inline uint64_t ODY_GICT_PIDR7_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GICT_PIDR7_FUNC(void)12923 static inline uint64_t ODY_GICT_PIDR7_FUNC(void)
12924 {
12925 return 0x80100002ffdcll;
12926 }
12927
12928 #define typedef_ODY_GICT_PIDR7 ody_gict_pidr7_t
12929 #define bustype_ODY_GICT_PIDR7 CSR_TYPE_NCB32b
12930 #define basename_ODY_GICT_PIDR7 "GICT_PIDR7"
12931 #define device_bar_ODY_GICT_PIDR7 0x0 /* PF_BAR0 */
12932 #define busnum_ODY_GICT_PIDR7 0
12933 #define arguments_ODY_GICT_PIDR7 -1, -1, -1, -1
12934
12935 /**
12936 * Register (NCB) gits0_baser0
12937 *
12938 * GITS0 Baser0 Register
12939 * The GITS0_BASER0 characteristics are:
12940 *
12941 * * Purpose
12942 * Specifies the base address and size of the ITS Device translation tables.
12943 *
12944 * * Usage constraints
12945 * Bits [63:32] and bits [31:0] are accessible independently.
12946 *
12947 * When GITS0_CTLR.Enabled == 1 or GITS0_CTLR.Quiescent == 0, writing this register is UNPREDICTABLE.
12948 */
12949 union ody_gits0_baser0 {
12950 uint64_t u;
12951 struct ody_gits0_baser0_s {
12952 uint64_t size : 8;
12953 uint64_t pagesize : 2;
12954 uint64_t shareability : 2;
12955 uint64_t physicaladdress : 36;
12956 uint64_t entrysize : 5;
12957 uint64_t outercacheability : 3;
12958 uint64_t type_f : 3;
12959 uint64_t cacheability : 3;
12960 uint64_t indirect : 1;
12961 uint64_t valid : 1;
12962 } s;
12963 /* struct ody_gits0_baser0_s cn; */
12964 };
12965 typedef union ody_gits0_baser0 ody_gits0_baser0_t;
12966
12967 #define ODY_GITS0_BASER0 ODY_GITS0_BASER0_FUNC()
12968 static inline uint64_t ODY_GITS0_BASER0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_BASER0_FUNC(void)12969 static inline uint64_t ODY_GITS0_BASER0_FUNC(void)
12970 {
12971 return 0x801000040100ll;
12972 }
12973
12974 #define typedef_ODY_GITS0_BASER0 ody_gits0_baser0_t
12975 #define bustype_ODY_GITS0_BASER0 CSR_TYPE_NCB
12976 #define basename_ODY_GITS0_BASER0 "GITS0_BASER0"
12977 #define device_bar_ODY_GITS0_BASER0 0x0 /* PF_BAR0 */
12978 #define busnum_ODY_GITS0_BASER0 0
12979 #define arguments_ODY_GITS0_BASER0 -1, -1, -1, -1
12980
12981 /**
12982 * Register (NCB) gits0_baser1
12983 *
12984 * GITS0 Baser1 Register
12985 * The GITS0_BASER1 characteristics are:
12986 *
12987 * * Purpose
12988 * Specifies the base address and size of the ITS Collection translation tables.
12989 *
12990 * * Usage constraints
12991 * Bits [63:32] and bits [31:0] are accessible independently.
12992 *
12993 * When GITS0_CTLR.Enabled == 1 or GITS0_CTLR.Quiescent == 0, writing this register is UNPREDICTABLE.
12994 */
12995 union ody_gits0_baser1 {
12996 uint64_t u;
12997 struct ody_gits0_baser1_s {
12998 uint64_t size : 8;
12999 uint64_t pagesize : 2;
13000 uint64_t shareability : 2;
13001 uint64_t physicaladdress : 36;
13002 uint64_t entrysize : 5;
13003 uint64_t outercacheability : 3;
13004 uint64_t type_f : 3;
13005 uint64_t cacheability : 3;
13006 uint64_t indirect : 1;
13007 uint64_t valid : 1;
13008 } s;
13009 /* struct ody_gits0_baser1_s cn; */
13010 };
13011 typedef union ody_gits0_baser1 ody_gits0_baser1_t;
13012
13013 #define ODY_GITS0_BASER1 ODY_GITS0_BASER1_FUNC()
13014 static inline uint64_t ODY_GITS0_BASER1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_BASER1_FUNC(void)13015 static inline uint64_t ODY_GITS0_BASER1_FUNC(void)
13016 {
13017 return 0x801000040108ll;
13018 }
13019
13020 #define typedef_ODY_GITS0_BASER1 ody_gits0_baser1_t
13021 #define bustype_ODY_GITS0_BASER1 CSR_TYPE_NCB
13022 #define basename_ODY_GITS0_BASER1 "GITS0_BASER1"
13023 #define device_bar_ODY_GITS0_BASER1 0x0 /* PF_BAR0 */
13024 #define busnum_ODY_GITS0_BASER1 0
13025 #define arguments_ODY_GITS0_BASER1 -1, -1, -1, -1
13026
13027 /**
13028 * Register (NCB) gits0_baser2
13029 *
13030 * GITS0 Baser2 Register
13031 * The GITS0_BASER2 characteristics are:
13032 *
13033 * * Purpose
13034 * Specifies the base address and size of the ITS vPE translation tables.
13035 *
13036 * * Usage constraints
13037 * Bits [63:32] and bits [31:0] are accessible independently.
13038 *
13039 * When GITS0_CTLR.Enabled == 1 or GITS0_CTLR.Quiescent == 0, writing this register is UNPREDICTABLE.
13040 */
13041 union ody_gits0_baser2 {
13042 uint64_t u;
13043 struct ody_gits0_baser2_s {
13044 uint64_t size : 8;
13045 uint64_t pagesize : 2;
13046 uint64_t shareability : 2;
13047 uint64_t physicaladdress : 36;
13048 uint64_t entrysize : 5;
13049 uint64_t outercacheability : 3;
13050 uint64_t type_f : 3;
13051 uint64_t cacheability : 3;
13052 uint64_t indirect : 1;
13053 uint64_t valid : 1;
13054 } s;
13055 /* struct ody_gits0_baser2_s cn; */
13056 };
13057 typedef union ody_gits0_baser2 ody_gits0_baser2_t;
13058
13059 #define ODY_GITS0_BASER2 ODY_GITS0_BASER2_FUNC()
13060 static inline uint64_t ODY_GITS0_BASER2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_BASER2_FUNC(void)13061 static inline uint64_t ODY_GITS0_BASER2_FUNC(void)
13062 {
13063 return 0x801000040110ll;
13064 }
13065
13066 #define typedef_ODY_GITS0_BASER2 ody_gits0_baser2_t
13067 #define bustype_ODY_GITS0_BASER2 CSR_TYPE_NCB
13068 #define basename_ODY_GITS0_BASER2 "GITS0_BASER2"
13069 #define device_bar_ODY_GITS0_BASER2 0x0 /* PF_BAR0 */
13070 #define busnum_ODY_GITS0_BASER2 0
13071 #define arguments_ODY_GITS0_BASER2 -1, -1, -1, -1
13072
13073 /**
13074 * Register (NCB) gits0_baser3
13075 *
13076 * GITS0 Baser3 Register
13077 * This register is RES0.
13078 */
13079 union ody_gits0_baser3 {
13080 uint64_t u;
13081 struct ody_gits0_baser3_s {
13082 uint64_t reserved_0_63 : 64;
13083 } s;
13084 /* struct ody_gits0_baser3_s cn; */
13085 };
13086 typedef union ody_gits0_baser3 ody_gits0_baser3_t;
13087
13088 #define ODY_GITS0_BASER3 ODY_GITS0_BASER3_FUNC()
13089 static inline uint64_t ODY_GITS0_BASER3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_BASER3_FUNC(void)13090 static inline uint64_t ODY_GITS0_BASER3_FUNC(void)
13091 {
13092 return 0x801000040118ll;
13093 }
13094
13095 #define typedef_ODY_GITS0_BASER3 ody_gits0_baser3_t
13096 #define bustype_ODY_GITS0_BASER3 CSR_TYPE_NCB
13097 #define basename_ODY_GITS0_BASER3 "GITS0_BASER3"
13098 #define device_bar_ODY_GITS0_BASER3 0x0 /* PF_BAR0 */
13099 #define busnum_ODY_GITS0_BASER3 0
13100 #define arguments_ODY_GITS0_BASER3 -1, -1, -1, -1
13101
13102 /**
13103 * Register (NCB) gits0_baser4
13104 *
13105 * GITS0 Baser4 Register
13106 * This register is RES0.
13107 */
13108 union ody_gits0_baser4 {
13109 uint64_t u;
13110 struct ody_gits0_baser4_s {
13111 uint64_t reserved_0_63 : 64;
13112 } s;
13113 /* struct ody_gits0_baser4_s cn; */
13114 };
13115 typedef union ody_gits0_baser4 ody_gits0_baser4_t;
13116
13117 #define ODY_GITS0_BASER4 ODY_GITS0_BASER4_FUNC()
13118 static inline uint64_t ODY_GITS0_BASER4_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_BASER4_FUNC(void)13119 static inline uint64_t ODY_GITS0_BASER4_FUNC(void)
13120 {
13121 return 0x801000040120ll;
13122 }
13123
13124 #define typedef_ODY_GITS0_BASER4 ody_gits0_baser4_t
13125 #define bustype_ODY_GITS0_BASER4 CSR_TYPE_NCB
13126 #define basename_ODY_GITS0_BASER4 "GITS0_BASER4"
13127 #define device_bar_ODY_GITS0_BASER4 0x0 /* PF_BAR0 */
13128 #define busnum_ODY_GITS0_BASER4 0
13129 #define arguments_ODY_GITS0_BASER4 -1, -1, -1, -1
13130
13131 /**
13132 * Register (NCB) gits0_baser5
13133 *
13134 * GITS0 Baser5 Register
13135 * This register is RES0.
13136 */
13137 union ody_gits0_baser5 {
13138 uint64_t u;
13139 struct ody_gits0_baser5_s {
13140 uint64_t reserved_0_63 : 64;
13141 } s;
13142 /* struct ody_gits0_baser5_s cn; */
13143 };
13144 typedef union ody_gits0_baser5 ody_gits0_baser5_t;
13145
13146 #define ODY_GITS0_BASER5 ODY_GITS0_BASER5_FUNC()
13147 static inline uint64_t ODY_GITS0_BASER5_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_BASER5_FUNC(void)13148 static inline uint64_t ODY_GITS0_BASER5_FUNC(void)
13149 {
13150 return 0x801000040128ll;
13151 }
13152
13153 #define typedef_ODY_GITS0_BASER5 ody_gits0_baser5_t
13154 #define bustype_ODY_GITS0_BASER5 CSR_TYPE_NCB
13155 #define basename_ODY_GITS0_BASER5 "GITS0_BASER5"
13156 #define device_bar_ODY_GITS0_BASER5 0x0 /* PF_BAR0 */
13157 #define busnum_ODY_GITS0_BASER5 0
13158 #define arguments_ODY_GITS0_BASER5 -1, -1, -1, -1
13159
13160 /**
13161 * Register (NCB) gits0_baser6
13162 *
13163 * GITS0 Baser6 Register
13164 * This register is RES0.
13165 */
13166 union ody_gits0_baser6 {
13167 uint64_t u;
13168 struct ody_gits0_baser6_s {
13169 uint64_t reserved_0_63 : 64;
13170 } s;
13171 /* struct ody_gits0_baser6_s cn; */
13172 };
13173 typedef union ody_gits0_baser6 ody_gits0_baser6_t;
13174
13175 #define ODY_GITS0_BASER6 ODY_GITS0_BASER6_FUNC()
13176 static inline uint64_t ODY_GITS0_BASER6_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_BASER6_FUNC(void)13177 static inline uint64_t ODY_GITS0_BASER6_FUNC(void)
13178 {
13179 return 0x801000040130ll;
13180 }
13181
13182 #define typedef_ODY_GITS0_BASER6 ody_gits0_baser6_t
13183 #define bustype_ODY_GITS0_BASER6 CSR_TYPE_NCB
13184 #define basename_ODY_GITS0_BASER6 "GITS0_BASER6"
13185 #define device_bar_ODY_GITS0_BASER6 0x0 /* PF_BAR0 */
13186 #define busnum_ODY_GITS0_BASER6 0
13187 #define arguments_ODY_GITS0_BASER6 -1, -1, -1, -1
13188
13189 /**
13190 * Register (NCB) gits0_baser7
13191 *
13192 * GITS0 Baser7 Register
13193 * This register is RES0.
13194 */
13195 union ody_gits0_baser7 {
13196 uint64_t u;
13197 struct ody_gits0_baser7_s {
13198 uint64_t reserved_0_63 : 64;
13199 } s;
13200 /* struct ody_gits0_baser7_s cn; */
13201 };
13202 typedef union ody_gits0_baser7 ody_gits0_baser7_t;
13203
13204 #define ODY_GITS0_BASER7 ODY_GITS0_BASER7_FUNC()
13205 static inline uint64_t ODY_GITS0_BASER7_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_BASER7_FUNC(void)13206 static inline uint64_t ODY_GITS0_BASER7_FUNC(void)
13207 {
13208 return 0x801000040138ll;
13209 }
13210
13211 #define typedef_ODY_GITS0_BASER7 ody_gits0_baser7_t
13212 #define bustype_ODY_GITS0_BASER7 CSR_TYPE_NCB
13213 #define basename_ODY_GITS0_BASER7 "GITS0_BASER7"
13214 #define device_bar_ODY_GITS0_BASER7 0x0 /* PF_BAR0 */
13215 #define busnum_ODY_GITS0_BASER7 0
13216 #define arguments_ODY_GITS0_BASER7 -1, -1, -1, -1
13217
13218 /**
13219 * Register (NCB) gits0_c_errinsr
13220 *
13221 * GITS0 C Errinsr Register
13222 * The GITS0_C_ERRINSR characteristics are:
13223 *
13224 * * Purpose
13225 * This register can inject errors into the ITS Device cache RAM if ECC is enabaled.
13226 * You can use this register to test your error recovery software.
13227 *
13228 * * Usage constraints
13229 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
13230 *
13231 * \> *Note*
13232 * \> The bit assignments within this register depend on whether a write access or read access occurs.
13233 */
13234 union ody_gits0_c_errinsr {
13235 uint64_t u;
13236 struct ody_gits0_c_errinsr_s {
13237 uint64_t errins1loc : 9;
13238 uint64_t reserved_9_14 : 6;
13239 uint64_t errins1valid : 1;
13240 uint64_t errins2loc : 9;
13241 uint64_t reserved_25_30 : 6;
13242 uint64_t errins2valid : 1;
13243 uint64_t addr : 16;
13244 uint64_t reserved_48_59 : 12;
13245 uint64_t disablewritecheck : 1;
13246 uint64_t reserved_61_62 : 2;
13247 uint64_t valid : 1;
13248 } s;
13249 /* struct ody_gits0_c_errinsr_s cn; */
13250 };
13251 typedef union ody_gits0_c_errinsr ody_gits0_c_errinsr_t;
13252
13253 #define ODY_GITS0_C_ERRINSR ODY_GITS0_C_ERRINSR_FUNC()
13254 static inline uint64_t ODY_GITS0_C_ERRINSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_C_ERRINSR_FUNC(void)13255 static inline uint64_t ODY_GITS0_C_ERRINSR_FUNC(void)
13256 {
13257 return 0x80100004c010ll;
13258 }
13259
13260 #define typedef_ODY_GITS0_C_ERRINSR ody_gits0_c_errinsr_t
13261 #define bustype_ODY_GITS0_C_ERRINSR CSR_TYPE_NCB
13262 #define basename_ODY_GITS0_C_ERRINSR "GITS0_C_ERRINSR"
13263 #define device_bar_ODY_GITS0_C_ERRINSR 0x0 /* PF_BAR0 */
13264 #define busnum_ODY_GITS0_C_ERRINSR 0
13265 #define arguments_ODY_GITS0_C_ERRINSR -1, -1, -1, -1
13266
13267 /**
13268 * Register (NCB) gits0_cbaser
13269 *
13270 * GITS0 Cbaser Register
13271 * The GITS0_CBASER characteristics are:
13272 *
13273 * * Purpose
13274 * Specifies the base address and size of the ITS command queue
13275 *
13276 * * Usage constraints
13277 * When GITS0_CTLR.Enabled == 1 or GITS0_CTLR.Quiescent == 0, writing this register is UNPREDICTABLE.
13278 *
13279 * Bits [63:32] and bits [31:0] are accessible separately
13280 *
13281 * \> *Note*
13282 *
13283 * \> * The command queue is a circular buffer and wraps at Physical Address [47:0] +
13284 * (4096 * (Size + 1)).
13285 * \> * When this register is successfully written, the value of GITS0_CREADR is set to zero.
13286 */
13287 union ody_gits0_cbaser {
13288 uint64_t u;
13289 struct ody_gits0_cbaser_s {
13290 uint64_t size : 8;
13291 uint64_t reserved_8_9 : 2;
13292 uint64_t shareability : 2;
13293 uint64_t physicaladdress : 40;
13294 uint64_t reserved_52 : 1;
13295 uint64_t outercacheability : 3;
13296 uint64_t reserved_56_58 : 3;
13297 uint64_t cacheability : 3;
13298 uint64_t reserved_62 : 1;
13299 uint64_t valid : 1;
13300 } s;
13301 /* struct ody_gits0_cbaser_s cn; */
13302 };
13303 typedef union ody_gits0_cbaser ody_gits0_cbaser_t;
13304
13305 #define ODY_GITS0_CBASER ODY_GITS0_CBASER_FUNC()
13306 static inline uint64_t ODY_GITS0_CBASER_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_CBASER_FUNC(void)13307 static inline uint64_t ODY_GITS0_CBASER_FUNC(void)
13308 {
13309 return 0x801000040080ll;
13310 }
13311
13312 #define typedef_ODY_GITS0_CBASER ody_gits0_cbaser_t
13313 #define bustype_ODY_GITS0_CBASER CSR_TYPE_NCB
13314 #define basename_ODY_GITS0_CBASER "GITS0_CBASER"
13315 #define device_bar_ODY_GITS0_CBASER 0x0 /* PF_BAR0 */
13316 #define busnum_ODY_GITS0_CBASER 0
13317 #define arguments_ODY_GITS0_CBASER -1, -1, -1, -1
13318
13319 /**
13320 * Register (NCB) gits0_cfgid
13321 *
13322 * GITS0 Cfgid Register
13323 * The GITS0S_CFGID characteristics are:
13324 *
13325 * * Purpose
13326 * This register returns information about the configuration of the ITS block such as its ID number.
13327 *
13328 * * Usage constraints
13329 * There are no usage constraints.
13330 */
13331 union ody_gits0_cfgid {
13332 uint64_t u;
13333 struct ody_gits0_cfgid_s {
13334 uint64_t its_number : 8;
13335 uint64_t lpi_credit_count : 4;
13336 uint64_t target_bits : 4;
13337 uint64_t msi_64 : 1;
13338 uint64_t low_latency_support : 1;
13339 uint64_t cache_ecc : 1;
13340 uint64_t reserved_19 : 1;
13341 uint64_t collection_cache_index_bits : 4;
13342 uint64_t device_cache_index_bits : 4;
13343 uint64_t event_cache_index_bits : 4;
13344 uint64_t vpe_bits : 4;
13345 uint64_t low_latency_lpi_credit_count : 4;
13346 uint64_t reserved_40_63 : 24;
13347 } s;
13348 /* struct ody_gits0_cfgid_s cn; */
13349 };
13350 typedef union ody_gits0_cfgid ody_gits0_cfgid_t;
13351
13352 #define ODY_GITS0_CFGID ODY_GITS0_CFGID_FUNC()
13353 static inline uint64_t ODY_GITS0_CFGID_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_CFGID_FUNC(void)13354 static inline uint64_t ODY_GITS0_CFGID_FUNC(void)
13355 {
13356 return 0x80100004f000ll;
13357 }
13358
13359 #define typedef_ODY_GITS0_CFGID ody_gits0_cfgid_t
13360 #define bustype_ODY_GITS0_CFGID CSR_TYPE_NCB
13361 #define basename_ODY_GITS0_CFGID "GITS0_CFGID"
13362 #define device_bar_ODY_GITS0_CFGID 0x0 /* PF_BAR0 */
13363 #define busnum_ODY_GITS0_CFGID 0
13364 #define arguments_ODY_GITS0_CFGID -1, -1, -1, -1
13365
13366 /**
13367 * Register (NCB32b) gits0_cidr0
13368 *
13369 * GITS0 Cidr0 Register
13370 * The GITS0_CIDR0 characteristics are:
13371 *
13372 * * Purpose
13373 * This register is one of the Component Identification Registers and returns the first
13374 * part of the Preamble.
13375 *
13376 * * Usage constraints
13377 * There are no usage constraints.
13378 */
13379 union ody_gits0_cidr0 {
13380 uint32_t u;
13381 struct ody_gits0_cidr0_s {
13382 uint32_t prmbl_0 : 8;
13383 uint32_t reserved_8_31 : 24;
13384 } s;
13385 /* struct ody_gits0_cidr0_s cn; */
13386 };
13387 typedef union ody_gits0_cidr0 ody_gits0_cidr0_t;
13388
13389 #define ODY_GITS0_CIDR0 ODY_GITS0_CIDR0_FUNC()
13390 static inline uint64_t ODY_GITS0_CIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_CIDR0_FUNC(void)13391 static inline uint64_t ODY_GITS0_CIDR0_FUNC(void)
13392 {
13393 return 0x80100004fff0ll;
13394 }
13395
13396 #define typedef_ODY_GITS0_CIDR0 ody_gits0_cidr0_t
13397 #define bustype_ODY_GITS0_CIDR0 CSR_TYPE_NCB32b
13398 #define basename_ODY_GITS0_CIDR0 "GITS0_CIDR0"
13399 #define device_bar_ODY_GITS0_CIDR0 0x0 /* PF_BAR0 */
13400 #define busnum_ODY_GITS0_CIDR0 0
13401 #define arguments_ODY_GITS0_CIDR0 -1, -1, -1, -1
13402
13403 /**
13404 * Register (NCB32b) gits0_cidr1
13405 *
13406 * GITS0 Cidr1 Register
13407 * The GITS0_CIDR1 characteristics are:
13408 *
13409 * * Purpose
13410 * This register is one of the Component Identification Registers and returns the
13411 * second part of the Preamble as well as the Component Class.
13412 *
13413 * * Usage constraints
13414 * There are no usage constraints.
13415 */
13416 union ody_gits0_cidr1 {
13417 uint32_t u;
13418 struct ody_gits0_cidr1_s {
13419 uint32_t prmbl_1 : 4;
13420 uint32_t class_f : 4;
13421 uint32_t reserved_8_31 : 24;
13422 } s;
13423 /* struct ody_gits0_cidr1_s cn; */
13424 };
13425 typedef union ody_gits0_cidr1 ody_gits0_cidr1_t;
13426
13427 #define ODY_GITS0_CIDR1 ODY_GITS0_CIDR1_FUNC()
13428 static inline uint64_t ODY_GITS0_CIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_CIDR1_FUNC(void)13429 static inline uint64_t ODY_GITS0_CIDR1_FUNC(void)
13430 {
13431 return 0x80100004fff4ll;
13432 }
13433
13434 #define typedef_ODY_GITS0_CIDR1 ody_gits0_cidr1_t
13435 #define bustype_ODY_GITS0_CIDR1 CSR_TYPE_NCB32b
13436 #define basename_ODY_GITS0_CIDR1 "GITS0_CIDR1"
13437 #define device_bar_ODY_GITS0_CIDR1 0x0 /* PF_BAR0 */
13438 #define busnum_ODY_GITS0_CIDR1 0
13439 #define arguments_ODY_GITS0_CIDR1 -1, -1, -1, -1
13440
13441 /**
13442 * Register (NCB32b) gits0_cidr2
13443 *
13444 * GITS0 Cidr2 Register
13445 * The GITS0_CIDR2 characteristics are:
13446 *
13447 * * Purpose
13448 * This register is one of the Component Identification Registers and returns the third
13449 * part of the Preamble.
13450 *
13451 * * Usage constraints
13452 * There are no usage constraints.
13453 */
13454 union ody_gits0_cidr2 {
13455 uint32_t u;
13456 struct ody_gits0_cidr2_s {
13457 uint32_t prmbl_2 : 8;
13458 uint32_t reserved_8_31 : 24;
13459 } s;
13460 /* struct ody_gits0_cidr2_s cn; */
13461 };
13462 typedef union ody_gits0_cidr2 ody_gits0_cidr2_t;
13463
13464 #define ODY_GITS0_CIDR2 ODY_GITS0_CIDR2_FUNC()
13465 static inline uint64_t ODY_GITS0_CIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_CIDR2_FUNC(void)13466 static inline uint64_t ODY_GITS0_CIDR2_FUNC(void)
13467 {
13468 return 0x80100004fff8ll;
13469 }
13470
13471 #define typedef_ODY_GITS0_CIDR2 ody_gits0_cidr2_t
13472 #define bustype_ODY_GITS0_CIDR2 CSR_TYPE_NCB32b
13473 #define basename_ODY_GITS0_CIDR2 "GITS0_CIDR2"
13474 #define device_bar_ODY_GITS0_CIDR2 0x0 /* PF_BAR0 */
13475 #define busnum_ODY_GITS0_CIDR2 0
13476 #define arguments_ODY_GITS0_CIDR2 -1, -1, -1, -1
13477
13478 /**
13479 * Register (NCB32b) gits0_cidr3
13480 *
13481 * GITS0 Cidr3 Register
13482 * The GITS0_CIDR3 characteristics are:
13483 *
13484 * * Purpose
13485 * This register is one of the Component Identification Registers and returns the
13486 * fourth part of the Preamble.
13487 *
13488 * * Usage constraints
13489 * There are no usage constraints.
13490 */
13491 union ody_gits0_cidr3 {
13492 uint32_t u;
13493 struct ody_gits0_cidr3_s {
13494 uint32_t prmbl_3 : 8;
13495 uint32_t reserved_8_31 : 24;
13496 } s;
13497 /* struct ody_gits0_cidr3_s cn; */
13498 };
13499 typedef union ody_gits0_cidr3 ody_gits0_cidr3_t;
13500
13501 #define ODY_GITS0_CIDR3 ODY_GITS0_CIDR3_FUNC()
13502 static inline uint64_t ODY_GITS0_CIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_CIDR3_FUNC(void)13503 static inline uint64_t ODY_GITS0_CIDR3_FUNC(void)
13504 {
13505 return 0x80100004fffcll;
13506 }
13507
13508 #define typedef_ODY_GITS0_CIDR3 ody_gits0_cidr3_t
13509 #define bustype_ODY_GITS0_CIDR3 CSR_TYPE_NCB32b
13510 #define basename_ODY_GITS0_CIDR3 "GITS0_CIDR3"
13511 #define device_bar_ODY_GITS0_CIDR3 0x0 /* PF_BAR0 */
13512 #define busnum_ODY_GITS0_CIDR3 0
13513 #define arguments_ODY_GITS0_CIDR3 -1, -1, -1, -1
13514
13515 /**
13516 * Register (NCB) gits0_creadr
13517 *
13518 * GITS0 Creadr Register
13519 * The GITS0_CREADR characteristics are:
13520 *
13521 * * Purpose
13522 * Specifies the offset from GITS0_CBASER where the ITS reads the next ITS command.
13523 *
13524 * * Usage constraints
13525 * This register is cleared to 0 when a value is written to GITS0_CBASER.
13526 *
13527 * Bits [63:32] and bits [31:0] are accessible separately.
13528 */
13529 union ody_gits0_creadr {
13530 uint64_t u;
13531 struct ody_gits0_creadr_s {
13532 uint64_t stalled : 1;
13533 uint64_t reserved_1_4 : 4;
13534 uint64_t offset : 15;
13535 uint64_t reserved_20_63 : 44;
13536 } s;
13537 /* struct ody_gits0_creadr_s cn; */
13538 };
13539 typedef union ody_gits0_creadr ody_gits0_creadr_t;
13540
13541 #define ODY_GITS0_CREADR ODY_GITS0_CREADR_FUNC()
13542 static inline uint64_t ODY_GITS0_CREADR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_CREADR_FUNC(void)13543 static inline uint64_t ODY_GITS0_CREADR_FUNC(void)
13544 {
13545 return 0x801000040090ll;
13546 }
13547
13548 #define typedef_ODY_GITS0_CREADR ody_gits0_creadr_t
13549 #define bustype_ODY_GITS0_CREADR CSR_TYPE_NCB
13550 #define basename_ODY_GITS0_CREADR "GITS0_CREADR"
13551 #define device_bar_ODY_GITS0_CREADR 0x0 /* PF_BAR0 */
13552 #define busnum_ODY_GITS0_CREADR 0
13553 #define arguments_ODY_GITS0_CREADR -1, -1, -1, -1
13554
13555 /**
13556 * Register (NCB32b) gits0_ctlr
13557 *
13558 * GITS0 Ctlr Register
13559 * The GITS0_CTLR characteristics are:
13560 *
13561 * * Purpose
13562 * Controls the operation of an ITS.
13563 *
13564 * * Usage constraints
13565 * There are no usage constraints.
13566 */
13567 union ody_gits0_ctlr {
13568 uint32_t u;
13569 struct ody_gits0_ctlr_s {
13570 uint32_t enabled : 1;
13571 uint32_t reserved_1_30 : 30;
13572 uint32_t quiescent : 1;
13573 } s;
13574 /* struct ody_gits0_ctlr_s cn; */
13575 };
13576 typedef union ody_gits0_ctlr ody_gits0_ctlr_t;
13577
13578 #define ODY_GITS0_CTLR ODY_GITS0_CTLR_FUNC()
13579 static inline uint64_t ODY_GITS0_CTLR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_CTLR_FUNC(void)13580 static inline uint64_t ODY_GITS0_CTLR_FUNC(void)
13581 {
13582 return 0x801000040000ll;
13583 }
13584
13585 #define typedef_ODY_GITS0_CTLR ody_gits0_ctlr_t
13586 #define bustype_ODY_GITS0_CTLR CSR_TYPE_NCB32b
13587 #define basename_ODY_GITS0_CTLR "GITS0_CTLR"
13588 #define device_bar_ODY_GITS0_CTLR 0x0 /* PF_BAR0 */
13589 #define busnum_ODY_GITS0_CTLR 0
13590 #define arguments_ODY_GITS0_CTLR -1, -1, -1, -1
13591
13592 /**
13593 * Register (NCB) gits0_cwriter
13594 *
13595 * GITS0 Cwriter Register
13596 * The GITS0_CWRITER characteristics are:
13597 *
13598 * * Purpose
13599 * Specifies the offset from GITS0_CBASER where software writes the next ITS command.
13600 *
13601 * * Usage constraints
13602 * If GITS0_CWRITER is written with a value outside of the valid range specified by
13603 * GITS0_CBASER.Physical_Address and GITS0_CBASER.Size then the command queue is
13604 * considered invalid, and no further commands are processed until GITS0_CWRITER is
13605 * written with a value that is in the valid range.
13606 *
13607 * Bits [63:32] and bits [31:0] are accessible separately
13608 */
13609 union ody_gits0_cwriter {
13610 uint64_t u;
13611 struct ody_gits0_cwriter_s {
13612 uint64_t retry : 1;
13613 uint64_t reserved_1_4 : 4;
13614 uint64_t offset : 15;
13615 uint64_t reserved_20_63 : 44;
13616 } s;
13617 /* struct ody_gits0_cwriter_s cn; */
13618 };
13619 typedef union ody_gits0_cwriter ody_gits0_cwriter_t;
13620
13621 #define ODY_GITS0_CWRITER ODY_GITS0_CWRITER_FUNC()
13622 static inline uint64_t ODY_GITS0_CWRITER_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_CWRITER_FUNC(void)13623 static inline uint64_t ODY_GITS0_CWRITER_FUNC(void)
13624 {
13625 return 0x801000040088ll;
13626 }
13627
13628 #define typedef_ODY_GITS0_CWRITER ody_gits0_cwriter_t
13629 #define bustype_ODY_GITS0_CWRITER CSR_TYPE_NCB
13630 #define basename_ODY_GITS0_CWRITER "GITS0_CWRITER"
13631 #define device_bar_ODY_GITS0_CWRITER 0x0 /* PF_BAR0 */
13632 #define busnum_ODY_GITS0_CWRITER 0
13633 #define arguments_ODY_GITS0_CWRITER -1, -1, -1, -1
13634
13635 /**
13636 * Register (NCB) gits0_d_errinsr
13637 *
13638 * GITS0 D Errinsr Register
13639 * The GITS0_D_ERRINSR characteristics are:
13640 *
13641 * * Purpose
13642 * This register can inject errors into the ITS Device cache RAM if ECC is enabaled.
13643 * You can use this register to test your error recovery software.
13644 *
13645 * * Usage constraints
13646 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
13647 *
13648 * \> *Note*
13649 * \> The bit assignments within this register depend on whether a write access or read access occurs.
13650 */
13651 union ody_gits0_d_errinsr {
13652 uint64_t u;
13653 struct ody_gits0_d_errinsr_s {
13654 uint64_t errins1loc : 9;
13655 uint64_t reserved_9_14 : 6;
13656 uint64_t errins1valid : 1;
13657 uint64_t errins2loc : 9;
13658 uint64_t reserved_25_30 : 6;
13659 uint64_t errins2valid : 1;
13660 uint64_t addr : 16;
13661 uint64_t reserved_48_59 : 12;
13662 uint64_t disablewritecheck : 1;
13663 uint64_t reserved_61_62 : 2;
13664 uint64_t valid : 1;
13665 } s;
13666 /* struct ody_gits0_d_errinsr_s cn; */
13667 };
13668 typedef union ody_gits0_d_errinsr ody_gits0_d_errinsr_t;
13669
13670 #define ODY_GITS0_D_ERRINSR ODY_GITS0_D_ERRINSR_FUNC()
13671 static inline uint64_t ODY_GITS0_D_ERRINSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_D_ERRINSR_FUNC(void)13672 static inline uint64_t ODY_GITS0_D_ERRINSR_FUNC(void)
13673 {
13674 return 0x80100004c000ll;
13675 }
13676
13677 #define typedef_ODY_GITS0_D_ERRINSR ody_gits0_d_errinsr_t
13678 #define bustype_ODY_GITS0_D_ERRINSR CSR_TYPE_NCB
13679 #define basename_ODY_GITS0_D_ERRINSR "GITS0_D_ERRINSR"
13680 #define device_bar_ODY_GITS0_D_ERRINSR 0x0 /* PF_BAR0 */
13681 #define busnum_ODY_GITS0_D_ERRINSR 0
13682 #define arguments_ODY_GITS0_D_ERRINSR -1, -1, -1, -1
13683
13684 /**
13685 * Register (NCB32b) gits0_fctlr
13686 *
13687 * GITS0 Fctlr Register
13688 * The GITS0_FCTLR characteristics are:
13689 *
13690 * * Purpose
13691 * This register controls functions in the ITS such as cache invalidation, clock
13692 * gating, and the scrubbing of all RAMs.
13693 *
13694 * * Usage constraints
13695 * There are no usage constraints.
13696 */
13697 union ody_gits0_fctlr {
13698 uint32_t u;
13699 struct ody_gits0_fctlr_s {
13700 uint32_t sip : 1;
13701 uint32_t lte : 1;
13702 uint32_t uee : 1;
13703 uint32_t cee : 1;
13704 uint32_t cgo : 3;
13705 uint32_t leo : 1;
13706 uint32_t aee : 1;
13707 uint32_t qd : 1;
13708 uint32_t qak : 1;
13709 uint32_t poison_check : 1;
13710 uint32_t ll_lpi_cr_init : 2;
13711 uint32_t reserved_14_15 : 2;
13712 uint32_t icc : 1;
13713 uint32_t idc : 1;
13714 uint32_t iec : 1;
13715 uint32_t reserved_19 : 1;
13716 uint32_t lpi_cr_init : 4;
13717 uint32_t reserved_24_27 : 4;
13718 uint32_t cmd_flush : 2;
13719 uint32_t pwe : 1;
13720 uint32_t dcc : 1;
13721 } s;
13722 /* struct ody_gits0_fctlr_s cn; */
13723 };
13724 typedef union ody_gits0_fctlr ody_gits0_fctlr_t;
13725
13726 #define ODY_GITS0_FCTLR ODY_GITS0_FCTLR_FUNC()
13727 static inline uint64_t ODY_GITS0_FCTLR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_FCTLR_FUNC(void)13728 static inline uint64_t ODY_GITS0_FCTLR_FUNC(void)
13729 {
13730 return 0x801000040020ll;
13731 }
13732
13733 #define typedef_ODY_GITS0_FCTLR ody_gits0_fctlr_t
13734 #define bustype_ODY_GITS0_FCTLR CSR_TYPE_NCB32b
13735 #define basename_ODY_GITS0_FCTLR "GITS0_FCTLR"
13736 #define device_bar_ODY_GITS0_FCTLR 0x0 /* PF_BAR0 */
13737 #define busnum_ODY_GITS0_FCTLR 0
13738 #define arguments_ODY_GITS0_FCTLR -1, -1, -1, -1
13739
13740 /**
13741 * Register (NCB32b) gits0_iidr
13742 *
13743 * GITS0 Iidr Register
13744 * The GITS0_IIDR characteristics are:
13745 *
13746 * * Purpose
13747 * Provides information about the implementer and revision of the ITS.
13748 *
13749 * * Usage constraints
13750 * There are no usage constraints.
13751 */
13752 union ody_gits0_iidr {
13753 uint32_t u;
13754 struct ody_gits0_iidr_s {
13755 uint32_t implementer : 12;
13756 uint32_t revision : 4;
13757 uint32_t variant : 4;
13758 uint32_t reserved_20_23 : 4;
13759 uint32_t productid : 8;
13760 } s;
13761 /* struct ody_gits0_iidr_s cn; */
13762 };
13763 typedef union ody_gits0_iidr ody_gits0_iidr_t;
13764
13765 #define ODY_GITS0_IIDR ODY_GITS0_IIDR_FUNC()
13766 static inline uint64_t ODY_GITS0_IIDR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_IIDR_FUNC(void)13767 static inline uint64_t ODY_GITS0_IIDR_FUNC(void)
13768 {
13769 return 0x801000040004ll;
13770 }
13771
13772 #define typedef_ODY_GITS0_IIDR ody_gits0_iidr_t
13773 #define bustype_ODY_GITS0_IIDR CSR_TYPE_NCB32b
13774 #define basename_ODY_GITS0_IIDR "GITS0_IIDR"
13775 #define device_bar_ODY_GITS0_IIDR 0x0 /* PF_BAR0 */
13776 #define busnum_ODY_GITS0_IIDR 0
13777 #define arguments_ODY_GITS0_IIDR -1, -1, -1, -1
13778
13779 /**
13780 * Register (NCB32b) gits0_mpamidr
13781 *
13782 * GITS0 Mpamidr Register
13783 * The GITS0_MPAMIDR characteristics are:
13784 *
13785 * * Purpose
13786 * Reports the maximum support PARTID and PMG values
13787 *
13788 * * Usage constraints
13789 * There are no usage constraints.
13790 */
13791 union ody_gits0_mpamidr {
13792 uint32_t u;
13793 struct ody_gits0_mpamidr_s {
13794 uint32_t partid_max : 16;
13795 uint32_t pmg_max : 8;
13796 uint32_t reserved_24_31 : 8;
13797 } s;
13798 /* struct ody_gits0_mpamidr_s cn; */
13799 };
13800 typedef union ody_gits0_mpamidr ody_gits0_mpamidr_t;
13801
13802 #define ODY_GITS0_MPAMIDR ODY_GITS0_MPAMIDR_FUNC()
13803 static inline uint64_t ODY_GITS0_MPAMIDR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_MPAMIDR_FUNC(void)13804 static inline uint64_t ODY_GITS0_MPAMIDR_FUNC(void)
13805 {
13806 return 0x801000040010ll;
13807 }
13808
13809 #define typedef_ODY_GITS0_MPAMIDR ody_gits0_mpamidr_t
13810 #define bustype_ODY_GITS0_MPAMIDR CSR_TYPE_NCB32b
13811 #define basename_ODY_GITS0_MPAMIDR "GITS0_MPAMIDR"
13812 #define device_bar_ODY_GITS0_MPAMIDR 0x0 /* PF_BAR0 */
13813 #define busnum_ODY_GITS0_MPAMIDR 0
13814 #define arguments_ODY_GITS0_MPAMIDR -1, -1, -1, -1
13815
13816 /**
13817 * Register (NCB32b) gits0_mpidr
13818 *
13819 * GITS0 Mpidr Register
13820 * The GITS0_MPIDR characteristics are:
13821 *
13822 * * Purpose
13823 * Reports ITS's affinity when the vPE Table is shared with Redistributors.
13824 *
13825 * * Usage constraints
13826 * There are no usage constraints.
13827 */
13828 union ody_gits0_mpidr {
13829 uint32_t u;
13830 struct ody_gits0_mpidr_s {
13831 uint32_t reserved_0_7 : 8;
13832 uint32_t aff1 : 8;
13833 uint32_t aff2 : 8;
13834 uint32_t aff3 : 8;
13835 } s;
13836 /* struct ody_gits0_mpidr_s cn; */
13837 };
13838 typedef union ody_gits0_mpidr ody_gits0_mpidr_t;
13839
13840 #define ODY_GITS0_MPIDR ODY_GITS0_MPIDR_FUNC()
13841 static inline uint64_t ODY_GITS0_MPIDR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_MPIDR_FUNC(void)13842 static inline uint64_t ODY_GITS0_MPIDR_FUNC(void)
13843 {
13844 return 0x801000040018ll;
13845 }
13846
13847 #define typedef_ODY_GITS0_MPIDR ody_gits0_mpidr_t
13848 #define bustype_ODY_GITS0_MPIDR CSR_TYPE_NCB32b
13849 #define basename_ODY_GITS0_MPIDR "GITS0_MPIDR"
13850 #define device_bar_ODY_GITS0_MPIDR 0x0 /* PF_BAR0 */
13851 #define busnum_ODY_GITS0_MPIDR 0
13852 #define arguments_ODY_GITS0_MPIDR -1, -1, -1, -1
13853
13854 /**
13855 * Register (NCB) gits0_opr
13856 *
13857 * GITS0 Opr Register
13858 * The GITS0_OPR characteristics are:
13859 *
13860 * * Purpose
13861 * This register controls a range of implementation defined ITS test features.
13862 */
13863 union ody_gits0_opr {
13864 uint64_t u;
13865 struct ody_gits0_opr_s {
13866 uint64_t event_id : 20;
13867 uint64_t reserved_20_31 : 12;
13868 uint64_t device_id : 24;
13869 uint64_t reserved_56_59 : 4;
13870 uint64_t lock_type : 4;
13871 } s;
13872 /* struct ody_gits0_opr_s cn; */
13873 };
13874 typedef union ody_gits0_opr ody_gits0_opr_t;
13875
13876 #define ODY_GITS0_OPR ODY_GITS0_OPR_FUNC()
13877 static inline uint64_t ODY_GITS0_OPR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_OPR_FUNC(void)13878 static inline uint64_t ODY_GITS0_OPR_FUNC(void)
13879 {
13880 return 0x801000040028ll;
13881 }
13882
13883 #define typedef_ODY_GITS0_OPR ody_gits0_opr_t
13884 #define bustype_ODY_GITS0_OPR CSR_TYPE_NCB
13885 #define basename_ODY_GITS0_OPR "GITS0_OPR"
13886 #define device_bar_ODY_GITS0_OPR 0x0 /* PF_BAR0 */
13887 #define busnum_ODY_GITS0_OPR 0
13888 #define arguments_ODY_GITS0_OPR -1, -1, -1, -1
13889
13890 /**
13891 * Register (NCB) gits0_opsr
13892 *
13893 * GITS0 Opsr Register
13894 * The GITS0_OPSR characteristics are:
13895 *
13896 * * Purpose
13897 * This register indicates the results of GITS0_OPR operations
13898 */
13899 union ody_gits0_opsr {
13900 uint64_t u;
13901 struct ody_gits0_opsr_s {
13902 uint64_t pid : 16;
13903 uint64_t reserved_16_31 : 16;
13904 uint64_t target : 14;
13905 uint64_t reserved_46_47 : 2;
13906 uint64_t entry_locked : 1;
13907 uint64_t virt : 1;
13908 uint64_t reserved_50_60 : 11;
13909 uint64_t request_in_progress : 1;
13910 uint64_t request_pass : 1;
13911 uint64_t request_complete : 1;
13912 } s;
13913 /* struct ody_gits0_opsr_s cn; */
13914 };
13915 typedef union ody_gits0_opsr ody_gits0_opsr_t;
13916
13917 #define ODY_GITS0_OPSR ODY_GITS0_OPSR_FUNC()
13918 static inline uint64_t ODY_GITS0_OPSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_OPSR_FUNC(void)13919 static inline uint64_t ODY_GITS0_OPSR_FUNC(void)
13920 {
13921 return 0x801000040030ll;
13922 }
13923
13924 #define typedef_ODY_GITS0_OPSR ody_gits0_opsr_t
13925 #define bustype_ODY_GITS0_OPSR CSR_TYPE_NCB
13926 #define basename_ODY_GITS0_OPSR "GITS0_OPSR"
13927 #define device_bar_ODY_GITS0_OPSR 0x0 /* PF_BAR0 */
13928 #define busnum_ODY_GITS0_OPSR 0
13929 #define arguments_ODY_GITS0_OPSR -1, -1, -1, -1
13930
13931 /**
13932 * Register (NCB32b) gits0_partidr
13933 *
13934 * GITS0 Partidr Register
13935 * The GITS0_PARTIDR characteristics are:
13936 *
13937 * * Purpose
13938 * Reports the maximum support PARTID and PMG values
13939 *
13940 * * Usage constraints
13941 * There are no usage constraints.
13942 */
13943 union ody_gits0_partidr {
13944 uint32_t u;
13945 struct ody_gits0_partidr_s {
13946 uint32_t partid : 9;
13947 uint32_t reserved_9_15 : 7;
13948 uint32_t pmg : 1;
13949 uint32_t reserved_17_31 : 15;
13950 } s;
13951 /* struct ody_gits0_partidr_s cn; */
13952 };
13953 typedef union ody_gits0_partidr ody_gits0_partidr_t;
13954
13955 #define ODY_GITS0_PARTIDR ODY_GITS0_PARTIDR_FUNC()
13956 static inline uint64_t ODY_GITS0_PARTIDR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_PARTIDR_FUNC(void)13957 static inline uint64_t ODY_GITS0_PARTIDR_FUNC(void)
13958 {
13959 return 0x801000040014ll;
13960 }
13961
13962 #define typedef_ODY_GITS0_PARTIDR ody_gits0_partidr_t
13963 #define bustype_ODY_GITS0_PARTIDR CSR_TYPE_NCB32b
13964 #define basename_ODY_GITS0_PARTIDR "GITS0_PARTIDR"
13965 #define device_bar_ODY_GITS0_PARTIDR 0x0 /* PF_BAR0 */
13966 #define busnum_ODY_GITS0_PARTIDR 0
13967 #define arguments_ODY_GITS0_PARTIDR -1, -1, -1, -1
13968
13969 /**
13970 * Register (NCB32b) gits0_pidr0
13971 *
13972 * GITS0 Pidr0 Register
13973 * The GITS0_PIDR0 characteristics are:
13974 *
13975 * * Purpose
13976 * This register returns byte[0] of the peripheral ID of the Interrupt Translation Service page.
13977 *
13978 * * Usage constraints
13979 * There are no usage constraints.
13980 */
13981 union ody_gits0_pidr0 {
13982 uint32_t u;
13983 struct ody_gits0_pidr0_s {
13984 uint32_t part_0 : 8;
13985 uint32_t reserved_8_31 : 24;
13986 } s;
13987 /* struct ody_gits0_pidr0_s cn; */
13988 };
13989 typedef union ody_gits0_pidr0 ody_gits0_pidr0_t;
13990
13991 #define ODY_GITS0_PIDR0 ODY_GITS0_PIDR0_FUNC()
13992 static inline uint64_t ODY_GITS0_PIDR0_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_PIDR0_FUNC(void)13993 static inline uint64_t ODY_GITS0_PIDR0_FUNC(void)
13994 {
13995 return 0x80100004ffe0ll;
13996 }
13997
13998 #define typedef_ODY_GITS0_PIDR0 ody_gits0_pidr0_t
13999 #define bustype_ODY_GITS0_PIDR0 CSR_TYPE_NCB32b
14000 #define basename_ODY_GITS0_PIDR0 "GITS0_PIDR0"
14001 #define device_bar_ODY_GITS0_PIDR0 0x0 /* PF_BAR0 */
14002 #define busnum_ODY_GITS0_PIDR0 0
14003 #define arguments_ODY_GITS0_PIDR0 -1, -1, -1, -1
14004
14005 /**
14006 * Register (NCB32b) gits0_pidr1
14007 *
14008 * GITS0 Pidr1 Register
14009 * The GITS0_PIDR1 characteristics are:
14010 *
14011 * * Purpose
14012 * This register returns byte[1] of the peripheral ID of the Interrupt Translation Service page.
14013 *
14014 * * Usage constraints
14015 * There are no usage constraints.
14016 */
14017 union ody_gits0_pidr1 {
14018 uint32_t u;
14019 struct ody_gits0_pidr1_s {
14020 uint32_t part_1 : 4;
14021 uint32_t des_0 : 4;
14022 uint32_t reserved_8_31 : 24;
14023 } s;
14024 /* struct ody_gits0_pidr1_s cn; */
14025 };
14026 typedef union ody_gits0_pidr1 ody_gits0_pidr1_t;
14027
14028 #define ODY_GITS0_PIDR1 ODY_GITS0_PIDR1_FUNC()
14029 static inline uint64_t ODY_GITS0_PIDR1_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_PIDR1_FUNC(void)14030 static inline uint64_t ODY_GITS0_PIDR1_FUNC(void)
14031 {
14032 return 0x80100004ffe4ll;
14033 }
14034
14035 #define typedef_ODY_GITS0_PIDR1 ody_gits0_pidr1_t
14036 #define bustype_ODY_GITS0_PIDR1 CSR_TYPE_NCB32b
14037 #define basename_ODY_GITS0_PIDR1 "GITS0_PIDR1"
14038 #define device_bar_ODY_GITS0_PIDR1 0x0 /* PF_BAR0 */
14039 #define busnum_ODY_GITS0_PIDR1 0
14040 #define arguments_ODY_GITS0_PIDR1 -1, -1, -1, -1
14041
14042 /**
14043 * Register (NCB32b) gits0_pidr2
14044 *
14045 * GITS0 Pidr2 Register
14046 * The GITS0_PIDR2 characteristics are:
14047 *
14048 * * Purpose
14049 * This register returns byte[2] of the peripheral ID of the Interrupt Translation Service page.
14050 *
14051 * * Usage constraints
14052 * There are no usage constraints.
14053 */
14054 union ody_gits0_pidr2 {
14055 uint32_t u;
14056 struct ody_gits0_pidr2_s {
14057 uint32_t des_1 : 3;
14058 uint32_t jedec : 1;
14059 uint32_t revision : 4;
14060 uint32_t reserved_8_31 : 24;
14061 } s;
14062 /* struct ody_gits0_pidr2_s cn; */
14063 };
14064 typedef union ody_gits0_pidr2 ody_gits0_pidr2_t;
14065
14066 #define ODY_GITS0_PIDR2 ODY_GITS0_PIDR2_FUNC()
14067 static inline uint64_t ODY_GITS0_PIDR2_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_PIDR2_FUNC(void)14068 static inline uint64_t ODY_GITS0_PIDR2_FUNC(void)
14069 {
14070 return 0x80100004ffe8ll;
14071 }
14072
14073 #define typedef_ODY_GITS0_PIDR2 ody_gits0_pidr2_t
14074 #define bustype_ODY_GITS0_PIDR2 CSR_TYPE_NCB32b
14075 #define basename_ODY_GITS0_PIDR2 "GITS0_PIDR2"
14076 #define device_bar_ODY_GITS0_PIDR2 0x0 /* PF_BAR0 */
14077 #define busnum_ODY_GITS0_PIDR2 0
14078 #define arguments_ODY_GITS0_PIDR2 -1, -1, -1, -1
14079
14080 /**
14081 * Register (NCB32b) gits0_pidr3
14082 *
14083 * GITS0 Pidr3 Register
14084 * The GITS0_PIDR3 characteristics are:
14085 *
14086 * * Purpose
14087 * This register returns byte[3] of the peripheral ID of the Interrupt Translation Service page.
14088 *
14089 * * Usage constraints
14090 * There are no usage constraints.
14091 */
14092 union ody_gits0_pidr3 {
14093 uint32_t u;
14094 struct ody_gits0_pidr3_s {
14095 uint32_t cmod : 3;
14096 uint32_t reserved_3 : 1;
14097 uint32_t revand : 4;
14098 uint32_t reserved_8_31 : 24;
14099 } s;
14100 /* struct ody_gits0_pidr3_s cn; */
14101 };
14102 typedef union ody_gits0_pidr3 ody_gits0_pidr3_t;
14103
14104 #define ODY_GITS0_PIDR3 ODY_GITS0_PIDR3_FUNC()
14105 static inline uint64_t ODY_GITS0_PIDR3_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_PIDR3_FUNC(void)14106 static inline uint64_t ODY_GITS0_PIDR3_FUNC(void)
14107 {
14108 return 0x80100004ffecll;
14109 }
14110
14111 #define typedef_ODY_GITS0_PIDR3 ody_gits0_pidr3_t
14112 #define bustype_ODY_GITS0_PIDR3 CSR_TYPE_NCB32b
14113 #define basename_ODY_GITS0_PIDR3 "GITS0_PIDR3"
14114 #define device_bar_ODY_GITS0_PIDR3 0x0 /* PF_BAR0 */
14115 #define busnum_ODY_GITS0_PIDR3 0
14116 #define arguments_ODY_GITS0_PIDR3 -1, -1, -1, -1
14117
14118 /**
14119 * Register (NCB32b) gits0_pidr4
14120 *
14121 * GITS0 Pidr4 Register
14122 * The GITS0_PIDR4 characteristics are:
14123 *
14124 * * Purpose
14125 * This register returns byte[4] of the peripheral ID of the Interrupt Translation Service page.
14126 *
14127 * * Usage constraints
14128 * There are no usage constraints.
14129 */
14130 union ody_gits0_pidr4 {
14131 uint32_t u;
14132 struct ody_gits0_pidr4_s {
14133 uint32_t des_2 : 4;
14134 uint32_t size : 4;
14135 uint32_t reserved_8_31 : 24;
14136 } s;
14137 /* struct ody_gits0_pidr4_s cn; */
14138 };
14139 typedef union ody_gits0_pidr4 ody_gits0_pidr4_t;
14140
14141 #define ODY_GITS0_PIDR4 ODY_GITS0_PIDR4_FUNC()
14142 static inline uint64_t ODY_GITS0_PIDR4_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_PIDR4_FUNC(void)14143 static inline uint64_t ODY_GITS0_PIDR4_FUNC(void)
14144 {
14145 return 0x80100004ffd0ll;
14146 }
14147
14148 #define typedef_ODY_GITS0_PIDR4 ody_gits0_pidr4_t
14149 #define bustype_ODY_GITS0_PIDR4 CSR_TYPE_NCB32b
14150 #define basename_ODY_GITS0_PIDR4 "GITS0_PIDR4"
14151 #define device_bar_ODY_GITS0_PIDR4 0x0 /* PF_BAR0 */
14152 #define busnum_ODY_GITS0_PIDR4 0
14153 #define arguments_ODY_GITS0_PIDR4 -1, -1, -1, -1
14154
14155 /**
14156 * Register (NCB32b) gits0_pidr5
14157 *
14158 * GITS0 Pidr5 Register
14159 * The GITS0_PIDR5 characteristics are:
14160 *
14161 * * Purpose
14162 * This register returns byte[5] of the peripheral ID of the Interrupt Translation Service page.
14163 *
14164 * * Usage constraints
14165 * There are no usage constraints.
14166 */
14167 union ody_gits0_pidr5 {
14168 uint32_t u;
14169 struct ody_gits0_pidr5_s {
14170 uint32_t reserved_0_31 : 32;
14171 } s;
14172 struct ody_gits0_pidr5_cn {
14173 uint32_t reserved_0_7 : 8;
14174 uint32_t reserved_8_31 : 24;
14175 } cn;
14176 };
14177 typedef union ody_gits0_pidr5 ody_gits0_pidr5_t;
14178
14179 #define ODY_GITS0_PIDR5 ODY_GITS0_PIDR5_FUNC()
14180 static inline uint64_t ODY_GITS0_PIDR5_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_PIDR5_FUNC(void)14181 static inline uint64_t ODY_GITS0_PIDR5_FUNC(void)
14182 {
14183 return 0x80100004ffd4ll;
14184 }
14185
14186 #define typedef_ODY_GITS0_PIDR5 ody_gits0_pidr5_t
14187 #define bustype_ODY_GITS0_PIDR5 CSR_TYPE_NCB32b
14188 #define basename_ODY_GITS0_PIDR5 "GITS0_PIDR5"
14189 #define device_bar_ODY_GITS0_PIDR5 0x0 /* PF_BAR0 */
14190 #define busnum_ODY_GITS0_PIDR5 0
14191 #define arguments_ODY_GITS0_PIDR5 -1, -1, -1, -1
14192
14193 /**
14194 * Register (NCB32b) gits0_pidr6
14195 *
14196 * GITS0 Pidr6 Register
14197 * The GITS0_PIDR6 characteristics are:
14198 *
14199 * * Purpose
14200 * This register returns byte[6] of the peripheral ID of the Interrupt Translation Service page.
14201 *
14202 * * Usage constraints
14203 * There are no usage constraints.
14204 */
14205 union ody_gits0_pidr6 {
14206 uint32_t u;
14207 struct ody_gits0_pidr6_s {
14208 uint32_t reserved_0_31 : 32;
14209 } s;
14210 struct ody_gits0_pidr6_cn {
14211 uint32_t reserved_0_7 : 8;
14212 uint32_t reserved_8_31 : 24;
14213 } cn;
14214 };
14215 typedef union ody_gits0_pidr6 ody_gits0_pidr6_t;
14216
14217 #define ODY_GITS0_PIDR6 ODY_GITS0_PIDR6_FUNC()
14218 static inline uint64_t ODY_GITS0_PIDR6_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_PIDR6_FUNC(void)14219 static inline uint64_t ODY_GITS0_PIDR6_FUNC(void)
14220 {
14221 return 0x80100004ffd8ll;
14222 }
14223
14224 #define typedef_ODY_GITS0_PIDR6 ody_gits0_pidr6_t
14225 #define bustype_ODY_GITS0_PIDR6 CSR_TYPE_NCB32b
14226 #define basename_ODY_GITS0_PIDR6 "GITS0_PIDR6"
14227 #define device_bar_ODY_GITS0_PIDR6 0x0 /* PF_BAR0 */
14228 #define busnum_ODY_GITS0_PIDR6 0
14229 #define arguments_ODY_GITS0_PIDR6 -1, -1, -1, -1
14230
14231 /**
14232 * Register (NCB32b) gits0_pidr7
14233 *
14234 * GITS0 Pidr7 Register
14235 * The GITS0_PIDR7 characteristics are:
14236 *
14237 * * Purpose
14238 * This register returns byte[7] of the peripheral ID of the Interrupt Translation Service page.
14239 *
14240 * * Usage constraints
14241 * There are no usage constraints.
14242 */
14243 union ody_gits0_pidr7 {
14244 uint32_t u;
14245 struct ody_gits0_pidr7_s {
14246 uint32_t reserved_0_31 : 32;
14247 } s;
14248 struct ody_gits0_pidr7_cn {
14249 uint32_t reserved_0_7 : 8;
14250 uint32_t reserved_8_31 : 24;
14251 } cn;
14252 };
14253 typedef union ody_gits0_pidr7 ody_gits0_pidr7_t;
14254
14255 #define ODY_GITS0_PIDR7 ODY_GITS0_PIDR7_FUNC()
14256 static inline uint64_t ODY_GITS0_PIDR7_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_PIDR7_FUNC(void)14257 static inline uint64_t ODY_GITS0_PIDR7_FUNC(void)
14258 {
14259 return 0x80100004ffdcll;
14260 }
14261
14262 #define typedef_ODY_GITS0_PIDR7 ody_gits0_pidr7_t
14263 #define bustype_ODY_GITS0_PIDR7 CSR_TYPE_NCB32b
14264 #define basename_ODY_GITS0_PIDR7 "GITS0_PIDR7"
14265 #define device_bar_ODY_GITS0_PIDR7 0x0 /* PF_BAR0 */
14266 #define busnum_ODY_GITS0_PIDR7 0
14267 #define arguments_ODY_GITS0_PIDR7 -1, -1, -1, -1
14268
14269 /**
14270 * Register (NCB) gits0_sgir
14271 *
14272 * GITS0 Sgir Register
14273 * The GITS0_SGIR characteristics are:
14274 *
14275 * * Purpose
14276 * Written by software to signal a virtual SGI for routing by the ITS.
14277 *
14278 * * Usage constraints
14279 * There are no usage constraints.
14280 */
14281 union ody_gits0_sgir {
14282 uint64_t u;
14283 struct ody_gits0_sgir_s {
14284 uint64_t vintid : 4;
14285 uint64_t reserved_4_31 : 28;
14286 uint64_t vpeid : 11;
14287 uint64_t reserved_43_63 : 21;
14288 } s;
14289 /* struct ody_gits0_sgir_s cn; */
14290 };
14291 typedef union ody_gits0_sgir ody_gits0_sgir_t;
14292
14293 #define ODY_GITS0_SGIR ODY_GITS0_SGIR_FUNC()
14294 static inline uint64_t ODY_GITS0_SGIR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_SGIR_FUNC(void)14295 static inline uint64_t ODY_GITS0_SGIR_FUNC(void)
14296 {
14297 return 0x801000060020ll;
14298 }
14299
14300 #define typedef_ODY_GITS0_SGIR ody_gits0_sgir_t
14301 #define bustype_ODY_GITS0_SGIR CSR_TYPE_NCB
14302 #define basename_ODY_GITS0_SGIR "GITS0_SGIR"
14303 #define device_bar_ODY_GITS0_SGIR 0x0 /* PF_BAR0 */
14304 #define busnum_ODY_GITS0_SGIR 0
14305 #define arguments_ODY_GITS0_SGIR -1, -1, -1, -1
14306
14307 /**
14308 * Register (NCB32b) gits0_translater
14309 *
14310 * GITS0 Translater Register
14311 * The GITS0_TRANSLATER characteristics are:
14312 *
14313 * * Purpose
14314 * Written by a requesting Device to signal an interrupt for translation by the ITS
14315 *
14316 * * Usage constraints
14317 * This register should not be accessed directly by Software.
14318 */
14319 union ody_gits0_translater {
14320 uint32_t u;
14321 struct ody_gits0_translater_s {
14322 uint32_t interruptid : 32;
14323 } s;
14324 /* struct ody_gits0_translater_s cn; */
14325 };
14326 typedef union ody_gits0_translater ody_gits0_translater_t;
14327
14328 #define ODY_GITS0_TRANSLATER ODY_GITS0_TRANSLATER_FUNC()
14329 static inline uint64_t ODY_GITS0_TRANSLATER_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_TRANSLATER_FUNC(void)14330 static inline uint64_t ODY_GITS0_TRANSLATER_FUNC(void)
14331 {
14332 return 0x801000050040ll;
14333 }
14334
14335 #define typedef_ODY_GITS0_TRANSLATER ody_gits0_translater_t
14336 #define bustype_ODY_GITS0_TRANSLATER CSR_TYPE_NCB32b
14337 #define basename_ODY_GITS0_TRANSLATER "GITS0_TRANSLATER"
14338 #define device_bar_ODY_GITS0_TRANSLATER 0x0 /* PF_BAR0 */
14339 #define busnum_ODY_GITS0_TRANSLATER 0
14340 #define arguments_ODY_GITS0_TRANSLATER -1, -1, -1, -1
14341
14342 /**
14343 * Register (NCB) gits0_typer
14344 *
14345 * GITS0 Typer Register
14346 * The GITS0_TYPER characteristics are:
14347 *
14348 * * Purpose
14349 * Specifies the features that an ITS supports.
14350 *
14351 * * Usage constraints
14352 * There are no usage constraints.
14353 */
14354 union ody_gits0_typer {
14355 uint64_t u;
14356 struct ody_gits0_typer_s {
14357 uint64_t physical : 1;
14358 uint64_t virtual_f : 1;
14359 uint64_t cct : 1;
14360 uint64_t reserved_3 : 1;
14361 uint64_t ittentrysize : 4;
14362 uint64_t idbits : 5;
14363 uint64_t devbits : 5;
14364 uint64_t seis : 1;
14365 uint64_t pta : 1;
14366 uint64_t reserved_20_23 : 4;
14367 uint64_t hcc : 8;
14368 uint64_t cidbits : 4;
14369 uint64_t cil : 1;
14370 uint64_t vmovp : 1;
14371 uint64_t mpam : 1;
14372 uint64_t vsgi : 1;
14373 uint64_t vmapp : 1;
14374 uint64_t svpet : 2;
14375 uint64_t nid : 1;
14376 uint64_t reserved_44_45 : 2;
14377 uint64_t inv : 1;
14378 uint64_t reserved_47_63 : 17;
14379 } s;
14380 /* struct ody_gits0_typer_s cn; */
14381 };
14382 typedef union ody_gits0_typer ody_gits0_typer_t;
14383
14384 #define ODY_GITS0_TYPER ODY_GITS0_TYPER_FUNC()
14385 static inline uint64_t ODY_GITS0_TYPER_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_TYPER_FUNC(void)14386 static inline uint64_t ODY_GITS0_TYPER_FUNC(void)
14387 {
14388 return 0x801000040008ll;
14389 }
14390
14391 #define typedef_ODY_GITS0_TYPER ody_gits0_typer_t
14392 #define bustype_ODY_GITS0_TYPER CSR_TYPE_NCB
14393 #define basename_ODY_GITS0_TYPER "GITS0_TYPER"
14394 #define device_bar_ODY_GITS0_TYPER 0x0 /* PF_BAR0 */
14395 #define busnum_ODY_GITS0_TYPER 0
14396 #define arguments_ODY_GITS0_TYPER -1, -1, -1, -1
14397
14398 /**
14399 * Register (NCB) gits0_v_errinsr
14400 *
14401 * GITS0 V Errinsr Register
14402 * The GITS0_V_ERRINSR characteristics are:
14403 *
14404 * * Purpose
14405 * This register can inject errors into the ITS Event cache RAM if ECC is enabaled.
14406 * You can use this register to test your error recovery software.
14407 * * Usage constraints
14408 * If GICD(A)_SAC.GICTNS == 0, then only Secure software can access the contents of this register.
14409 *
14410 * \> *Note*
14411 * \> The bit assignments within this register depend on whether a write access or read access occurs.
14412 */
14413 union ody_gits0_v_errinsr {
14414 uint64_t u;
14415 struct ody_gits0_v_errinsr_s {
14416 uint64_t errins1loc : 9;
14417 uint64_t reserved_9_14 : 6;
14418 uint64_t errins1valid : 1;
14419 uint64_t errins2loc : 9;
14420 uint64_t reserved_25_30 : 6;
14421 uint64_t errins2valid : 1;
14422 uint64_t addr : 16;
14423 uint64_t reserved_48_59 : 12;
14424 uint64_t disablewritecheck : 1;
14425 uint64_t reserved_61_62 : 2;
14426 uint64_t valid : 1;
14427 } s;
14428 /* struct ody_gits0_v_errinsr_s cn; */
14429 };
14430 typedef union ody_gits0_v_errinsr ody_gits0_v_errinsr_t;
14431
14432 #define ODY_GITS0_V_ERRINSR ODY_GITS0_V_ERRINSR_FUNC()
14433 static inline uint64_t ODY_GITS0_V_ERRINSR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GITS0_V_ERRINSR_FUNC(void)14434 static inline uint64_t ODY_GITS0_V_ERRINSR_FUNC(void)
14435 {
14436 return 0x80100004c008ll;
14437 }
14438
14439 #define typedef_ODY_GITS0_V_ERRINSR ody_gits0_v_errinsr_t
14440 #define bustype_ODY_GITS0_V_ERRINSR CSR_TYPE_NCB
14441 #define basename_ODY_GITS0_V_ERRINSR "GITS0_V_ERRINSR"
14442 #define device_bar_ODY_GITS0_V_ERRINSR 0x0 /* PF_BAR0 */
14443 #define busnum_ODY_GITS0_V_ERRINSR 0
14444 #define arguments_ODY_GITS0_V_ERRINSR -1, -1, -1, -1
14445
14446 #endif /* __ODY_CSRS_GIC_H__ */
14447