VirtualBox

Changeset 100777 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Aug 1, 2023 11:03:51 PM (18 months ago)
Author:
vboxsync
Message:

IEM/VMM: More detailed (e.g. useful) memory access logging. bugref:10369

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAll.cpp

    r100731 r100777  
    69316931        *pu8Dst = *pu8Src;
    69326932        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu8Src, IEM_ACCESS_DATA_R);
     6933        Log9(("IEM RD byte %d|%RGv: %#04x\n", iSegReg, GCPtrMem, *pu8Dst));
    69336934    }
    69346935    return rc;
     
    69526953    uint8_t const  bRet   = *pu8Src;
    69536954    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu8Src, IEM_ACCESS_DATA_R);
     6955    Log9(("IEM RD byte %d|%RGv: %#04x\n", iSegReg, GCPtrMem, bRet));
    69546956    return bRet;
    69556957}
     
    69776979        *pu16Dst = *pu16Src;
    69786980        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu16Src, IEM_ACCESS_DATA_R);
     6981        Log9(("IEM RD word %d|%RGv: %#06x\n", iSegReg, GCPtrMem, *pu16Dst));
    69796982    }
    69806983    return rc;
     
    69997002    uint16_t const u16Ret = *pu16Src;
    70007003    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu16Src, IEM_ACCESS_DATA_R);
     7004    Log9(("IEM RD word %d|%RGv: %#06x\n", iSegReg, GCPtrMem, u16Ret));
    70017005    return u16Ret;
    70027006}
     
    70247028        *pu32Dst = *pu32Src;
    70257029        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu32Src, IEM_ACCESS_DATA_R);
     7030        Log9(("IEM RD dword %d|%RGv: %#010x\n", iSegReg, GCPtrMem, *pu32Dst));
    70267031    }
    70277032    return rc;
     
    70497054        *pu64Dst = *pu32Src;
    70507055        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu32Src, IEM_ACCESS_DATA_R);
     7056        Log9(("IEM RD dword %d|%RGv: %#010RX64\n", iSegReg, GCPtrMem, *pu64Dst));
    70517057    }
    70527058    return rc;
     
    70717077    uint32_t const  u32Ret  = *pu32Src;
    70727078    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu32Src, IEM_ACCESS_DATA_R);
     7079    Log9(("IEM RD dword %d|%RGv: %#010x\n", iSegReg, GCPtrMem, u32Ret));
    70737080    return u32Ret;
    70747081}
     
    71247131                    Assert(pTlbe->pbMappingR3); /* (Only ever cleared by the owning EMT.) */
    71257132                    Assert(!((uintptr_t)pTlbe->pbMappingR3 & GUEST_PAGE_OFFSET_MASK));
    7126                     return *(uint32_t const *)&pTlbe->pbMappingR3[GCPtrEff & GUEST_PAGE_OFFSET_MASK];
     7133                    uint32_t const u32Ret = *(uint32_t const *)&pTlbe->pbMappingR3[GCPtrEff & GUEST_PAGE_OFFSET_MASK];
     7134                    Log9(("IEM RD dword %d|%RGv: %#010x\n", iSegReg, GCPtrMem, u32Ret));
     7135                    return u32Ret;
    71277136                }
    71287137                Log10(("iemMemFetchDataU32Jmp: Raising #AC for %RGv\n", GCPtrEff));
     
    71427151    uint32_t const  u32Ret  = *pu32Src;
    71437152    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu32Src, IEM_ACCESS_DATA_R);
     7153    Log9(("IEM RD dword %d|%RGv: %#010x\n", iSegReg, GCPtrMem, u32Ret));
    71447154    return u32Ret;
    71457155# endif
     
    71697179        *pu64Dst = *pi32Src;
    71707180        rc = iemMemCommitAndUnmap(pVCpu, (void *)pi32Src, IEM_ACCESS_DATA_R);
     7181        Log9(("IEM RD dword %d|%RGv: %#010x\n", iSegReg, GCPtrMem, (uint32_t)*pu64Dst));
    71717182    }
    71727183#ifdef __GNUC__ /* warning: GCC may be a royal pain */
     
    71997210        *pu64Dst = *pu64Src;
    72007211        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu64Src, IEM_ACCESS_DATA_R);
     7212        Log9(("IEM RD qword %d|%RGv: %#018RX64\n", iSegReg, GCPtrMem, *pu64Dst));
    72017213    }
    72027214    return rc;
     
    72217233    uint64_t const u64Ret = *pu64Src;
    72227234    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu64Src, IEM_ACCESS_DATA_R);
     7235    Log9(("IEM RD qword %d|%RGv: %#018RX64\n", iSegReg, GCPtrMem, u64Ret));
    72237236    return u64Ret;
    72247237}
     
    72467259        *pu64Dst = *pu64Src;
    72477260        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu64Src, IEM_ACCESS_DATA_R);
     7261        Log9(("IEM RD qword %d|%RGv: %#018RX64\n", iSegReg, GCPtrMem, *pu64Dst));
    72487262    }
    72497263    return rc;
     
    72687282    uint64_t const u64Ret = *pu64Src;
    72697283    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu64Src, IEM_ACCESS_DATA_R);
     7284    Log9(("IEM RD qword %d|%RGv: %#018RX64\n", iSegReg, GCPtrMem, u64Ret));
    72707285    return u64Ret;
    72717286}
     
    72927307        *pr80Dst = *pr80Src;
    72937308        rc = iemMemCommitAndUnmap(pVCpu, (void *)pr80Src, IEM_ACCESS_DATA_R);
     7309        Log9(("IEM RD tword %d|%RGv: %.10Rhxs\n", iSegReg, GCPtrMem, pr80Dst));
    72947310    }
    72957311    return rc;
     
    73137329    *pr80Dst = *pr80Src;
    73147330    iemMemCommitAndUnmapJmp(pVCpu, (void *)pr80Src, IEM_ACCESS_DATA_R);
     7331    Log9(("IEM RD tword %d|%RGv: %.10Rhxs\n", iSegReg, GCPtrMem, pr80Dst));
    73157332}
    73167333#endif
     
    73377354        *pd80Dst = *pd80Src;
    73387355        rc = iemMemCommitAndUnmap(pVCpu, (void *)pd80Src, IEM_ACCESS_DATA_R);
     7356        Log9(("IEM RD tword %d|%RGv: %.10Rhxs\n", iSegReg, GCPtrMem, pd80Dst));
    73397357    }
    73407358    return rc;
     
    73597377    *pd80Dst = *pd80Src;
    73607378    iemMemCommitAndUnmapJmp(pVCpu, (void *)pd80Src, IEM_ACCESS_DATA_R);
     7379    Log9(("IEM RD tword %d|%RGv: %.10Rhxs\n", iSegReg, GCPtrMem, pd80Dst));
    73617380}
    73627381#endif
     
    73847403        pu128Dst->au64[1] = pu128Src->au64[1];
    73857404        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu128Src, IEM_ACCESS_DATA_R);
     7405        Log9(("IEM RD dqword %d|%RGv: %.16Rhxs\n", iSegReg, GCPtrMem, pu128Dst));
    73867406    }
    73877407    return rc;
     
    74077427    pu128Dst->au64[1] = pu128Src->au64[1];
    74087428    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu128Src, IEM_ACCESS_DATA_R);
     7429    Log9(("IEM RD dqword %d|%RGv: %.16Rhxs\n", iSegReg, GCPtrMem, pu128Dst));
    74097430}
    74107431#endif
     
    74357456        pu128Dst->au64[1] = pu128Src->au64[1];
    74367457        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu128Src, IEM_ACCESS_DATA_R);
     7458        Log9(("IEM RD dqword %d|%RGv: %.16Rhxs\n", iSegReg, GCPtrMem, pu128Dst));
    74377459    }
    74387460    return rc;
     
    74627484    pu128Dst->au64[1] = pu128Src->au64[1];
    74637485    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu128Src, IEM_ACCESS_DATA_R);
     7486    Log9(("IEM RD dqword %d|%RGv: %.16Rhxs\n", iSegReg, GCPtrMem, pu128Dst));
    74647487}
    74657488#endif
     
    74897512        pu256Dst->au64[3] = pu256Src->au64[3];
    74907513        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu256Src, IEM_ACCESS_DATA_R);
     7514        Log9(("IEM RD qqword %d|%RGv: %.32Rhxs\n", iSegReg, GCPtrMem, pu256Dst));
    74917515    }
    74927516    return rc;
     
    75147538    pu256Dst->au64[3] = pu256Src->au64[3];
    75157539    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu256Src, IEM_ACCESS_DATA_R);
     7540    Log9(("IEM RD qqword %d|%RGv: %.32Rhxs\n", iSegReg, GCPtrMem, pu256Dst));
    75167541}
    75177542#endif
     
    75447569        pu256Dst->au64[3] = pu256Src->au64[3];
    75457570        rc = iemMemCommitAndUnmap(pVCpu, (void *)pu256Src, IEM_ACCESS_DATA_R);
     7571        Log9(("IEM RD qqword %d|%RGv: %.32Rhxs\n", iSegReg, GCPtrMem, pu256Dst));
    75467572    }
    75477573    return rc;
     
    75737599    pu256Dst->au64[3] = pu256Src->au64[3];
    75747600    iemMemCommitAndUnmapJmp(pVCpu, (void *)pu256Src, IEM_ACCESS_DATA_R);
     7601    Log9(("IEM RD qqword %d|%RGv: %.32Rhxs\n", iSegReg, GCPtrMem, pu256Dst));
    75757602}
    75767603#endif
     
    76697696        *pu8Dst = u8Value;
    76707697        rc = iemMemCommitAndUnmap(pVCpu, pu8Dst, IEM_ACCESS_DATA_W);
     7698        Log8(("IEM WR byte %d|%RGv: %#04x\n", iSegReg, GCPtrMem, u8Value));
    76717699    }
    76727700    return rc;
     
    76877715{
    76887716    /* The lazy approach for now... */
     7717    Log8(("IEM WR byte %d|%RGv: %#04x\n", iSegReg, GCPtrMem, u8Value));
    76897718    uint8_t *pu8Dst = (uint8_t *)iemMemMapJmp(pVCpu, sizeof(*pu8Dst), iSegReg, GCPtrMem, IEM_ACCESS_DATA_W, 0);
    76907719    *pu8Dst = u8Value;
     
    77147743        *pu16Dst = u16Value;
    77157744        rc = iemMemCommitAndUnmap(pVCpu, pu16Dst, IEM_ACCESS_DATA_W);
     7745        Log8(("IEM WR word %d|%RGv: %#06x\n", iSegReg, GCPtrMem, u16Value));
    77167746    }
    77177747    return rc;
     
    77367766    *pu16Dst = u16Value;
    77377767    iemMemCommitAndUnmapJmp(pVCpu, pu16Dst, IEM_ACCESS_DATA_W);
     7768    Log8(("IEM WR word %d|%RGv: %#06x\n", iSegReg, GCPtrMem, u16Value));
    77387769}
    77397770#endif
     
    77607791        *pu32Dst = u32Value;
    77617792        rc = iemMemCommitAndUnmap(pVCpu, pu32Dst, IEM_ACCESS_DATA_W);
     7793        Log8(("IEM WR dword %d|%RGv: %#010x\n", iSegReg, GCPtrMem, u32Value));
    77627794    }
    77637795    return rc;
     
    77837815    *pu32Dst = u32Value;
    77847816    iemMemCommitAndUnmapJmp(pVCpu, pu32Dst, IEM_ACCESS_DATA_W);
     7817    Log8(("IEM WR dword %d|%RGv: %#010x\n", iSegReg, GCPtrMem, u32Value));
    77857818}
    77867819#endif
     
    78077840        *pu64Dst = u64Value;
    78087841        rc = iemMemCommitAndUnmap(pVCpu, pu64Dst, IEM_ACCESS_DATA_W);
     7842        Log8(("IEM WR qword %d|%RGv: %#018RX64\n", iSegReg, GCPtrMem, u64Value));
    78097843    }
    78107844    return rc;
     
    78297863    *pu64Dst = u64Value;
    78307864    iemMemCommitAndUnmapJmp(pVCpu, pu64Dst, IEM_ACCESS_DATA_W);
     7865    Log8(("IEM WR qword %d|%RGv: %#018RX64\n", iSegReg, GCPtrMem, u64Value));
    78317866}
    78327867#endif
     
    78547889        pu128Dst->au64[1] = u128Value.au64[1];
    78557890        rc = iemMemCommitAndUnmap(pVCpu, pu128Dst, IEM_ACCESS_DATA_W);
     7891        Log8(("IEM WR dqword %d|%RGv: %.16Rhxs\n", iSegReg, GCPtrMem, pu128Dst));
    78567892    }
    78577893    return rc;
     
    78777913    pu128Dst->au64[1] = u128Value.au64[1];
    78787914    iemMemCommitAndUnmapJmp(pVCpu, pu128Dst, IEM_ACCESS_DATA_W);
     7915    Log8(("IEM WR dqword %d|%RGv: %.16Rhxs\n", iSegReg, GCPtrMem, pu128Dst));
    78797916}
    78807917#endif
     
    79027939        pu128Dst->au64[1] = u128Value.au64[1];
    79037940        rc = iemMemCommitAndUnmap(pVCpu, pu128Dst, IEM_ACCESS_DATA_W);
     7941        Log8(("IEM WR dqword %d|%RGv: %.16Rhxs\n", iSegReg, GCPtrMem, pu128Dst));
    79047942    }
    79057943    return rc;
     
    79277965    pu128Dst->au64[1] = u128Value.au64[1];
    79287966    iemMemCommitAndUnmapJmp(pVCpu, pu128Dst, IEM_ACCESS_DATA_W);
     7967    Log8(("IEM WR dqword %d|%RGv: %.16Rhxs\n", iSegReg, GCPtrMem, pu128Dst));
    79297968}
    79307969#endif
     
    79547993        pu256Dst->au64[3] = pu256Value->au64[3];
    79557994        rc = iemMemCommitAndUnmap(pVCpu, pu256Dst, IEM_ACCESS_DATA_W);
     7995        Log8(("IEM WR qqword %d|%RGv: %.32Rhxs\n", iSegReg, GCPtrMem, pu256Dst));
    79567996    }
    79577997    return rc;
     
    79798019    pu256Dst->au64[3] = pu256Value->au64[3];
    79808020    iemMemCommitAndUnmapJmp(pVCpu, pu256Dst, IEM_ACCESS_DATA_W);
     8021    Log8(("IEM WR qqword %d|%RGv: %.32Rhxs\n", iSegReg, GCPtrMem, pu256Dst));
    79818022}
    79828023#endif
     
    80068047        pu256Dst->au64[3] = pu256Value->au64[3];
    80078048        rc = iemMemCommitAndUnmap(pVCpu, pu256Dst, IEM_ACCESS_DATA_W);
     8049        Log8(("IEM WR qqword %d|%RGv: %.32Rhxs\n", iSegReg, GCPtrMem, pu256Dst));
    80088050    }
    80098051    return rc;
     
    80338075    pu256Dst->au64[3] = pu256Value->au64[3];
    80348076    iemMemCommitAndUnmapJmp(pVCpu, pu256Dst, IEM_ACCESS_DATA_W);
     8077    Log8(("IEM WR qqword %d|%RGv: %.32Rhxs\n", iSegReg, GCPtrMem, pu256Dst));
    80358078}
    80368079#endif
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