Changeset 40024 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Feb 7, 2012 9:50:43 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
r40022 r40024 10003 10003 case 5: pImpl = &g_iemAImpl_shr; IEMOP_MNEMONIC("shr Eb,CL"); break; 10004 10004 case 7: pImpl = &g_iemAImpl_sar; IEMOP_MNEMONIC("sar Eb,CL"); break; 10005 case 6: return IEMOP_RAISE_INVALID_ LOCK_PREFIX();10005 case 6: return IEMOP_RAISE_INVALID_OPCODE(); 10006 10006 IEM_NOT_REACHED_DEFAULT_CASE_RET(); /* gcc, grr. */ 10007 10007 } … … 10383 10383 /** Opcode 0xdc. */ 10384 10384 FNIEMOP_STUB(iemOp_EscF4); 10385 10386 #if 0 10387 /** Opcode 0xdd /0 mem32real */ 10388 FNIEMOP_STUB_1(iemOp_fld_m32r, uint8_t, bRm); 10389 10390 /** Opcode 0xdd /0 stN */ 10391 FNIEMOP_STUB_1(iemOp_fld_stN, uint8_t, bRm); 10392 10393 /** Opcode 0xdd /1 stN */ 10394 FNIEMOP_STUB_1(iemOp_fst_m32r, uint8_t, bRm); 10395 10396 /** Opcode 0xdd /2 mem32real */ 10397 FNIEMOP_STUB_1(iemOp_fst_m32r, uint8_t, bRm); 10398 10399 /** Opcode 0xdd /3 */ 10400 FNIEMOP_STUB_1(iemOp_fstp_m32r, uint8_t, bRm); 10401 10402 /** Opcode 0xdd /4 */ 10403 FNIEMOP_STUB_1(iemOp_fldenv, uint8_t, bRm); 10404 10405 /** Opcode 0xdd /5 */ 10406 FNIEMOP_STUB_1(iemOp_fldcw, uint8_t, bRm); 10407 10408 /** Opcode 0xdd /6 */ 10409 FNIEMOP_STUB_1(iemOp_fstenv, uint8_t, bRm); 10410 10411 /** Opcode 0xdd /7 */ 10412 FNIEMOP_STUB_1(iemOp_fstcw, uint8_t, bRm); 10413 10414 /** Opcode 0xdd 0xc9, 0xdd 0xd8-0xdf. */ 10415 FNIEMOP_STUB(iemOp_fnop); 10416 10417 10385 10418 /** Opcode 0xdd. */ 10419 FNIEMOP_DEF(iemOp_EscF5) 10420 { 10421 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 10422 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 10423 { 10424 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 10425 { 10426 case 0: return FNIEMOP_CALL_1(iemOp_fld_stX, bRm); 10427 case 1: return FNIEMOP_CALL_1(iemOp_fxch_stX, bRm); 10428 case 2: 10429 if (bRm == 0xc9) 10430 return FNIEMOP_CALL(iemOp_fnop); 10431 return IEMOP_RAISE_INVALID_OPCODE(); 10432 case 3: return FNIEMOP_CALL(iemOp_fnop); /* AMD says reserved; tests on intel indicates FNOP. */ 10433 case 4: 10434 case 5: 10435 case 6: 10436 case 7: 10437 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 10438 } 10439 10440 } 10441 else 10442 { 10443 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 10444 { 10445 case 0: return FNIEMOP_CALL_1(iemOp_fld_m32r, bRm); 10446 case 1: return IEMOP_RAISE_INVALID_OPCODE(); /** @todo Check if 0xdd /1 is a valid instruction which does/did something. */ 10447 case 2: return FNIEMOP_CALL_1(iemOp_fst_m32r, bRm); 10448 case 3: return FNIEMOP_CALL_1(iemOp_fstp_m32r, bRm); 10449 case 4: return FNIEMOP_CALL_1(iemOp_fldenv, bRm); 10450 case 5: return FNIEMOP_CALL_1(iemOp_fldcw, bRm); 10451 case 6: return FNIEMOP_CALL_1(iemOp_fstenv, bRm); 10452 case 7: return FNIEMOP_CALL_1(iemOp_fstcw, bRm); 10453 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 10454 } 10455 } 10456 } 10457 #else 10386 10458 FNIEMOP_STUB(iemOp_EscF5); 10459 #endif 10460 10387 10461 10388 10462 /** Opcode 0xde 0xd9. */
Note:
See TracChangeset
for help on using the changeset viewer.