VirtualBox

Changeset 99376 in vbox


Ignore:
Timestamp:
Apr 12, 2023 7:35:08 AM (20 months ago)
Author:
vboxsync
Message:

VMM/ARMv8: Sync and log the SCTLR/TTBR0/TTBR1 registers, bugref:10390, bugref:10387, bugref:10388

Location:
trunk
Files:
4 edited

Legend:

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

    r99051 r99376  
    139139    /** The ELR (Exception Link Register) (EL1 only). */
    140140    CPUMCTXSYSREG   Elr;
    141 
     141    /** The SCTLR_EL1 register. */
     142    CPUMCTXSYSREG   Sctlr;
     143    /** The TTBR0_EL1 register. */
     144    CPUMCTXSYSREG   Ttbr0;
     145    /** The TTBR1_EL1 register. */
     146    CPUMCTXSYSREG   Ttbr1;
    142147
    143148    /** Floating point control register. */
     
    153158    uint64_t        fExtrn;
    154159
    155     uint64_t        au64Padding1[6];
     160    uint64_t        au64Padding1[3];
    156161} CPUMCTX;
    157162
     
    187192/** The PSTATE value is kept externally. */
    188193#define CPUMCTX_EXTRN_PSTATE                    UINT64_C(0x0000000000000040)
    189 /** @todo RSVD. */
    190 #define CPUMCTX_EXTRN_RSVD                      UINT64_C(0x0000000000000080)
     194/** The SCTRL_EL1/TTBR<x>_EL1 system registers are kept externally. */
     195#define CPUMCTX_EXTRN_SCTLR_TTBR                UINT64_C(0x0000000000000080)
    191196
    192197/** The X0 register value is kept externally. */
  • trunk/include/VBox/vmm/dbgf.h

    r99070 r99376  
    21552155    DBGFREG_ARMV8_SPSR_EL1,
    21562156    DBGFREG_ARMV8_SPSR_EL2,
     2157    DBGFREG_ARMV8_SCTLR_EL1,
     2158    DBGFREG_ARMV8_TTBR0_EL1,
     2159    DBGFREG_ARMV8_TTBR1_EL1,
    21572160    DBGFREG_ARMV8_PSTATE = DBGFREG_ARMV8_SPSR_EL2,
    21582161    DBGFREG_ARMV8_ELR_EL1,
  • trunk/src/VBox/VMM/VMMR3/CPUMDbg-armv8.cpp

    r99070 r99376  
    275275    CPU_REG_RW_AS("sp_el1",         SP_EL1,         U64, aSpReg[1],       cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
    276276    CPU_REG_RW_AS("spsr_el1",       SPSR_EL1,       U64, Spsr,            cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
     277    CPU_REG_RW_AS("sctlr_el1",      SCTLR_EL1,      U64, Sctlr,           cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
     278    CPU_REG_RW_AS("ttbr0_el1",      TTBR0_EL1,      U64, Ttbr0,           cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
     279    CPU_REG_RW_AS("ttbr1_el1",      TTBR1_EL1,      U64, Ttbr1,           cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
    277280    CPU_REG_RW_AS("elr_el1",        ELR_EL1,        U64, Elr,             cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
    278281    CPU_REG_RW_AS("fpcr",           FPCR,           U64, fpcr,            cpumR3RegGet_Generic,         cpumR3RegSet_Generic,         NULL,                       NULL                    ),
  • trunk/src/VBox/VMM/VMMR3/NEMR3Native-darwin-armv8.cpp

    r99197 r99376  
    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)       },
     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)        },
    183186};
    184187
     
    416419                        "pc=%016VR{pc} pstate=%016VR{pstate}\n"
    417420                        "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"
    418422                        );
    419423        char szInstr[256]; RT_ZERO(szInstr);
     
    458462
    459463    if (   hrc == HV_SUCCESS
    460         && (fWhat & (CPUMCTX_EXTRN_SPSR | CPUMCTX_EXTRN_ELR | CPUMCTX_EXTRN_SP)))
     464        && (fWhat & (CPUMCTX_EXTRN_SPSR | CPUMCTX_EXTRN_ELR | CPUMCTX_EXTRN_SP | CPUMCTX_EXTRN_SCTLR_TTBR)))
    461465    {
    462466        /* System registers. */
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