Changeset 101084 in vbox
- Timestamp:
- Sep 11, 2023 4:51:12 PM (20 months ago)
- svn:sync-xref-src-repo-rev:
- 159047
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/cpum-armv8.h
r100940 r101084 183 183 uint8_t cMaxLinearAddrWidth; 184 184 185 /** @name pre-2020 Architecture Extensions. 186 * @{ */ 187 /** Supports Advanced SIMD Extension (FEAT_AdvSIMD). */ 188 uint32_t fAdvSimd : 1; 189 /** Supports Advanced SIMD AES instructions (FEAT_AES). */ 190 uint32_t fAes : 1; 191 /** Supports Advanced SIMD PMULL instructions (FEAT_PMULL). */ 192 uint32_t fPmull : 1; 193 /** Supports CP15Disable2 (FEAT_CP15DISABLE2). */ 194 uint32_t fCp15Disable2 : 1; 195 /** Supports Cache Speculation Variant 2 (FEAT_CSV2). */ 196 uint32_t fCsv2 : 1; 197 /** Supports Cache Speculation Variant 2, version 1.1 (FEAT_CSV2_1p1). */ 198 uint32_t fCsv21p1 : 1; 199 /** Supports Cache Speculation Variant 2, version 1.2 (FEAT_CSV2_1p2). */ 200 uint32_t fCsv21p2 : 1; 201 /** Supports Cache Speculation Variant 3 (FEAT_CSV3). */ 202 uint32_t fCsv3 : 1; 203 /** Supports Data Gahtering Hint (FEAT_DGH). */ 204 uint32_t fDgh : 1; 205 /** Supports Double Lock (FEAT_DoubleLock). */ 206 uint32_t fDoubleLock : 1; 207 /** Supports Enhanced Translation Synchronization (FEAT_ETS2). */ 208 uint32_t fEts2 : 1; 209 /** Supports Floating Point Extensions (FEAT_FP). */ 210 uint32_t fFp : 1; 211 /** Supports IVIPT Extensions (FEAT_IVIPT). */ 212 uint32_t fIvipt : 1; 213 /** Supports PC Sample-based Profiling Extension (FEAT_PCSRv8). */ 214 uint32_t fPcsrV8 : 1; 215 /** Supports Speculation Restrictions instructions (FEAT_SPECRES). */ 216 uint32_t fSpecres : 1; 217 /** Supports Reliability, Availability, and Serviceability (RAS) Extension (FEAT_RAS). */ 218 uint32_t fRas : 1; 219 /** Supports Speculation Barrier (FEAT_SB). */ 220 uint32_t fSb : 1; 221 /** Supports Advanced SIMD SHA1 instructions (FEAT_SHA1). */ 222 uint32_t fSha1 : 1; 223 /** Supports Advanced SIMD SHA256 instructions (FEAT_SHA256). */ 224 uint32_t fSha256 : 1; 225 /** Supports Speculation Store Bypass Safe (FEAT_SSBS). */ 226 uint32_t fSsbs : 1; 227 /** Supports MRS and MSR instructions for Speculation Store Bypass Safe version 2 (FEAT_SSBS2). */ 228 uint32_t fSsbs2 : 1; 229 /** Supports CRC32 instructions (FEAT_CRC32). */ 230 uint32_t fCrc32 : 1; 231 /** Supports Intermediate chacing of trnslation table walks (FEAT_nTLBPA). */ 232 uint32_t fNTlbpa : 1; 233 /** Supports debug with VHE (FEAT_Debugv8p1). */ 234 uint32_t fDebugV8p1 : 1; 235 /** Supports Hierarchical permission disables in translation tables (FEAT_HPDS). */ 236 uint32_t fHpds : 1; 237 /** Supports Limited ordering regions (FEAT_LOR). */ 238 uint32_t fLor : 1; 239 /** Supports Lare Systems Extensons (FEAT_LSE). */ 240 uint32_t fLse : 1; 241 /** Supports Privileged access never (FEAT_PAN). */ 242 uint32_t fPan : 1; 243 /** Supports Armv8.1 PMU extensions (FEAT_PMUv3p1). */ 244 uint32_t fPmuV3p1 : 1; 245 /** Supports Advanced SIMD rouding double multiply accumulate instructions (FEAT_RDM). */ 246 uint32_t fRdm : 1; 247 /** Supports hardware management of the Access flag and dirty state (FEAT_HAFDBS). */ 248 uint32_t fHafdbs : 1; 249 /** Supports Virtualization Host Extensions (FEAT_VHE). */ 250 uint32_t fVhe : 1; 251 /** Supports 16-bit VMID (FEAT_VMID16). */ 252 uint32_t fVmid16 : 1; 253 /** Supports AArch32 BFloat16 instructions (FEAT_AA32BF16). */ 254 uint32_t fAa32Bf16 : 1; 255 /** Supports AArch32 Hierarchical permission disables (FEAT_AA32HPD). */ 256 uint32_t fAa32Hpd : 1; 257 /** Supports AArch32 Int8 matrix multiplication instructions (FEAT_AA32I8MM). */ 258 uint32_t fAa32I8mm : 1; 259 /** Supports AT S1E1R and AT S1E1W instruction variants affected by PSTATE.PAN (FEAT_PAN2). */ 260 uint32_t fPan2 : 1; 261 /** Supports AArch64 BFloat16 instructions (FEAT_BF16). */ 262 uint32_t fBf16 : 1; 263 /** Supports DC CVADP instruction (FEAT_DPB2). */ 264 uint32_t fDpb2 : 1; 265 /** Supports DC VAP instruction (FEAT_DPB). */ 266 uint32_t fDpb : 1; 267 /** Supports Debug v8.2 (FEAT_Debugv8p2). */ 268 uint32_t fDebugV8p2 : 1; 269 /** Supports Advanced SIMD dot product instructions (FEAT_DotProd). */ 270 uint32_t fDotProd : 1; 271 /** Supports Enhanced Virtualization Traps (FEAT_EVT). */ 272 uint32_t fEvt : 1; 273 /** Supports Single precision Matrix Multiplication (FEAT_F32MM). */ 274 uint32_t fF32mm : 1; 275 /** Supports Double precision Matrix Multiplication (FEAT_F64MM). */ 276 uint32_t fF64mm : 1; 277 /** Supports Floating-point half precision multiplication instructions (FEAT_FHM). */ 278 uint32_t fFhm : 1; 279 /** Supports Half-precision floating point data processing (FEAT_FP16). */ 280 uint32_t fFp16 : 1; 281 /** Supports AArch64 Int8 matrix multiplication instructions (FEAT_I8MM). */ 282 uint32_t fI8mm : 1; 283 /** Supports Implicit Error Synchronization event (FEAT_IESB). */ 284 uint32_t fIesb : 1; 285 /** Supports Large PA and IPA support (FEAT_LPA). */ 286 uint32_t fLpa : 1; 287 /** Supports AArch32 Load/Store Multiple instructions atomicity and ordering controls (FEAT_LSMAOC). */ 288 uint32_t fLsmaoc : 1; 289 /** Supports Large VA support (FEAT_LVA). */ 290 uint32_t fLva : 1; 291 /** Supports Memory Partitioning and Monitoring Extension (FEAT_MPAM). */ 292 uint32_t fMpam : 1; 293 /** Supports PC Sample-based Profiling Extension, version 8.2 (FEAT_PCSRv8p2). */ 294 uint32_t fPcsrV8p2 : 1; 295 /** Supports Advanced SIMD SHA3 instructions (FEAT_SHA3). */ 296 uint32_t fSha3 : 1; 297 /** Supports Advanced SIMD SHA512 instructions (FEAT_SHA512). */ 298 uint32_t fSha512 : 1; 299 /** Supports Advanced SIMD SM3 instructions (FEAT_SM3). */ 300 uint32_t fSm3 : 1; 301 /** Supports Advanced SIMD SM4 instructions (FEAT_SM4). */ 302 uint32_t fSm4 : 1; 303 /** Supports Statistical Profiling Extension (FEAT_SPE). */ 304 uint32_t fSpe : 1; 305 /** Supports Scalable Vector Extension (FEAT_SVE). */ 306 uint32_t fSve : 1; 307 /** Supports Translation Table Common not private translations (FEAT_TTCNP). */ 308 uint32_t fTtcnp : 1; 309 /** Supports Hierarchical permission disables, version 2 (FEAT_HPDS2). */ 310 uint32_t fHpds2 : 1; 311 /** Supports Translation table stage 2 Unprivileged Execute-never (FEAT_XNX). */ 312 uint32_t fXnx : 1; 313 /** Supports Unprivileged Access Override control (FEAT_UAO). */ 314 uint32_t fUao : 1; 315 /** Supports VMID-aware PIPT instruction cache (FEAT_VPIPT). */ 316 uint32_t fVpipt : 1; 317 /** Supports Extended cache index (FEAT_CCIDX). */ 318 uint32_t fCcidx : 1; 319 /** Supports Floating-point complex number instructions (FEAT_FCMA). */ 320 uint32_t fFcma : 1; 321 /** Supports Debug over Powerdown (FEAT_DoPD). */ 322 uint32_t fDopd : 1; 323 /** Supports Enhanced pointer authentication (FEAT_EPAC). */ 324 uint32_t fEpac : 1; 325 /** Supports Faulting on AUT* instructions (FEAT_FPAC). */ 326 uint32_t fFpac : 1; 327 /** Supports Faulting on combined pointer euthentication instructions (FEAT_FPACCOMBINE). */ 328 uint32_t fFpacCombine : 1; 329 /** Supports JavaScript conversion instructions (FEAT_JSCVT). */ 330 uint32_t fJscvt : 1; 331 /** Supports Load-Acquire RCpc instructions (FEAT_LRCPC). */ 332 uint32_t fLrcpc : 1; 333 /** Supports Nexted Virtualization (FEAT_NV). */ 334 uint32_t fNv : 1; 335 /** Supports QARMA5 pointer authentication algorithm (FEAT_PACQARMA5). */ 336 uint32_t fPacQarma5 : 1; 337 /** Supports implementation defined pointer authentication algorithm (FEAT_PACIMP). */ 338 uint32_t fPacImp : 1; 339 /** Supports Pointer authentication (FEAT_PAuth). */ 340 uint32_t fPAuth : 1; 341 /** Supports Enhancements to pointer authentication (FEAT_PAuth2). */ 342 uint32_t fPAuth2 : 1; 343 /** Supports Statistical Profiling Extensions version 1.1 (FEAT_SPEv1p1). */ 344 uint32_t fSpeV1p1 : 1; 345 /** Supports Activity Monitor Extension, version 1 (FEAT_AMUv1). */ 346 uint32_t fAmuV1 : 1; 347 /** Supports Generic Counter Scaling (FEAT_CNTSC). */ 348 uint32_t fCntsc : 1; 349 /** Supports Debug v8.4 (FEAT_Debugv8p4). */ 350 uint32_t fDebugV8p4 : 1; 351 /** Supports Double Fault Extension (FEAT_DoubleFault). */ 352 uint32_t fDoubleFault : 1; 353 /** Supports Data Independent Timing instructions (FEAT_DIT). */ 354 uint32_t fDit : 1; 355 /** Supports Condition flag manipulation isntructions (FEAT_FlagM). */ 356 uint32_t fFlagM : 1; 357 /** Supports ID space trap handling (FEAT_IDST). */ 358 uint32_t fIdst : 1; 359 /** Supports Load-Acquire RCpc instructions version 2 (FEAT_LRCPC2). */ 360 uint32_t fLrcpc2 : 1; 361 /** Supports Large Sytem Extensions version 2 (FEAT_LSE2). */ 362 uint32_t fLse2 : 1; 363 /** Supports Enhanced nested virtualization support (FEAT_NV2). */ 364 uint32_t fNv2 : 1; 365 /** Supports Armv8.4 PMU Extensions (FEAT_PMUv3p4). */ 366 uint32_t fPmuV3p4 : 1; 367 /** Supports RAS Extension v1.1 (FEAT_RASv1p1). */ 368 uint32_t fRasV1p1 : 1; 369 /** Supports RAS Extension v1.1 System Architecture (FEAT_RASSAv1p1). */ 370 uint32_t fRassaV1p1 : 1; 371 /** Supports Stage 2 forced Write-Back (FEAT_S2FWB). */ 372 uint32_t fS2Fwb : 1; 373 /** Supports Secure El2 (FEAT_SEL2). */ 374 uint32_t fSecEl2 : 1; 375 /** Supports TLB invalidate instructions on Outer Shareable domain (FEAT_TLBIOS). */ 376 uint32_t fTlbios : 1; 377 /** Supports TLB invalidate range instructions (FEAT_TLBIRANGE). */ 378 uint32_t fTlbirange : 1; 379 /** Supports Self-hosted Trace Extensions (FEAT_TRF). */ 380 uint32_t fTrf : 1; 381 /** Supports Translation Table Level (FEAT_TTL). */ 382 uint32_t fTtl : 1; 383 /** Supports Translation table break-before-make levels (FEAT_BBM). */ 384 uint32_t fBbm : 1; 385 /** Supports Small translation tables (FEAT_TTST). */ 386 uint32_t fTtst : 1; 387 /** Supports Branch Target Identification (FEAT_BTI). */ 388 uint32_t fBti : 1; 389 /** Supports Enhancements to flag manipulation instructions (FEAT_FlagM2). */ 390 uint32_t fFlagM2 : 1; 391 /** Supports Context synchronization and exception handling (FEAT_ExS). */ 392 uint32_t fExs : 1; 393 /** Supports Preenting EL0 access to halves of address maps (FEAT_E0PD). */ 394 uint32_t fE0Pd : 1; 395 /** Supports Floating-point to integer instructions (FEAT_FRINTTS). */ 396 uint32_t fFrintts : 1; 397 /** Supports Guest translation granule size (FEAT_GTG). */ 398 uint32_t fGtg : 1; 399 /** Supports Instruction-only Memory Tagging Extension (FEAT_MTE). */ 400 uint32_t fMte : 1; 401 /** Supports memory Tagging Extension version 2 (FEAT_MTE2). */ 402 uint32_t fMte2 : 1; 403 /** Supports Armv8.5 PMU Extensions (FEAT_PMUv3p5). */ 404 uint32_t fPmuV3p5 : 1; 405 /** Supports Random number generator (FEAT_RNG). */ 406 uint32_t fRng : 1; 407 /** Supports AMU Extensions version 1.1 (FEAT_AMUv1p1). */ 408 uint32_t fAmuV1p1 : 1; 409 /** Supports Enhanced Counter Virtualization (FEAT_ECV). */ 410 uint32_t fEcv : 1; 411 /** Supports Fine Grain Traps (FEAT_FGT). */ 412 uint32_t fFgt : 1; 413 /** Supports Memory Partitioning and Monitoring version 0.1 (FEAT_MPAMv0p1). */ 414 uint32_t fMpamV0p1 : 1; 415 /** Supports Memory Partitioning and Monitoring version 1.1 (FEAT_MPAMv1p1). */ 416 uint32_t fMpamV1p1 : 1; 417 /** Supports Multi-threaded PMU Extensions (FEAT_MTPMU). */ 418 uint32_t fMtPmu : 1; 419 /** Supports Delayed Trapping of WFE (FEAT_TWED). */ 420 uint32_t fTwed : 1; 421 /** Supports Embbedded Trace Macrocell version 4 (FEAT_ETMv4). */ 422 uint32_t fEtmV4 : 1; 423 /** Supports Embbedded Trace Macrocell version 4.1 (FEAT_ETMv4p1). */ 424 uint32_t fEtmV4p1 : 1; 425 /** Supports Embbedded Trace Macrocell version 4.2 (FEAT_ETMv4p2). */ 426 uint32_t fEtmV4p2 : 1; 427 /** Supports Embbedded Trace Macrocell version 4.3 (FEAT_ETMv4p3). */ 428 uint32_t fEtmV4p3 : 1; 429 /** Supports Embbedded Trace Macrocell version 4.4 (FEAT_ETMv4p4). */ 430 uint32_t fEtmV4p4 : 1; 431 /** Supports Embbedded Trace Macrocell version 4.5 (FEAT_ETMv4p5). */ 432 uint32_t fEtmV4p5 : 1; 433 /** Supports Embbedded Trace Macrocell version 4.6 (FEAT_ETMv4p6). */ 434 uint32_t fEtmV4p6 : 1; 435 /** Supports Generic Interrupt Controller version 3 (FEAT_GICv3). */ 436 uint32_t fGicV3 : 1; 437 /** Supports Generic Interrupt Controller version 3.1 (FEAT_GICv3p1). */ 438 uint32_t fGicV3p1 : 1; 439 /** Supports Trapping Non-secure EL1 writes to ICV_DIR (FEAT_GICv3_TDIR). */ 440 uint32_t fGicV3Tdir : 1; 441 /** Supports Generic Interrupt Controller version 4 (FEAT_GICv4). */ 442 uint32_t fGicV4 : 1; 443 /** Supports Generic Interrupt Controller version 4.1 (FEAT_GICv4p1). */ 444 uint32_t fGicV4p1 : 1; 445 /** Supports PMU extension, version 3 (FEAT_PMUv3). */ 446 uint32_t fPmuv3 : 1; 447 /** Supports Embedded Trace Extension (FEAT_ETE). */ 448 uint32_t fEte : 1; 449 /** Supports Embedded Trace Extension, version 1.1 (FEAT_ETEv1p1). */ 450 uint32_t fEteV1p1 : 1; 451 /** Supports Embedded Trace Extension, version 1.2 (FEAT_ETEv1p2). */ 452 uint32_t fEteV1p2 : 1; 453 /** Supports Scalable Vector Extension version 2 (FEAT_SVE2). */ 454 uint32_t fSve2 : 1; 455 /** Supports Scalable Vector AES instructions (FEAT_SVE_AES). */ 456 uint32_t fSveAes : 1; 457 /** Supports Scalable Vector PMULL instructions (FEAT_SVE_PMULL128). */ 458 uint32_t fSvePmull128 : 1; 459 /** Supports Scalable Vector Bit Permutes instructions (FEAT_SVE_BitPerm). */ 460 uint32_t fSveBitPerm : 1; 461 /** Supports Scalable Vector SHA3 instructions (FEAT_SVE_SHA3). */ 462 uint32_t fSveSha3 : 1; 463 /** Supports Scalable Vector SM4 instructions (FEAT_SVE_SM4). */ 464 uint32_t fSveSm4 : 1; 465 /** Supports Transactional Memory Extension (FEAT_TME). */ 466 uint32_t fTme : 1; 467 /** Supports Trace Buffer Extension (FEAT_TRBE). */ 468 uint32_t fTrbe : 1; 469 /** Supports Scalable Matrix Extension (FEAT_SME). */ 470 uint32_t fSme : 1; 471 /** @} */ 472 473 /** @name 2020 Architecture Extensions. 474 * @{ */ 475 /** Supports Alternate floating-point behavior (FEAT_AFP). */ 476 uint32_t fAfp : 1; 477 /** Supports HCRX_EL2 register (FEAT_HCX). */ 478 uint32_t fHcx : 1; 479 /** Supports Larger phsical address for 4KiB and 16KiB translation granules (FEAT_LPA2). */ 480 uint32_t fLpa2 : 1; 481 /** Supports 64 byte loads and stores without return (FEAT_LS64). */ 482 uint32_t fLs64 : 1; 483 /** Supports 64 byte stores with return (FEAT_LS64_V). */ 484 uint32_t fLs64V : 1; 485 /** Supports 64 byte EL0 stores with return (FEAT_LS64_ACCDATA). */ 486 uint32_t fLs64Accdata : 1; 487 /** Supports MTE Asymmetric Fault Handling (FEAT_MTE3). */ 488 uint32_t fMte3 : 1; 489 /** Supports SCTLR_ELx.EPAN (FEAT_PAN3). */ 490 uint32_t fPan3 : 1; 491 /** Supports Armv8.7 PMU extensions (FEAT_PMUv3p7). */ 492 uint32_t fPmuV3p7 : 1; 493 /** Supports Increased precision of Reciprocal Extimate and Reciprocal Square Root Estimate (FEAT_RPRES). */ 494 uint32_t fRpres : 1; 495 /** Supports Realm Management Extension (FEAT_RME). */ 496 uint32_t fRme : 1; 497 /** Supports Full A64 instruction set support in Streaming SVE mode (FEAT_SME_FA64). */ 498 uint32_t fSmeFA64 : 1; 499 /** Supports Double-precision floating-point outer product instructions (FEAT_SME_F64F64). */ 500 uint32_t fSmeF64F64 : 1; 501 /** Supports 16-bit to 64-bit integer widening outer product instructions (FEAT_SME_I16I64). */ 502 uint32_t fSmeI16I64 : 1; 503 /** Supports Statistical Profiling Extensions version 1.2 (FEAT_SPEv1p2). */ 504 uint32_t fSpeV1p2 : 1; 505 /** Supports WFE and WFI instructions with timeout (FEAT_WFxT). */ 506 uint32_t fWfxt : 1; 507 /** Supports XS attribute (FEAT_XS). */ 508 uint32_t fXs : 1; 509 /** Supports branch Record Buffer Extension (FEAT_BRBE). */ 510 uint32_t fBrbe : 1; 511 /** @} */ 512 513 /** @name 2021 Architecture Extensions. 514 * @{ */ 515 /** Supports Control for cache maintenance permission (FEAT_CMOW). */ 516 uint32_t fCmow : 1; 517 /** Supports PAC algorithm enhancement (FEAT_CONSTPACFIELD). */ 518 uint32_t fConstPacField : 1; 519 /** Supports Debug v8.8 (FEAT_Debugv8p8). */ 520 uint32_t fDebugV8p8 : 1; 521 /** Supports Hinted conditional branches (FEAT_HBC). */ 522 uint32_t fHbc : 1; 523 /** Supports Setting of MDCR_EL2.HPMN to zero (FEAT_HPMN0). */ 524 uint32_t fHpmn0 : 1; 525 /** Supports Non-Maskable Interrupts (FEAT_NMI). */ 526 uint32_t fNmi : 1; 527 /** Supports GIC Non-Maskable Interrupts (FEAT_GICv3_NMI). */ 528 uint32_t fGicV3Nmi : 1; 529 /** Supports Standardization of memory operations (FEAT_MOPS). */ 530 uint32_t fMops : 1; 531 /** Supports Pointer authentication - QARMA3 algorithm (FEAT_PACQARMA3). */ 532 uint32_t fPacQarma3 : 1; 533 /** Supports Event counting threshold (FEAT_PMUv3_TH). */ 534 uint32_t fPmuV3Th : 1; 535 /** Supports Armv8.8 PMU extensions (FEAT_PMUv3p8). */ 536 uint32_t fPmuV3p8 : 1; 537 /** Supports 64-bit external interface to the Performance Monitors (FEAT_PMUv3_EXT64). */ 538 uint32_t fPmuV3Ext64 : 1; 539 /** Supports 32-bit external interface to the Performance Monitors (FEAT_PMUv3_EXT32). */ 540 uint32_t fPmuV3Ext32 : 1; 541 /** Supports External interface to the Performance Monitors (FEAT_PMUv3_EXT). */ 542 uint32_t fPmuV3Ext : 1; 543 /** Supports Trapping support for RNDR/RNDRRS (FEAT_RNG_TRAP). */ 544 uint32_t fRngTrap : 1; 545 /** Supports Statistical Profiling Extension version 1.3 (FEAT_SPEv1p3). */ 546 uint32_t fSpeV1p3 : 1; 547 /** Supports EL0 use of IMPLEMENTATION DEFINEd functionality (FEAT_TIDCP1). */ 548 uint32_t fTidcp1 : 1; 549 /** Supports Branch Record Buffer Extension version 1.1 (FEAT_BRBEv1p1). */ 550 uint32_t fBrbeV1p1 : 1; 551 /** @} */ 552 553 /** @name 2022 Architecture Extensions. 554 * @{ */ 555 /** Supports Address Breakpoint Linking Extenions (FEAT_ABLE). */ 556 uint32_t fAble : 1; 557 /** Supports Asynchronous Device error exceptions (FEAT_ADERR). */ 558 uint32_t fAderr : 1; 559 /** Supports Memory Attribute Index Enhancement (FEAT_AIE). */ 560 uint32_t fAie : 1; 561 /** Supports Asynchronous Normal error exception (FEAT_ANERR). */ 562 uint32_t fAnerr : 1; 563 /** Supports Breakpoint Mismatch and Range Extension (FEAT_BWE). */ 564 uint32_t fBwe : 1; 565 /** Supports Clear Branch History instruction (FEAT_CLRBHB). */ 566 uint32_t fClrBhb : 1; 567 /** Supports Check Feature Status (FEAT_CHK). */ 568 uint32_t fChk : 1; 569 /** Supports Common Short Sequence Compression instructions (FEAT_CSSC). */ 570 uint32_t fCssc : 1; 571 /** Supports Cache Speculation Variant 2 version 3 (FEAT_CSV2_3). */ 572 uint32_t fCsv2v3 : 1; 573 /** Supports 128-bit Translation Tables, 56 bit PA (FEAT_D128). */ 574 uint32_t fD128 : 1; 575 /** Supports Debug v8.9 (FEAT_Debugv8p9). */ 576 uint32_t fDebugV8p9 : 1; 577 /** Supports Enhancements to the Double Fault Extension (FEAT_DoubleFault2). */ 578 uint32_t fDoubleFault2 : 1; 579 /** Supports Exception based Event Profiling (FEAT_EBEP). */ 580 uint32_t fEbep : 1; 581 /** Supports Exploitative control using branch history information (FEAT_ECBHB). */ 582 uint32_t fEcBhb : 1; 583 /** Supports for EDHSR (FEAT_EDHSR). */ 584 uint32_t fEdhsr : 1; 585 /** Supports Embedded Trace Extension version 1.3 (FEAT_ETEv1p3). */ 586 uint32_t fEteV1p3 : 1; 587 /** Supports Fine-grained traps 2 (FEAT_FGT2). */ 588 uint32_t fFgt2 : 1; 589 /** Supports Guarded Control Stack Extension (FEAT_GCS). */ 590 uint32_t fGcs : 1; 591 /** Supports Hardware managed Access Flag for Table descriptors (FEAT_HAFT). */ 592 uint32_t fHaft : 1; 593 /** Supports Instrumentation Extension (FEAT_ITE). */ 594 uint32_t fIte : 1; 595 /** Supports Load-Acquire RCpc instructions version 3 (FEAT_LRCPC3). */ 596 uint32_t fLrcpc3 : 1; 597 /** Supports 128-bit atomics (FEAT_LSE128). */ 598 uint32_t fLse128 : 1; 599 /** Supports 56-bit VA (FEAT_LVA3). */ 600 uint32_t fLva3 : 1; 601 /** Supports Memory Encryption Contexts (FEAT_MEC). */ 602 uint32_t fMec : 1; 603 /** Supports Enhanced Memory Tagging Extension (FEAT_MTE4). */ 604 uint32_t fMte4 : 1; 605 /** Supports Canoncial Tag checking for untagged memory (FEAT_MTE_CANONCIAL_TAGS). */ 606 uint32_t fMteCanonicalTags : 1; 607 /** Supports FAR_ELx on a Tag Check Fault (FEAT_MTE_TAGGED_FAR). */ 608 uint32_t fMteTaggedFar : 1; 609 /** Supports Store only Tag checking (FEAT_MTE_STORE_ONLY). */ 610 uint32_t fMteStoreOnly : 1; 611 /** Supports Memory tagging with Address tagging disabled (FEAT_MTE_NO_ADDRESS_TAGS). */ 612 uint32_t fMteNoAddressTags : 1; 613 /** Supports Memory tagging asymmetric faults (FEAT_MTE_ASYM_FAULT). */ 614 uint32_t fMteAsymFault : 1; 615 /** Supports Memory Tagging asynchronous faulting (FEAT_MTE_ASYNC). */ 616 uint32_t fMteAsync : 1; 617 /** Supports Allocation tag access permission (FEAT_MTE_PERM_S1). */ 618 uint32_t fMtePermS1 : 1; 619 /** Supports Armv8.9 PC Sample-based Profiling Extension (FEAT_PCSRv8p9). */ 620 uint32_t fPcsrV8p9 : 1; 621 /** Supports Permission model enhancements (FEAT_S1PIE). */ 622 uint32_t fS1Pie : 1; 623 /** Supports Permission model enhancements (FEAT_S2PIE). */ 624 uint32_t fS2Pie : 1; 625 /** Supports Permission model enhancements (FEAT_S1POE). */ 626 uint32_t fS1Poe : 1; 627 /** Supports Permission model enhancements (FEAT_S2POE). */ 628 uint32_t fS2Poe : 1; 629 /** Supports Physical Fault Address Registers (FEAT_PFAR). */ 630 uint32_t fPfar : 1; 631 /** Supports Armv8.9 PMU extensions (FEAT_PMUv3p9). */ 632 uint32_t fPmuV3p9 : 1; 633 /** Supports PMU event edge detection (FEAT_PMUv3_EDGE). */ 634 uint32_t fPmuV3Edge : 1; 635 /** Supports Fixed-function instruction counter (FEAT_PMUv3_ICNTR). */ 636 uint32_t fPmuV3Icntr : 1; 637 /** Supports PMU Snapshot Extension (FEAT_PMUv3_SS). */ 638 uint32_t fPmuV3Ss : 1; 639 /** Supports SLC traget for PRFM instructions (FEAT_PRFMSLC). */ 640 uint32_t fPrfmSlc : 1; 641 /** Supports RAS version 2 (FEAT_RASv2). */ 642 uint32_t fRasV2 : 1; 643 /** Supports RAS version 2 System Architecture (FEAT_RASSAv2). */ 644 uint32_t fRasSaV2 : 1; 645 /** Supports for Range Prefetch Memory instruction (FEAT_RPFRM). */ 646 uint32_t fRprfm : 1; 647 /** Supports extensions to SCTLR_ELx (FEAT_SCTLR2). */ 648 uint32_t fSctlr2 : 1; 649 /** Supports Synchronous Exception-based Event Profiling (FEAT_SEBEP). */ 650 uint32_t fSebep : 1; 651 /** Supports non-widening half-precision FP16 to FP16 arithmetic for SME2.1 (FEAT_SME_F16F16). */ 652 uint32_t fSmeF16F16 : 1; 653 /** Supports Scalable Matrix Extension version 2 (FEAT_SME2). */ 654 uint32_t fSme2 : 1; 655 /** Supports Scalable Matrix Extension version 2.1 (FEAT_SME2p1). */ 656 uint32_t fSme2p1 : 1; 657 /** Supports Enhanced speculation restriction instructions (FEAT_SPECRES2). */ 658 uint32_t fSpecres2 : 1; 659 /** Supports System Performance Monitors Extension (FEAT_SPMU). */ 660 uint32_t fSpmu : 1; 661 /** Supports Statistical profiling Extension version 1.4 (FEAT_SPEv1p4). */ 662 uint32_t fSpeV1p4 : 1; 663 /** Supports Call Return Branch Records (FEAT_SPE_CRR). */ 664 uint32_t fSpeCrr : 1; 665 /** Supports Data Source Filtering (FEAT_SPE_FDS). */ 666 uint32_t fSpeFds : 1; 667 /** Supports Scalable Vector Extension version SVE2.1 (FEAT_SVE2p1). */ 668 uint32_t fSve2p1 : 1; 669 /** Supports Non-widening BFloat16 to BFloat16 arithmetic for SVE (FEAT_SVE_B16B16). */ 670 uint32_t fSveB16B16 : 1; 671 /** Supports 128-bit System instructions (FEAT_SYSINSTR128). */ 672 uint32_t fSysInstr128 : 1; 673 /** Supports 128-bit System registers (FEAT_SYSREG128). */ 674 uint32_t fSysReg128 : 1; 675 /** Supports Extension to TCR_ELx (FEAT_TCR2). */ 676 uint32_t fTcr2 : 1; 677 /** Supports Translation Hardening Extension (FEAT_THE). */ 678 uint32_t fThe : 1; 679 /** Supports Trace Buffer external mode (FEAT_TRBE_EXT). */ 680 uint32_t fTrbeExt : 1; 681 /** Supports Trace Buffer MPAM extension (FEAT_TRBE_MPAM). */ 682 uint32_t fTrbeMpam : 1; 683 /** @} */ 684 185 685 /** Padding to the required size to match CPUMFEATURES for x86/amd64. */ 186 uint8_t abPadding[ 48 - 10];686 uint8_t abPadding[6]; 187 687 } CPUMFEATURES; 188 688 #ifndef VBOX_FOR_DTRACE_LIB … … 251 751 252 752 753 /** 754 * CPU ID registers. 755 */ 756 typedef struct CPUMIDREGS 757 { 758 /** Content of the ID_AA64PFR0_EL1 register. */ 759 uint64_t u64RegIdAa64Pfr0El1; 760 /** Content of the ID_AA64PFR1_EL1 register. */ 761 uint64_t u64RegIdAa64Pfr1El1; 762 /** Content of the ID_AA64DFR0_EL1 register. */ 763 uint64_t u64RegIdAa64Dfr0El1; 764 /** Content of the ID_AA64DFR1_EL1 register. */ 765 uint64_t u64RegIdAa64Dfr1El1; 766 /** Content of the ID_AA64AFR0_EL1 register. */ 767 uint64_t u64RegIdAa64Afr0El1; 768 /** Content of the ID_AA64AFR1_EL1 register. */ 769 uint64_t u64RegIdAa64Afr1El1; 770 /** Content of the ID_AA64ISAR0_EL1 register. */ 771 uint64_t u64RegIdAa64Isar0El1; 772 /** Content of the ID_AA64ISAR1_EL1 register. */ 773 uint64_t u64RegIdAa64Isar1El1; 774 /** Content of the ID_AA64MMFR0_EL1 register. */ 775 uint64_t u64RegIdAa64Mmfr0El1; 776 /** Content of the ID_AA64MMFR1_EL1 register. */ 777 uint64_t u64RegIdAa64Mmfr1El1; 778 /** Content of the ID_AA64MMFR2_EL1 register. */ 779 uint64_t u64RegIdAa64Mmfr2El1; 780 /** Content of the CLIDR_EL1 register. */ 781 uint64_t u64RegClidrEl1; 782 /** Content of the CTR_EL0 register. */ 783 uint64_t u64RegCtrEl0; 784 /** Content of the DCZID_EL0 register. */ 785 uint64_t u64RegDczidEl0; 786 } CPUMIDREGS; 787 /** Pointer to CPU ID registers. */ 788 typedef CPUMIDREGS *PCPUMIDREGS; 789 /** Pointer to a const CPU ID registers structure. */ 790 typedef CPUMIDREGS const *PCCPUMIDREGS; 791 792 253 793 /** @name Changed flags. 254 794 * These flags are used to keep track of which important register that … … 292 832 293 833 VMMR3DECL(int) CPUMR3SysRegRangesInsert(PVM pVM, PCCPUMSYSREGRANGE pNewRange); 834 VMMR3DECL(int) CPUMR3PopulateFeaturesByIdRegisters(PVM pVM, PCCPUMIDREGS pIdRegs); 294 835 295 836 /** @} */
Note:
See TracChangeset
for help on using the changeset viewer.