VirtualBox

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


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.

Location:
trunk/src/VBox/VMM/PATM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PATM/PATMPatch.cpp

    r12285 r12600  
    11901190    pPB[1] = MAKE_MODRM(mod, reg, rm);
    11911191
    1192     /// @todo: make this an array in the context structure
    1193     switch (dbgreg)
    1194     {
    1195     case USE_REG_DR0:
    1196         offset = RT_OFFSETOF(CPUMCTX, dr0);
    1197         break;
    1198     case USE_REG_DR1:
    1199         offset = RT_OFFSETOF(CPUMCTX, dr1);
    1200         break;
    1201     case USE_REG_DR2:
    1202         offset = RT_OFFSETOF(CPUMCTX, dr2);
    1203         break;
    1204     case USE_REG_DR3:
    1205         offset = RT_OFFSETOF(CPUMCTX, dr3);
    1206         break;
    1207     case USE_REG_DR4:
    1208         offset = RT_OFFSETOF(CPUMCTX, dr4);
    1209         break;
    1210     case USE_REG_DR5:
    1211         offset = RT_OFFSETOF(CPUMCTX, dr5);
    1212         break;
    1213     case USE_REG_DR6:
    1214         offset = RT_OFFSETOF(CPUMCTX, dr6);
    1215         break;
    1216     case USE_REG_DR7:
    1217         offset = RT_OFFSETOF(CPUMCTX, dr7);
    1218         break;
    1219     default: /* Shut up compiler warning. */
    1220         AssertFailed();
    1221         offset = 0;
    1222         break;
    1223     }
     1192    AssertReturn(dbgreg <= USE_REG_DR7, VERR_INVALID_PARAMETER);
     1193    offset = RT_OFFSETOF(CPUMCTX, dr[dbgreg]);
     1194
    12241195    *(RTRCPTR *)&pPB[2] = pVM->patm.s.pCPUMCtxGC + offset;
    12251196    patmPatchAddReloc32(pVM, pPatch, &pPB[2], FIXUP_ABSOLUTE);
  • trunk/src/VBox/VMM/PATM/PATMSSM.cpp

    r11985 r12600  
    753753                if (uCPUMOffset == (unsigned)RT_OFFSETOF(CPUMCTX_VER1_6, dr0))
    754754                {
    755                     LogFlow(("Changing dr0 offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr0)));
    756                     *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr0);
     755                    LogFlow(("Changing dr[0] offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr[0])));
     756                    *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr[0]);
    757757                }
    758758                else if (uCPUMOffset == (unsigned)RT_OFFSETOF(CPUMCTX_VER1_6, dr1))
    759759                {
    760                     LogFlow(("Changing dr1 offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr1)));
    761                     *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr1);
     760                    LogFlow(("Changing dr[1] offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr[1])));
     761                    *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr[1]);
    762762                }
    763763                else if (uCPUMOffset == (unsigned)RT_OFFSETOF(CPUMCTX_VER1_6, dr2))
    764764                {
    765                     LogFlow(("Changing dr2 offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr2)));
    766                     *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr2);
     765                    LogFlow(("Changing dr[2] offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr[2])));
     766                    *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr[2]);
    767767                }
    768768                else if (uCPUMOffset == (unsigned)RT_OFFSETOF(CPUMCTX_VER1_6, dr3))
    769769                {
    770                     LogFlow(("Changing dr3 offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr3)));
    771                     *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr3);
     770                    LogFlow(("Changing dr[3] offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr[3])));
     771                    *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr[3]);
    772772                }
    773773                else if (uCPUMOffset == (unsigned)RT_OFFSETOF(CPUMCTX_VER1_6, dr4))
    774774                {
    775                     LogFlow(("Changing dr4 offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr4)));
    776                     *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr4);
     775                    LogFlow(("Changing dr[4] offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr[4])));
     776                    *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr[4]);
    777777                }
    778778                else if (uCPUMOffset == (unsigned)RT_OFFSETOF(CPUMCTX_VER1_6, dr5))
    779779                {
    780                     LogFlow(("Changing dr5 offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr5)));
    781                     *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr5);
     780                    LogFlow(("Changing dr[5] offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr[5])));
     781                    *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr[5]);
    782782                }
    783783                else if (uCPUMOffset == (unsigned)RT_OFFSETOF(CPUMCTX_VER1_6, dr6))
    784784                {
    785                     LogFlow(("Changing dr6 offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr6)));
    786                     *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr6);
     785                    LogFlow(("Changing dr[6] offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr[6])));
     786                    *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr[6]);
    787787                }
    788788                else if (uCPUMOffset == (unsigned)RT_OFFSETOF(CPUMCTX_VER1_6, dr7))
    789789                {
    790                     LogFlow(("Changing dr7 offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr7)));
    791                     *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr7);
     790                    LogFlow(("Changing dr[7] offset from %x to %x\n", uCPUMOffset, RT_OFFSETOF(CPUMCTX, dr[7])));
     791                    *pFixup = pVM->patm.s.pCPUMCtxGC + RT_OFFSETOF(CPUMCTX, dr[7]);
    792792                }
    793793                else if (uCPUMOffset == (unsigned)RT_OFFSETOF(CPUMCTX_VER1_6, cr0))
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