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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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)); 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