VirtualBox

Changeset 12600 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Sep 19, 2008 1:07:44 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
36853
Message:

Turned dr0..dr7 into an array.

File:
1 edited

Legend:

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

    r12578 r12600  
    182182CPUMDECL(void) CPUMSetHyperDR0(PVM pVM, RTGCUINTREG uDr0)
    183183{
    184     pVM->cpum.s.Hyper.dr0 = uDr0;
     184    pVM->cpum.s.Hyper.dr[0] = uDr0;
    185185    /** @todo in GC we must load it! */
    186186}
     
    188188CPUMDECL(void) CPUMSetHyperDR1(PVM pVM, RTGCUINTREG uDr1)
    189189{
    190     pVM->cpum.s.Hyper.dr1 = uDr1;
     190    pVM->cpum.s.Hyper.dr[1] = uDr1;
    191191    /** @todo in GC we must load it! */
    192192}
     
    194194CPUMDECL(void) CPUMSetHyperDR2(PVM pVM, RTGCUINTREG uDr2)
    195195{
    196     pVM->cpum.s.Hyper.dr2 = uDr2;
     196    pVM->cpum.s.Hyper.dr[2] = uDr2;
    197197    /** @todo in GC we must load it! */
    198198}
     
    200200CPUMDECL(void) CPUMSetHyperDR3(PVM pVM, RTGCUINTREG uDr3)
    201201{
    202     pVM->cpum.s.Hyper.dr3 = uDr3;
     202    pVM->cpum.s.Hyper.dr[3] = uDr3;
    203203    /** @todo in GC we must load it! */
    204204}
     
    206206CPUMDECL(void) CPUMSetHyperDR6(PVM pVM, RTGCUINTREG uDr6)
    207207{
    208     pVM->cpum.s.Hyper.dr6 = uDr6;
     208    pVM->cpum.s.Hyper.dr[6] = uDr6;
    209209    /** @todo in GC we must load it! */
    210210}
     
    212212CPUMDECL(void) CPUMSetHyperDR7(PVM pVM, RTGCUINTREG uDr7)
    213213{
    214     pVM->cpum.s.Hyper.dr7 = uDr7;
     214    pVM->cpum.s.Hyper.dr[7] = uDr7;
    215215    /** @todo in GC we must load it! */
    216216}
     
    347347CPUMDECL(RTGCUINTREG) CPUMGetHyperDR0(PVM pVM)
    348348{
    349     return pVM->cpum.s.Hyper.dr0;
     349    return pVM->cpum.s.Hyper.dr[0];
    350350}
    351351
    352352CPUMDECL(RTGCUINTREG) CPUMGetHyperDR1(PVM pVM)
    353353{
    354     return pVM->cpum.s.Hyper.dr1;
     354    return pVM->cpum.s.Hyper.dr[1];
    355355}
    356356
    357357CPUMDECL(RTGCUINTREG) CPUMGetHyperDR2(PVM pVM)
    358358{
    359     return pVM->cpum.s.Hyper.dr2;
     359    return pVM->cpum.s.Hyper.dr[2];
    360360}
    361361
    362362CPUMDECL(RTGCUINTREG) CPUMGetHyperDR3(PVM pVM)
    363363{
    364     return pVM->cpum.s.Hyper.dr3;
     364    return pVM->cpum.s.Hyper.dr[3];
    365365}
    366366
    367367CPUMDECL(RTGCUINTREG) CPUMGetHyperDR6(PVM pVM)
    368368{
    369     return pVM->cpum.s.Hyper.dr6;
     369    return pVM->cpum.s.Hyper.dr[6];
    370370}
    371371
    372372CPUMDECL(RTGCUINTREG) CPUMGetHyperDR7(PVM pVM)
    373373{
    374     return pVM->cpum.s.Hyper.dr7;
     374    return pVM->cpum.s.Hyper.dr[7];
    375375}
    376376
     
    888888CPUMDECL(uint64_t) CPUMGetGuestDR0(PVM pVM)
    889889{
    890     return pVM->cpum.s.Guest.dr0;
     890    return pVM->cpum.s.Guest.dr[0];
    891891}
    892892
    893893CPUMDECL(uint64_t) CPUMGetGuestDR1(PVM pVM)
    894894{
    895     return pVM->cpum.s.Guest.dr1;
     895    return pVM->cpum.s.Guest.dr[1];
    896896}
    897897
    898898CPUMDECL(uint64_t) CPUMGetGuestDR2(PVM pVM)
    899899{
    900     return pVM->cpum.s.Guest.dr2;
     900    return pVM->cpum.s.Guest.dr[2];
    901901}
    902902
    903903CPUMDECL(uint64_t) CPUMGetGuestDR3(PVM pVM)
    904904{
    905     return pVM->cpum.s.Guest.dr3;
     905    return pVM->cpum.s.Guest.dr[3];
    906906}
    907907
    908908CPUMDECL(uint64_t) CPUMGetGuestDR6(PVM pVM)
    909909{
    910     return pVM->cpum.s.Guest.dr6;
     910    return pVM->cpum.s.Guest.dr[6];
    911911}
    912912
    913913CPUMDECL(uint64_t) CPUMGetGuestDR7(PVM pVM)
    914914{
    915     return pVM->cpum.s.Guest.dr7;
    916 }
    917 
    918 /** @todo drx should be an array */
     915    return pVM->cpum.s.Guest.dr[7];
     916}
     917
    919918CPUMDECL(int) CPUMGetGuestDRx(PVM pVM, uint32_t iReg, uint64_t *pValue)
    920919{
    921     switch (iReg)
    922     {
    923         case USE_REG_DR0:
    924             *pValue = pVM->cpum.s.Guest.dr0;
    925             break;
    926         case USE_REG_DR1:
    927             *pValue = pVM->cpum.s.Guest.dr1;
    928             break;
    929         case USE_REG_DR2:
    930             *pValue = pVM->cpum.s.Guest.dr2;
    931             break;
    932         case USE_REG_DR3:
    933             *pValue = pVM->cpum.s.Guest.dr3;
    934             break;
    935         case USE_REG_DR4:
    936         case USE_REG_DR6:
    937             *pValue = pVM->cpum.s.Guest.dr6;
    938             break;
    939         case USE_REG_DR5:
    940         case USE_REG_DR7:
    941             *pValue = pVM->cpum.s.Guest.dr7;
    942             break;
    943 
    944         default:
    945             return VERR_INVALID_PARAMETER;
    946     }
     920    AssertReturn(iReg <= USE_REG_DR7, VERR_INVALID_PARAMETER);
     921    *pValue = pVM->cpum.s.Guest.dr[iReg];
    947922    return VINF_SUCCESS;
    948923}
     
    13111286CPUMDECL(int) CPUMSetGuestDR0(PVM pVM, uint64_t uDr0)
    13121287{
    1313     pVM->cpum.s.Guest.dr0 = uDr0;
     1288    pVM->cpum.s.Guest.dr[0] = uDr0;
    13141289    return CPUMRecalcHyperDRx(pVM);
    13151290}
     
    13171292CPUMDECL(int) CPUMSetGuestDR1(PVM pVM, uint64_t uDr1)
    13181293{
    1319     pVM->cpum.s.Guest.dr1 = uDr1;
     1294    pVM->cpum.s.Guest.dr[1] = uDr1;
    13201295    return CPUMRecalcHyperDRx(pVM);
    13211296}
     
    13231298CPUMDECL(int) CPUMSetGuestDR2(PVM pVM, uint64_t uDr2)
    13241299{
    1325     pVM->cpum.s.Guest.dr2 = uDr2;
     1300    pVM->cpum.s.Guest.dr[2] = uDr2;
    13261301    return CPUMRecalcHyperDRx(pVM);
    13271302}
     
    13291304CPUMDECL(int) CPUMSetGuestDR3(PVM pVM, uint64_t uDr3)
    13301305{
    1331     pVM->cpum.s.Guest.dr3 = uDr3;
     1306    pVM->cpum.s.Guest.dr[3] = uDr3;
    13321307    return CPUMRecalcHyperDRx(pVM);
    13331308}
     
    13351310CPUMDECL(int) CPUMSetGuestDR6(PVM pVM, uint64_t uDr6)
    13361311{
    1337     pVM->cpum.s.Guest.dr6 = uDr6;
     1312    pVM->cpum.s.Guest.dr[6] = uDr6;
    13381313    return CPUMRecalcHyperDRx(pVM);
    13391314}
     
    13411316CPUMDECL(int) CPUMSetGuestDR7(PVM pVM, uint64_t uDr7)
    13421317{
    1343     pVM->cpum.s.Guest.dr7 = uDr7;
     1318    pVM->cpum.s.Guest.dr[7] = uDr7;
    13441319    return CPUMRecalcHyperDRx(pVM);
    13451320}
    13461321
    1347 /** @todo drx should be an array */
    13481322CPUMDECL(int) CPUMSetGuestDRx(PVM pVM, uint32_t iReg, uint64_t Value)
    13491323{
    1350     switch (iReg)
    1351     {
    1352         case USE_REG_DR0:
    1353             pVM->cpum.s.Guest.dr0 = Value;
    1354             break;
    1355         case USE_REG_DR1:
    1356             pVM->cpum.s.Guest.dr1 = Value;
    1357             break;
    1358         case USE_REG_DR2:
    1359             pVM->cpum.s.Guest.dr2 = Value;
    1360             break;
    1361         case USE_REG_DR3:
    1362             pVM->cpum.s.Guest.dr3 = Value;
    1363             break;
    1364         case USE_REG_DR4:
    1365         case USE_REG_DR6:
    1366             pVM->cpum.s.Guest.dr6 = Value;
    1367             break;
    1368         case USE_REG_DR5:
    1369         case USE_REG_DR7:
    1370             pVM->cpum.s.Guest.dr7 = Value;
    1371             break;
    1372 
    1373         default:
    1374             return VERR_INVALID_PARAMETER;
    1375     }
     1324    AssertReturn(iReg <= USE_REG_DR7, VERR_INVALID_PARAMETER);
     1325    pVM->cpum.s.Guest.dr[iReg] = Value;
    13761326    return CPUMRecalcHyperDRx(pVM);
    13771327}
     
    14251375        }
    14261376        else
    1427             uNewDr0 = pVM->cpum.s.Hyper.dr0;
     1377            uNewDr0 = pVM->cpum.s.Hyper.dr[0];
    14281378
    14291379        /* bp 1 */
     
    14401390        }
    14411391        else
    1442             uNewDr1 = pVM->cpum.s.Hyper.dr1;
     1392            uNewDr1 = pVM->cpum.s.Hyper.dr[1];
    14431393
    14441394        /* bp 2 */
     
    14551405        }
    14561406        else
    1457             uNewDr2 = pVM->cpum.s.Hyper.dr2;
     1407            uNewDr2 = pVM->cpum.s.Hyper.dr[2];
    14581408
    14591409        /* bp 3 */
     
    14701420        }
    14711421        else
    1472             uNewDr3 = pVM->cpum.s.Hyper.dr3;
     1422            uNewDr3 = pVM->cpum.s.Hyper.dr[3];
    14731423
    14741424        /*
     
    14821432#endif
    14831433        pVM->cpum.s.fUseFlags |= CPUM_USE_DEBUG_REGS;
    1484         if (uNewDr3 != pVM->cpum.s.Hyper.dr3)
     1434        if (uNewDr3 != pVM->cpum.s.Hyper.dr[3])
    14851435            CPUMSetHyperDR3(pVM, uNewDr3);
    1486         if (uNewDr2 != pVM->cpum.s.Hyper.dr2)
     1436        if (uNewDr2 != pVM->cpum.s.Hyper.dr[2])
    14871437            CPUMSetHyperDR2(pVM, uNewDr2);
    1488         if (uNewDr1 != pVM->cpum.s.Hyper.dr1)
     1438        if (uNewDr1 != pVM->cpum.s.Hyper.dr[1])
    14891439            CPUMSetHyperDR1(pVM, uNewDr1);
    1490         if (uNewDr0 != pVM->cpum.s.Hyper.dr0)
     1440        if (uNewDr0 != pVM->cpum.s.Hyper.dr[0])
    14911441            CPUMSetHyperDR0(pVM, uNewDr0);
    1492         if (uNewDr7 != pVM->cpum.s.Hyper.dr7)
     1442        if (uNewDr7 != pVM->cpum.s.Hyper.dr[7])
    14931443            CPUMSetHyperDR7(pVM, uNewDr7);
    14941444    }
     
    15041454    }
    15051455    Log2(("CPUMRecalcHyperDRx: fUseFlags=%#x %RGr %RGr %RGr %RGr  %RGr %RGr\n",
    1506           pVM->cpum.s.fUseFlags, pVM->cpum.s.Hyper.dr0, pVM->cpum.s.Hyper.dr1,
    1507          pVM->cpum.s.Hyper.dr2, pVM->cpum.s.Hyper.dr3, pVM->cpum.s.Hyper.dr6,
    1508          pVM->cpum.s.Hyper.dr7));
     1456          pVM->cpum.s.fUseFlags, pVM->cpum.s.Hyper.dr[0], pVM->cpum.s.Hyper.dr[1],
     1457         pVM->cpum.s.Hyper.dr[2], pVM->cpum.s.Hyper.dr[3], pVM->cpum.s.Hyper.dr[6],
     1458         pVM->cpum.s.Hyper.dr[7]));
    15091459
    15101460    return VINF_SUCCESS;
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