VirtualBox

Changeset 4953 in vbox for trunk/src/VBox/VMM/PATM


Ignore:
Timestamp:
Sep 21, 2007 2:08:19 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
24710
Message:

Cleaned up disassembler

Location:
trunk/src/VBox/VMM/PATM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PATM/CSAM.cpp

    r4776 r4953  
    593593 *
    594594 */
    595 int32_t CSAMR3ReadBytes(RTHCUINTPTR pSrc, uint8_t *pDest, uint32_t size, RTHCUINTPTR dwUserdata)
    596 {
    597     DISCPUSTATE  *pCpu     = (DISCPUSTATE *)dwUserdata;
    598     PVM           pVM      = (PVM)pCpu->dwUserData[0];
    599     RTHCUINTPTR   pInstrHC = pCpu->dwUserData[1];
    600     RTGCUINTPTR   pInstrGC = pCpu->dwUserData[2];
     595static DECLCALLBACK(int) CSAMR3ReadBytes(RTHCUINTPTR pSrc, uint8_t *pDest, unsigned size, void *pvUserdata)
     596{
     597    DISCPUSTATE  *pCpu     = (DISCPUSTATE *)pvUserdata;
     598    PVM           pVM      = (PVM)pCpu->apvUserData[0];
     599    RTHCUINTPTR   pInstrHC = (RTHCUINTPTR)pCpu->apvUserData[1];
     600    RTGCUINTPTR   pInstrGC = (RTGCUINTPTR)pCpu->apvUserData[2];
    601601    int           orgsize  = size;
    602 
    603     Assert(sizeof(RTHCUINTPTR) <= sizeof(pCpu->dwUserData[0]));
    604     Assert(sizeof(RTGCUINTPTR) <= sizeof(pCpu->dwUserData[0]));
    605602
    606603    /* We are not interested in patched instructions, so read the original opcode bytes. */
     
    638635}
    639636
    640 inline bool CSAMR3DISInstr(PVM pVM, DISCPUSTATE *pCpu, RTGCPTR InstrGC, uint8_t *InstrHC, uint32_t *pOpsize, char *pszOutput)
     637inline int CSAMR3DISInstr(PVM pVM, DISCPUSTATE *pCpu, RTGCPTR InstrGC, uint8_t *InstrHC, uint32_t *pOpsize, char *pszOutput)
    641638{
    642639    (pCpu)->pfnReadBytes  = CSAMR3ReadBytes;
    643     (pCpu)->dwUserData[0] = (RTHCUINTPTR)pVM;
    644     (pCpu)->dwUserData[1] = (RTHCUINTPTR)InstrHC;
    645     (pCpu)->dwUserData[2] = (RTHCUINTPTR)InstrGC;
     640    (pCpu)->apvUserData[0] = pVM;
     641    (pCpu)->apvUserData[1] = InstrHC;
     642    (pCpu)->apvUserData[2] = (void *)InstrGC; Assert(sizeof(InstrGC) <= sizeof(pCpu->apvUserData[0]));
    646643#ifdef DEBUG
    647644    return DISInstrEx(pCpu, InstrGC, 0, pOpsize, pszOutput, OPTYPE_ALL);
     
    718715            DISCPUSTATE  cpu;
    719716            uint8_t     *pCurInstrHC = 0;
    720             bool         disret;
    721717
    722718            if (cbInstr + opsize >= SIZEOF_NEARJUMP32)
     
    741737
    742738            cpu.mode = (pPage->fCode32) ? CPUMODE_32BIT : CPUMODE_16BIT;
    743             disret = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, NULL);
    744             Assert(disret == true);
    745             if (disret == false)
     739            rc = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, NULL);
     740            Assert(VBOX_SUCCESS(rc));
     741            if (VBOX_FAILURE(rc))
    746742                break;
    747743        }
     
    889885            uint32_t     opsize;
    890886            uint8_t     *pCurInstrHC = 0;
    891             bool         disret;
     887            int          rc2;
    892888#ifdef DEBUG
    893889            char szOutput[256];
     
    924920                STAM_PROFILE_START(&pVM->csam.s.StatTimeDisasm, a);
    925921#ifdef DEBUG
    926                 disret = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, szOutput);
    927                 if (disret == true) Log(("CSAM Call Analysis: %s", szOutput));
     922                rc2 = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, szOutput);
     923                if (VBOX_SUCCESS(rc2)) Log(("CSAM Call Analysis: %s", szOutput));
    928924#else
    929                 disret = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, NULL);
     925                rc2 = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, NULL);
    930926#endif
    931927                STAM_PROFILE_STOP(&pVM->csam.s.StatTimeDisasm, a);
    932                 if (disret == false)
     928                if (VBOX_FAILURE(rc2))
    933929                {
    934                     Log(("Disassembly failed at %VGv (probably page not present) -> return to caller\n", pCurInstrGC));
     930                    Log(("Disassembly failed at %VGv with %Vrc (probably page not present) -> return to caller\n", pCurInstrGC, rc2));
    935931                    goto done;
    936932                }
     
    10731069    uint32_t opsize;
    10741070    R3PTRTYPE(uint8_t *) pCurInstrHC = 0;
    1075     bool disret;
     1071    int rc2;
    10761072
    10771073#ifdef DEBUG
     
    11341130        STAM_PROFILE_START(&pVM->csam.s.StatTimeDisasm, a);
    11351131#ifdef DEBUG
    1136         disret = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, szOutput);
    1137         if (disret == true) Log(("CSAM Analysis: %s", szOutput));
     1132        rc2 = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, szOutput);
     1133        if (VBOX_SUCCESS(rc2)) Log(("CSAM Analysis: %s", szOutput));
    11381134#else
    11391135        disret = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, NULL);
    11401136#endif
    11411137        STAM_PROFILE_STOP(&pVM->csam.s.StatTimeDisasm, a);
    1142         if (disret == false)
    1143         {
    1144             Log(("Disassembly failed at %VGv (probably page not present) -> return to caller\n", pCurInstrGC));
     1138        if (VBOX_FAILURE(rc2))
     1139        {
     1140            Log(("Disassembly failed at %VGv with %Vrc (probably page not present) -> return to caller\n", pCurInstrGC, rc2));
    11451141            rc = VINF_SUCCESS;
    11461142            goto done;
  • trunk/src/VBox/VMM/PATM/PATM.cpp

    r4776 r4953  
    506506 * @param   pDest       HC destination pointer
    507507 * @param   size        Number of bytes to read
    508  * @param   dwUserdata  Callback specific user data (pCpu)
    509  *
    510  */
    511 int32_t patmReadBytes(RTHCUINTPTR pSrc, uint8_t *pDest, uint32_t size, RTHCUINTPTR dwUserdata)
    512 {
    513     DISCPUSTATE  *pCpu     = (DISCPUSTATE *)dwUserdata;
    514     PATMDISASM   *pDisInfo = (PATMDISASM *)pCpu->dwUserData[0];
     508 * @param   pvUserdata  Callback specific user data (pCpu)
     509 *
     510 */
     511int patmReadBytes(RTHCUINTPTR pSrc, uint8_t *pDest, unsigned size, void *pvUserdata)
     512{
     513    DISCPUSTATE  *pCpu     = (DISCPUSTATE *)pvUserdata;
     514    PATMDISASM   *pDisInfo = (PATMDISASM *)pCpu->apvUserData[0];
    515515    int           orgsize  = size;
    516516
  • trunk/src/VBox/VMM/PATM/PATMInternal.h

    r4776 r4953  
    662662 * @param   pDest       HC destination pointer
    663663 * @param   size        Number of bytes to read
    664  * @param   dwUserdata  Callback specific user data (pCpu)
    665  *
    666  */
    667 int32_t patmReadBytes(RTHCUINTPTR pSrc, uint8_t *pDest, uint32_t size, RTHCUINTPTR dwUserdata);
     664 * @param   pvUserdata  Callback specific user data (pCpu)
     665 *
     666 */
     667int patmReadBytes(RTHCUINTPTR pSrc, uint8_t *pDest, unsigned size, void *pvUserdata);
    668668
    669669
     
    697697    disinfo.fReadFlags = fReadFlags;
    698698    (pCpu)->pfnReadBytes  = patmReadBytes;
    699     (pCpu)->dwUserData[0] = (RTHCUINTPTR)&disinfo;
    700     return DISInstr(pCpu, InstrGC, 0, pOpsize, pszOutput);
     699    (pCpu)->apvUserData[0] = &disinfo;
     700    return VBOX_SUCCESS(DISInstr(pCpu, InstrGC, 0, pOpsize, pszOutput));
    701701}
    702702#endif /* !IN_GC */
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