VirtualBox

Changeset 105732 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 19, 2024 5:01:37 PM (7 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164437
Message:

VMM/CPUM-armv8: Add some helpers tp query current guest EL and whether MMU is enabled, bugref:10388

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/CPUMAllRegs-armv8.cpp

    r101221 r105732  
    310310 * Get the current exception level of the guest.
    311311 *
    312  * @returns EL
    313  * @param   pVCpu       The cross context virtual CPU structure of the calling EMT.
    314  */
    315 VMMDECL(uint32_t) CPUMGetGuestEL(PVMCPU pVCpu)
    316 {
    317     RT_NOREF(pVCpu);
    318     AssertReleaseFailed();
    319     return 0;
     312 * @returns Exception Level 0 - 3
     313 * @param   pVCpu       The cross context virtual CPU structure of the calling EMT.
     314 */
     315VMM_INT_DECL(uint8_t) CPUMGetGuestEL(PVMCPU pVCpu)
     316{
     317    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_PSTATE);
     318    return ARMV8_SPSR_EL2_AARCH64_GET_EL(pVCpu->cpum.s.Guest.fPState);
     319}
     320
     321
     322/**
     323 * Returns whether the guest has the MMU enabled for address translation.
     324 *
     325 * @returns true if address translation is enabled, false if not.
     326 */
     327VMM_INT_DECL(bool) CPUMGetGuestMmuEnabled(PVMCPUCC pVCpu)
     328{
     329    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_PSTATE | CPUMCTX_EXTRN_SCTLR_TCR_TTBR);
     330    uint8_t bEl = ARMV8_SPSR_EL2_AARCH64_GET_EL(pVCpu->cpum.s.Guest.fPState);
     331    if (bEl == ARMV8_AARCH64_EL_2)
     332    {
     333        CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_SYSREG_EL2);
     334        return RT_BOOL(pVCpu->cpum.s.Guest.SctlrEl2.u64 & ARMV8_SCTLR_EL2_M);
     335    }
     336
     337    Assert(bEl == ARMV8_AARCH64_EL_0 || bEl == ARMV8_AARCH64_EL_1);
     338    return RT_BOOL(pVCpu->cpum.s.Guest.Sctlr.u64 & ARMV8_SCTLR_EL2_M);
    320339}
    321340
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