VirtualBox

Changeset 107031 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Nov 18, 2024 3:00:29 PM (2 months ago)
Author:
vboxsync
Message:

VMM/CPUM-armv8: Allow reading/writing the debug control/value registers through CPUMQueryGuestSysReg/CPUMSetGuestSysReg, bugreef:10393

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CPUM-armv8.cpp

    r106061 r107031  
    9393#define MVI(a_uMsr, a_szName, a_uValue) \
    9494    RINT(a_uMsr, a_uMsr, kCpumSysRegRdFn_FixedValue, kCpumSysRegWrFn_IgnoreWrite, 0, a_uValue, UINT64_MAX, 0, a_szName)
     95/** Read/Write value from/to CPUMCTX. */
     96#define MVRW(a_uMsr, a_szName, a_offCpum) \
     97    RINT(a_uMsr, a_uMsr, kCpumSysRegRdFn_ReadCpumOff, kCpumSysRegWrFn_WriteCpumOff, a_offCpum, 0, UINT64_MAX, 0, a_szName)
    9598
    9699
     
    140143    MFX(ARMV8_AARCH64_SYSREG_OSLAR_EL1, "OSLAR_EL1", WriteOnly, OslarEl1, 0, UINT64_C(0xfffffffffffffffe), UINT64_C(0xfffffffffffffffe)),
    141144    MFO(ARMV8_AARCH64_SYSREG_OSLSR_EL1, "OSLSR_EL1", OslsrEl1),
    142     MVI(ARMV8_AARCH64_SYSREG_OSDLR_EL1, "OSDLR_EL1", 0)
     145    MVI(ARMV8_AARCH64_SYSREG_OSDLR_EL1, "OSDLR_EL1", 0),
     146    MVRW(ARMV8_AARCH64_SYSREG_MDSCR_EL1,       "MDSCR_EL1",    RT_UOFFSETOF(CPUMCTX, Mdscr)),
     147    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(0),  "DBGBVR0_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[0].Value)),
     148    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(1),  "DBGBVR1_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[1].Value)),
     149    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(2),  "DBGBVR2_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[2].Value)),
     150    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(3),  "DBGBVR3_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[3].Value)),
     151    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(4),  "DBGBVR4_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[4].Value)),
     152    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(5),  "DBGBVR5_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[5].Value)),
     153    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(6),  "DBGBVR6_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[6].Value)),
     154    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(7),  "DBGBVR7_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[7].Value)),
     155    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(8),  "DBGBVR8_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[8].Value)),
     156    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(9),  "DBGBVR9_EL9",  RT_UOFFSETOF(CPUMCTX, aBp[9].Value)),
     157    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(10), "DBGBVR10_EL1", RT_UOFFSETOF(CPUMCTX, aBp[10].Value)),
     158    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(11), "DBGBVR11_EL1", RT_UOFFSETOF(CPUMCTX, aBp[11].Value)),
     159    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(12), "DBGBVR12_EL1", RT_UOFFSETOF(CPUMCTX, aBp[12].Value)),
     160    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(13), "DBGBVR13_EL1", RT_UOFFSETOF(CPUMCTX, aBp[13].Value)),
     161    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(14), "DBGBVR14_EL1", RT_UOFFSETOF(CPUMCTX, aBp[14].Value)),
     162    MVRW(ARMV8_AARCH64_SYSREG_DBGBVRn_EL1(15), "DBGBVR15_EL1", RT_UOFFSETOF(CPUMCTX, aBp[15].Value)),
     163    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(0),  "DBGBCR0_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[0].Ctrl)),
     164    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(1),  "DBGBCR1_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[1].Ctrl)),
     165    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(2),  "DBGBCR2_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[2].Ctrl)),
     166    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(3),  "DBGBCR3_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[3].Ctrl)),
     167    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(4),  "DBGBCR4_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[4].Ctrl)),
     168    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(5),  "DBGBCR5_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[5].Ctrl)),
     169    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(6),  "DBGBCR6_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[6].Ctrl)),
     170    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(7),  "DBGBCR7_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[7].Ctrl)),
     171    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(8),  "DBGBCR8_EL1",  RT_UOFFSETOF(CPUMCTX, aBp[8].Ctrl)),
     172    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(9),  "DBGBCR9_EL9",  RT_UOFFSETOF(CPUMCTX, aBp[9].Ctrl)),
     173    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(10), "DBGBCR10_EL1", RT_UOFFSETOF(CPUMCTX, aBp[10].Ctrl)),
     174    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(11), "DBGBCR11_EL1", RT_UOFFSETOF(CPUMCTX, aBp[11].Ctrl)),
     175    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(12), "DBGBCR12_EL1", RT_UOFFSETOF(CPUMCTX, aBp[12].Ctrl)),
     176    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(13), "DBGBCR13_EL1", RT_UOFFSETOF(CPUMCTX, aBp[13].Ctrl)),
     177    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(14), "DBGBCR14_EL1", RT_UOFFSETOF(CPUMCTX, aBp[14].Ctrl)),
     178    MVRW(ARMV8_AARCH64_SYSREG_DBGBCRn_EL1(15), "DBGBCR15_EL1", RT_UOFFSETOF(CPUMCTX, aBp[15].Ctrl)),
     179    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(0),  "DBGWVR0_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[0].Value)),
     180    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(1),  "DBGWVR1_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[1].Value)),
     181    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(2),  "DBGWVR2_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[2].Value)),
     182    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(3),  "DBGWVR3_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[3].Value)),
     183    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(4),  "DBGWVR4_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[4].Value)),
     184    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(5),  "DBGWVR5_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[5].Value)),
     185    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(6),  "DBGWVR6_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[6].Value)),
     186    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(7),  "DBGWVR7_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[7].Value)),
     187    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(8),  "DBGWVR8_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[8].Value)),
     188    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(9),  "DBGWVR9_EL9",  RT_UOFFSETOF(CPUMCTX, aWp[9].Value)),
     189    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(10), "DBGWVR10_EL1", RT_UOFFSETOF(CPUMCTX, aWp[10].Value)),
     190    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(11), "DBGWVR11_EL1", RT_UOFFSETOF(CPUMCTX, aWp[11].Value)),
     191    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(12), "DBGWVR12_EL1", RT_UOFFSETOF(CPUMCTX, aWp[12].Value)),
     192    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(13), "DBGWVR13_EL1", RT_UOFFSETOF(CPUMCTX, aWp[13].Value)),
     193    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(14), "DBGWVR14_EL1", RT_UOFFSETOF(CPUMCTX, aWp[14].Value)),
     194    MVRW(ARMV8_AARCH64_SYSREG_DBGWVRn_EL1(15), "DBGWVR15_EL1", RT_UOFFSETOF(CPUMCTX, aWp[15].Value)),
     195    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(0),  "DBGWCR0_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[0].Ctrl)),
     196    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(1),  "DBGWCR1_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[1].Ctrl)),
     197    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(2),  "DBGWCR2_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[2].Ctrl)),
     198    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(3),  "DBGWCR3_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[3].Ctrl)),
     199    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(4),  "DBGWCR4_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[4].Ctrl)),
     200    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(5),  "DBGWCR5_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[5].Ctrl)),
     201    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(6),  "DBGWCR6_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[6].Ctrl)),
     202    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(7),  "DBGWCR7_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[7].Ctrl)),
     203    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(8),  "DBGWCR8_EL1",  RT_UOFFSETOF(CPUMCTX, aWp[8].Ctrl)),
     204    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(9),  "DBGWCR9_EL9",  RT_UOFFSETOF(CPUMCTX, aWp[9].Ctrl)),
     205    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(10), "DBGWCR10_EL1", RT_UOFFSETOF(CPUMCTX, aWp[10].Ctrl)),
     206    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(11), "DBGWCR11_EL1", RT_UOFFSETOF(CPUMCTX, aWp[11].Ctrl)),
     207    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(12), "DBGWCR12_EL1", RT_UOFFSETOF(CPUMCTX, aWp[12].Ctrl)),
     208    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(13), "DBGWCR13_EL1", RT_UOFFSETOF(CPUMCTX, aWp[13].Ctrl)),
     209    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(14), "DBGWCR14_EL1", RT_UOFFSETOF(CPUMCTX, aWp[14].Ctrl)),
     210    MVRW(ARMV8_AARCH64_SYSREG_DBGWCRn_EL1(15), "DBGWCR15_EL1", RT_UOFFSETOF(CPUMCTX, aWp[15].Ctrl)),
    143211};
    144212
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette