VirtualBox

Ignore:
Timestamp:
May 5, 2017 7:01:33 PM (8 years ago)
Author:
vboxsync
Message:

bs3-cpu-generated-1: Mark write-only memory as such, for what it's worth...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c

    r66812 r66813  
    9595    BS3CG1OPLOC_MEM,
    9696    BS3CG1OPLOC_MEM_RW,
     97    BS3CG1OPLOC_MEM_WO,
    9798    BS3CG1OPLOC_END
    9899} BS3CG1OPLOC;
     
    197198         * - BS3CG1OPLOC_MEM:       offset should be subtracted from &pbDataPg[_4K].
    198199         * - BS3CG1OPLOC_MEM_RW:    offset should be subtracted from &pbDataPg[_4K].
     200         * - BS3CG1OPLOC_MEM_RO:    offset should be subtracted from &pbDataPg[_4K].
    199201         * - BS3CG1OPLOC_CTX:       not used (use idxField instead).
    200202         */
     
    13861388
    13871389
    1388 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Gv_Ev__OR__BS3CG1ENC_MODRM_Ev_Gv(PBS3CG1STATE pThis, unsigned iEncoding)
     1390static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Gv_Ev__OR__BS3CG1ENC_MODRM_Ev_Gv(PBS3CG1STATE pThis,
     1391                                                                                                unsigned iEncoding)
    13891392{
    13901393    unsigned off;
     
    14041407        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    14051408        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, X86_GREG_xBP, cbOp, 0,
    1406                                        pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_RW);
     1409                                       pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_WO);
    14071410    }
    14081411    else if (iEncoding == 2 && (g_uBs3CpuDetected & BS3CPU_TYPE_MASK) >= BS3CPU_80386)
     
    14231426        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 1));
    14241427        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, X86_GREG_xSI, cbOp, 0,
    1425                                        pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_RW);
     1428                                       pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_WO);
    14261429    }
    14271430    else if (iEncoding == 4)
     
    14321435        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 1));
    14331436        off = Bs3Cfg1EncodeMemMod0Disp(pThis, true, off, X86_GREG_xDI, cbOp, 0,
    1434                                        pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_RW);
     1437                                       pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_WO);
    14351438    }
    14361439    else if (iEncoding == 5)
     
    14421445        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 2));
    14431446        off = Bs3Cfg1EncodeMemMod0Disp(pThis, true, off, X86_GREG_xSI, cbOp, 0,
    1444                                        pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_RW);
     1447                                       pThis->enmEncoding == BS3CG1ENC_MODRM_Gv_Ev ? BS3CG1OPLOC_MEM : BS3CG1OPLOC_MEM_WO);
    14451448    }
    14461449    else if (iEncoding == 6 && BS3_MODE_IS_64BIT_CODE(pThis->bMode))
     
    14651468
    14661469
    1467 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wss_Vss(PBS3CG1STATE pThis, unsigned iEncoding)
     1470static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wss_WO_Vss(PBS3CG1STATE pThis, unsigned iEncoding)
    14681471{
    14691472    unsigned off;
     
    14791482        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_DW0;
    14801483        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    1481         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 4, 0, BS3CG1OPLOC_MEM_RW);
     1484        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 4, 0, BS3CG1OPLOC_MEM_WO);
    14821485    }
    14831486    else if (iEncoding == 2)
     
    14851488        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_DW0;
    14861489        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    1487         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 4, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_RW);
     1490        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 4, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    14881491    }
    14891492    else
     
    14941497
    14951498
    1496 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wsd_Vsd(PBS3CG1STATE pThis, unsigned iEncoding)
     1499static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wsd_WO_Vsd(PBS3CG1STATE pThis, unsigned iEncoding)
    14971500{
    14981501    unsigned off;
     
    15081511        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_LO;
    15091512        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    1510         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_RW);
     1513        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_WO);
    15111514    }
    15121515    else if (iEncoding == 2)
     
    15141517        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_LO;
    15151518        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    1516         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_RW);
     1519        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    15171520    }
    15181521    else
     
    15231526
    15241527
    1525 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wps_Vps__OR__BS3CG1ENC_MODRM_Wpd_Vpd(PBS3CG1STATE pThis, unsigned iEncoding)
     1528static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wps_WO_Vps__OR__BS3CG1ENC_MODRM_Wpd_WO_Vpd(PBS3CG1STATE pThis, unsigned iEncoding)
    15261529{
    15271530    unsigned off;
     
    15371540        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2;
    15381541        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    1539         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_RW);
     1542        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 16, 0, BS3CG1OPLOC_MEM_WO);
    15401543    }
    15411544    else if (iEncoding == 2)
     
    15431546        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3;
    15441547        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    1545         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_RW);
     1548        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 16, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    15461549        if (!Bs3Cg1XcptTypeIsUnaligned(pThis->enmXcptType))
    15471550            pThis->bAlignmentXcpt = X86_XCPT_GP;
     
    15541557
    15551558
    1556 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_WqZxReg_Vq(PBS3CG1STATE pThis, unsigned iEncoding)
     1559static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_WqZxReg_WO_Vq(PBS3CG1STATE pThis, unsigned iEncoding)
    15571560{
    15581561    unsigned off;
     
    15681571        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_LO;
    15691572        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    1570         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_RW);
     1573        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_WO);
    15711574    }
    15721575    else if (iEncoding == 2)
     
    15741577        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_LO;
    15751578        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    1576         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_RW);
     1579        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    15771580    }
    15781581    else
     
    16311634
    16321635
    1633 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_Mq(PBS3CG1STATE pThis, unsigned iEncoding)
     1636static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_WO_Mq(PBS3CG1STATE pThis, unsigned iEncoding)
    16341637{
    16351638    unsigned off;
     
    16531656
    16541657
    1655 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_Uq(PBS3CG1STATE pThis, unsigned iEncoding)
     1658static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_WO_Uq(PBS3CG1STATE pThis, unsigned iEncoding)
    16561659{
    16571660    unsigned off;
     
    16771680
    16781681
    1679 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_Mq(PBS3CG1STATE pThis, unsigned iEncoding)
     1682static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_WO_Mq(PBS3CG1STATE pThis, unsigned iEncoding)
    16801683{
    16811684    unsigned off;
     
    17301733
    17311734
    1732 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vps_Wps__OR__BS3CG1ENC_MODRM_Vpd_Wpd(PBS3CG1STATE pThis,
     1735static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vps_WO_Wps__OR__BS3CG1ENC_MODRM_Vpd_WO_Wpd(PBS3CG1STATE pThis,
    17331736                                                                                                    unsigned iEncoding)
    17341737{
     
    17621765
    17631766
    1764 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_Wss(PBS3CG1STATE pThis, unsigned iEncoding)
     1767static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_WO_Wss(PBS3CG1STATE pThis, unsigned iEncoding)
    17651768{
    17661769    unsigned off;
     
    17911794
    17921795
    1793 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_Wsd__OR__MODRM_VqZxReg_Wq(PBS3CG1STATE pThis,
     1796static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_WO_Wsd__OR__MODRM_VqZxReg_WO_Wq(PBS3CG1STATE pThis,
    17941797                                                                                                  unsigned iEncoding)
    17951798{
     
    19301933        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    19311934                                       (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    1932                                        4, 0, BS3CG1OPLOC_MEM_RW);
     1935                                       4, 0, BS3CG1OPLOC_MEM_WO);
    19331936    }
    19341937    else
     
    19391942
    19401943
    1941 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_VEX_MODRM_MdWO(PBS3CG1STATE pThis, unsigned iEncoding)
     1944static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_VEX_MODRM_Md_WO(PBS3CG1STATE pThis, unsigned iEncoding)
    19421945{
    19431946    unsigned off;
     
    19491952        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    19501953                                       (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    1951                                        4, 0, BS3CG1OPLOC_MEM_RW);
     1954                                       4, 0, BS3CG1OPLOC_MEM_WO);
    19521955    }
    19531956    else if (iEncoding == 1)
     
    19571960        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    19581961                                       (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    1959                                        4, 0, BS3CG1OPLOC_MEM_RW);
     1962                                       4, 0, BS3CG1OPLOC_MEM_WO);
    19601963    }
    19611964    else if (iEncoding == 2)
     
    19651968        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    19661969                                       (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    1967                                        4, 0, BS3CG1OPLOC_MEM_RW);
     1970                                       4, 0, BS3CG1OPLOC_MEM_WO);
    19681971        pThis->fInvalidEncoding = true;
    19691972    }
     
    19741977        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    19751978                                       (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    1976                                        4, 0, BS3CG1OPLOC_MEM_RW);
     1979                                       4, 0, BS3CG1OPLOC_MEM_WO);
    19771980        pThis->fInvalidEncoding = true;
    19781981    }
     
    19841987        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    19851988                                       (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    1986                                        4, 0, BS3CG1OPLOC_MEM_RW);
     1989                                       4, 0, BS3CG1OPLOC_MEM_WO);
    19871990        pThis->fInvalidEncoding = true;
    19881991    }
     
    19941997        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    19951998                                       (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    1996                                        4, 0, BS3CG1OPLOC_MEM_RW);
     1999                                       4, 0, BS3CG1OPLOC_MEM_WO);
    19972000        pThis->fInvalidEncoding = true;
    19982001    }
     
    20042007        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    20052008                                       (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    2006                                        4, 0, BS3CG1OPLOC_MEM_RW);
     2009                                       4, 0, BS3CG1OPLOC_MEM_WO);
    20072010        pThis->fInvalidEncoding = true;
    20082011    }
     
    20132016        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    20142017                                       (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    2015                                        4, 0, BS3CG1OPLOC_MEM_RW);
     2018                                       4, 0, BS3CG1OPLOC_MEM_WO);
    20162019    }
    20172020#if ARCH_BITS == 64
     
    20252028            off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off,
    20262029                                           (pThis->abCurInstr[off] & X86_MODRM_REG_MASK) >> X86_MODRM_REG_SHIFT,
    2027                                            4, 0, BS3CG1OPLOC_MEM_RW);
     2030                                           4, 0, BS3CG1OPLOC_MEM_WO);
    20282031            pThis->fInvalidEncoding = true;
    20292032        }
     
    20392042
    20402043
    2041 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MqWO_Vq(PBS3CG1STATE pThis, unsigned iEncoding)
     2044static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq_WO_Vq(PBS3CG1STATE pThis, unsigned iEncoding)
    20422045{
    20432046    unsigned off;
     
    20462049        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_LO;
    20472050        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    2048         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_RW);
     2051        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_WO);
    20492052    }
    20502053    else if (iEncoding == 1)
     
    20522055        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_LO;
    20532056        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    2054         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_RW);
     2057        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    20552058    }
    20562059    else
     
    20612064
    20622065
    2063 static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MqWO_VqHi(PBS3CG1STATE pThis, unsigned iEncoding)
     2066static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq_WO_VqHi(PBS3CG1STATE pThis, unsigned iEncoding)
    20642067{
    20652068    unsigned off;
     
    20682071        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_HI;
    20692072        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    2070         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_RW);
     2073        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM_WO);
    20712074    }
    20722075    else if (iEncoding == 1)
     
    20742077        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_HI;
    20752078        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
    2076         off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_RW);
     2079        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM_WO);
    20772080    }
    20782081    else
     
    22542257
    22552258        case BS3CG1ENC_MODRM_Wss_WO_Vss:
    2256             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wss_Vss(pThis, iEncoding);
     2259            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wss_WO_Vss(pThis, iEncoding);
    22572260        case BS3CG1ENC_MODRM_Wsd_WO_Vsd:
    2258             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wsd_Vsd(pThis, iEncoding);
     2261            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wsd_WO_Vsd(pThis, iEncoding);
    22592262        case BS3CG1ENC_MODRM_Wps_WO_Vps:
    22602263        case BS3CG1ENC_MODRM_Wpd_WO_Vpd:
    2261             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wps_Vps__OR__BS3CG1ENC_MODRM_Wpd_Vpd(pThis, iEncoding);
     2264            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Wps_WO_Vps__OR__BS3CG1ENC_MODRM_Wpd_WO_Vpd(pThis, iEncoding);
    22622265        case BS3CG1ENC_MODRM_WqZxReg_WO_Vq:
    2263             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_WqZxReg_Vq(pThis, iEncoding);
     2266            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_WqZxReg_WO_Vq(pThis, iEncoding);
    22642267
    22652268        case BS3CG1ENC_MODRM_Pq_WO_Uq:
     
    22692272            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_WO_UqHi(pThis, iEncoding);
    22702273        case BS3CG1ENC_MODRM_Vq_WO_Mq:
    2271             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_Mq(pThis, iEncoding);
     2274            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vq_WO_Mq(pThis, iEncoding);
    22722275        case BS3CG1ENC_MODRM_VqHi_WO_Uq:
    2273             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_Uq(pThis, iEncoding);
     2276            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_WO_Uq(pThis, iEncoding);
    22742277        case BS3CG1ENC_MODRM_VqHi_WO_Mq:
    2275             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_Mq(pThis, iEncoding);
     2278            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqHi_WO_Mq(pThis, iEncoding);
    22762279        case BS3CG1ENC_MODRM_Vdq_WO_Wdq:
    22772280            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vdq_WO_Wdq(pThis, iEncoding);
    22782281        case BS3CG1ENC_MODRM_Vpd_WO_Wpd:
    22792282        case BS3CG1ENC_MODRM_Vps_WO_Wps:
    2280             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vps_Wps__OR__BS3CG1ENC_MODRM_Vpd_Wpd(pThis, iEncoding);
     2283            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Vps_WO_Wps__OR__BS3CG1ENC_MODRM_Vpd_WO_Wpd(pThis, iEncoding);
    22812284        case BS3CG1ENC_MODRM_VssZxReg_WO_Wss:
    2282             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_Wss(pThis, iEncoding);
     2285            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_WO_Wss(pThis, iEncoding);
    22832286        case BS3CG1ENC_MODRM_VsdZxReg_WO_Wsd:
    22842287        case BS3CG1ENC_MODRM_VqZxReg_WO_Wq:
    2285             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_Wsd__OR__MODRM_VqZxReg_Wq(pThis, iEncoding);
     2288            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_WO_Wsd__OR__MODRM_VqZxReg_WO_Wq(pThis, iEncoding);
    22862289        case BS3CG1ENC_MODRM_VqZxReg_WO_Nq:
    22872290            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VqZxReg_WO_Nq(pThis, iEncoding);
     
    22972300            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Md_WO(pThis, iEncoding);
    22982301        case BS3CG1ENC_VEX_MODRM_Md_WO:
    2299             return Bs3Cg1EncodeNext_BS3CG1ENC_VEX_MODRM_MdWO(pThis, iEncoding);
     2302            return Bs3Cg1EncodeNext_BS3CG1ENC_VEX_MODRM_Md_WO(pThis, iEncoding);
    23002303        case BS3CG1ENC_MODRM_Mq_WO_Vq:
    2301             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MqWO_Vq(pThis, iEncoding);
     2304            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq_WO_Vq(pThis, iEncoding);
    23022305        case BS3CG1ENC_MODRM_Mq_WO_VqHi:
    2303             return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_MqWO_VqHi(pThis, iEncoding);
     2306            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Mq_WO_VqHi(pThis, iEncoding);
    23042307
    23052308        case BS3CG1ENC_FIXED:
     
    25032506            pThis->iRmOp             = 0;
    25042507            pThis->aOperands[0].cbOp = 4;
    2505             pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_RW;
     2508            pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_WO;
    25062509            break;
    25072510
     
    25122515            pThis->aOperands[0].cbOp = 8;
    25132516            pThis->aOperands[1].cbOp = 8;
    2514             pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_RW;
     2517            pThis->aOperands[0].enmLocation = BS3CG1OPLOC_MEM_WO;
    25152518            pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX;
    25162519            break;
     
    30413044
    30423045                    case BS3CG1OPLOC_MEM_RW:
     3046                    case BS3CG1OPLOC_MEM_WO:
    30433047                        if (pbInstr)
    30443048                            PtrField.pu8 = &pThis->pbDataPg[X86_PAGE_SIZE - pThis->aOperands[idxOp].off];
     
    32203224
    32213225                    case BS3CG1OPLOC_MEM_RW:
     3226                    case BS3CG1OPLOC_MEM_WO:
    32223227                        if (pbInstr)
    32233228                            PtrField.pu8 = &pThis->pbDataPg[X86_PAGE_SIZE - pThis->aOperands[idxOp].off];
     
    33473352            iOperand = pThis->cOperands;
    33483353            while (iOperand-- > 0)
    3349                 if (pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_RW)
     3354                if (   pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_RW
     3355                    || pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_WO)
    33503356                {
    33513357                    if (pThis->aOperands[iOperand].off)
     
    35153521            case BS3CG1OPLOC_MEM:
    35163522            case BS3CG1OPLOC_MEM_RW:
     3523            case BS3CG1OPLOC_MEM_WO:
    35173524                if (pThis->aOperands[iOperand].off)
    35183525                {
     
    35293536                            break;
    35303537                    }
    3531                     if (pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_RW)
     3538                    if (   pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_WO
     3539                        || pThis->aOperands[iOperand].enmLocation == BS3CG1OPLOC_MEM_RW)
    35323540                    {
    35333541                        PtrUnion.pb = pThis->MemOp.ab;
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