VirtualBox

Changeset 66337 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Mar 29, 2017 2:54:15 PM (8 years ago)
Author:
vboxsync
Message:

IEM: Unused entries in grp 8 completes ModR/M decoding and takes a 8-bit immediate, even on AMD it seems.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-decoding-1.c32

    r66334 r66337  
    384384#define UD_T_MODRM_MR6      0x26
    385385#define UD_T_MODRM_MR7      0x27
     386#define UD_T_MODRM_MR0_I8   0x28
     387#define UD_T_MODRM_MR1_I8   0x29
     388#define UD_T_MODRM_MR2_I8   0x2a
     389#define UD_T_MODRM_MR3_I8   0x2b
     390#define UD_T_MODRM_MR4_I8   0x2c
     391#define UD_T_MODRM_MR5_I8   0x2d
     392#define UD_T_MODRM_MR6_I8   0x2e
     393#define UD_T_MODRM_MR7_I8   0x2f
    386394
    387395#define UD_F_ANY_PFX 0
     
    509517    {  UD_T_MODRM_RR7, 2, { 0x0f, 0xae }, UD_F_NOT_NO_PFX }, /* 00=sfence */
    510518    {  UD_T_MODRM, 2, { 0x0f, 0xb8 }, UD_F_NOT_RN_PFX },
     519    {  UD_T_MODRM | UD_T_NOAMD, 2, { 0x0f, 0xb9 }, UD_F_ANY_PFX }, /* UD1 */
    511520#endif
    512     {  UD_T_MODRM | UD_T_NOAMD, 2, { 0x0f, 0xb9 }, UD_F_ANY_PFX }, /* UD1 */
     521    {  UD_T_MODRM_MR0_I8, 2, { 0x0f, 0xba }, UD_F_ANY_PFX }, /* grp8 */
     522    {  UD_T_MODRM_MR1_I8, 2, { 0x0f, 0xba }, UD_F_ANY_PFX }, /* grp8 */
     523    {  UD_T_MODRM_MR2_I8, 2, { 0x0f, 0xba }, UD_F_ANY_PFX }, /* grp8 */
     524    {  UD_T_MODRM_MR3_I8, 2, { 0x0f, 0xba }, UD_F_ANY_PFX }, /* grp8 */
    513525#if 0
    514526    /** @todo f3 0f bb rm and f2 0f bb rm does stuff on skylake even if their are blank in intel and AMD tables! */
     
    10201032                { 6, { RM_EDI_SIB_DISP32, SIB_EBX_X1_NONE, 0, 0, 0, 0 },    0 },
    10211033            };
     1034            static CPUDECODE1UDSEQ const s_aModRmMRxImm8[] = /* index*5 */
     1035            {
     1036                { 2+1, { RM_EAX_DEREF_EBX_DISP8, 0,                      0x11 }, 0 },
     1037                { 5+1, { RM_EAX_DEREF_EBX_DISP32, 0, 0, 0, 0,            0x11 }, 0 },
     1038                { 2+1, { RM_EAX_SIB, SIB_EBX_X1_NONE,                    0x11 }, 0 },
     1039                { 3+1, { RM_EAX_SIB_DISP8,  SIB_EBX_X1_NONE, 0,          0x11 }, 0 },
     1040                { 6+1, { RM_EAX_SIB_DISP32, SIB_EBX_X1_NONE, 0, 0, 0, 0, 0x11 }, 0 },
     1041
     1042                { 2+1, { RM_ECX_DEREF_EBX_DISP8, 0,                      0x11 }, 0 },
     1043                { 5+1, { RM_ECX_DEREF_EBX_DISP32, 0, 0, 0, 0,            0x11 }, 0 },
     1044                { 2+1, { RM_ECX_SIB, SIB_EBX_X1_NONE,                    0x11 }, 0 },
     1045                { 3+1, { RM_ECX_SIB_DISP8,  SIB_EBX_X1_NONE, 0,          0x11 }, 0 },
     1046                { 6+1, { RM_ECX_SIB_DISP32, SIB_EBX_X1_NONE, 0, 0, 0, 0, 0x11 }, 0 },
     1047
     1048                { 2+1, { RM_EDX_DEREF_EBX_DISP8, 0,                      0x11 }, 0 },
     1049                { 5+1, { RM_EDX_DEREF_EBX_DISP32, 0, 0, 0, 0,            0x11 }, 0 },
     1050                { 2+1, { RM_EDX_SIB, SIB_EBX_X1_NONE,                    0x11 }, 0 },
     1051                { 3+1, { RM_EDX_SIB_DISP8,  SIB_EBX_X1_NONE, 0,          0x11 }, 0 },
     1052                { 6+1, { RM_EDX_SIB_DISP32, SIB_EBX_X1_NONE, 0, 0, 0, 0, 0x11 }, 0 },
     1053
     1054                { 2+1, { RM_EBX_DEREF_EBX_DISP8, 0,                      0x11 }, 0 },
     1055                { 5+1, { RM_EBX_DEREF_EBX_DISP32, 0, 0, 0, 0,            0x11 }, 0 },
     1056                { 2+1, { RM_EBX_SIB, SIB_EBX_X1_NONE,                    0x11 }, 0 },
     1057                { 3+1, { RM_EBX_SIB_DISP8,  SIB_EBX_X1_NONE, 0,          0x11 }, 0 },
     1058                { 6+1, { RM_EBX_SIB_DISP32, SIB_EBX_X1_NONE, 0, 0, 0, 0, 0x11 }, 0 },
     1059
     1060                { 2+1, { RM_ESP_DEREF_EBX_DISP8, 0,                      0x11 }, 0 },
     1061                { 5+1, { RM_ESP_DEREF_EBX_DISP32, 0, 0, 0, 0,            0x11 }, 0 },
     1062                { 2+1, { RM_ESP_SIB, SIB_EBX_X1_NONE,                    0x11 }, 0 },
     1063                { 3+1, { RM_ESP_SIB_DISP8,  SIB_EBX_X1_NONE, 0,          0x11 }, 0 },
     1064                { 6+1, { RM_ESP_SIB_DISP32, SIB_EBX_X1_NONE, 0, 0, 0, 0, 0x11 }, 0 },
     1065
     1066                { 2+1, { RM_EBP_DEREF_EBX_DISP8, 0,                      0x11 }, 0 },
     1067                { 5+1, { RM_EBP_DEREF_EBX_DISP32, 0, 0, 0, 0,            0x11 }, 0 },
     1068                { 2+1, { RM_EBP_SIB, SIB_EBX_X1_NONE,                    0x11 }, 0 },
     1069                { 3+1, { RM_EBP_SIB_DISP8,  SIB_EBX_X1_NONE, 0,          0x11 }, 0 },
     1070                { 6+1, { RM_EBP_SIB_DISP32, SIB_EBX_X1_NONE, 0, 0, 0, 0, 0x11 }, 0 },
     1071
     1072                { 2+1, { RM_ESI_DEREF_EBX_DISP8, 0,                      0x11 }, 0 },
     1073                { 5+1, { RM_ESI_DEREF_EBX_DISP32, 0, 0, 0, 0,            0x11 }, 0 },
     1074                { 2+1, { RM_ESI_SIB, SIB_EBX_X1_NONE,                    0x11 }, 0 },
     1075                { 3+1, { RM_ESI_SIB_DISP8,  SIB_EBX_X1_NONE, 0,          0x11 }, 0 },
     1076                { 6+1, { RM_ESI_SIB_DISP32, SIB_EBX_X1_NONE, 0, 0, 0, 0, 0x11 }, 0 },
     1077
     1078                { 2+1, { RM_EDI_DEREF_EBX_DISP8, 0,                      0x11 }, 0 },
     1079                { 5+1, { RM_EDI_DEREF_EBX_DISP32, 0, 0, 0, 0,            0x11 }, 0 },
     1080                { 2+1, { RM_EDI_SIB, SIB_EBX_X1_NONE,                    0x11 }, 0 },
     1081                { 3+1, { RM_EDI_SIB_DISP8,  SIB_EBX_X1_NONE, 0,          0x11 }, 0 },
     1082                { 6+1, { RM_EDI_SIB_DISP32, SIB_EBX_X1_NONE, 0, 0, 0, 0, 0x11 }, 0 },
     1083            };
    10221084            unsigned            iPrefix;
    10231085            unsigned            cSuffixes;
     
    10941156                    paSuffixes  = &s_aModRmMRx[(paTests[iTest].enmType - UD_T_MODRM_MR0) * 5];
    10951157                    break;
     1158                case UD_T_MODRM_MR0_I8:
     1159                case UD_T_MODRM_MR1_I8:
     1160                case UD_T_MODRM_MR2_I8:
     1161                case UD_T_MODRM_MR3_I8:
     1162                case UD_T_MODRM_MR4_I8:
     1163                case UD_T_MODRM_MR5_I8:
     1164                case UD_T_MODRM_MR6_I8:
     1165                case UD_T_MODRM_MR7_I8:
     1166                    cSuffixes   = 5;
     1167                    paSuffixes  = &s_aModRmMRxImm8[(paTests[iTest].enmType - UD_T_MODRM_MR0_I8) * 5];
     1168                    break;
    10961169                default:
    10971170                    Bs3TestPrintf("#%u: enmType=%d\n", paTests[iTest].enmType);
     
    15741647    Bs3TestPrintf("g_uBs3CpuDetected=%#x\n", g_uBs3CpuDetected);
    15751648
    1576 #if 1
     1649#if 0
    15771650    Bs3TestSub("CMPPS, CMPPD, CMPSS, CMPSD");
    15781651    DecodeCmppsCmppdCmpssCmpsd();
     
    15861659    DecodeUdEdgeTest(g_aUdTest2Byte_0f, RT_ELEMENTS(g_aUdTest2Byte_0f));
    15871660#endif
    1588 #if 1
     1661#if 0
    15891662    Bs3TestSub("3 byte undefined opcodes 0f 38");
    15901663    DecodeUdEdgeTest(g_aUdTest3Byte_0f_38, RT_ELEMENTS(g_aUdTest3Byte_0f_38));
    15911664#endif
    15921665
    1593 #if 1
     1666#if 0
    15941667    Bs3TestSub("misc");
    15951668    DecodeEdgeTest();
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette