VirtualBox

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


Ignore:
Timestamp:
Sep 17, 2020 11:20:34 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
140391
Message:

VMM/CPUMDbg: Implement gdtr and idtr setters ([gi]dtr_base and _limit where already writeable separately)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CPUMDbg.cpp

    r83771 r86146  
    208208static DECLCALLBACK(int) cpumR3RegSet_gdtr(void *pvUser, PCDBGFREGDESC pDesc, PCDBGFREGVAL pValue, PCDBGFREGVAL pfMask)
    209209{
    210     NOREF(pvUser); NOREF(pDesc); NOREF(pValue); NOREF(pfMask);
    211     return VERR_NOT_IMPLEMENTED;
     210    RT_NOREF(pfMask);
     211
     212    PVMCPU    pVCpu = (PVMCPU)pvUser;
     213    VBOXGDTR *pGdtr = (VBOXGDTR *)((uint8_t *)&pVCpu->cpum + pDesc->offRegister);
     214
     215    VMCPU_ASSERT_EMT(pVCpu);
     216    Assert(pDesc->enmType == DBGFREGVALTYPE_DTR);
     217
     218    pGdtr->cbGdt = pValue->dtr.u32Limit;
     219    pGdtr->pGdt  = pValue->dtr.u64Base;
     220    return VINF_SUCCESS;
    212221}
    213222
     
    235244static DECLCALLBACK(int) cpumR3RegSet_idtr(void *pvUser, PCDBGFREGDESC pDesc, PCDBGFREGVAL pValue, PCDBGFREGVAL pfMask)
    236245{
    237     NOREF(pvUser); NOREF(pDesc); NOREF(pValue); NOREF(pfMask);
    238     return VERR_NOT_IMPLEMENTED;
     246    RT_NOREF(pfMask);
     247
     248    PVMCPU    pVCpu = (PVMCPU)pvUser;
     249    VBOXIDTR *pIdtr = (VBOXIDTR *)((uint8_t *)&pVCpu->cpum + pDesc->offRegister);
     250
     251    VMCPU_ASSERT_EMT(pVCpu);
     252    Assert(pDesc->enmType == DBGFREGVALTYPE_DTR);
     253
     254    pIdtr->cbIdt = pValue->dtr.u32Limit;
     255    pIdtr->pIdt = pValue->dtr.u64Base;
     256    return VINF_SUCCESS;
    239257}
    240258
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