Changeset 12600 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Sep 19, 2008 1:07:44 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 36853
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
r12578 r12600 182 182 CPUMDECL(void) CPUMSetHyperDR0(PVM pVM, RTGCUINTREG uDr0) 183 183 { 184 pVM->cpum.s.Hyper.dr 0= uDr0;184 pVM->cpum.s.Hyper.dr[0] = uDr0; 185 185 /** @todo in GC we must load it! */ 186 186 } … … 188 188 CPUMDECL(void) CPUMSetHyperDR1(PVM pVM, RTGCUINTREG uDr1) 189 189 { 190 pVM->cpum.s.Hyper.dr 1= uDr1;190 pVM->cpum.s.Hyper.dr[1] = uDr1; 191 191 /** @todo in GC we must load it! */ 192 192 } … … 194 194 CPUMDECL(void) CPUMSetHyperDR2(PVM pVM, RTGCUINTREG uDr2) 195 195 { 196 pVM->cpum.s.Hyper.dr 2= uDr2;196 pVM->cpum.s.Hyper.dr[2] = uDr2; 197 197 /** @todo in GC we must load it! */ 198 198 } … … 200 200 CPUMDECL(void) CPUMSetHyperDR3(PVM pVM, RTGCUINTREG uDr3) 201 201 { 202 pVM->cpum.s.Hyper.dr 3= uDr3;202 pVM->cpum.s.Hyper.dr[3] = uDr3; 203 203 /** @todo in GC we must load it! */ 204 204 } … … 206 206 CPUMDECL(void) CPUMSetHyperDR6(PVM pVM, RTGCUINTREG uDr6) 207 207 { 208 pVM->cpum.s.Hyper.dr 6= uDr6;208 pVM->cpum.s.Hyper.dr[6] = uDr6; 209 209 /** @todo in GC we must load it! */ 210 210 } … … 212 212 CPUMDECL(void) CPUMSetHyperDR7(PVM pVM, RTGCUINTREG uDr7) 213 213 { 214 pVM->cpum.s.Hyper.dr 7= uDr7;214 pVM->cpum.s.Hyper.dr[7] = uDr7; 215 215 /** @todo in GC we must load it! */ 216 216 } … … 347 347 CPUMDECL(RTGCUINTREG) CPUMGetHyperDR0(PVM pVM) 348 348 { 349 return pVM->cpum.s.Hyper.dr 0;349 return pVM->cpum.s.Hyper.dr[0]; 350 350 } 351 351 352 352 CPUMDECL(RTGCUINTREG) CPUMGetHyperDR1(PVM pVM) 353 353 { 354 return pVM->cpum.s.Hyper.dr 1;354 return pVM->cpum.s.Hyper.dr[1]; 355 355 } 356 356 357 357 CPUMDECL(RTGCUINTREG) CPUMGetHyperDR2(PVM pVM) 358 358 { 359 return pVM->cpum.s.Hyper.dr 2;359 return pVM->cpum.s.Hyper.dr[2]; 360 360 } 361 361 362 362 CPUMDECL(RTGCUINTREG) CPUMGetHyperDR3(PVM pVM) 363 363 { 364 return pVM->cpum.s.Hyper.dr 3;364 return pVM->cpum.s.Hyper.dr[3]; 365 365 } 366 366 367 367 CPUMDECL(RTGCUINTREG) CPUMGetHyperDR6(PVM pVM) 368 368 { 369 return pVM->cpum.s.Hyper.dr 6;369 return pVM->cpum.s.Hyper.dr[6]; 370 370 } 371 371 372 372 CPUMDECL(RTGCUINTREG) CPUMGetHyperDR7(PVM pVM) 373 373 { 374 return pVM->cpum.s.Hyper.dr 7;374 return pVM->cpum.s.Hyper.dr[7]; 375 375 } 376 376 … … 888 888 CPUMDECL(uint64_t) CPUMGetGuestDR0(PVM pVM) 889 889 { 890 return pVM->cpum.s.Guest.dr 0;890 return pVM->cpum.s.Guest.dr[0]; 891 891 } 892 892 893 893 CPUMDECL(uint64_t) CPUMGetGuestDR1(PVM pVM) 894 894 { 895 return pVM->cpum.s.Guest.dr 1;895 return pVM->cpum.s.Guest.dr[1]; 896 896 } 897 897 898 898 CPUMDECL(uint64_t) CPUMGetGuestDR2(PVM pVM) 899 899 { 900 return pVM->cpum.s.Guest.dr 2;900 return pVM->cpum.s.Guest.dr[2]; 901 901 } 902 902 903 903 CPUMDECL(uint64_t) CPUMGetGuestDR3(PVM pVM) 904 904 { 905 return pVM->cpum.s.Guest.dr 3;905 return pVM->cpum.s.Guest.dr[3]; 906 906 } 907 907 908 908 CPUMDECL(uint64_t) CPUMGetGuestDR6(PVM pVM) 909 909 { 910 return pVM->cpum.s.Guest.dr 6;910 return pVM->cpum.s.Guest.dr[6]; 911 911 } 912 912 913 913 CPUMDECL(uint64_t) CPUMGetGuestDR7(PVM pVM) 914 914 { 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 919 918 CPUMDECL(int) CPUMGetGuestDRx(PVM pVM, uint32_t iReg, uint64_t *pValue) 920 919 { 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]; 947 922 return VINF_SUCCESS; 948 923 } … … 1311 1286 CPUMDECL(int) CPUMSetGuestDR0(PVM pVM, uint64_t uDr0) 1312 1287 { 1313 pVM->cpum.s.Guest.dr 0= uDr0;1288 pVM->cpum.s.Guest.dr[0] = uDr0; 1314 1289 return CPUMRecalcHyperDRx(pVM); 1315 1290 } … … 1317 1292 CPUMDECL(int) CPUMSetGuestDR1(PVM pVM, uint64_t uDr1) 1318 1293 { 1319 pVM->cpum.s.Guest.dr 1= uDr1;1294 pVM->cpum.s.Guest.dr[1] = uDr1; 1320 1295 return CPUMRecalcHyperDRx(pVM); 1321 1296 } … … 1323 1298 CPUMDECL(int) CPUMSetGuestDR2(PVM pVM, uint64_t uDr2) 1324 1299 { 1325 pVM->cpum.s.Guest.dr 2= uDr2;1300 pVM->cpum.s.Guest.dr[2] = uDr2; 1326 1301 return CPUMRecalcHyperDRx(pVM); 1327 1302 } … … 1329 1304 CPUMDECL(int) CPUMSetGuestDR3(PVM pVM, uint64_t uDr3) 1330 1305 { 1331 pVM->cpum.s.Guest.dr 3= uDr3;1306 pVM->cpum.s.Guest.dr[3] = uDr3; 1332 1307 return CPUMRecalcHyperDRx(pVM); 1333 1308 } … … 1335 1310 CPUMDECL(int) CPUMSetGuestDR6(PVM pVM, uint64_t uDr6) 1336 1311 { 1337 pVM->cpum.s.Guest.dr 6= uDr6;1312 pVM->cpum.s.Guest.dr[6] = uDr6; 1338 1313 return CPUMRecalcHyperDRx(pVM); 1339 1314 } … … 1341 1316 CPUMDECL(int) CPUMSetGuestDR7(PVM pVM, uint64_t uDr7) 1342 1317 { 1343 pVM->cpum.s.Guest.dr 7= uDr7;1318 pVM->cpum.s.Guest.dr[7] = uDr7; 1344 1319 return CPUMRecalcHyperDRx(pVM); 1345 1320 } 1346 1321 1347 /** @todo drx should be an array */1348 1322 CPUMDECL(int) CPUMSetGuestDRx(PVM pVM, uint32_t iReg, uint64_t Value) 1349 1323 { 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; 1376 1326 return CPUMRecalcHyperDRx(pVM); 1377 1327 } … … 1425 1375 } 1426 1376 else 1427 uNewDr0 = pVM->cpum.s.Hyper.dr 0;1377 uNewDr0 = pVM->cpum.s.Hyper.dr[0]; 1428 1378 1429 1379 /* bp 1 */ … … 1440 1390 } 1441 1391 else 1442 uNewDr1 = pVM->cpum.s.Hyper.dr 1;1392 uNewDr1 = pVM->cpum.s.Hyper.dr[1]; 1443 1393 1444 1394 /* bp 2 */ … … 1455 1405 } 1456 1406 else 1457 uNewDr2 = pVM->cpum.s.Hyper.dr 2;1407 uNewDr2 = pVM->cpum.s.Hyper.dr[2]; 1458 1408 1459 1409 /* bp 3 */ … … 1470 1420 } 1471 1421 else 1472 uNewDr3 = pVM->cpum.s.Hyper.dr 3;1422 uNewDr3 = pVM->cpum.s.Hyper.dr[3]; 1473 1423 1474 1424 /* … … 1482 1432 #endif 1483 1433 pVM->cpum.s.fUseFlags |= CPUM_USE_DEBUG_REGS; 1484 if (uNewDr3 != pVM->cpum.s.Hyper.dr 3)1434 if (uNewDr3 != pVM->cpum.s.Hyper.dr[3]) 1485 1435 CPUMSetHyperDR3(pVM, uNewDr3); 1486 if (uNewDr2 != pVM->cpum.s.Hyper.dr 2)1436 if (uNewDr2 != pVM->cpum.s.Hyper.dr[2]) 1487 1437 CPUMSetHyperDR2(pVM, uNewDr2); 1488 if (uNewDr1 != pVM->cpum.s.Hyper.dr 1)1438 if (uNewDr1 != pVM->cpum.s.Hyper.dr[1]) 1489 1439 CPUMSetHyperDR1(pVM, uNewDr1); 1490 if (uNewDr0 != pVM->cpum.s.Hyper.dr 0)1440 if (uNewDr0 != pVM->cpum.s.Hyper.dr[0]) 1491 1441 CPUMSetHyperDR0(pVM, uNewDr0); 1492 if (uNewDr7 != pVM->cpum.s.Hyper.dr 7)1442 if (uNewDr7 != pVM->cpum.s.Hyper.dr[7]) 1493 1443 CPUMSetHyperDR7(pVM, uNewDr7); 1494 1444 } … … 1504 1454 } 1505 1455 Log2(("CPUMRecalcHyperDRx: fUseFlags=%#x %RGr %RGr %RGr %RGr %RGr %RGr\n", 1506 pVM->cpum.s.fUseFlags, pVM->cpum.s.Hyper.dr 0, pVM->cpum.s.Hyper.dr1,1507 pVM->cpum.s.Hyper.dr 2, pVM->cpum.s.Hyper.dr3, pVM->cpum.s.Hyper.dr6,1508 pVM->cpum.s.Hyper.dr 7));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])); 1509 1459 1510 1460 return VINF_SUCCESS;
Note:
See TracChangeset
for help on using the changeset viewer.