Changeset 41675 in vbox
- Timestamp:
- Jun 12, 2012 8:27:37 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78482
- Location:
- trunk
- Files:
-
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/include/VBox/dis.h ¶
r41674 r41675 24 24 */ 25 25 26 #ifndef ___VBox_dis asm_h27 #define ___VBox_dis asm_h26 #ifndef ___VBox_dis_h 27 #define ___VBox_dis_h 28 28 29 29 #include <VBox/cdefs.h> … … 40 40 typedef enum DISCPUMODE 41 41 { 42 CPUMODE_INVALID = 0,43 CPUMODE_16BIT,44 CPUMODE_32BIT,45 CPUMODE_64BIT,42 DISCPUMODE_INVALID = 0, 43 DISCPUMODE_16BIT, 44 DISCPUMODE_32BIT, 45 DISCPUMODE_64BIT, 46 46 /** hack forcing the size of the enum to 32-bits. */ 47 CPUMODE_MAKE_32BIT_HACK = 0x7fffffff47 DISCPUMODE_MAKE_32BIT_HACK = 0x7fffffff 48 48 } DISCPUMODE; 49 49 … … 51 51 * @{ 52 52 */ 53 #define PREFIX_NONE 053 #define DISPREFIX_NONE UINT8_C(0x00) 54 54 /** non-default address size. */ 55 #define PREFIX_ADDRSIZE UINT8_C(0x00)55 #define DISPREFIX_ADDRSIZE UINT8_C(0x01) 56 56 /** non-default operand size. */ 57 #define PREFIX_OPSIZE UINT8_C(0x01)57 #define DISPREFIX_OPSIZE UINT8_C(0x02) 58 58 /** lock prefix. */ 59 #define PREFIX_LOCK UINT8_C(0x02)59 #define DISPREFIX_LOCK UINT8_C(0x04) 60 60 /** segment prefix. */ 61 #define PREFIX_SEG UINT8_C(0x04)61 #define DISPREFIX_SEG UINT8_C(0x08) 62 62 /** rep(e) prefix (not a prefix, but we'll treat is as one). */ 63 #define PREFIX_REP UINT8_C(0x08)63 #define DISPREFIX_REP UINT8_C(0x10) 64 64 /** rep(e) prefix (not a prefix, but we'll treat is as one). */ 65 #define PREFIX_REPNE UINT8_C(0x10)65 #define DISPREFIX_REPNE UINT8_C(0x20) 66 66 /** REX prefix (64 bits) */ 67 #define PREFIX_REX UINT8_C(0x20)67 #define DISPREFIX_REX UINT8_C(0x40) 68 68 /** @} */ 69 69 -
TabularUnified trunk/src/VBox/Devices/PC/BIOS-new/MakeDebianBiosAssembly.cpp ¶
r41674 r41675 968 968 unsigned cbInstr; 969 969 DISCPUSTATE CpuState; 970 int rc = DISInstrWithReader(uFlatAddr, fIs16Bit ? CPUMODE_16BIT :CPUMODE_32BIT,970 int rc = DISInstrWithReader(uFlatAddr, fIs16Bit ? DISCPUMODE_16BIT : DISCPUMODE_32BIT, 971 971 disReadOpcodeBytes, NULL, &CpuState, &cbInstr); 972 972 if ( RT_SUCCESS(rc) -
TabularUnified trunk/src/VBox/Disassembler/DisasmCore.cpp ¶
r41674 r41675 216 216 * accessed without faulting. (Consider 217 217 * DISInstrWithReader if this isn't the case.) 218 * @param enmCpuMode The CPU mode. CPUMODE_32BIT, CPUMODE_16BIT, orCPUMODE_64BIT.218 * @param enmCpuMode The CPU mode. DISCPUMODE_32BIT, DISCPUMODE_16BIT, or DISCPUMODE_64BIT. 219 219 * @param pfnReadBytes Callback for reading instruction bytes. 220 220 * @param pvUser User argument for the instruction reader. (Ends up in apvUserData[0].) … … 238 238 * @param uInstrAddr Address of the instruction to decode. What this means 239 239 * is left to the pfnReadBytes function. 240 * @param enmCpuMode The CPU mode. CPUMODE_32BIT, CPUMODE_16BIT, orCPUMODE_64BIT.240 * @param enmCpuMode The CPU mode. DISCPUMODE_32BIT, DISCPUMODE_16BIT, or DISCPUMODE_64BIT. 241 241 * @param pfnReadBytes Callback for reading instruction bytes. 242 242 * @param pvUser User argument for the instruction reader. (Ends up in apvUserData[0].) … … 259 259 * @param uInstrAddr Address of the instruction to decode. What this means 260 260 * is left to the pfnReadBytes function. 261 * @param enmCpuMode The CPU mode. CPUMODE_32BIT, CPUMODE_16BIT, orCPUMODE_64BIT.261 * @param enmCpuMode The CPU mode. DISCPUMODE_32BIT, DISCPUMODE_16BIT, or DISCPUMODE_64BIT. 262 262 * @param pfnReadBytes Callback for reading instruction bytes. 263 263 * @param fFilter Instruction type filter. … … 284 284 285 285 pCpu->mode = enmCpuMode; 286 if (enmCpuMode == CPUMODE_64BIT)286 if (enmCpuMode == DISCPUMODE_64BIT) 287 287 { 288 288 paOneByteMap = g_aOneByteMapX64; 289 pCpu->addrmode = CPUMODE_64BIT;290 pCpu->opmode = CPUMODE_32BIT;289 pCpu->addrmode = DISCPUMODE_64BIT; 290 pCpu->opmode = DISCPUMODE_32BIT; 291 291 } 292 292 else … … 296 296 pCpu->opmode = enmCpuMode; 297 297 } 298 pCpu->prefix = PREFIX_NONE;298 pCpu->prefix = DISPREFIX_NONE; 299 299 pCpu->enmPrefixSeg = DIS_SELREG_DS; 300 300 pCpu->uInstrAddr = uInstrAddr; … … 338 338 /** Last prefix byte (for SSE2 extension tables); don't include the REX prefix */ 339 339 pCpu->lastprefix = opcode; 340 pCpu->prefix &= ~ PREFIX_REX;340 pCpu->prefix &= ~DISPREFIX_REX; 341 341 } 342 342 … … 352 352 pCpu->enmPrefixSeg = (DIS_SELREG)(paOneByteMap[codebyte].param1 - OP_PARM_REG_SEG_START); 353 353 /* Segment prefixes for CS, DS, ES and SS are ignored in long mode. */ 354 if ( pCpu->mode != CPUMODE_64BIT354 if ( pCpu->mode != DISCPUMODE_64BIT 355 355 || pCpu->enmPrefixSeg >= DIS_SELREG_FS) 356 356 { 357 pCpu->prefix |= PREFIX_SEG;357 pCpu->prefix |= DISPREFIX_SEG; 358 358 } 359 359 iByte += sizeof(uint8_t); … … 362 362 // lock prefix byte 363 363 case OP_LOCK: 364 pCpu->prefix |= PREFIX_LOCK;364 pCpu->prefix |= DISPREFIX_LOCK; 365 365 iByte += sizeof(uint8_t); 366 366 continue; //fetch the next byte … … 368 368 // address size override prefix byte 369 369 case OP_ADDRSIZE: 370 pCpu->prefix |= PREFIX_ADDRSIZE;371 if (pCpu->mode == CPUMODE_16BIT)372 pCpu->addrmode = CPUMODE_32BIT;370 pCpu->prefix |= DISPREFIX_ADDRSIZE; 371 if (pCpu->mode == DISCPUMODE_16BIT) 372 pCpu->addrmode = DISCPUMODE_32BIT; 373 373 else 374 if (pCpu->mode == CPUMODE_32BIT)375 pCpu->addrmode = CPUMODE_16BIT;374 if (pCpu->mode == DISCPUMODE_32BIT) 375 pCpu->addrmode = DISCPUMODE_16BIT; 376 376 else 377 pCpu->addrmode = CPUMODE_32BIT; /* 64 bits */377 pCpu->addrmode = DISCPUMODE_32BIT; /* 64 bits */ 378 378 379 379 iByte += sizeof(uint8_t); … … 382 382 // operand size override prefix byte 383 383 case OP_OPSIZE: 384 pCpu->prefix |= PREFIX_OPSIZE;385 if (pCpu->mode == CPUMODE_16BIT)386 pCpu->opmode = CPUMODE_32BIT;384 pCpu->prefix |= DISPREFIX_OPSIZE; 385 if (pCpu->mode == DISCPUMODE_16BIT) 386 pCpu->opmode = DISCPUMODE_32BIT; 387 387 else 388 pCpu->opmode = CPUMODE_16BIT; /* for 32 and 64 bits mode (there is no 32 bits operand size override prefix) */388 pCpu->opmode = DISCPUMODE_16BIT; /* for 32 and 64 bits mode (there is no 32 bits operand size override prefix) */ 389 389 390 390 iByte += sizeof(uint8_t); … … 393 393 // rep and repne are not really prefixes, but we'll treat them as such 394 394 case OP_REPE: 395 pCpu->prefix |= PREFIX_REP;395 pCpu->prefix |= DISPREFIX_REP; 396 396 iByte += sizeof(uint8_t); 397 397 continue; //fetch the next byte 398 398 399 399 case OP_REPNE: 400 pCpu->prefix |= PREFIX_REPNE;400 pCpu->prefix |= DISPREFIX_REPNE; 401 401 iByte += sizeof(uint8_t); 402 402 continue; //fetch the next byte 403 403 404 404 case OP_REX: 405 Assert(pCpu->mode == CPUMODE_64BIT);405 Assert(pCpu->mode == DISCPUMODE_64BIT); 406 406 /* REX prefix byte */ 407 pCpu->prefix |= PREFIX_REX;407 pCpu->prefix |= DISPREFIX_REX; 408 408 pCpu->prefix_rex = PREFIX_REX_OP_2_FLAGS(paOneByteMap[codebyte].param1); 409 409 iByte += sizeof(uint8_t); 410 410 411 411 if (pCpu->prefix_rex & PREFIX_REX_FLAGS_W) 412 pCpu->opmode = CPUMODE_64BIT; /* overrides size prefix byte */412 pCpu->opmode = DISCPUMODE_64BIT; /* overrides size prefix byte */ 413 413 continue; //fetch the next byte 414 414 } … … 430 430 *pcbInstr = iByte; 431 431 432 if (pCpu->prefix & PREFIX_LOCK)432 if (pCpu->prefix & DISPREFIX_LOCK) 433 433 disValidateLockSequence(pCpu); 434 434 … … 471 471 472 472 /* Correct the operand size if the instruction is marked as forced or default 64 bits */ 473 if (pCpu->mode == CPUMODE_64BIT)473 if (pCpu->mode == DISCPUMODE_64BIT) 474 474 { 475 475 if (pOp->optype & OPTYPE_FORCED_64_OP_SIZE) 476 pCpu->opmode = CPUMODE_64BIT;476 pCpu->opmode = DISCPUMODE_64BIT; 477 477 else 478 478 if ( (pOp->optype & OPTYPE_DEFAULT_64_OP_SIZE) 479 && !(pCpu->prefix & PREFIX_OPSIZE))480 pCpu->opmode = CPUMODE_64BIT;479 && !(pCpu->prefix & DISPREFIX_OPSIZE)) 480 pCpu->opmode = DISCPUMODE_64BIT; 481 481 } 482 482 else … … 484 484 { 485 485 /* Forced 32 bits operand size for certain instructions (mov crx, mov drx). */ 486 Assert(pCpu->mode != CPUMODE_64BIT);487 pCpu->opmode = CPUMODE_32BIT;486 Assert(pCpu->mode != DISCPUMODE_64BIT); 487 pCpu->opmode = DISCPUMODE_32BIT; 488 488 } 489 489 … … 549 549 550 550 /* Correct the operand size if the instruction is marked as forced or default 64 bits */ 551 if (pCpu->mode == CPUMODE_64BIT)551 if (pCpu->mode == DISCPUMODE_64BIT) 552 552 { 553 553 /* Note: redundant, but just in case this ever changes */ 554 554 if (fpop->optype & OPTYPE_FORCED_64_OP_SIZE) 555 pCpu->opmode = CPUMODE_64BIT;555 pCpu->opmode = DISCPUMODE_64BIT; 556 556 else 557 557 if ( (fpop->optype & OPTYPE_DEFAULT_64_OP_SIZE) 558 && !(pCpu->prefix & PREFIX_OPSIZE))559 pCpu->opmode = CPUMODE_64BIT;558 && !(pCpu->prefix & DISPREFIX_OPSIZE)) 559 pCpu->opmode = DISCPUMODE_64BIT; 560 560 } 561 561 … … 601 601 index = pCpu->SIB.Bits.Index; 602 602 603 if (pCpu->addrmode == CPUMODE_32BIT)603 if (pCpu->addrmode == DISCPUMODE_32BIT) 604 604 { 605 605 ppszSIBIndexReg = szSIBIndexReg; … … 629 629 { 630 630 // [scaled index] + disp32 631 if (pCpu->addrmode == CPUMODE_32BIT)631 if (pCpu->addrmode == DISCPUMODE_32BIT) 632 632 { 633 633 pParam->flags |= USE_DISPLACEMENT32; … … 662 662 pCpu->SIB.Bits.Scale = SIB_SCALE(SIB); 663 663 664 if (pCpu->prefix & PREFIX_REX)664 if (pCpu->prefix & DISPREFIX_REX) 665 665 { 666 666 /* REX.B extends the Base field if not scaled index + disp32 */ … … 695 695 pCpu->SIB.Bits.Scale = SIB_SCALE(SIB); 696 696 697 if (pCpu->prefix & PREFIX_REX)697 if (pCpu->prefix & DISPREFIX_REX) 698 698 { 699 699 /* REX.B extends the Base field. */ … … 738 738 739 739 if ( pCpu->pCurInstr->opcode == OP_MOV_CR 740 && pCpu->opmode == CPUMODE_32BIT741 && (pCpu->prefix & PREFIX_LOCK))740 && pCpu->opmode == DISCPUMODE_32BIT 741 && (pCpu->prefix & DISPREFIX_LOCK)) 742 742 { 743 pCpu->prefix &= ~ PREFIX_LOCK;743 pCpu->prefix &= ~DISPREFIX_LOCK; 744 744 pParam->base.reg_ctrl = USE_REG_CR8; 745 745 } … … 787 787 /* @todo bound */ 788 788 789 if (pCpu->addrmode != CPUMODE_16BIT)790 { 791 Assert(pCpu->addrmode == CPUMODE_32BIT || pCpu->addrmode ==CPUMODE_64BIT);789 if (pCpu->addrmode != DISCPUMODE_16BIT) 790 { 791 Assert(pCpu->addrmode == DISCPUMODE_32BIT || pCpu->addrmode == DISCPUMODE_64BIT); 792 792 793 793 /* … … 805 805 { 806 806 /* 32 bits displacement */ 807 if (pCpu->mode != CPUMODE_64BIT)807 if (pCpu->mode != DISCPUMODE_64BIT) 808 808 { 809 809 pParam->flags |= USE_DISPLACEMENT32; … … 906 906 *pSibInc = 0; 907 907 908 if (pCpu->addrmode != CPUMODE_16BIT)909 { 910 Assert(pCpu->addrmode == CPUMODE_32BIT || pCpu->addrmode ==CPUMODE_64BIT);908 if (pCpu->addrmode != DISCPUMODE_16BIT) 909 { 910 Assert(pCpu->addrmode == DISCPUMODE_32BIT || pCpu->addrmode == DISCPUMODE_64BIT); 911 911 912 912 /* … … 989 989 *pSibInc = 0; 990 990 991 if (pCpu->addrmode != CPUMODE_16BIT)992 { 993 Assert(pCpu->addrmode == CPUMODE_32BIT || pCpu->addrmode ==CPUMODE_64BIT);991 if (pCpu->addrmode != DISCPUMODE_16BIT) 992 { 993 Assert(pCpu->addrmode == DISCPUMODE_32BIT || pCpu->addrmode == DISCPUMODE_64BIT); 994 994 /* 995 995 * Note: displacements in long mode are 8 or 32 bits and sign-extended to 64 bits … … 1080 1080 pCpu->ModRM.Bits.Mod = 3; 1081 1081 1082 if (pCpu->prefix & PREFIX_REX)1083 { 1084 Assert(pCpu->mode == CPUMODE_64BIT);1082 if (pCpu->prefix & DISPREFIX_REX) 1083 { 1084 Assert(pCpu->mode == DISCPUMODE_64BIT); 1085 1085 1086 1086 /* REX.R extends the Reg field. */ … … 1126 1126 pCpu->ModRM.Bits.Mod = 3; 1127 1127 1128 if (pCpu->prefix & PREFIX_REX)1129 { 1130 Assert(pCpu->mode == CPUMODE_64BIT);1128 if (pCpu->prefix & DISPREFIX_REX) 1129 { 1130 Assert(pCpu->mode == DISCPUMODE_64BIT); 1131 1131 1132 1132 /* REX.R extends the Reg field. */ … … 1181 1181 { 1182 1182 NOREF(pOp); 1183 if (pCpu->opmode == CPUMODE_32BIT)1183 if (pCpu->opmode == DISCPUMODE_32BIT) 1184 1184 { 1185 1185 pParam->parval = (uint32_t)(int8_t)DISReadByte(pCpu, uCodePtr); … … 1188 1188 } 1189 1189 else 1190 if (pCpu->opmode == CPUMODE_64BIT)1190 if (pCpu->opmode == DISCPUMODE_64BIT) 1191 1191 { 1192 1192 pParam->parval = (uint64_t)(int8_t)DISReadByte(pCpu, uCodePtr); … … 1265 1265 { 1266 1266 NOREF(pOp); 1267 if (pCpu->opmode == CPUMODE_32BIT)1267 if (pCpu->opmode == DISCPUMODE_32BIT) 1268 1268 { 1269 1269 pParam->parval = DISReadDWord(pCpu, uCodePtr); … … 1273 1273 } 1274 1274 1275 if (pCpu->opmode == CPUMODE_64BIT)1275 if (pCpu->opmode == DISCPUMODE_64BIT) 1276 1276 { 1277 1277 pParam->parval = DISReadQWord(pCpu, uCodePtr); … … 1291 1291 { 1292 1292 NOREF(uCodePtr); NOREF(pOp); NOREF(pParam); 1293 if (pCpu->opmode == CPUMODE_32BIT)1293 if (pCpu->opmode == DISCPUMODE_32BIT) 1294 1294 return sizeof(uint32_t); 1295 if (pCpu->opmode == CPUMODE_64BIT)1295 if (pCpu->opmode == DISCPUMODE_64BIT) 1296 1296 return sizeof(uint64_t); 1297 1297 return sizeof(uint16_t); … … 1303 1303 NOREF(pOp); 1304 1304 /* Word for 16-bit operand-size or doubleword for 32 or 64-bit operand-size. */ 1305 if (pCpu->opmode == CPUMODE_16BIT)1305 if (pCpu->opmode == DISCPUMODE_16BIT) 1306 1306 { 1307 1307 pParam->parval = DISReadWord(pCpu, uCodePtr); … … 1312 1312 1313 1313 /* 64 bits op mode means *sign* extend to 64 bits. */ 1314 if (pCpu->opmode == CPUMODE_64BIT)1314 if (pCpu->opmode == DISCPUMODE_64BIT) 1315 1315 { 1316 1316 pParam->parval = (uint64_t)(int32_t)DISReadDWord(pCpu, uCodePtr); … … 1332 1332 NOREF(uCodePtr); NOREF(pOp); NOREF(pParam); 1333 1333 /* Word for 16-bit operand-size or doubleword for 32 or 64-bit operand-size. */ 1334 if (pCpu->opmode == CPUMODE_16BIT)1334 if (pCpu->opmode == DISCPUMODE_16BIT) 1335 1335 return sizeof(uint16_t); 1336 1336 return sizeof(uint32_t); … … 1362 1362 { 1363 1363 NOREF(pOp); 1364 if (pCpu->opmode == CPUMODE_32BIT)1364 if (pCpu->opmode == DISCPUMODE_32BIT) 1365 1365 { 1366 1366 pParam->parval = DISReadDWord(pCpu, uCodePtr); … … 1370 1370 } 1371 1371 1372 if (pCpu->opmode == CPUMODE_64BIT)1372 if (pCpu->opmode == DISCPUMODE_64BIT) 1373 1373 { 1374 1374 /* 32 bits relative immediate sign extended to 64 bits. */ … … 1390 1390 { 1391 1391 NOREF(uCodePtr); NOREF(pOp); NOREF(pParam); 1392 if (pCpu->opmode == CPUMODE_16BIT)1392 if (pCpu->opmode == DISCPUMODE_16BIT) 1393 1393 return sizeof(int16_t); 1394 1394 /* Both 32 & 64 bits mode use 32 bits relative immediates. */ … … 1399 1399 unsigned ParseImmAddr(RTUINTPTR uCodePtr, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu) 1400 1400 { 1401 if (pCpu->addrmode == CPUMODE_32BIT)1401 if (pCpu->addrmode == DISCPUMODE_32BIT) 1402 1402 { 1403 1403 if (OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p) … … 1423 1423 } 1424 1424 1425 if (pCpu->addrmode == CPUMODE_64BIT)1425 if (pCpu->addrmode == DISCPUMODE_64BIT) 1426 1426 { 1427 1427 Assert(OP_PARM_VSUBTYPE(pParam->param) != OP_PARM_p); … … 1462 1462 { 1463 1463 NOREF(uCodePtr); NOREF(pOp); 1464 if (pCpu->addrmode == CPUMODE_32BIT)1464 if (pCpu->addrmode == DISCPUMODE_32BIT) 1465 1465 { 1466 1466 if (OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p) … … 1473 1473 } 1474 1474 } 1475 if (pCpu->addrmode == CPUMODE_64BIT)1475 if (pCpu->addrmode == DISCPUMODE_64BIT) 1476 1476 { 1477 1477 Assert(OP_PARM_VSUBTYPE(pParam->param) != OP_PARM_p); … … 1495 1495 { 1496 1496 // immediate far pointers - only 16:16 or 16:32; determined by operand, *not* address size! 1497 Assert(pCpu->opmode == CPUMODE_16BIT || pCpu->opmode ==CPUMODE_32BIT);1497 Assert(pCpu->opmode == DISCPUMODE_16BIT || pCpu->opmode == DISCPUMODE_32BIT); 1498 1498 Assert(OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p); 1499 if (pCpu->opmode == CPUMODE_32BIT)1499 if (pCpu->opmode == DISCPUMODE_32BIT) 1500 1500 { 1501 1501 // far 16:32 pointer … … 1519 1519 NOREF(uCodePtr); NOREF(pOp); 1520 1520 // immediate far pointers - only 16:16 or 16:32 1521 Assert(pCpu->opmode == CPUMODE_16BIT || pCpu->opmode ==CPUMODE_32BIT);1521 Assert(pCpu->opmode == DISCPUMODE_16BIT || pCpu->opmode == DISCPUMODE_32BIT); 1522 1522 Assert(OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p); 1523 if (pCpu->opmode == CPUMODE_32BIT)1523 if (pCpu->opmode == DISCPUMODE_32BIT) 1524 1524 { 1525 1525 // far 16:32 pointer … … 1556 1556 { 1557 1557 /* 32-bit EAX..EDI registers. */ 1558 if (pCpu->opmode == CPUMODE_32BIT)1558 if (pCpu->opmode == DISCPUMODE_32BIT) 1559 1559 { 1560 1560 /* Use 32-bit registers. */ … … 1564 1564 } 1565 1565 else 1566 if (pCpu->opmode == CPUMODE_64BIT)1566 if (pCpu->opmode == DISCPUMODE_64BIT) 1567 1567 { 1568 1568 /* Use 64-bit registers. */ … … 1570 1570 if ( (pOp->optype & OPTYPE_REXB_EXTENDS_OPREG) 1571 1571 && pParam == &pCpu->param1 /* ugly assumption that it only applies to the first parameter */ 1572 && (pCpu->prefix & PREFIX_REX)1572 && (pCpu->prefix & DISPREFIX_REX) 1573 1573 && (pCpu->prefix_rex & PREFIX_REX_FLAGS)) 1574 1574 pParam->base.reg_gen += 8; … … 1610 1610 pParam->cb = 1; 1611 1611 1612 if (pCpu->opmode == CPUMODE_64BIT)1612 if (pCpu->opmode == DISCPUMODE_64BIT) 1613 1613 { 1614 1614 if ( (pOp->optype & OPTYPE_REXB_EXTENDS_OPREG) 1615 1615 && pParam == &pCpu->param1 /* ugly assumption that it only applies to the first parameter */ 1616 && (pCpu->prefix & PREFIX_REX)1616 && (pCpu->prefix & DISPREFIX_REX) 1617 1617 && (pCpu->prefix_rex & PREFIX_REX_FLAGS)) 1618 1618 pParam->base.reg_gen += 8; /* least significant byte of R8-R15 */ … … 1640 1640 1641 1641 pParam->flags |= USE_POINTER_DS_BASED; 1642 if (pCpu->addrmode == CPUMODE_32BIT)1642 if (pCpu->addrmode == DISCPUMODE_32BIT) 1643 1643 { 1644 1644 pParam->base.reg_gen = USE_REG_ESI; … … 1646 1646 } 1647 1647 else 1648 if (pCpu->addrmode == CPUMODE_64BIT)1648 if (pCpu->addrmode == DISCPUMODE_64BIT) 1649 1649 { 1650 1650 pParam->base.reg_gen = USE_REG_RSI; … … 1665 1665 1666 1666 pParam->flags |= USE_POINTER_DS_BASED; 1667 if (pCpu->addrmode == CPUMODE_32BIT)1667 if (pCpu->addrmode == DISCPUMODE_32BIT) 1668 1668 { 1669 1669 pParam->base.reg_gen = USE_REG_ESI; … … 1671 1671 } 1672 1672 else 1673 if (pCpu->addrmode == CPUMODE_64BIT)1673 if (pCpu->addrmode == DISCPUMODE_64BIT) 1674 1674 { 1675 1675 pParam->base.reg_gen = USE_REG_RSI; … … 1690 1690 1691 1691 pParam->flags |= USE_POINTER_ES_BASED; 1692 if (pCpu->addrmode == CPUMODE_32BIT)1692 if (pCpu->addrmode == DISCPUMODE_32BIT) 1693 1693 { 1694 1694 pParam->base.reg_gen = USE_REG_EDI; … … 1696 1696 } 1697 1697 else 1698 if (pCpu->addrmode == CPUMODE_64BIT)1698 if (pCpu->addrmode == DISCPUMODE_64BIT) 1699 1699 { 1700 1700 pParam->base.reg_gen = USE_REG_RDI; … … 1715 1715 1716 1716 pParam->flags |= USE_POINTER_ES_BASED; 1717 if (pCpu->addrmode == CPUMODE_32BIT)1717 if (pCpu->addrmode == DISCPUMODE_32BIT) 1718 1718 { 1719 1719 pParam->base.reg_gen = USE_REG_EDI; … … 1721 1721 } 1722 1722 else 1723 if (pCpu->addrmode == CPUMODE_64BIT)1723 if (pCpu->addrmode == DISCPUMODE_64BIT) 1724 1724 { 1725 1725 pParam->base.reg_gen = USE_REG_RDI; … … 1760 1760 1761 1761 /* Cancel prefix changes. */ 1762 pCpu->prefix &= ~ PREFIX_OPSIZE;1762 pCpu->prefix &= ~DISPREFIX_OPSIZE; 1763 1763 pCpu->opmode = pCpu->mode; 1764 1764 } … … 1772 1772 1773 1773 /* Cancel prefix changes. */ 1774 pCpu->prefix &= ~ PREFIX_REPNE;1774 pCpu->prefix &= ~DISPREFIX_REPNE; 1775 1775 } 1776 1776 break; … … 1783 1783 1784 1784 /* Cancel prefix changes. */ 1785 pCpu->prefix &= ~ PREFIX_REP;1785 pCpu->prefix &= ~DISPREFIX_REP; 1786 1786 } 1787 1787 break; … … 1827 1827 1828 1828 /* Cancel prefix changes. */ 1829 pCpu->prefix &= ~ PREFIX_OPSIZE;1829 pCpu->prefix &= ~DISPREFIX_OPSIZE; 1830 1830 pCpu->opmode = pCpu->mode; 1831 1831 } … … 1844 1844 1845 1845 /* Cancel prefix changes. */ 1846 pCpu->prefix &= ~ PREFIX_REPNE;1846 pCpu->prefix &= ~DISPREFIX_REPNE; 1847 1847 } 1848 1848 } … … 1878 1878 1879 1879 /* Cancel prefix changes. */ 1880 pCpu->prefix &= ~ PREFIX_OPSIZE;1880 pCpu->prefix &= ~DISPREFIX_OPSIZE; 1881 1881 pCpu->opmode = pCpu->mode; 1882 1882 } … … 1895 1895 NOREF(pParam); 1896 1896 1897 if (pCpu->prefix & PREFIX_REP)1897 if (pCpu->prefix & DISPREFIX_REP) 1898 1898 { 1899 1899 pOp = &g_aMapX86_NopPause[1]; /* PAUSE */ 1900 pCpu->prefix &= ~ PREFIX_REP;1900 pCpu->prefix &= ~DISPREFIX_REP; 1901 1901 } 1902 1902 else … … 2185 2185 reg = MODRM_REG(modrm); 2186 2186 2187 if (pCpu->prefix & PREFIX_OPSIZE)2187 if (pCpu->prefix & DISPREFIX_OPSIZE) 2188 2188 reg += 8; //2nd table 2189 2189 … … 2206 2206 modrm = DISReadByte(pCpu, uCodePtr); 2207 2207 reg = MODRM_REG(modrm); 2208 if (pCpu->prefix & PREFIX_OPSIZE)2208 if (pCpu->prefix & DISPREFIX_OPSIZE) 2209 2209 reg += 8; //2nd table 2210 2210 … … 2228 2228 modrm = DISReadByte(pCpu, uCodePtr); 2229 2229 reg = MODRM_REG(modrm); 2230 if (pCpu->prefix & PREFIX_OPSIZE)2230 if (pCpu->prefix & DISPREFIX_OPSIZE) 2231 2231 reg += 8; //2nd table 2232 2232 … … 2306 2306 subtype = OP_PARM_VSUBTYPE(pParam->param); 2307 2307 if (fRegAddr) 2308 subtype = (pCpu->addrmode == CPUMODE_64BIT) ? OP_PARM_q : OP_PARM_d;2308 subtype = (pCpu->addrmode == DISCPUMODE_64BIT) ? OP_PARM_q : OP_PARM_d; 2309 2309 else 2310 2310 if (subtype == OP_PARM_v || subtype == OP_PARM_NONE) … … 2312 2312 switch(pCpu->opmode) 2313 2313 { 2314 case CPUMODE_32BIT:2314 case DISCPUMODE_32BIT: 2315 2315 subtype = OP_PARM_d; 2316 2316 break; 2317 case CPUMODE_64BIT:2317 case DISCPUMODE_64BIT: 2318 2318 subtype = OP_PARM_q; 2319 2319 break; 2320 case CPUMODE_16BIT:2320 case DISCPUMODE_16BIT: 2321 2321 subtype = OP_PARM_w; 2322 2322 break; … … 2330 2330 { 2331 2331 case OP_PARM_b: 2332 Assert(idx < (pCpu->prefix & PREFIX_REX) ? 16 : 8);2332 Assert(idx < (pCpu->prefix & DISPREFIX_REX) ? 16 : 8); 2333 2333 2334 2334 /* AH, BH, CH & DH map to DIL, SIL, EBL & SPL when a rex prefix is present. */ 2335 2335 /* Intel® 64 and IA-32 Architectures Software Developers Manual: 3.4.1.1 */ 2336 if ( (pCpu->prefix & PREFIX_REX)2336 if ( (pCpu->prefix & DISPREFIX_REX) 2337 2337 && idx >= USE_REG_AH 2338 2338 && idx <= USE_REG_BH) … … 2346 2346 2347 2347 case OP_PARM_w: 2348 Assert(idx < (pCpu->prefix & PREFIX_REX) ? 16 : 8);2348 Assert(idx < (pCpu->prefix & DISPREFIX_REX) ? 16 : 8); 2349 2349 2350 2350 pParam->flags |= USE_REG_GEN16; … … 2353 2353 2354 2354 case OP_PARM_d: 2355 Assert(idx < (pCpu->prefix & PREFIX_REX) ? 16 : 8);2355 Assert(idx < (pCpu->prefix & DISPREFIX_REX) ? 16 : 8); 2356 2356 2357 2357 pParam->flags |= USE_REG_GEN32; … … 2618 2618 void disValidateLockSequence(PDISCPUSTATE pCpu) 2619 2619 { 2620 Assert(pCpu->prefix & PREFIX_LOCK);2620 Assert(pCpu->prefix & DISPREFIX_LOCK); 2621 2621 2622 2622 /* -
TabularUnified trunk/src/VBox/Disassembler/DisasmFormatYasm.cpp ¶
r41668 r41675 206 206 switch (pCpu->addrmode) 207 207 { 208 case CPUMODE_16BIT:208 case DISCPUMODE_16BIT: 209 209 { 210 210 Assert(pParam->index.reg_gen < RT_ELEMENTS(g_aszYasmRegGen16)); … … 214 214 } 215 215 216 case CPUMODE_32BIT:216 case DISCPUMODE_32BIT: 217 217 { 218 218 Assert(pParam->index.reg_gen < RT_ELEMENTS(g_aszYasmRegGen32)); … … 222 222 } 223 223 224 case CPUMODE_64BIT:224 case DISCPUMODE_64BIT: 225 225 { 226 226 Assert(pParam->index.reg_gen < RT_ELEMENTS(g_aszYasmRegGen64)); … … 392 392 if ( pOp->opcode == OP_INVALID 393 393 || ( pOp->opcode == OP_ILLUD2 394 && (pCpu->prefix & PREFIX_LOCK)))394 && (pCpu->prefix & DISPREFIX_LOCK))) 395 395 { 396 396 … … 401 401 * Prefixes 402 402 */ 403 if (pCpu->prefix & PREFIX_LOCK)403 if (pCpu->prefix & DISPREFIX_LOCK) 404 404 PUT_SZ("lock "); 405 if(pCpu->prefix & PREFIX_REP)405 if(pCpu->prefix & DISPREFIX_REP) 406 406 PUT_SZ("rep "); 407 else if(pCpu->prefix & PREFIX_REPNE)407 else if(pCpu->prefix & DISPREFIX_REPNE) 408 408 PUT_SZ("repne "); 409 409 … … 417 417 { 418 418 case OP_JECXZ: 419 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "jcxz %Jb" : pCpu->opmode ==CPUMODE_32BIT ? "jecxz %Jb" : "jrcxz %Jb";419 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "jcxz %Jb" : pCpu->opmode == DISCPUMODE_32BIT ? "jecxz %Jb" : "jrcxz %Jb"; 420 420 break; 421 421 case OP_PUSHF: 422 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "pushfw" : pCpu->opmode ==CPUMODE_32BIT ? "pushfd" : "pushfq";422 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "pushfw" : pCpu->opmode == DISCPUMODE_32BIT ? "pushfd" : "pushfq"; 423 423 break; 424 424 case OP_POPF: 425 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "popfw" : pCpu->opmode ==CPUMODE_32BIT ? "popfd" : "popfq";425 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "popfw" : pCpu->opmode == DISCPUMODE_32BIT ? "popfd" : "popfq"; 426 426 break; 427 427 case OP_PUSHA: 428 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "pushaw" : "pushad";428 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "pushaw" : "pushad"; 429 429 break; 430 430 case OP_POPA: 431 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "popaw" : "popad";431 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "popaw" : "popad"; 432 432 break; 433 433 case OP_INSB: … … 435 435 break; 436 436 case OP_INSWD: 437 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "insw" : pCpu->opmode ==CPUMODE_32BIT ? "insd" : "insq";437 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "insw" : pCpu->opmode == DISCPUMODE_32BIT ? "insd" : "insq"; 438 438 break; 439 439 case OP_OUTSB: … … 441 441 break; 442 442 case OP_OUTSWD: 443 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "outsw" : pCpu->opmode ==CPUMODE_32BIT ? "outsd" : "outsq";443 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "outsw" : pCpu->opmode == DISCPUMODE_32BIT ? "outsd" : "outsq"; 444 444 break; 445 445 case OP_MOVSB: … … 447 447 break; 448 448 case OP_MOVSWD: 449 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "movsw" : pCpu->opmode ==CPUMODE_32BIT ? "movsd" : "movsq";449 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "movsw" : pCpu->opmode == DISCPUMODE_32BIT ? "movsd" : "movsq"; 450 450 break; 451 451 case OP_CMPSB: … … 453 453 break; 454 454 case OP_CMPWD: 455 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "cmpsw" : pCpu->opmode ==CPUMODE_32BIT ? "cmpsd" : "cmpsq";455 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "cmpsw" : pCpu->opmode == DISCPUMODE_32BIT ? "cmpsd" : "cmpsq"; 456 456 break; 457 457 case OP_SCASB: … … 459 459 break; 460 460 case OP_SCASWD: 461 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "scasw" : pCpu->opmode ==CPUMODE_32BIT ? "scasd" : "scasq";461 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "scasw" : pCpu->opmode == DISCPUMODE_32BIT ? "scasd" : "scasq"; 462 462 break; 463 463 case OP_LODSB: … … 465 465 break; 466 466 case OP_LODSWD: 467 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "lodsw" : pCpu->opmode ==CPUMODE_32BIT ? "lodsd" : "lodsq";467 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "lodsw" : pCpu->opmode == DISCPUMODE_32BIT ? "lodsd" : "lodsq"; 468 468 break; 469 469 case OP_STOSB: … … 471 471 break; 472 472 case OP_STOSWD: 473 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "stosw" : pCpu->opmode ==CPUMODE_32BIT ? "stosd" : "stosq";473 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "stosw" : pCpu->opmode == DISCPUMODE_32BIT ? "stosd" : "stosq"; 474 474 break; 475 475 case OP_CBW: 476 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "cbw" : pCpu->opmode ==CPUMODE_32BIT ? "cwde" : "cdqe";476 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "cbw" : pCpu->opmode == DISCPUMODE_32BIT ? "cwde" : "cdqe"; 477 477 break; 478 478 case OP_CWD: 479 pszFmt = pCpu->opmode == CPUMODE_16BIT ? "cwd" : pCpu->opmode ==CPUMODE_32BIT ? "cdq" : "cqo";479 pszFmt = pCpu->opmode == DISCPUMODE_16BIT ? "cwd" : pCpu->opmode == DISCPUMODE_32BIT ? "cdq" : "cqo"; 480 480 break; 481 481 case OP_SHL: … … 576 576 switch (pCpu->opmode) \ 577 577 { \ 578 case CPUMODE_16BIT: PUT_SZ("word "); break; \579 case CPUMODE_32BIT: PUT_SZ("dword "); break; \580 case CPUMODE_64BIT: PUT_SZ("qword "); break; \578 case DISCPUMODE_16BIT: PUT_SZ("word "); break; \ 579 case DISCPUMODE_32BIT: PUT_SZ("dword "); break; \ 580 case DISCPUMODE_64BIT: PUT_SZ("qword "); break; \ 581 581 default: break; \ 582 582 } \ … … 604 604 #define PUT_SEGMENT_OVERRIDE() \ 605 605 do { \ 606 if (pCpu->prefix & PREFIX_SEG) \606 if (pCpu->prefix & DISPREFIX_SEG) \ 607 607 PUT_STR(s_szSegPrefix[pCpu->enmPrefixSeg], 3); \ 608 608 } while (0) … … 612 612 * Segment prefixing for instructions that doesn't do memory access. 613 613 */ 614 if ( (pCpu->prefix & PREFIX_SEG)614 if ( (pCpu->prefix & DISPREFIX_SEG) 615 615 && !DIS_IS_EFFECTIVE_ADDR(pCpu->param1.flags) 616 616 && !DIS_IS_EFFECTIVE_ADDR(pCpu->param2.flags) … … 812 812 813 813 case USE_IMMEDIATE32: 814 if ( pCpu->opmode != (pCpu->mode == CPUMODE_16BIT ? CPUMODE_16BIT :CPUMODE_32BIT) /* not perfect */814 if ( pCpu->opmode != (pCpu->mode == DISCPUMODE_16BIT ? DISCPUMODE_16BIT : DISCPUMODE_32BIT) /* not perfect */ 815 815 || ( (fFlags & DIS_FMT_FLAGS_STRICT) 816 816 && ( (int8_t)pParam->parval == (int32_t)pParam->parval … … 897 897 898 898 RTUINTPTR uTrgAddr = pCpu->uInstrAddr + pCpu->opsize + offDisplacement; 899 if (pCpu->mode == CPUMODE_16BIT)899 if (pCpu->mode == DISCPUMODE_16BIT) 900 900 PUT_NUM_16(uTrgAddr); 901 else if (pCpu->mode == CPUMODE_32BIT)901 else if (pCpu->mode == DISCPUMODE_32BIT) 902 902 PUT_NUM_32(uTrgAddr); 903 903 else … … 1202 1202 * Mod rm + SIB: Check for duplicate EBP encodings that yasm won't use for very good reasons. 1203 1203 */ 1204 if ( pCpu->addrmode != CPUMODE_16BIT ///@todo correct?1204 if ( pCpu->addrmode != DISCPUMODE_16BIT ///@todo correct? 1205 1205 && pCpu->ModRM.Bits.Rm == 4 1206 1206 && pCpu->ModRM.Bits.Mod != 3) … … 1235 1235 { 1236 1236 case 0xf0: 1237 f = PREFIX_LOCK;1237 f = DISPREFIX_LOCK; 1238 1238 break; 1239 1239 1240 1240 case 0xf2: 1241 1241 case 0xf3: 1242 f = PREFIX_REP; /* yes, both */1242 f = DISPREFIX_REP; /* yes, both */ 1243 1243 break; 1244 1244 … … 1249 1249 case 0x64: 1250 1250 case 0x65: 1251 f = PREFIX_SEG;1251 f = DISPREFIX_SEG; 1252 1252 break; 1253 1253 1254 1254 case 0x66: 1255 f = PREFIX_OPSIZE;1255 f = DISPREFIX_OPSIZE; 1256 1256 break; 1257 1257 1258 1258 case 0x67: 1259 f = PREFIX_ADDRSIZE;1259 f = DISPREFIX_ADDRSIZE; 1260 1260 break; 1261 1261 1262 1262 case 0x40: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0x47: 1263 1263 case 0x48: case 0x49: case 0x4a: case 0x4b: case 0x4c: case 0x4d: case 0x4e: case 0x4f: 1264 f = pCpu->mode == CPUMODE_64BIT ?PREFIX_REX : 0;1264 f = pCpu->mode == DISCPUMODE_64BIT ? DISPREFIX_REX : 0; 1265 1265 break; 1266 1266 … … 1277 1277 1278 1278 /* segment overrides are fun */ 1279 if (fPrefixes & PREFIX_SEG)1279 if (fPrefixes & DISPREFIX_SEG) 1280 1280 { 1281 1281 /* no effective address which it may apply to. */ 1282 Assert((pCpu->prefix & PREFIX_SEG) || pCpu->mode ==CPUMODE_64BIT);1282 Assert((pCpu->prefix & DISPREFIX_SEG) || pCpu->mode == DISCPUMODE_64BIT); 1283 1283 if ( !DIS_IS_EFFECTIVE_ADDR(pCpu->param1.flags) 1284 1284 && !DIS_IS_EFFECTIVE_ADDR(pCpu->param2.flags) … … 1288 1288 1289 1289 /* fixed register + addr override doesn't go down all that well. */ 1290 if (fPrefixes & PREFIX_ADDRSIZE)1291 { 1292 Assert(pCpu->prefix & PREFIX_ADDRSIZE);1290 if (fPrefixes & DISPREFIX_ADDRSIZE) 1291 { 1292 Assert(pCpu->prefix & DISPREFIX_ADDRSIZE); 1293 1293 if ( pCpu->pCurInstr->param3 == OP_PARM_NONE 1294 1294 && pCpu->pCurInstr->param2 == OP_PARM_NONE … … 1335 1335 1336 1336 /* All but the segment prefix is bad news. */ 1337 if (fPrefixes & ~ PREFIX_SEG)1337 if (fPrefixes & ~DISPREFIX_SEG) 1338 1338 { 1339 1339 switch (pCpu->pCurInstr->opcode) … … 1344 1344 && pCpu->pCurInstr->param1 <= OP_PARM_REG_SEG_END) 1345 1345 return true; 1346 if ( (fPrefixes & ~ PREFIX_OPSIZE)1346 if ( (fPrefixes & ~DISPREFIX_OPSIZE) 1347 1347 && pCpu->pCurInstr->param1 >= OP_PARM_REG_GEN32_START 1348 1348 && pCpu->pCurInstr->param1 <= OP_PARM_REG_GEN32_END) … … 1354 1354 case OP_PUSHA: 1355 1355 case OP_PUSHF: 1356 if (fPrefixes & ~ PREFIX_OPSIZE)1356 if (fPrefixes & ~DISPREFIX_OPSIZE) 1357 1357 return true; 1358 1358 break; … … 1361 1361 1362 1362 /* Implicit 8-bit register instructions doesn't mix with operand size. */ 1363 if ( (fPrefixes & PREFIX_OPSIZE)1363 if ( (fPrefixes & DISPREFIX_OPSIZE) 1364 1364 && ( ( pCpu->pCurInstr->param1 == OP_PARM_Gb /* r8 */ 1365 1365 && pCpu->pCurInstr->param2 == OP_PARM_Eb /* r8/mem8 */) … … 1506 1506 if ( pCpu->pCurInstr->opcode == OP_MOVZX 1507 1507 && pCpu->opcode == 0xB7 1508 && (pCpu->mode == CPUMODE_16BIT) != !!(fPrefixes &PREFIX_OPSIZE))1508 && (pCpu->mode == DISCPUMODE_16BIT) != !!(fPrefixes & DISPREFIX_OPSIZE)) 1509 1509 return true; 1510 1510 -
TabularUnified trunk/src/VBox/Disassembler/DisasmReg.cpp ¶
r41668 r41675 210 210 switch(pCpu->opmode) 211 211 { 212 case CPUMODE_32BIT:212 case DISCPUMODE_32BIT: 213 213 subtype = OP_PARM_d; 214 214 break; 215 case CPUMODE_64BIT:215 case DISCPUMODE_64BIT: 216 216 subtype = OP_PARM_q; 217 217 break; 218 case CPUMODE_16BIT:218 case DISCPUMODE_16BIT: 219 219 subtype = OP_PARM_w; 220 220 break; … … 241 241 242 242 case OP_PARM_p: /* far pointer */ 243 if (pCpu->addrmode == CPUMODE_32BIT)243 if (pCpu->addrmode == DISCPUMODE_32BIT) 244 244 return 6; /* 16:32 */ 245 245 else 246 if (pCpu->addrmode == CPUMODE_64BIT)246 if (pCpu->addrmode == DISCPUMODE_64BIT) 247 247 return 12; /* 16:64 */ 248 248 else … … 260 260 DISDECL(DIS_SELREG) DISDetectSegReg(PDISCPUSTATE pCpu, POP_PARAMETER pParam) 261 261 { 262 if (pCpu->prefix & PREFIX_SEG)262 if (pCpu->prefix & DISPREFIX_SEG) 263 263 { 264 264 /* Use specified SEG: prefix. */ … … 285 285 DISDECL(uint8_t) DISQuerySegPrefixByte(PDISCPUSTATE pCpu) 286 286 { 287 Assert(pCpu->prefix & PREFIX_SEG);287 Assert(pCpu->prefix & DISPREFIX_SEG); 288 288 switch(pCpu->enmPrefixSeg) 289 289 { … … 592 592 if (pParam->flags & USE_DISPLACEMENT8) 593 593 { 594 if (pCpu->mode == CPUMODE_32BIT)594 if (pCpu->mode == DISCPUMODE_32BIT) 595 595 pParamVal->val.val32 += (int32_t)pParam->uDisp.i8; 596 596 else 597 if (pCpu->mode == CPUMODE_64BIT)597 if (pCpu->mode == DISCPUMODE_64BIT) 598 598 pParamVal->val.val64 += (int64_t)pParam->uDisp.i8; 599 599 else … … 603 603 if (pParam->flags & USE_DISPLACEMENT16) 604 604 { 605 if (pCpu->mode == CPUMODE_32BIT)605 if (pCpu->mode == DISCPUMODE_32BIT) 606 606 pParamVal->val.val32 += (int32_t)pParam->uDisp.i16; 607 607 else 608 if (pCpu->mode == CPUMODE_64BIT)608 if (pCpu->mode == DISCPUMODE_64BIT) 609 609 pParamVal->val.val64 += (int64_t)pParam->uDisp.i16; 610 610 else … … 614 614 if (pParam->flags & USE_DISPLACEMENT32) 615 615 { 616 if (pCpu->mode == CPUMODE_32BIT)616 if (pCpu->mode == DISCPUMODE_32BIT) 617 617 pParamVal->val.val32 += pParam->uDisp.i32; 618 618 else … … 622 622 if (pParam->flags & USE_DISPLACEMENT64) 623 623 { 624 Assert(pCpu->mode == CPUMODE_64BIT);624 Assert(pCpu->mode == DISCPUMODE_64BIT); 625 625 pParamVal->val.val64 += pParam->uDisp.i64; 626 626 } … … 628 628 if (pParam->flags & USE_RIPDISPLACEMENT32) 629 629 { 630 Assert(pCpu->mode == CPUMODE_64BIT);630 Assert(pCpu->mode == DISCPUMODE_64BIT); 631 631 /* Relative to the RIP of the next instruction. */ 632 632 pParamVal->val.val64 += pParam->uDisp.i32 + pCtx->rip + pCpu->opsize; -
TabularUnified trunk/src/VBox/Disassembler/DisasmTest.cpp ¶
r41669 r41675 50 50 char szOutput[256]; 51 51 52 if (RT_SUCCESS(DISInstrToStr(pbInstr, CPUMODE_32BIT, &cpu, &cb, szOutput, sizeof(szOutput))))52 if (RT_SUCCESS(DISInstrToStr(pbInstr, DISCPUMODE_32BIT, &cpu, &cb, szOutput, sizeof(szOutput)))) 53 53 { 54 54 printf("%s", szOutput); … … 73 73 char szOutput[256]; 74 74 75 if (RT_SUCCESS(DISInstrToStr(pbInstr, CPUMODE_64BIT, &cpu, &cb, szOutput, sizeof(szOutput))))75 if (RT_SUCCESS(DISInstrToStr(pbInstr, DISCPUMODE_64BIT, &cpu, &cb, szOutput, sizeof(szOutput)))) 76 76 printf("%s", szOutput); 77 77 else -
TabularUnified trunk/src/VBox/Disassembler/DisasmTestCore.cpp ¶
r41674 r41675 39 39 unsigned cb; 40 40 DISCPUSTATE cpu; 41 if (DISInstr((void *)(uintptr_t)&DISInstr, CPUMODE_32BIT, &cpu, &cb))41 if (DISInstr((void *)(uintptr_t)&DISInstr, DISCPUMODE_32BIT, &cpu, &cb)) 42 42 printf("ok %d\n", cpu.addrmode); 43 43 else -
TabularUnified trunk/src/VBox/Disassembler/testcase/tstDisasm-2.cpp ¶
r41671 r41675 303 303 304 304 case kAsmStyle_yasm: 305 RTPrintf(" BITS %d\n", enmCpuMode == CPUMODE_16BIT ? 16 : enmCpuMode ==CPUMODE_32BIT ? 32 : 64);305 RTPrintf(" BITS %d\n", enmCpuMode == DISCPUMODE_16BIT ? 16 : enmCpuMode == DISCPUMODE_32BIT ? 32 : 64); 306 306 pfnFormatter = MyDisasYasmFormatter; 307 307 break; … … 492 492 UNDEFOPHANDLING enmUndefOp = kUndefOp_Fail; 493 493 bool fListing = true; 494 DISCPUMODE enmCpuMode = CPUMODE_32BIT;494 DISCPUMODE enmCpuMode = DISCPUMODE_32BIT; 495 495 RTFOFF off = 0; 496 496 RTFOFF cbMax = _1G; … … 532 532 case 'c': 533 533 if (ValueUnion.u32 == 16) 534 enmCpuMode = CPUMODE_16BIT;534 enmCpuMode = DISCPUMODE_16BIT; 535 535 else if (ValueUnion.u32 == 32) 536 enmCpuMode = CPUMODE_32BIT;536 enmCpuMode = DISCPUMODE_32BIT; 537 537 else if (ValueUnion.u32 == 64) 538 enmCpuMode = CPUMODE_64BIT;538 enmCpuMode = DISCPUMODE_64BIT; 539 539 else 540 540 { -
TabularUnified trunk/src/VBox/Runtime/testcase/tstLdr-2.cpp ¶
r41671 r41675 47 47 char szOutput[256]; 48 48 uint32_t cbInstr; 49 if (RT_FAILURE(DISInstrToStr(pbCodeBlock + i, CPUMODE_32BIT, &Cpu, &cbInstr, szOutput, sizeof(szOutput))))49 if (RT_FAILURE(DISInstrToStr(pbCodeBlock + i, DISCPUMODE_32BIT, &Cpu, &cbInstr, szOutput, sizeof(szOutput)))) 50 50 return false; 51 51 -
TabularUnified trunk/src/VBox/Runtime/testcase/tstLdr-3.cpp ¶
r41674 r41675 247 247 memset(&Cpu, 0, sizeof(Cpu)); 248 248 #ifdef RT_ARCH_X86 /** @todo select according to the module type. */ 249 Cpu.mode = CPUMODE_32BIT;249 Cpu.mode = DISCPUMODE_32BIT; 250 250 #else 251 Cpu.mode = CPUMODE_64BIT;251 Cpu.mode = DISCPUMODE_64BIT; 252 252 #endif 253 253 uint8_t *pbCode = (uint8_t *)g_pvBits + (NearSym.aSyms[0].Value - g_uLoadAddr); -
TabularUnified trunk/src/VBox/Runtime/testcase/tstLdrDisasmTest.cpp ¶
r41674 r41675 105 105 { 106 106 uint32_t cb; 107 int rc = DISInstrWithReader(CodeIndex, CPUMODE_32BIT, DisasmTest1ReadCode, 0, pCpu, &cb);107 int rc = DISInstrWithReader(CodeIndex, DISCPUMODE_32BIT, DisasmTest1ReadCode, 0, pCpu, &cb); 108 108 *pcb = cb; 109 109 MY_PRINTF(("DISCoreOneEx -> rc=%d cb=%d Cpu: opcode=%#x pCurInstr=%p (42=%d)\n", \ … … 122 122 123 123 memset(&Cpu, 0, sizeof(Cpu)); 124 Cpu.mode = CPUMODE_32BIT;124 Cpu.mode = DISCPUMODE_32BIT; 125 125 126 126 #define DISAS_AND_CHECK(cbInstr, enmOp) \ -
TabularUnified trunk/src/VBox/Runtime/testcase/tstLdrObj.cpp ¶
r41674 r41675 98 98 static unsigned cb; 99 99 DISCPUSTATE Cpu; 100 DISInstr((void *)(uintptr_t)SomeExportFunction3, CPUMODE_32BIT, &Cpu, &cb);100 DISInstr((void *)(uintptr_t)SomeExportFunction3, DISCPUMODE_32BIT, &Cpu, &cb); 101 101 return (void *)(uintptr_t)&SomeExportFunction1; 102 102 } -
TabularUnified trunk/src/VBox/Runtime/testcase/tstLdrObjR0.cpp ¶
r41674 r41675 96 96 97 97 memset(&Cpu, 0, sizeof(Cpu)); 98 Cpu.mode = CPUMODE_32BIT;98 Cpu.mode = DISCPUMODE_32BIT; 99 99 100 DISInstr((void *)(uintptr_t)SomeExportFunction3, CPUMODE_32BIT, &Cpu, &cb);100 DISInstr((void *)(uintptr_t)SomeExportFunction3, DISCPUMODE_32BIT, &Cpu, &cb); 101 101 return (void *)(uintptr_t)&SomeExportFunction1; 102 102 } -
TabularUnified trunk/src/VBox/VMM/VMMAll/EMAll.cpp ¶
r41674 r41675 789 789 case OP_LMSW: return "Lmsw"; 790 790 case OP_SMSW: return "Smsw"; 791 case OP_CMPXCHG: return pDis->prefix & PREFIX_LOCK ? "Lock CmpXchg" : "CmpXchg";792 case OP_CMPXCHG8B: return pDis->prefix & PREFIX_LOCK ? "Lock CmpXchg8b" : "CmpXchg8b";791 case OP_CMPXCHG: return pDis->prefix & DISPREFIX_LOCK ? "Lock CmpXchg" : "CmpXchg"; 792 case OP_CMPXCHG8B: return pDis->prefix & DISPREFIX_LOCK ? "Lock CmpXchg8b" : "CmpXchg8b"; 793 793 794 794 default: … … 1009 1009 static int emInterpretPop(PVM pVM, PVMCPU pVCpu, PDISCPUSTATE pDis, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, uint32_t *pcbSize) 1010 1010 { 1011 Assert(pDis->mode != CPUMODE_64BIT); /** @todo check */1011 Assert(pDis->mode != DISCPUMODE_64BIT); /** @todo check */ 1012 1012 OP_PARAMVAL param1; 1013 1013 NOREF(pvFault); … … 1028 1028 1029 1029 /* Read stack value first */ 1030 if (SELMGetCpuModeFromSelector(pVCpu, pRegFrame->eflags, pRegFrame->ss, &pRegFrame->ssHid) == CPUMODE_16BIT)1030 if (SELMGetCpuModeFromSelector(pVCpu, pRegFrame->eflags, pRegFrame->ss, &pRegFrame->ssHid) == DISCPUMODE_16BIT) 1031 1031 return VERR_EM_INTERPRETER; /* No legacy 16 bits stuff here, please. */ 1032 1032 … … 1561 1561 } 1562 1562 #ifdef LOG_ENABLED 1563 if (pDis->mode == CPUMODE_64BIT)1563 if (pDis->mode == DISCPUMODE_64BIT) 1564 1564 LogFlow(("EMInterpretInstruction at %RGv: OP_MOV %RGv <- %RX64 (%d) &val64=%RHv\n", (RTGCPTR)pRegFrame->rip, pDest, val64, param2.size, &val64)); 1565 1565 else … … 1624 1624 } 1625 1625 #ifdef LOG_ENABLED 1626 if (pDis->mode == CPUMODE_64BIT)1626 if (pDis->mode == DISCPUMODE_64BIT) 1627 1627 LogFlow(("EMInterpretInstruction: OP_MOV %RGv -> %RX64 (%d)\n", pSrc, val64, param1.size)); 1628 1628 else … … 1652 1652 1653 1653 /* Don't support any but these three prefix bytes. */ 1654 if ((pDis->prefix & ~( PREFIX_ADDRSIZE|PREFIX_OPSIZE|PREFIX_REP|PREFIX_REX)))1654 if ((pDis->prefix & ~(DISPREFIX_ADDRSIZE|DISPREFIX_OPSIZE|DISPREFIX_REP|DISPREFIX_REX))) 1655 1655 return VERR_EM_INTERPRETER; 1656 1656 1657 1657 switch (pDis->addrmode) 1658 1658 { 1659 case CPUMODE_16BIT:1659 case DISCPUMODE_16BIT: 1660 1660 GCOffset = pRegFrame->di; 1661 1661 cTransfers = pRegFrame->cx; 1662 1662 break; 1663 case CPUMODE_32BIT:1663 case DISCPUMODE_32BIT: 1664 1664 GCOffset = pRegFrame->edi; 1665 1665 cTransfers = pRegFrame->ecx; 1666 1666 break; 1667 case CPUMODE_64BIT:1667 case DISCPUMODE_64BIT: 1668 1668 GCOffset = pRegFrame->rdi; 1669 1669 cTransfers = pRegFrame->rcx; … … 1677 1677 switch (pDis->opmode) 1678 1678 { 1679 case CPUMODE_16BIT:1679 case DISCPUMODE_16BIT: 1680 1680 cbSize = 2; 1681 1681 break; 1682 case CPUMODE_32BIT:1682 case DISCPUMODE_32BIT: 1683 1683 cbSize = 4; 1684 1684 break; 1685 case CPUMODE_64BIT:1685 case DISCPUMODE_64BIT: 1686 1686 cbSize = 8; 1687 1687 break; … … 1693 1693 offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cbSize : (signed)cbSize; 1694 1694 1695 if (!(pDis->prefix & PREFIX_REP))1695 if (!(pDis->prefix & DISPREFIX_REP)) 1696 1696 { 1697 1697 LogFlow(("emInterpretStosWD dest=%04X:%RGv (%RGv) cbSize=%d\n", pRegFrame->es, GCOffset, GCDest, cbSize)); … … 1705 1705 switch (pDis->addrmode) 1706 1706 { 1707 case CPUMODE_16BIT:1707 case DISCPUMODE_16BIT: 1708 1708 pRegFrame->di += offIncrement; 1709 1709 break; 1710 case CPUMODE_32BIT:1710 case DISCPUMODE_32BIT: 1711 1711 pRegFrame->edi += offIncrement; 1712 1712 break; 1713 case CPUMODE_64BIT:1713 case DISCPUMODE_64BIT: 1714 1714 pRegFrame->rdi += offIncrement; 1715 1715 break; … … 1770 1770 switch (pDis->addrmode) 1771 1771 { 1772 case CPUMODE_16BIT:1772 case DISCPUMODE_16BIT: 1773 1773 pRegFrame->di = GCOffset; 1774 1774 pRegFrame->cx = cTransfers; 1775 1775 break; 1776 case CPUMODE_32BIT:1776 case DISCPUMODE_32BIT: 1777 1777 pRegFrame->edi = GCOffset; 1778 1778 pRegFrame->ecx = cTransfers; 1779 1779 break; 1780 case CPUMODE_64BIT:1780 case DISCPUMODE_64BIT: 1781 1781 pRegFrame->rdi = GCOffset; 1782 1782 pRegFrame->rcx = cTransfers; … … 1848 1848 LogFlow(("%s %RGv rax=%RX64 %RX64\n", emGetMnemonic(pDis), GCPtrPar1, pRegFrame->rax, valpar)); 1849 1849 1850 if (pDis->prefix & PREFIX_LOCK)1850 if (pDis->prefix & DISPREFIX_LOCK) 1851 1851 eflags = EMEmulateLockCmpXchg(pvParam1, &pRegFrame->rax, valpar, pDis->param2.cb); 1852 1852 else … … 1870 1870 static int emInterpretCmpXchg8b(PVM pVM, PVMCPU pVCpu, PDISCPUSTATE pDis, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, uint32_t *pcbSize) 1871 1871 { 1872 Assert(pDis->mode != CPUMODE_64BIT); /** @todo check */1872 Assert(pDis->mode != DISCPUMODE_64BIT); /** @todo check */ 1873 1873 OP_PARAMVAL param1; 1874 1874 NOREF(pvFault); … … 1901 1901 LogFlow(("%s %RGv=%08x eax=%08x\n", emGetMnemonic(pDis), pvParam1, pRegFrame->eax)); 1902 1902 1903 if (pDis->prefix & PREFIX_LOCK)1903 if (pDis->prefix & DISPREFIX_LOCK) 1904 1904 eflags = EMEmulateLockCmpXchg8b(pvParam1, &pRegFrame->eax, &pRegFrame->edx, pRegFrame->ebx, pRegFrame->ecx); 1905 1905 else … … 1924 1924 static int emInterpretXAdd(PVM pVM, PVMCPU pVCpu, PDISCPUSTATE pDis, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, uint32_t *pcbSize) 1925 1925 { 1926 Assert(pDis->mode != CPUMODE_64BIT); /** @todo check */1926 Assert(pDis->mode != DISCPUMODE_64BIT); /** @todo check */ 1927 1927 OP_PARAMVAL param1; 1928 1928 void *pvParamReg2; … … 1970 1970 LogFlow(("XAdd %RGv=%p reg=%08llx\n", GCPtrPar1, pvParam1, *(uint64_t *)pvParamReg2)); 1971 1971 1972 if (pDis->prefix & PREFIX_LOCK)1972 if (pDis->prefix & DISPREFIX_LOCK) 1973 1973 eflags = EMEmulateLockXAdd(pvParam1, pvParamReg2, cbParamReg2); 1974 1974 else … … 2654 2654 AssertRCReturn(rc, VERR_EM_INTERPRETER); 2655 2655 2656 if (!(pDis->prefix & PREFIX_OPSIZE))2656 if (!(pDis->prefix & DISPREFIX_OPSIZE)) 2657 2657 dtr32.uAddr &= 0xffffff; /* 16 bits operand size */ 2658 2658 … … 3030 3030 /* Note: The Intel manual claims there's a REX version of RDMSR that's slightly 3031 3031 different, so we play safe by completely disassembling the instruction. */ 3032 Assert(!(pDis->prefix & PREFIX_REX));3032 Assert(!(pDis->prefix & DISPREFIX_REX)); 3033 3033 NOREF(pDis); NOREF(pvFault); NOREF(pcbSize); 3034 3034 return EMInterpretRdmsr(pVM, pVCpu, pRegFrame); … … 3104 3104 3105 3105 #ifdef IN_RC 3106 if ( (pDis->prefix & ( PREFIX_REPNE |PREFIX_REP))3107 || ( (pDis->prefix & PREFIX_LOCK)3106 if ( (pDis->prefix & (DISPREFIX_REPNE | DISPREFIX_REP)) 3107 || ( (pDis->prefix & DISPREFIX_LOCK) 3108 3108 && pDis->pCurInstr->opcode != OP_CMPXCHG 3109 3109 && pDis->pCurInstr->opcode != OP_CMPXCHG8B … … 3116 3116 ) 3117 3117 #else 3118 if ( (pDis->prefix & PREFIX_REPNE)3119 || ( (pDis->prefix & PREFIX_REP)3118 if ( (pDis->prefix & DISPREFIX_REPNE) 3119 || ( (pDis->prefix & DISPREFIX_REP) 3120 3120 && pDis->pCurInstr->opcode != OP_STOSWD 3121 3121 ) 3122 || ( (pDis->prefix & PREFIX_LOCK)3122 || ( (pDis->prefix & DISPREFIX_LOCK) 3123 3123 && pDis->pCurInstr->opcode != OP_OR 3124 3124 && pDis->pCurInstr->opcode != OP_AND … … 3228 3228 # define INTERPRET_CASE_EX_LOCK_PARAM3(opcode, Instr, InstrFn, pfnEmulate, pfnEmulateLock) \ 3229 3229 case opcode:\ 3230 if (pDis->prefix & PREFIX_LOCK) \3230 if (pDis->prefix & DISPREFIX_LOCK) \ 3231 3231 rc = emInterpretLock##InstrFn(pVM, pVCpu, pDis, pRegFrame, pvFault, pcbSize, pfnEmulateLock); \ 3232 3232 else \ -
TabularUnified trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp ¶
r41072 r41675 670 670 * We do not support segment prefixes or REPNE. 671 671 */ 672 if (pCpu->prefix & ( PREFIX_SEG |PREFIX_REPNE))672 if (pCpu->prefix & (DISPREFIX_SEG | DISPREFIX_REPNE)) 673 673 return VINF_IOM_R3_MMIO_READ_WRITE; /** @todo -> interpret whatever. */ 674 674 … … 679 679 */ 680 680 uint32_t cTransfers = 1; 681 if (pCpu->prefix & PREFIX_REP)681 if (pCpu->prefix & DISPREFIX_REP) 682 682 { 683 683 #ifndef IN_RC … … 688 688 689 689 cTransfers = pRegFrame->ecx; 690 if (SELMGetCpuModeFromSelector(pVM, pRegFrame->eflags, pRegFrame->cs, &pRegFrame->csHid) == CPUMODE_16BIT)690 if (SELMGetCpuModeFromSelector(pVM, pRegFrame->eflags, pRegFrame->cs, &pRegFrame->csHid) == DISCPUMODE_16BIT) 691 691 cTransfers &= 0xffff; 692 692 … … 767 767 #endif 768 768 /* Update ecx. */ 769 if (pCpu->prefix & PREFIX_REP)769 if (pCpu->prefix & DISPREFIX_REP) 770 770 pRegFrame->ecx = cTransfers; 771 771 } … … 875 875 876 876 /* Update ecx on exit. */ 877 if (pCpu->prefix & PREFIX_REP)877 if (pCpu->prefix & DISPREFIX_REP) 878 878 pRegFrame->ecx = cTransfers; 879 879 } … … 898 898 switch (enmCpuMode) 899 899 { 900 case CPUMODE_16BIT: return UINT16_MAX;901 case CPUMODE_32BIT: return UINT32_MAX;902 case CPUMODE_64BIT: return UINT64_MAX;900 case DISCPUMODE_16BIT: return UINT16_MAX; 901 case DISCPUMODE_32BIT: return UINT32_MAX; 902 case DISCPUMODE_64BIT: return UINT64_MAX; 903 903 default: 904 904 AssertFailedReturn(UINT32_MAX); … … 928 928 * We do not support segment prefixes or REPNE.. 929 929 */ 930 if (pCpu->prefix & ( PREFIX_SEG |PREFIX_REPNE))930 if (pCpu->prefix & (DISPREFIX_SEG | DISPREFIX_REPNE)) 931 931 return VINF_IOM_R3_MMIO_READ_WRITE; /** @todo -> REM instead of HC */ 932 932 … … 936 936 uint64_t const fAddrMask = iomDisModeToMask(pCpu->addrmode); 937 937 RTGCUINTREG cTransfers = 1; 938 if (pCpu->prefix & PREFIX_REP)938 if (pCpu->prefix & DISPREFIX_REP) 939 939 { 940 940 #ifndef IN_RC … … 983 983 pRegFrame->rdi = ((pRegFrame->rdi + (cTransfers << SIZE_2_SHIFT(cb))) & fAddrMask) 984 984 | (pRegFrame->rdi & ~fAddrMask); 985 if (pCpu->prefix & PREFIX_REP)985 if (pCpu->prefix & DISPREFIX_REP) 986 986 pRegFrame->rcx &= ~fAddrMask; 987 987 } … … 998 998 pRegFrame->rdi = ((pRegFrame->rdi - (cTransfers << SIZE_2_SHIFT(cb))) & fAddrMask) 999 999 | (pRegFrame->rdi & ~fAddrMask); 1000 if (pCpu->prefix & PREFIX_REP)1000 if (pCpu->prefix & DISPREFIX_REP) 1001 1001 pRegFrame->rcx &= ~fAddrMask; 1002 1002 } … … 1025 1025 1026 1026 /* Update rcx on exit. */ 1027 if (pCpu->prefix & PREFIX_REP)1027 if (pCpu->prefix & DISPREFIX_REP) 1028 1028 pRegFrame->rcx = (cTransfers & fAddrMask) 1029 1029 | (pRegFrame->rcx & ~fAddrMask); … … 1062 1062 * We do not support segment prefixes or REP*. 1063 1063 */ 1064 if (pCpu->prefix & ( PREFIX_SEG | PREFIX_REP |PREFIX_REPNE))1064 if (pCpu->prefix & (DISPREFIX_SEG | DISPREFIX_REP | DISPREFIX_REPNE)) 1065 1065 return VINF_IOM_R3_MMIO_READ_WRITE; /** @todo -> REM instead of HC */ 1066 1066 … … 2030 2030 * pointer. Segment prefixes are deliberately ignored, as per the instruction specification. 2031 2031 */ 2032 if ( (uPrefix & PREFIX_REPNE)2032 if ( (uPrefix & DISPREFIX_REPNE) 2033 2033 || pRegFrame->eflags.Bits.u1DF) 2034 2034 return VINF_EM_RAW_EMULATE_INSTR; … … 2041 2041 uint64_t const fAddrMask = iomDisModeToMask(enmAddrMode); 2042 2042 RTGCUINTREG cTransfers = 1; 2043 if (uPrefix & PREFIX_REP)2043 if (uPrefix & DISPREFIX_REP) 2044 2044 { 2045 2045 #ifndef IN_RC … … 2108 2108 2109 2109 /* Update rcx on exit. */ 2110 if (uPrefix & PREFIX_REP)2110 if (uPrefix & DISPREFIX_REP) 2111 2111 pRegFrame->rcx = (cTransfers & fAddrMask) 2112 2112 | (pRegFrame->rcx & ~fAddrMask); … … 2147 2147 cb = 1; 2148 2148 else 2149 cb = (pCpu->opmode == CPUMODE_16BIT) ? 2 : 4; /* dword in both 32 & 64 bits mode */2149 cb = (pCpu->opmode == DISCPUMODE_16BIT) ? 2 : 4; /* dword in both 32 & 64 bits mode */ 2150 2150 2151 2151 VBOXSTRICTRC rcStrict = IOMInterpretCheckPortIOAccess(pVM, pRegFrame, Port, cb); … … 2192 2192 * decrementing source pointer. 2193 2193 */ 2194 if ( (uPrefix & ( PREFIX_SEG |PREFIX_REPNE))2194 if ( (uPrefix & (DISPREFIX_SEG | DISPREFIX_REPNE)) 2195 2195 || pRegFrame->eflags.Bits.u1DF) 2196 2196 return VINF_EM_RAW_EMULATE_INSTR; … … 2203 2203 uint64_t const fAddrMask = iomDisModeToMask(enmAddrMode); 2204 2204 RTGCUINTREG cTransfers = 1; 2205 if (uPrefix & PREFIX_REP)2205 if (uPrefix & DISPREFIX_REP) 2206 2206 { 2207 2207 #ifndef IN_RC … … 2275 2275 2276 2276 /* Update rcx on exit. */ 2277 if (uPrefix & PREFIX_REP)2277 if (uPrefix & DISPREFIX_REP) 2278 2278 pRegFrame->rcx = (cTransfers & fAddrMask) 2279 2279 | (pRegFrame->rcx & ~fAddrMask); … … 2316 2316 cb = 1; 2317 2317 else 2318 cb = (pCpu->opmode == CPUMODE_16BIT) ? 2 : 4; /* dword in both 32 & 64 bits mode */2318 cb = (pCpu->opmode == DISCPUMODE_16BIT) ? 2 : 4; /* dword in both 32 & 64 bits mode */ 2319 2319 2320 2320 VBOXSTRICTRC rcStrict = IOMInterpretCheckPortIOAccess(pVM, pRegFrame, Port, cb); -
TabularUnified trunk/src/VBox/VMM/VMMAll/PGMAllBth.h ¶
r41458 r41675 918 918 if ( rc == VINF_SUCCESS 919 919 && pDis->pCurInstr->opcode == OP_MOVSWD 920 && (pDis->prefix & PREFIX_REP))920 && (pDis->prefix & DISPREFIX_REP)) 921 921 { 922 922 CSAMMarkPossibleCodePage(pVM, pvFault); -
TabularUnified trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp ¶
r41446 r41675 107 107 rc = EMInterpretDisasOne(pVM, pVCpu, pRegFrame, pDis, &cbOp); 108 108 if ( RT_SUCCESS(rc) 109 && pDis->mode == CPUMODE_32BIT /** @todo why does this matter? */110 && !(pDis->prefix & ( PREFIX_REPNE | PREFIX_REP |PREFIX_SEG)))109 && pDis->mode == DISCPUMODE_32BIT /** @todo why does this matter? */ 110 && !(pDis->prefix & (DISPREFIX_REPNE | DISPREFIX_REP | DISPREFIX_SEG))) 111 111 { 112 112 switch (pDis->opcode) -
TabularUnified trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp ¶
r41663 r41675 793 793 case OP_MOVSWD: 794 794 case OP_STOSWD: 795 if ( pDis->prefix == ( PREFIX_REP|PREFIX_REX)795 if ( pDis->prefix == (DISPREFIX_REP|DISPREFIX_REX) 796 796 && pRegFrame->rcx >= 0x40 797 797 ) 798 798 { 799 Assert(pDis->mode == CPUMODE_64BIT);799 Assert(pDis->mode == DISCPUMODE_64BIT); 800 800 801 801 Log(("pgmPoolMonitorIsReused: OP_STOSQ\n")); … … 890 890 NOREF(pVM); 891 891 892 Assert(pDis->mode == CPUMODE_32BIT || pDis->mode ==CPUMODE_64BIT);892 Assert(pDis->mode == DISCPUMODE_32BIT || pDis->mode == DISCPUMODE_64BIT); 893 893 Assert(pRegFrame->rcx <= 0x20); 894 894 895 895 #ifdef VBOX_STRICT 896 if (pDis->opmode == CPUMODE_32BIT)896 if (pDis->opmode == DISCPUMODE_32BIT) 897 897 Assert(uIncrement == 4); 898 898 else … … 1155 1155 * Simple instructions, no REP prefix. 1156 1156 */ 1157 if (!(pDis->prefix & ( PREFIX_REP |PREFIX_REPNE)))1157 if (!(pDis->prefix & (DISPREFIX_REP | DISPREFIX_REPNE))) 1158 1158 { 1159 1159 rc = pgmPoolAccessHandlerSimple(pVM, pVCpu, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault, &fReused); … … 1203 1203 bool fValidStosd = false; 1204 1204 1205 if ( pDis->mode == CPUMODE_32BIT1206 && pDis->prefix == PREFIX_REP1205 if ( pDis->mode == DISCPUMODE_32BIT 1206 && pDis->prefix == DISPREFIX_REP 1207 1207 && pRegFrame->ecx <= 0x20 1208 1208 && pRegFrame->ecx * 4 <= PAGE_SIZE - ((uintptr_t)pvFault & PAGE_OFFSET_MASK) … … 1215 1215 } 1216 1216 else 1217 if ( pDis->mode == CPUMODE_64BIT1218 && pDis->prefix == ( PREFIX_REP |PREFIX_REX)1217 if ( pDis->mode == DISCPUMODE_64BIT 1218 && pDis->prefix == (DISPREFIX_REP | DISPREFIX_REX) 1219 1219 && pRegFrame->rcx <= 0x20 1220 1220 && pRegFrame->rcx * 8 <= PAGE_SIZE - ((uintptr_t)pvFault & PAGE_OFFSET_MASK) -
TabularUnified trunk/src/VBox/VMM/VMMAll/SELMAll.cpp ¶
r40449 r41675 911 911 Desc = paLDT[Sel >> X86_SEL_SHIFT]; 912 912 } 913 return (Desc.Gen.u1DefBig) ? CPUMODE_32BIT :CPUMODE_16BIT;913 return (Desc.Gen.u1DefBig) ? DISCPUMODE_32BIT : DISCPUMODE_16BIT; 914 914 } 915 915 #endif /* !IN_RING0 */ … … 938 938 if ( eflags.Bits.u1VM 939 939 || CPUMIsGuestInRealMode(pVCpu)) 940 return CPUMODE_16BIT;940 return DISCPUMODE_16BIT; 941 941 942 942 return selmGetCpuModeFromSelector(pVCpu->CTX_SUFF(pVM), pVCpu, Sel); … … 945 945 if ( pHiddenSel->Attr.n.u1Long 946 946 && CPUMIsGuestInLongMode(pVCpu)) 947 return CPUMODE_64BIT;947 return DISCPUMODE_64BIT; 948 948 949 949 /* Else compatibility or 32 bits mode. */ 950 return pHiddenSel->Attr.n.u1DefBig ? CPUMODE_32BIT :CPUMODE_16BIT;950 return pHiddenSel->Attr.n.u1DefBig ? DISCPUMODE_32BIT : DISCPUMODE_16BIT; 951 951 } 952 952 -
TabularUnified trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp ¶
r41645 r41675 2972 2972 */ 2973 2973 DISCPUMODE enmMode = SELMGetCpuModeFromSelector(pVCpu, pRegFrame->eflags, pRegFrame->cs, &pRegFrame->csHid); 2974 if (enmMode != CPUMODE_16BIT)2974 if (enmMode != DISCPUMODE_16BIT) 2975 2975 { 2976 2976 RTGCPTR pbCode; -
TabularUnified trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp ¶
r41645 r41675 3585 3585 X86EFLAGS eflags; 3586 3586 3587 if (pDis->prefix & PREFIX_OPSIZE)3587 if (pDis->prefix & DISPREFIX_OPSIZE) 3588 3588 { 3589 3589 cbParm = 4; … … 3627 3627 X86EFLAGS eflags; 3628 3628 3629 if (pDis->prefix & PREFIX_OPSIZE)3629 if (pDis->prefix & DISPREFIX_OPSIZE) 3630 3630 { 3631 3631 cbParm = 4; … … 3669 3669 uint16_t aIretFrame[3]; 3670 3670 3671 if (pDis->prefix & ( PREFIX_OPSIZE |PREFIX_ADDRSIZE))3671 if (pDis->prefix & (DISPREFIX_OPSIZE | DISPREFIX_ADDRSIZE)) 3672 3672 { 3673 3673 rc = VERR_EM_INTERPRETER; -
TabularUnified trunk/src/VBox/VMM/VMMR3/CPUM.cpp ¶
r41674 r41675 3631 3631 State.cbSegLimit = pCtx->csHid.u32Limit; 3632 3632 enmDisCpuMode = (State.f64Bits) 3633 ? CPUMODE_64BIT3633 ? DISCPUMODE_64BIT 3634 3634 : pCtx->csHid.Attr.n.u1DefBig 3635 ? CPUMODE_32BIT3636 : CPUMODE_16BIT;3635 ? DISCPUMODE_32BIT 3636 : DISCPUMODE_16BIT; 3637 3637 } 3638 3638 else … … 3659 3659 State.GCPtrSegEnd = SelInfo.cbLimit + 1 + (RTGCUINTPTR)SelInfo.GCPtrBase; 3660 3660 State.cbSegLimit = SelInfo.cbLimit; 3661 enmDisCpuMode = SelInfo.u.Raw.Gen.u1DefBig ? CPUMODE_32BIT :CPUMODE_16BIT;3661 enmDisCpuMode = SelInfo.u.Raw.Gen.u1DefBig ? DISCPUMODE_32BIT : DISCPUMODE_16BIT; 3662 3662 } 3663 3663 } … … 3665 3665 { 3666 3666 /* real or V86 mode */ 3667 enmDisCpuMode = CPUMODE_16BIT;3667 enmDisCpuMode = DISCPUMODE_16BIT; 3668 3668 State.GCPtrSegBase = pCtx->cs * 16; 3669 3669 State.GCPtrSegEnd = 0xFFFFFFFF; -
TabularUnified trunk/src/VBox/VMM/VMMR3/CSAM.cpp ¶
r41674 r41675 870 870 Assert(VALID_PTR(pCurInstrHC)); 871 871 872 rc = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, (fCode32) ? CPUMODE_32BIT :CPUMODE_16BIT,872 rc = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, (fCode32) ? DISCPUMODE_32BIT : DISCPUMODE_16BIT, 873 873 &cpu, &opsize, NULL, 0); 874 874 } … … 1053 1053 STAM_PROFILE_START(&pVM->csam.s.StatTimeDisasm, a); 1054 1054 #ifdef DEBUG 1055 rc2 = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, (fCode32) ? CPUMODE_32BIT :CPUMODE_16BIT,1055 rc2 = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, (fCode32) ? DISCPUMODE_32BIT : DISCPUMODE_16BIT, 1056 1056 &cpu, &opsize, szOutput, sizeof(szOutput)); 1057 1057 if (RT_SUCCESS(rc2)) Log(("CSAM Call Analysis: %s", szOutput)); 1058 1058 #else 1059 rc2 = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, (fCode32) ? CPUMODE_32BIT :CPUMODE_16BIT,1059 rc2 = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, (fCode32) ? DISCPUMODE_32BIT : DISCPUMODE_16BIT, 1060 1060 &cpu, &opsize, NULL, 0); 1061 1061 #endif … … 1266 1266 STAM_PROFILE_START(&pVM->csam.s.StatTimeDisasm, a); 1267 1267 #ifdef DEBUG 1268 rc2 = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, fCode32 ? CPUMODE_32BIT :CPUMODE_16BIT,1268 rc2 = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, fCode32 ? DISCPUMODE_32BIT : DISCPUMODE_16BIT, 1269 1269 &cpu, &opsize, szOutput, sizeof(szOutput)); 1270 1270 if (RT_SUCCESS(rc2)) Log(("CSAM Analysis: %s", szOutput)); 1271 1271 #else 1272 rc2 = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, fCode32 ? CPUMODE_32BIT :CPUMODE_16BIT,1272 rc2 = CSAMR3DISInstr(pVM, pCurInstrGC, pCurInstrHC, fCode32 ? DISCPUMODE_32BIT : DISCPUMODE_16BIT, 1273 1273 &cpu, &opsize, NULL, 0); 1274 1274 #endif … … 2261 2261 { 2262 2262 /* Assuming 32 bits code for now. */ 2263 Assert(SELMGetCpuModeFromSelector(VMMGetCpu0(pVM), pCtxCore->eflags, pCtxCore->cs, &pCtxCore->csHid) == CPUMODE_32BIT);2263 Assert(SELMGetCpuModeFromSelector(VMMGetCpu0(pVM), pCtxCore->eflags, pCtxCore->cs, &pCtxCore->csHid) == DISCPUMODE_32BIT); 2264 2264 2265 2265 pInstrGC = SELMToFlat(pVM, DIS_SELREG_CS, pCtxCore, pInstrGC); -
TabularUnified trunk/src/VBox/VMM/VMMR3/DBGFDisas.cpp ¶
r41674 r41675 122 122 case DBGF_DISAS_FLAGS_DEFAULT_MODE: 123 123 enmCpuMode = pState->f64Bits 124 ? CPUMODE_64BIT124 ? DISCPUMODE_64BIT 125 125 : pSelInfo->u.Raw.Gen.u1DefBig 126 ? CPUMODE_32BIT127 : CPUMODE_16BIT;126 ? DISCPUMODE_32BIT 127 : DISCPUMODE_16BIT; 128 128 break; 129 129 case DBGF_DISAS_FLAGS_16BIT_MODE: 130 130 case DBGF_DISAS_FLAGS_16BIT_REAL_MODE: 131 enmCpuMode = CPUMODE_16BIT;131 enmCpuMode = DISCPUMODE_16BIT; 132 132 break; 133 133 case DBGF_DISAS_FLAGS_32BIT_MODE: 134 enmCpuMode = CPUMODE_32BIT;134 enmCpuMode = DISCPUMODE_32BIT; 135 135 break; 136 136 case DBGF_DISAS_FLAGS_64BIT_MODE: 137 enmCpuMode = CPUMODE_64BIT;137 enmCpuMode = DISCPUMODE_64BIT; 138 138 break; 139 139 } -
TabularUnified trunk/src/VBox/VMM/VMMR3/EMHwaccm.cpp ¶
r40446 r41675 307 307 rcStrict = VINF_EM_RAW_EMULATE_INSTR; 308 308 309 if (!(Cpu.prefix & ( PREFIX_REP |PREFIX_REPNE)))309 if (!(Cpu.prefix & (DISPREFIX_REP | DISPREFIX_REPNE))) 310 310 { 311 311 switch (Cpu.pCurInstr->opcode) … … 326 326 } 327 327 } 328 else if (Cpu.prefix & PREFIX_REP)328 else if (Cpu.prefix & DISPREFIX_REP) 329 329 { 330 330 switch (Cpu.pCurInstr->opcode) -
TabularUnified trunk/src/VBox/VMM/VMMR3/EMRaw.cpp ¶
r40451 r41675 428 428 VBOXSTRICTRC rcStrict = VINF_EM_RAW_EMULATE_INSTR; 429 429 430 if (!(Cpu.prefix & ( PREFIX_REP |PREFIX_REPNE)))430 if (!(Cpu.prefix & (DISPREFIX_REP | DISPREFIX_REPNE))) 431 431 { 432 432 switch (Cpu.pCurInstr->opcode) … … 447 447 } 448 448 } 449 else if (Cpu.prefix & PREFIX_REP)449 else if (Cpu.prefix & DISPREFIX_REP) 450 450 { 451 451 switch (Cpu.pCurInstr->opcode) … … 684 684 { 685 685 rc = PATMR3InstallPatch(pVM, SELMToFlat(pVM, DIS_SELREG_CS, CPUMCTX2CORE(pCtx), pCtx->eip), 686 (SELMGetCpuModeFromSelector(pVCpu, pCtx->eflags, pCtx->cs, &pCtx->csHid) == CPUMODE_32BIT) ? PATMFL_CODE32 : 0);686 (SELMGetCpuModeFromSelector(pVCpu, pCtx->eflags, pCtx->cs, &pCtx->csHid) == DISCPUMODE_32BIT) ? PATMFL_CODE32 : 0); 687 687 if (RT_SUCCESS(rc)) 688 688 { … … 934 934 { 935 935 int rc = PATMR3InstallPatch(pVM, SELMToFlat(pVM, DIS_SELREG_CS, CPUMCTX2CORE(pCtx), pCtx->eip), 936 (SELMGetCpuModeFromSelector(pVCpu, pCtx->eflags, pCtx->cs, &pCtx->csHid) == CPUMODE_32BIT) ? PATMFL_CODE32 : 0);936 (SELMGetCpuModeFromSelector(pVCpu, pCtx->eflags, pCtx->cs, &pCtx->csHid) == DISCPUMODE_32BIT) ? PATMFL_CODE32 : 0); 937 937 if (RT_SUCCESS(rc)) 938 938 { … … 1041 1041 if ( (pCtx->ss & X86_SEL_RPL) == 0 1042 1042 && !pCtx->eflags.Bits.u1VM 1043 && SELMGetCpuModeFromSelector(pVCpu, pCtx->eflags, pCtx->cs, &pCtx->csHid) == CPUMODE_32BIT)1043 && SELMGetCpuModeFromSelector(pVCpu, pCtx->eflags, pCtx->cs, &pCtx->csHid) == DISCPUMODE_32BIT) 1044 1044 { 1045 1045 STAM_PROFILE_START(&pVCpu->em.s.StatPrivEmu, a); -
TabularUnified trunk/src/VBox/VMM/VMMR3/PATM.cpp ¶
r41674 r41675 604 604 disinfo.fReadFlags = fReadFlags; 605 605 return RT_SUCCESS(DISInstrToStrWithReader(InstrGCPtr32, 606 (pPatch->flags & PATMFL_CODE32) ? CPUMODE_32BIT :CPUMODE_16BIT,606 (pPatch->flags & PATMFL_CODE32) ? DISCPUMODE_32BIT : DISCPUMODE_16BIT, 607 607 patmReadBytes, &disinfo, 608 608 pCpu, pcbInstr, pszOutput, cbOutput)); … … 620 620 disinfo.fReadFlags = fReadFlags; 621 621 return RT_SUCCESS(DISInstrWithReader(InstrGCPtr32, 622 (pPatch->flags & PATMFL_CODE32) ? CPUMODE_32BIT :CPUMODE_16BIT,622 (pPatch->flags & PATMFL_CODE32) ? DISCPUMODE_32BIT : DISCPUMODE_16BIT, 623 623 patmReadBytes, &disinfo, 624 624 pCpu, pcbInstr)); … … 1654 1654 */ 1655 1655 Log(("patmRecompileCallback: jump to code we've recompiled before %RRv!\n", pCurInstrGC)); 1656 return patmPatchGenRelJump(pVM, pPatch, pCurInstrGC, OP_JMP, !!(pCpu->prefix & PREFIX_OPSIZE));1656 return patmPatchGenRelJump(pVM, pPatch, pCurInstrGC, OP_JMP, !!(pCpu->prefix & DISPREFIX_OPSIZE)); 1657 1657 } 1658 1658 … … 1713 1713 } 1714 1714 else 1715 rc = patmPatchGenRelJump(pVM, pPatch, pTargetGC, pCpu->pCurInstr->opcode, !!(pCpu->prefix & PREFIX_OPSIZE));1715 rc = patmPatchGenRelJump(pVM, pPatch, pTargetGC, pCpu->pCurInstr->opcode, !!(pCpu->prefix & DISPREFIX_OPSIZE)); 1716 1716 1717 1717 if (RT_SUCCESS(rc)) … … 1855 1855 fGenerateJmpBack = false; 1856 1856 1857 rc = patmPatchGenPopf(pVM, pPatch, pCurInstrGC + pCpu->opsize, !!(pCpu->prefix & PREFIX_OPSIZE), fGenerateJmpBack);1857 rc = patmPatchGenPopf(pVM, pPatch, pCurInstrGC + pCpu->opsize, !!(pCpu->prefix & DISPREFIX_OPSIZE), fGenerateJmpBack); 1858 1858 if (RT_SUCCESS(rc)) 1859 1859 { … … 1873 1873 1874 1874 case OP_PUSHF: 1875 rc = patmPatchGenPushf(pVM, pPatch, !!(pCpu->prefix & PREFIX_OPSIZE));1875 rc = patmPatchGenPushf(pVM, pPatch, !!(pCpu->prefix & DISPREFIX_OPSIZE)); 1876 1876 if (RT_SUCCESS(rc)) 1877 1877 rc = VWRN_CONTINUE_RECOMPILE; … … 1890 1890 case OP_IRET: 1891 1891 Log(("IRET at %RRv\n", pCurInstrGC)); 1892 rc = patmPatchGenIret(pVM, pPatch, pCurInstrGC, !!(pCpu->prefix & PREFIX_OPSIZE));1892 rc = patmPatchGenIret(pVM, pPatch, pCurInstrGC, !!(pCpu->prefix & DISPREFIX_OPSIZE)); 1893 1893 if (RT_SUCCESS(rc)) 1894 1894 { … … 3217 3217 pPatch->uCurPatchOffset = 0; 3218 3218 3219 cpu.mode = (pPatch->flags & PATMFL_CODE32) ? CPUMODE_32BIT :CPUMODE_16BIT;3219 cpu.mode = (pPatch->flags & PATMFL_CODE32) ? DISCPUMODE_32BIT : DISCPUMODE_16BIT; 3220 3220 3221 3221 /* Note: Set the PATM interrupt flag here; it was cleared before the patched call. (!!!) */ … … 4212 4212 pPatchRec->patch.pPrivInstrGC = pInstrGC; 4213 4213 pPatchRec->patch.flags = flags; 4214 pPatchRec->patch.uOpMode = (flags & PATMFL_CODE32) ? CPUMODE_32BIT :CPUMODE_16BIT;4214 pPatchRec->patch.uOpMode = (flags & PATMFL_CODE32) ? DISCPUMODE_32BIT : DISCPUMODE_16BIT; 4215 4215 pPatchRec->patch.pTrampolinePatchesHead = NULL; 4216 4216 … … 6457 6457 if (disret && (cpu.pCurInstr->opcode == OP_SYSEXIT || cpu.pCurInstr->opcode == OP_HLT || cpu.pCurInstr->opcode == OP_INT3)) 6458 6458 { 6459 cpu.mode = (pPatch->patch.flags & PATMFL_CODE32) ? CPUMODE_32BIT :CPUMODE_16BIT;6459 cpu.mode = (pPatch->patch.flags & PATMFL_CODE32) ? DISCPUMODE_32BIT : DISCPUMODE_16BIT; 6460 6460 disret = patmR3DisInstr(pVM, &pPatch->patch, pNewEip, PATMGCVirtToHCVirt(pVM, &cacheRec, pNewEip), PATMREAD_RAWCODE, 6461 6461 &cpu, &opsize); -
TabularUnified trunk/src/VBox/VMM/VMMR3/PATMPatch.cpp ¶
r41663 r41675 701 701 offset = 0; 702 702 /* include prefix byte to make sure we don't use the incorrect selector register. */ 703 if (pCpu->prefix & PREFIX_SEG)703 if (pCpu->prefix & DISPREFIX_SEG) 704 704 pPB[offset++] = DISQuerySegPrefixByte(pCpu); 705 705 pPB[offset++] = 0xFF; // push r/m32 706 706 pPB[offset++] = MAKE_MODRM(pCpu->ModRM.Bits.Mod, 6 /* group 5 */, pCpu->ModRM.Bits.Rm); 707 707 i = 2; /* standard offset of modrm bytes */ 708 if (pCpu->prefix & PREFIX_OPSIZE)708 if (pCpu->prefix & DISPREFIX_OPSIZE) 709 709 i++; //skip operand prefix 710 if (pCpu->prefix & PREFIX_SEG)710 if (pCpu->prefix & DISPREFIX_SEG) 711 711 i++; //skip segment prefix 712 712 … … 797 797 offset = 0; 798 798 /* include prefix byte to make sure we don't use the incorrect selector register. */ 799 if (pCpu->prefix & PREFIX_SEG)799 if (pCpu->prefix & DISPREFIX_SEG) 800 800 pPB[offset++] = DISQuerySegPrefixByte(pCpu); 801 801 … … 803 803 pPB[offset++] = MAKE_MODRM(pCpu->ModRM.Bits.Mod, 6 /* group 5 */, pCpu->ModRM.Bits.Rm); 804 804 i = 2; /* standard offset of modrm bytes */ 805 if (pCpu->prefix & PREFIX_OPSIZE)805 if (pCpu->prefix & DISPREFIX_OPSIZE) 806 806 i++; //skip operand prefix 807 if (pCpu->prefix & PREFIX_SEG)807 if (pCpu->prefix & DISPREFIX_SEG) 808 808 i++; //skip segment prefix 809 809 … … 1276 1276 PATCHGEN_PROLOG_NODEF(pVM, pPatch); 1277 1277 offset = 0; 1278 if (pCpu->prefix & PREFIX_OPSIZE)1278 if (pCpu->prefix & DISPREFIX_OPSIZE) 1279 1279 pPB[offset++] = 0x66; /* size override -> 16 bits push */ 1280 1280 pPB[offset++] = 0x16; … … 1289 1289 PATCHGEN_PROLOG_NODEF(pVM, pPatch); 1290 1290 offset = 0; 1291 if (pCpu->prefix & PREFIX_OPSIZE)1291 if (pCpu->prefix & DISPREFIX_OPSIZE) 1292 1292 pPB[offset++] = 0x66; /* size override -> 16 bits pop */ 1293 1293 pPB[offset++] = 0x58 + pCpu->param1.base.reg_gen; … … 1320 1320 1321 1321 /** @todo segment prefix (untested) */ 1322 Assert(pCpu->prefix == PREFIX_NONE || pCpu->prefix ==PREFIX_OPSIZE);1322 Assert(pCpu->prefix == DISPREFIX_NONE || pCpu->prefix == DISPREFIX_OPSIZE); 1323 1323 1324 1324 PATCHGEN_PROLOG(pVM, pPatch); … … 1329 1329 // 8B 15 [32 bits addr] mov edx, CPUMCTX.tr/ldtr 1330 1330 1331 if (pCpu->prefix == PREFIX_OPSIZE)1331 if (pCpu->prefix == DISPREFIX_OPSIZE) 1332 1332 pPB[offset++] = 0x66; 1333 1333 … … 1360 1360 pPB[offset++] = 0x52; // push edx 1361 1361 1362 if (pCpu->prefix == PREFIX_SEG)1362 if (pCpu->prefix == DISPREFIX_SEG) 1363 1363 { 1364 1364 pPB[offset++] = DISQuerySegPrefixByte(pCpu); … … 1369 1369 1370 1370 i = 3; /* standard offset of modrm bytes */ 1371 if (pCpu->prefix == PREFIX_OPSIZE)1371 if (pCpu->prefix == DISPREFIX_OPSIZE) 1372 1372 i++; //skip operand prefix 1373 if (pCpu->prefix == PREFIX_SEG)1373 if (pCpu->prefix == DISPREFIX_SEG) 1374 1374 i++; //skip segment prefix 1375 1375 … … 1420 1420 1421 1421 /* @todo segment prefix (untested) */ 1422 Assert(pCpu->prefix == PREFIX_NONE);1422 Assert(pCpu->prefix == DISPREFIX_NONE); 1423 1423 1424 1424 // sgdt %Ms … … 1455 1455 pPB[offset++] = 0x52; // push edx 1456 1456 1457 if (pCpu->prefix == PREFIX_SEG)1457 if (pCpu->prefix == DISPREFIX_SEG) 1458 1458 { 1459 1459 pPB[offset++] = DISQuerySegPrefixByte(pCpu); … … 1464 1464 1465 1465 i = 3; /* standard offset of modrm bytes */ 1466 if (pCpu->prefix == PREFIX_OPSIZE)1466 if (pCpu->prefix == DISPREFIX_OPSIZE) 1467 1467 i++; //skip operand prefix 1468 if (pCpu->prefix == PREFIX_SEG)1468 if (pCpu->prefix == DISPREFIX_SEG) 1469 1469 i++; //skip segment prefix 1470 1470 rc = patmPatchReadBytes(pVM, &pPB[offset], (RTRCPTR)((RTGCUINTPTR32)pCurInstrGC + i), pCpu->opsize - i); -
TabularUnified trunk/src/VBox/VMM/VMMR3/VMMSwitcher.cpp ¶
r41674 r41675 835 835 DISCPUSTATE Cpu; 836 836 char szDisas[256]; 837 int rc = DISInstr(pu8CodeR3 + offCode, CPUMODE_32BIT, &Cpu, &cbInstr);837 int rc = DISInstr(pu8CodeR3 + offCode, DISCPUMODE_32BIT, &Cpu, &cbInstr); 838 838 if (RT_SUCCESS(rc)) 839 839 { -
TabularUnified trunk/src/VBox/VMM/VMMRC/PATMRC.cpp ¶
r41674 r41675 511 511 512 512 cpu.mode = SELMGetCpuModeFromSelector(VMMGetCpu0(pVM), pRegFrame->eflags, pRegFrame->cs, 0); 513 if (cpu.mode != CPUMODE_32BIT)513 if (cpu.mode != DISCPUMODE_32BIT) 514 514 { 515 515 AssertFailed(); -
TabularUnified trunk/src/VBox/VMM/VMMRC/TRPMRCHandlers.cpp ¶
r41658 r41675 542 542 * Speed up dtrace and don't entrust invalid lock sequences to the recompiler. 543 543 */ 544 else if (Cpu.prefix & PREFIX_LOCK)544 else if (Cpu.prefix & DISPREFIX_LOCK) 545 545 { 546 546 Log(("TRPMGCTrap06Handler: pc=%08x op=%d\n", pRegFrame->eip, Cpu.pCurInstr->opcode)); -
TabularUnified trunk/src/VBox/VMM/include/EMHandleRCTmpl.h ¶
r41168 r41675 112 112 case VINF_PATM_HC_MMIO_PATCH_READ: 113 113 rc = PATMR3InstallPatch(pVM, SELMToFlat(pVM, DIS_SELREG_CS, CPUMCTX2CORE(pCtx), pCtx->eip), 114 PATMFL_MMIO_ACCESS | ((SELMGetCpuModeFromSelector(pVCpu, pCtx->eflags, pCtx->cs, &pCtx->csHid) == CPUMODE_32BIT) ? PATMFL_CODE32 : 0));114 PATMFL_MMIO_ACCESS | ((SELMGetCpuModeFromSelector(pVCpu, pCtx->eflags, pCtx->cs, &pCtx->csHid) == DISCPUMODE_32BIT) ? PATMFL_CODE32 : 0)); 115 115 if (RT_FAILURE(rc)) 116 116 rc = emR3ExecuteInstruction(pVM, pVCpu, "MMIO"); -
TabularUnified trunk/src/VBox/VMM/testcase/tstCompiler.cpp ¶
r41669 r41675 207 207 char sz[256]; 208 208 uint32_t cbInstr = 0; 209 if (RT_SUCCESS(DISInstrToStr(pbCur, CPUMODE_32BIT, &Cpu, &cbInstr, sz, sizeof(sz))))209 if (RT_SUCCESS(DISInstrToStr(pbCur, DISCPUMODE_32BIT, &Cpu, &cbInstr, sz, sizeof(sz)))) 210 210 { 211 211 RTPrintf("tstBitFields: %s", sz); -
TabularUnified trunk/src/recompiler/VBoxRecompiler.c ¶
r41669 r41675 4072 4072 DISCPUSTATE Cpu; 4073 4073 #ifdef RT_ARCH_X86 4074 DISCPUMODE enmCpuMode = CPUMODE_32BIT;4074 DISCPUMODE enmCpuMode = DISCPUMODE_32BIT; 4075 4075 #else 4076 DISCPUMODE enmCpuMode = CPUMODE_64BIT;4076 DISCPUMODE enmCpuMode = DISCPUMODE_64BIT; 4077 4077 #endif 4078 4078
Note:
See TracChangeset
for help on using the changeset viewer.