Changeset 40042 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Feb 8, 2012 9:16:33 PM (13 years ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r40022 r40042 5134 5134 #define IEM_MC_FETCH_MEM_U64_DISP(a_u64Dst, a_iSeg, a_GCPtrMem, a_offDisp) \ 5135 5135 IEM_MC_RETURN_ON_FAILURE(iemMemFetchDataU64(pIemCpu, &(a_u64Dst), (a_iSeg), (a_GCPtrMem) + (a_offDisp))) 5136 5137 #define IEM_MC_FETCH_MEM_R32(a_r32Dst, a_iSeg, a_GCPtrMem) \ 5138 IEM_MC_RETURN_ON_FAILURE(iemMemFetchDataU32(pIemCpu, &(a_r32Dst).u32, (a_iSeg), (a_GCPtrMem))) 5139 #define IEM_MC_FETCH_MEM_R64(a_r64Dst, a_iSeg, a_GCPtrMem) \ 5140 IEM_MC_RETURN_ON_FAILURE(iemMemFetchDataU64(pIemCpu, &(a_r64Dst).u64, (a_iSeg), (a_GCPtrMem))) 5141 #define IEM_MC_FETCH_MEM_R80(a_r80Dst, a_iSeg, a_GCPtrMem) \ 5142 IEM_MC_RETURN_ON_FAILURE(iemMemFetchDataR80(pIemCpu, &(a_r64Dst), (a_iSeg), (a_GCPtrMem))) 5143 5136 5144 5137 5145 #define IEM_MC_FETCH_MEM_U8_ZX_U16(a_u16Dst, a_iSeg, a_GCPtrMem) \ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
r40024 r40042 10384 10384 FNIEMOP_STUB(iemOp_EscF4); 10385 10385 10386 10387 /** Opcode 0xdd /0 mem32real */ 10388 FNIEMOP_DEF_1(iemOp_fld_m32r, uint8_t, bRm) 10389 { 10390 IEMOP_MNEMONIC("fld m32r"); 10391 IEMOP_HLP_NO_LOCK_PREFIX(); 10386 10392 #if 0 10387 /** Opcode 0xdd /0 mem32real */ 10388 FNIEMOP_STUB_1(iemOp_fld_m32r, uint8_t, bRm); 10393 10394 IEM_MC_BEGIN(3, 2); 10395 IEM_MC_LOCAL(RTFLOAT32U, r32Tmp); 10396 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10397 10398 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm); 10399 IEM_MC_FETCH_MEM_R32(r32Tmp, pIemCpu->iEffSeg, GCPtrEffSrc); 10400 10401 10402 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); 10403 IEM_MC_MAYBE_RAISE_FPU_XCPT(); 10404 10405 10406 IEM_MC_ADVANCE_RIP(); 10407 IEM_MC_END(); 10408 return VINF_SUCCESS; 10409 #else 10410 AssertFailedReturn(VERR_NOT_IMPLEMENTED); 10411 #endif 10412 } 10413 10389 10414 10390 10415 /** Opcode 0xdd /0 stN */ 10391 10416 FNIEMOP_STUB_1(iemOp_fld_stN, uint8_t, bRm); 10392 10417 10393 /** Opcode 0xdd /1 stN */10394 FNIEMOP_STUB_1(iemOp_fst_m32r, uint8_t, bRm);10395 10396 10418 /** Opcode 0xdd /2 mem32real */ 10397 10419 FNIEMOP_STUB_1(iemOp_fst_m32r, uint8_t, bRm); 10398 10420 10421 /** Opcode 0xdd /0 stN */ 10422 FNIEMOP_STUB_1(iemOp_fxch_stN, uint8_t, bRm); 10423 10399 10424 /** Opcode 0xdd /3 */ 10400 10425 FNIEMOP_STUB_1(iemOp_fstp_m32r, uint8_t, bRm); … … 10415 10440 FNIEMOP_STUB(iemOp_fnop); 10416 10441 10442 /** Opcode 0xdd 0xe0. */ 10443 FNIEMOP_STUB(iemOp_fchs); 10444 10445 /** Opcode 0xdd 0xe1. */ 10446 FNIEMOP_STUB(iemOp_fabs); 10447 10448 /** Opcode 0xdd 0xe4. */ 10449 FNIEMOP_STUB(iemOp_ftst); 10450 10451 /** Opcode 0xdd 0xe5. */ 10452 FNIEMOP_STUB(iemOp_fxam); 10453 10454 /** Opcode 0xdd 0xe8. */ 10455 FNIEMOP_STUB(iemOp_fld1); 10456 10457 /** Opcode 0xdd 0xe9. */ 10458 FNIEMOP_STUB(iemOp_fldl2t); 10459 10460 /** Opcode 0xdd 0xea. */ 10461 FNIEMOP_STUB(iemOp_fldl2e); 10462 10463 /** Opcode 0xdd 0xeb. */ 10464 FNIEMOP_STUB(iemOp_fldpi); 10465 10466 /** Opcode 0xdd 0xec. */ 10467 FNIEMOP_STUB(iemOp_fldlg2); 10468 10469 /** Opcode 0xdd 0xed. */ 10470 FNIEMOP_STUB(iemOp_fldln2); 10471 10472 /** Opcode 0xdd 0xee. */ 10473 FNIEMOP_STUB(iemOp_fldz); 10474 10475 /** Opcode 0xdd 0xf0. */ 10476 FNIEMOP_STUB(iemOp_f2xm1); 10477 10478 /** Opcode 0xdd 0xf1. */ 10479 FNIEMOP_STUB(iemOp_fylx2); 10480 10481 /** Opcode 0xdd 0xf2. */ 10482 FNIEMOP_STUB(iemOp_fptan); 10483 10484 /** Opcode 0xdd 0xf3. */ 10485 FNIEMOP_STUB(iemOp_fpatan); 10486 10487 /** Opcode 0xdd 0xf4. */ 10488 FNIEMOP_STUB(iemOp_fxtract); 10489 10490 /** Opcode 0xdd 0xf5. */ 10491 FNIEMOP_STUB(iemOp_fprem1); 10492 10493 /** Opcode 0xdd 0xf6. */ 10494 FNIEMOP_STUB(iemOp_fdecstp); 10495 10496 /** Opcode 0xdd 0xf7. */ 10497 FNIEMOP_STUB(iemOp_fincstp); 10498 10499 /** Opcode 0xdd 0xf8. */ 10500 FNIEMOP_STUB(iemOp_fprem); 10501 10502 /** Opcode 0xdd 0xf9. */ 10503 FNIEMOP_STUB(iemOp_fyl2xp1); 10504 10505 /** Opcode 0xdd 0xfa. */ 10506 FNIEMOP_STUB(iemOp_fsqrt); 10507 10508 /** Opcode 0xdd 0xfb. */ 10509 FNIEMOP_STUB(iemOp_fsincos); 10510 10511 /** Opcode 0xdd 0xfc. */ 10512 FNIEMOP_STUB(iemOp_frndint); 10513 10514 /** Opcode 0xdd 0xfd. */ 10515 FNIEMOP_STUB(iemOp_fscale); 10516 10517 /** Opcode 0xdd 0xfe. */ 10518 FNIEMOP_STUB(iemOp_fsin); 10519 10520 /** Opcode 0xdd 0xff. */ 10521 FNIEMOP_STUB(iemOp_fcos); 10522 10523 10524 /** Used by iemOp_EscF5. */ 10525 static const PFNIEMOP g_apfnEscF5_E0toFF[32] = 10526 { 10527 /* 0xe0 */ iemOp_fchs, 10528 /* 0xe1 */ iemOp_fabs, 10529 /* 0xe2 */ iemOp_Invalid, 10530 /* 0xe3 */ iemOp_Invalid, 10531 /* 0xe4 */ iemOp_ftst, 10532 /* 0xe5 */ iemOp_fxam, 10533 /* 0xe6 */ iemOp_Invalid, 10534 /* 0xe7 */ iemOp_Invalid, 10535 /* 0xe8 */ iemOp_fld1, 10536 /* 0xe9 */ iemOp_fldl2t, 10537 /* 0xea */ iemOp_fldl2e, 10538 /* 0xeb */ iemOp_fldpi, 10539 /* 0xec */ iemOp_fldlg2, 10540 /* 0xed */ iemOp_fldln2, 10541 /* 0xee */ iemOp_fldz, 10542 /* 0xef */ iemOp_Invalid, 10543 /* 0xf0 */ iemOp_f2xm1, 10544 /* 0xf1 */ iemOp_fylx2, 10545 /* 0xf2 */ iemOp_fptan, 10546 /* 0xf3 */ iemOp_fpatan, 10547 /* 0xf4 */ iemOp_fxtract, 10548 /* 0xf5 */ iemOp_fprem1, 10549 /* 0xf6 */ iemOp_fdecstp, 10550 /* 0xf7 */ iemOp_fincstp, 10551 /* 0xf8 */ iemOp_fprem, 10552 /* 0xf9 */ iemOp_fyl2xp1, 10553 /* 0xfa */ iemOp_fsqrt, 10554 /* 0xfb */ iemOp_fsincos, 10555 /* 0xfc */ iemOp_frndint, 10556 /* 0xfd */ iemOp_fscale, 10557 /* 0xfe */ iemOp_fsin, 10558 /* 0xff */ iemOp_fcos 10559 }; 10560 10417 10561 10418 10562 /** Opcode 0xdd. */ … … 10424 10568 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 10425 10569 { 10426 case 0: return FNIEMOP_CALL_1(iemOp_fld_stX, bRm); 10427 case 1: return FNIEMOP_CALL_1(iemOp_fxch_stX, bRm); 10570 case 0: 10571 return FNIEMOP_CALL_1(iemOp_fld_stN, bRm); 10572 case 1: 10573 return FNIEMOP_CALL_1(iemOp_fxch_stN, bRm); 10428 10574 case 2: 10429 10575 if (bRm == 0xc9) 10430 10576 return FNIEMOP_CALL(iemOp_fnop); 10431 10577 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: 10578 case 3: 10579 return FNIEMOP_CALL(iemOp_fnop); /* AMD says reserved; tests on intel indicates FNOP. */ 10580 case 4: case 5: case 6: case 7: 10581 return FNIEMOP_CALL(g_apfnEscF5_E0toFF[(bRm & (X86_MODRM_REG_MASK |X86_MODRM_RM_MASK)) - 0xe0]); 10437 10582 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 10438 10583 } … … 10447 10592 case 2: return FNIEMOP_CALL_1(iemOp_fst_m32r, bRm); 10448 10593 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);10594 case 4: return FNIEMOP_CALL_1(iemOp_fldenv, bRm); 10595 case 5: return FNIEMOP_CALL_1(iemOp_fldcw, bRm); 10596 case 6: return FNIEMOP_CALL_1(iemOp_fstenv, bRm); 10597 case 7: return FNIEMOP_CALL_1(iemOp_fstcw, bRm); 10453 10598 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 10454 10599 } 10455 10600 } 10456 10601 } 10457 #else10458 FNIEMOP_STUB(iemOp_EscF5);10459 #endif10460 10602 10461 10603
Note:
See TracChangeset
for help on using the changeset viewer.