VirtualBox

Changeset 99379 in vbox


Ignore:
Timestamp:
Apr 12, 2023 10:30:59 AM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
156805
Message:

VMM/ARMv8: Sync and log the TCR_EL1 register as well, bugref:10390, bugref:10387, bugref:10388

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpumctx-armv8.h

    r99378 r99379  
    141141    /** The SCTLR_EL1 register. */
    142142    CPUMCTXSYSREG   Sctlr;
     143    /** THe TCR_EL1 register. */
     144    CPUMCTXSYSREG   Tcr;
    143145    /** The TTBR0_EL1 register. */
    144146    CPUMCTXSYSREG   Ttbr0;
     
    158160    uint64_t        fExtrn;
    159161
    160     uint64_t        au64Padding1[3];
     162    uint64_t        au64Padding1[2];
    161163} CPUMCTX;
    162164
     
    192194/** The PSTATE value is kept externally. */
    193195#define CPUMCTX_EXTRN_PSTATE                    UINT64_C(0x0000000000000040)
    194 /** The SCTRL_EL1/TTBR{0,1}_EL1 system registers are kept externally. */
    195 #define CPUMCTX_EXTRN_SCTLR_TTBR                UINT64_C(0x0000000000000080)
     196/** The SCTRL_EL1/TCR_EL1/TTBR{0,1}_EL1 system registers are kept externally. */
     197#define CPUMCTX_EXTRN_SCTLR_TCR_TTBR            UINT64_C(0x0000000000000080)
    196198
    197199/** The X0 register value is kept externally. */
  • trunk/include/VBox/vmm/dbgf.h

    r99376 r99379  
    21552155    DBGFREG_ARMV8_SPSR_EL1,
    21562156    DBGFREG_ARMV8_SPSR_EL2,
     2157    DBGFREG_ARMV8_PSTATE = DBGFREG_ARMV8_SPSR_EL2,
    21572158    DBGFREG_ARMV8_SCTLR_EL1,
     2159    DBGFREG_ARMV8_TCR_EL1,
    21582160    DBGFREG_ARMV8_TTBR0_EL1,
    21592161    DBGFREG_ARMV8_TTBR1_EL1,
    2160     DBGFREG_ARMV8_PSTATE = DBGFREG_ARMV8_SPSR_EL2,
    21612162    DBGFREG_ARMV8_ELR_EL1,
    21622163
  • trunk/src/VBox/VMM/VMMR3/CPUMDbg-armv8.cpp

    r99376 r99379  
    276276    CPU_REG_RW_AS("spsr_el1",       SPSR_EL1,       U64, Spsr,            cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
    277277    CPU_REG_RW_AS("sctlr_el1",      SCTLR_EL1,      U64, Sctlr,           cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
     278    CPU_REG_RW_AS("tcr_el1",        TCR_EL1,        U64, Tcr,             cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
    278279    CPU_REG_RW_AS("ttbr0_el1",      TTBR0_EL1,      U64, Ttbr0,           cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
    279280    CPU_REG_RW_AS("ttbr1_el1",      TTBR1_EL1,      U64, Ttbr1,           cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
  • trunk/src/VBox/VMM/VMMR3/NEMR3Native-darwin-armv8.cpp

    r99377 r99379  
    177177} s_aCpumSysRegs[] =
    178178{
    179     { HV_SYS_REG_SP_EL0,    CPUMCTX_EXTRN_SP,            RT_UOFFSETOF(CPUMCTX, aSpReg[0].u64)    },
    180     { HV_SYS_REG_SP_EL1,    CPUMCTX_EXTRN_SP,            RT_UOFFSETOF(CPUMCTX, aSpReg[1].u64)    },
    181     { HV_SYS_REG_SPSR_EL1,  CPUMCTX_EXTRN_SPSR,          RT_UOFFSETOF(CPUMCTX, Spsr.u64)         },
    182     { HV_SYS_REG_ELR_EL1,   CPUMCTX_EXTRN_ELR,           RT_UOFFSETOF(CPUMCTX, Elr.u64)          },
    183     { HV_SYS_REG_SCTLR_EL1, CPUMCTX_EXTRN_SCTLR_TTBR,    RT_UOFFSETOF(CPUMCTX, Sctlr.u64)        },
    184     { HV_SYS_REG_TTBR0_EL1, CPUMCTX_EXTRN_SCTLR_TTBR,    RT_UOFFSETOF(CPUMCTX, Ttbr0.u64)        },
    185     { HV_SYS_REG_TTBR1_EL1, CPUMCTX_EXTRN_SCTLR_TTBR,    RT_UOFFSETOF(CPUMCTX, Ttbr1.u64)        },
     179    { HV_SYS_REG_SP_EL0,    CPUMCTX_EXTRN_SP,               RT_UOFFSETOF(CPUMCTX, aSpReg[0].u64)    },
     180    { HV_SYS_REG_SP_EL1,    CPUMCTX_EXTRN_SP,               RT_UOFFSETOF(CPUMCTX, aSpReg[1].u64)    },
     181    { HV_SYS_REG_SPSR_EL1,  CPUMCTX_EXTRN_SPSR,             RT_UOFFSETOF(CPUMCTX, Spsr.u64)         },
     182    { HV_SYS_REG_ELR_EL1,   CPUMCTX_EXTRN_ELR,              RT_UOFFSETOF(CPUMCTX, Elr.u64)          },
     183    { HV_SYS_REG_SCTLR_EL1, CPUMCTX_EXTRN_SCTLR_TCR_TTBR,   RT_UOFFSETOF(CPUMCTX, Sctlr.u64)        },
     184    { HV_SYS_REG_TCR_EL1,   CPUMCTX_EXTRN_SCTLR_TCR_TTBR,   RT_UOFFSETOF(CPUMCTX, Tcr.u64)          },
     185    { HV_SYS_REG_TTBR0_EL1, CPUMCTX_EXTRN_SCTLR_TCR_TTBR,   RT_UOFFSETOF(CPUMCTX, Ttbr0.u64)        },
     186    { HV_SYS_REG_TTBR1_EL1, CPUMCTX_EXTRN_SCTLR_TCR_TTBR,   RT_UOFFSETOF(CPUMCTX, Ttbr1.u64)        },
    186187};
    187188
     
    419420                        "pc=%016VR{pc} pstate=%016VR{pstate}\n"
    420421                        "sp_el0=%016VR{sp_el0} sp_el1=%016VR{sp_el1} elr_el1=%016VR{elr_el1}\n"
    421                         "sctlr_el1=%016VR{sctlr_el1} ttbr0_el1=%016VR{ttbr0_el1} ttbr1_el1=%016VR{ttbr1_el1}\n"
     422                        "sctlr_el1=%016VR{sctlr_el1} tcr_el1=%016VR{tcr_el1}\n"
     423                        "ttbr0_el1=%016VR{ttbr0_el1} ttbr1_el1=%016VR{ttbr1_el1}\n"
    422424                        );
    423425        char szInstr[256]; RT_ZERO(szInstr);
     
    462464
    463465    if (   hrc == HV_SUCCESS
    464         && (fWhat & (CPUMCTX_EXTRN_SPSR | CPUMCTX_EXTRN_ELR | CPUMCTX_EXTRN_SP | CPUMCTX_EXTRN_SCTLR_TTBR)))
     466        && (fWhat & (CPUMCTX_EXTRN_SPSR | CPUMCTX_EXTRN_ELR | CPUMCTX_EXTRN_SP | CPUMCTX_EXTRN_SCTLR_TCR_TTBR)))
    465467    {
    466468        /* System registers. */
     
    650652
    651653    if (   hrc == HV_SUCCESS
    652         &&     (pVCpu->cpum.GstCtx.fExtrn & (CPUMCTX_EXTRN_SPSR | CPUMCTX_EXTRN_ELR | CPUMCTX_EXTRN_SP))
    653             !=                              (CPUMCTX_EXTRN_SPSR | CPUMCTX_EXTRN_ELR | CPUMCTX_EXTRN_SP))
     654        &&     (pVCpu->cpum.GstCtx.fExtrn & (CPUMCTX_EXTRN_SPSR | CPUMCTX_EXTRN_ELR | CPUMCTX_EXTRN_SP | CPUMCTX_EXTRN_SCTLR_TCR_TTBR))
     655            !=                              (CPUMCTX_EXTRN_SPSR | CPUMCTX_EXTRN_ELR | CPUMCTX_EXTRN_SP | CPUMCTX_EXTRN_SCTLR_TCR_TTBR))
    654656    {
    655657        /* System registers. */
Note: See TracChangeset for help on using the changeset viewer.

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