Changeset 40083 in vbox
- Timestamp:
- Feb 12, 2012 1:51:58 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 76217
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
r40082 r40083 10645 10645 10646 10646 /** Opcode 0xdb 11/0. */ 10647 FNIEMOP_STUB_1(iemOp_fcmovnb , uint8_t, bRm);10647 FNIEMOP_STUB_1(iemOp_fcmovnb_stN, uint8_t, bRm); 10648 10648 10649 10649 /** Opcode 0xdb 11/1. */ 10650 FNIEMOP_STUB_1(iemOp_fcmovne , uint8_t, bRm);10650 FNIEMOP_STUB_1(iemOp_fcmovne_stN, uint8_t, bRm); 10651 10651 10652 10652 /** Opcode 0xdb 11/2. */ 10653 FNIEMOP_STUB_1(iemOp_fcmovnbe , uint8_t, bRm);10653 FNIEMOP_STUB_1(iemOp_fcmovnbe_stN, uint8_t, bRm); 10654 10654 10655 10655 /** Opcode 0xdb 11/3. */ 10656 FNIEMOP_STUB_1(iemOp_fcmovnnu , uint8_t, bRm);10656 FNIEMOP_STUB_1(iemOp_fcmovnnu_stN, uint8_t, bRm); 10657 10657 10658 10658 … … 10718 10718 10719 10719 /** Opcode 0xdb 11/5. */ 10720 FNIEMOP_STUB_1(iemOp_fucomi , uint8_t, bRm);10720 FNIEMOP_STUB_1(iemOp_fucomi_stN, uint8_t, bRm); 10721 10721 10722 10722 /** Opcode 0xdb 11/6. */ 10723 FNIEMOP_STUB_1(iemOp_fcomi , uint8_t, bRm);10723 FNIEMOP_STUB_1(iemOp_fcomi_stN, uint8_t, bRm); 10724 10724 10725 10725 … … 10733 10733 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 10734 10734 { 10735 case 0: FNIEMOP_CALL_1(iemOp_fcmovnb , bRm);10736 case 1: FNIEMOP_CALL_1(iemOp_fcmovne , bRm);10737 case 2: FNIEMOP_CALL_1(iemOp_fcmovnbe , bRm);10738 case 3: FNIEMOP_CALL_1(iemOp_fcmovnnu , bRm);10735 case 0: FNIEMOP_CALL_1(iemOp_fcmovnb_stN, bRm); 10736 case 1: FNIEMOP_CALL_1(iemOp_fcmovne_stN, bRm); 10737 case 2: FNIEMOP_CALL_1(iemOp_fcmovnbe_stN, bRm); 10738 case 3: FNIEMOP_CALL_1(iemOp_fcmovnnu_stN, bRm); 10739 10739 case 4: 10740 10740 IEMOP_HLP_NO_LOCK_PREFIX(); … … 10752 10752 } 10753 10753 break; 10754 case 5: return FNIEMOP_CALL_1(iemOp_fucomi , bRm);10755 case 6: return FNIEMOP_CALL_1(iemOp_fcomi , bRm);10754 case 5: return FNIEMOP_CALL_1(iemOp_fucomi_stN, bRm); 10755 case 6: return FNIEMOP_CALL_1(iemOp_fcomi_stN, bRm); 10756 10756 case 7: return IEMOP_RAISE_INVALID_OPCODE(); 10757 10757 IEM_NOT_REACHED_DEFAULT_CASE_RET(); … … 10775 10775 } 10776 10776 10777 10778 /** Opcode 0xdc 11/0. */ 10779 FNIEMOP_STUB_1(iemOp_fadd_stN_st0, uint8_t, bRm); 10780 10781 /** Opcode 0xdc 11/1. */ 10782 FNIEMOP_STUB_1(iemOp_fmul_stN_st0, uint8_t, bRm); 10783 10784 /** Opcode 0xdc 11/4. */ 10785 FNIEMOP_STUB_1(iemOp_fsubr_stN_st0, uint8_t, bRm); 10786 10787 /** Opcode 0xdc 11/5. */ 10788 FNIEMOP_STUB_1(iemOp_fsub_stN_st0, uint8_t, bRm); 10789 10790 /** Opcode 0xdc 11/6. */ 10791 FNIEMOP_STUB_1(iemOp_fdivr_stN_st0, uint8_t, bRm); 10792 10793 /** Opcode 0xdc 11/7. */ 10794 FNIEMOP_STUB_1(iemOp_fdiv_stN_st0, uint8_t, bRm); 10795 10796 /** Opcode 0xdc !11/0. */ 10797 FNIEMOP_STUB_1(iemOp_fadd_m64r, uint8_t, bRm); 10798 10799 /** Opcode 0xdc !11/1. */ 10800 FNIEMOP_STUB_1(iemOp_fmul_m64r, uint8_t, bRm); 10801 10802 /** Opcode 0xdc !11/2. */ 10803 FNIEMOP_STUB_1(iemOp_fcom_m64r, uint8_t, bRm); 10804 10805 /** Opcode 0xdc !11/3. */ 10806 FNIEMOP_STUB_1(iemOp_fcomp_m64r, uint8_t, bRm); 10807 10808 /** Opcode 0xdc !11/4. */ 10809 FNIEMOP_STUB_1(iemOp_fsub_m64r, uint8_t, bRm); 10810 10811 /** Opcode 0xdc !11/5. */ 10812 FNIEMOP_STUB_1(iemOp_fsubr_m64r, uint8_t, bRm); 10813 10814 /** Opcode 0xdc !11/6. */ 10815 FNIEMOP_STUB_1(iemOp_fdiv_m64r, uint8_t, bRm); 10816 10817 /** Opcode 0xdc !11/7. */ 10818 FNIEMOP_STUB_1(iemOp_fdivr_m64r, uint8_t, bRm); 10819 10820 10777 10821 /** Opcode 0xdc. */ 10778 FNIEMOP_STUB(iemOp_EscF4); 10822 FNIEMOP_DEF(iemOp_EscF4) 10823 { 10824 pIemCpu->offFpuOpcode = pIemCpu->offOpcode - 1; 10825 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 10826 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 10827 { 10828 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 10829 { 10830 case 0: return FNIEMOP_CALL_1(iemOp_fadd_stN_st0, bRm); 10831 case 1: return FNIEMOP_CALL_1(iemOp_fmul_stN_st0, bRm); 10832 case 2: return FNIEMOP_CALL(iemOp_fnop); 10833 case 3: return FNIEMOP_CALL(iemOp_fnop); 10834 case 4: return FNIEMOP_CALL_1(iemOp_fsubr_stN_st0, bRm); 10835 case 5: return FNIEMOP_CALL_1(iemOp_fsub_stN_st0, bRm); 10836 case 6: return FNIEMOP_CALL_1(iemOp_fdivr_stN_st0, bRm); 10837 case 7: return FNIEMOP_CALL_1(iemOp_fdiv_stN_st0, bRm); 10838 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 10839 } 10840 } 10841 else 10842 { 10843 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 10844 { 10845 case 0: return FNIEMOP_CALL_1(iemOp_fadd_m64r, bRm); 10846 case 1: return FNIEMOP_CALL_1(iemOp_fmul_m64r, bRm); 10847 case 2: return FNIEMOP_CALL_1(iemOp_fcom_m64r, bRm); 10848 case 3: return FNIEMOP_CALL_1(iemOp_fcomp_m64r, bRm); 10849 case 4: return FNIEMOP_CALL_1(iemOp_fsub_m64r, bRm); 10850 case 5: return FNIEMOP_CALL_1(iemOp_fsubr_m64r, bRm); 10851 case 6: return FNIEMOP_CALL_1(iemOp_fdiv_m64r, bRm); 10852 case 7: return FNIEMOP_CALL_1(iemOp_fdivr_m64r, bRm); 10853 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 10854 } 10855 } 10856 } 10779 10857 10780 10858 -
trunk/src/VBox/VMM/testcase/tstX86-1A.asm
r40082 r40083 1452 1452 ShouldTrap X86_XCPT_UD, db 0dbh, 032h 1453 1453 1454 ; the 0xdc block 1455 db 0dbh, 0d0h ; fnop? 1456 db 0dbh, 0d1h ; fnop? 1457 db 0dbh, 0d2h ; fnop? 1458 db 0dbh, 0d3h ; fnop? 1459 db 0dbh, 0d4h ; fnop? 1460 db 0dbh, 0d5h ; fnop? 1461 db 0dbh, 0d6h ; fnop? 1462 db 0dbh, 0d7h ; fnop? 1463 db 0dbh, 0d8h ; fnop? 1464 db 0dbh, 0d9h ; fnop? 1465 db 0dbh, 0dah ; fnop? 1466 db 0dbh, 0dbh ; fnop? 1467 db 0dbh, 0dch ; fnop? 1468 db 0dbh, 0ddh ; fnop? 1469 db 0dbh, 0deh ; fnop? 1470 db 0dbh, 0dfh ; fnop? 1471 1454 1472 ; the 0xdd block 1455 1473 db 0ddh, 0c0h ; fnop?
Note:
See TracChangeset
for help on using the changeset viewer.