Changeset 101119 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Sep 14, 2023 8:58:53 AM (19 months ago)
- svn:sync-xref-src-repo-rev:
- 159088
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId-armv8.cpp
r101114 r101119 557 557 */ 558 558 559 /** CLIDR_EL1 field descriptions. */ 560 static DBGFREGSUBFIELD const g_aClidrEl1Fields[] = 561 { 562 DBGFREGSUBFIELD_RO("Ctype1\0" "Cache 1 type field", 0, 3, 0), 563 DBGFREGSUBFIELD_RO("Ctype2\0" "Cache 2 type field", 3, 3, 0), 564 DBGFREGSUBFIELD_RO("Ctype3\0" "Cache 3 type field", 6, 3, 0), 565 DBGFREGSUBFIELD_RO("Ctype4\0" "Cache 4 type field", 9, 3, 0), 566 DBGFREGSUBFIELD_RO("Ctype5\0" "Cache 5 type field", 12, 3, 0), 567 DBGFREGSUBFIELD_RO("Ctype6\0" "Cache 6 type field", 15, 3, 0), 568 DBGFREGSUBFIELD_RO("Ctype7\0" "Cache 7 type field", 18, 3, 0), 569 DBGFREGSUBFIELD_RO("LoUIS\0" "Level of Unification Inner Shareable", 21, 3, 0), 570 DBGFREGSUBFIELD_RO("LoC\0" "Level of Coherence for the cache hierarchy", 24, 3, 0), 571 DBGFREGSUBFIELD_RO("LoUU\0" "Level of Unification Uniprocessor", 27, 3, 0), 572 DBGFREGSUBFIELD_RO("ICB\0" "Inner cache boundary", 30, 3, 0), 573 DBGFREGSUBFIELD_RO("Ttype1\0" "Cache 1 - Tag cache type", 33, 2, 0), 574 DBGFREGSUBFIELD_RO("Ttype2\0" "Cache 2 - Tag cache type", 35, 2, 0), 575 DBGFREGSUBFIELD_RO("Ttype3\0" "Cache 3 - Tag cache type", 37, 2, 0), 576 DBGFREGSUBFIELD_RO("Ttype4\0" "Cache 4 - Tag cache type", 39, 2, 0), 577 DBGFREGSUBFIELD_RO("Ttype5\0" "Cache 5 - Tag cache type", 41, 2, 0), 578 DBGFREGSUBFIELD_RO("Ttype6\0" "Cache 6 - Tag cache type", 43, 2, 0), 579 DBGFREGSUBFIELD_RO("Ttype7\0" "Cache 7 - Tag cache type", 45, 2, 0), 580 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 47, 17, 0), 581 DBGFREGSUBFIELD_TERMINATOR() 582 }; 583 584 585 /** ID_AA64PFR0_EL1 field descriptions. */ 586 static DBGFREGSUBFIELD const g_aIdAa64PfR0Fields[] = 587 { 588 DBGFREGSUBFIELD_RO("EL0\0" "EL0 Exception level handling", 0, 4, 0), 589 DBGFREGSUBFIELD_RO("EL1\0" "EL1 Exception level handling", 4, 4, 0), 590 DBGFREGSUBFIELD_RO("EL2\0" "EL2 Exception level handling", 8, 4, 0), 591 DBGFREGSUBFIELD_RO("EL3\0" "EL3 Exception level handling", 12, 4, 0), 592 DBGFREGSUBFIELD_RO("FP\0" "Floating-point", 16, 4, 0), 593 DBGFREGSUBFIELD_RO("AdvSIMD\0" "Advanced SIMD", 20, 4, 0), 594 DBGFREGSUBFIELD_RO("GIC\0" "System register GIC CPU interface", 24, 4, 0), 595 DBGFREGSUBFIELD_RO("RAS\0" "RAS Extension version", 28, 4, 0), 596 DBGFREGSUBFIELD_RO("SVE\0" "Scalable Vector Extension", 32, 4, 0), 597 DBGFREGSUBFIELD_RO("SEL2\0" "Secure EL2", 36, 4, 0), 598 DBGFREGSUBFIELD_RO("MPAM\0" "MPAM Extension major version number", 40, 4, 0), 599 DBGFREGSUBFIELD_RO("AMU\0" "Activity Monitors Extension support", 44, 4, 0), 600 DBGFREGSUBFIELD_RO("DIT\0" "Data Independent Timing", 48, 4, 0), 601 DBGFREGSUBFIELD_RO("RME\0" "Realm Management Extension", 52, 4, 0), 602 DBGFREGSUBFIELD_RO("CSV2\0" "Speculative use of out of branch targets", 56, 4, 0), 603 DBGFREGSUBFIELD_RO("CSV3\0" "Speculative use of faulting data", 60, 4, 0), 604 DBGFREGSUBFIELD_TERMINATOR() 605 }; 606 607 608 /** ID_AA64PFR1_EL1 field descriptions. */ 609 static DBGFREGSUBFIELD const g_aIdAa64PfR1Fields[] = 610 { 611 DBGFREGSUBFIELD_RO("BT\0" "Branch Target Identification mechanism", 0, 4, 0), 612 DBGFREGSUBFIELD_RO("SSBS\0" "Speculative Store Bypassing controls", 4, 4, 0), 613 DBGFREGSUBFIELD_RO("MTE\0" "Memory Tagging Extension support", 8, 4, 0), 614 DBGFREGSUBFIELD_RO("RAS_frac\0" "RAS Extension fractional field", 12, 4, 0), 615 DBGFREGSUBFIELD_RO("MPAM_frac\0" "MPAM Extension minor version", 16, 4, 0), 616 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 20, 4, 0), 617 DBGFREGSUBFIELD_RO("SME\0" "Scalable Matrix Extension", 24, 4, 0), 618 DBGFREGSUBFIELD_RO("RNDR_trap\0" "Random Number trap to EL3", 28, 4, 0), 619 DBGFREGSUBFIELD_RO("CSV2_frac\0" "CSV2 fractional version field", 32, 4, 0), 620 DBGFREGSUBFIELD_RO("NMI\0" "Non-maskable Interrupt support", 36, 4, 0), 621 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 40, 4, 0), 622 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 44, 4, 0), 623 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 48, 4, 0), 624 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 52, 4, 0), 625 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 56, 4, 0), 626 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 60, 4, 0), 627 DBGFREGSUBFIELD_TERMINATOR() 628 }; 629 559 630 560 631 /** ID_AA64ISAR0_EL1 field descriptions. */ … … 682 753 DBGFREGSUBFIELD_RO("EVT\0" "Enhanced Virtualization Traps support", 56, 4, 0), 683 754 DBGFREGSUBFIELD_RO("E0PD\0" "E0PD mechanism support", 60, 4, 0), 755 DBGFREGSUBFIELD_TERMINATOR() 756 }; 757 758 759 /** ID_AA64DFR0_EL1 field descriptions. */ 760 static DBGFREGSUBFIELD const g_aIdAa64DfR0Fields[] = 761 { 762 DBGFREGSUBFIELD_RO("DebugVer\0" "Debug architecture version", 0, 4, 0), 763 DBGFREGSUBFIELD_RO("TraceVer\0" "Trace support", 4, 4, 0), 764 DBGFREGSUBFIELD_RO("PMUVer\0" "Performance Monitors Extension version", 8, 4, 0), 765 DBGFREGSUBFIELD_RO("BRPs\0" "Number of breakpoints minus 1", 12, 4, 0), 766 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 16, 4, 0), 767 DBGFREGSUBFIELD_RO("WRPs\0" "Number of watchpoints minus 1", 20, 4, 0), 768 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 24, 4, 0), 769 DBGFREGSUBFIELD_RO("CTX_CMPs\0" "Number of context-aware breakpoints minus 1", 28, 4, 0), 770 DBGFREGSUBFIELD_RO("PMSVer\0" "Statistical Profiling Extension version", 32, 4, 0), 771 DBGFREGSUBFIELD_RO("DoubleLock\0" "OS Double Lock support", 36, 4, 0), 772 DBGFREGSUBFIELD_RO("TraceFilt\0" "Armv8.4 Self-hosted Trace Extension version", 40, 4, 0), 773 DBGFREGSUBFIELD_RO("TraceBuffer\0" "Trace Buffer Extension", 44, 4, 0), 774 DBGFREGSUBFIELD_RO("MTPMU\0" "Multi-threaded PMU extension", 48, 4, 0), 775 DBGFREGSUBFIELD_RO("BRBE\0" "Branch Record Buffer Extension", 52, 4, 0), 776 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 56, 4, 0), 777 DBGFREGSUBFIELD_RO("HPMN0\0" "Zero PMU event counters for guest", 60, 4, 0), 778 DBGFREGSUBFIELD_TERMINATOR() 779 }; 780 781 782 /** ID_AA64DFR1_EL1 field descriptions. */ 783 static DBGFREGSUBFIELD const g_aIdAa64DfR1Fields[] = 784 { 785 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 0, 4, 0), 786 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 4, 4, 0), 787 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 8, 4, 0), 788 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 12, 4, 0), 789 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 16, 4, 0), 790 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 20, 4, 0), 791 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 24, 4, 0), 792 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 28, 4, 0), 793 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 32, 4, 0), 794 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 36, 4, 0), 795 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 40, 4, 0), 796 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 44, 4, 0), 797 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 48, 4, 0), 798 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 52, 4, 0), 799 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 56, 4, 0), 800 DBGFREGSUBFIELD_RO("Res0\0" "Reserved", 60, 4, 0), 684 801 DBGFREGSUBFIELD_TERMINATOR() 685 802 }; … … 807 924 } 808 925 926 /** @todo MIDR_EL1. */ 927 928 cpumR3CpuIdInfoIdRegDetails(pHlp, "CLIDR_EL1", 929 pVM->cpum.s.HostIdRegs.u64RegClidrEl1, 930 pVM->cpum.s.GuestIdRegs.u64RegClidrEl1, 931 g_aClidrEl1Fields, iVerbosity > 1); 932 933 cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64PFR0_EL1", 934 pVM->cpum.s.HostIdRegs.u64RegIdAa64Pfr0El1, 935 pVM->cpum.s.GuestIdRegs.u64RegIdAa64Pfr0El1, 936 g_aIdAa64PfR0Fields, iVerbosity > 1); 937 938 cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64PFR1_EL1", 939 pVM->cpum.s.HostIdRegs.u64RegIdAa64Pfr1El1, 940 pVM->cpum.s.GuestIdRegs.u64RegIdAa64Pfr1El1, 941 g_aIdAa64PfR1Fields, iVerbosity > 1); 942 809 943 cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64ISAR0_EL1", 810 944 pVM->cpum.s.HostIdRegs.u64RegIdAa64Isar0El1, … … 837 971 g_aIdAa64MmfR2Fields, iVerbosity > 1); 838 972 839 /** @todo Other ID and feature registers. */ 840 } 973 cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64DFR0_EL1", 974 pVM->cpum.s.HostIdRegs.u64RegIdAa64Dfr0El1, 975 pVM->cpum.s.GuestIdRegs.u64RegIdAa64Dfr0El1, 976 g_aIdAa64DfR0Fields, iVerbosity > 1); 977 978 cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64DFR1_EL1", 979 pVM->cpum.s.HostIdRegs.u64RegIdAa64Dfr1El1, 980 pVM->cpum.s.GuestIdRegs.u64RegIdAa64Dfr1El1, 981 g_aIdAa64DfR1Fields, iVerbosity > 1); 982 }
Note:
See TracChangeset
for help on using the changeset viewer.