Changeset 4953 in vbox for trunk/src/VBox/VMM/PATM
- Timestamp:
- Sep 21, 2007 2:08:19 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 24710
- Location:
- trunk/src/VBox/VMM/PATM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PATM/CSAM.cpp
r4776 r4953 593 593 * 594 594 */ 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];595 static 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]; 601 601 int orgsize = size; 602 603 Assert(sizeof(RTHCUINTPTR) <= sizeof(pCpu->dwUserData[0]));604 Assert(sizeof(RTGCUINTPTR) <= sizeof(pCpu->dwUserData[0]));605 602 606 603 /* We are not interested in patched instructions, so read the original opcode bytes. */ … … 638 635 } 639 636 640 inline boolCSAMR3DISInstr(PVM pVM, DISCPUSTATE *pCpu, RTGCPTR InstrGC, uint8_t *InstrHC, uint32_t *pOpsize, char *pszOutput)637 inline int CSAMR3DISInstr(PVM pVM, DISCPUSTATE *pCpu, RTGCPTR InstrGC, uint8_t *InstrHC, uint32_t *pOpsize, char *pszOutput) 641 638 { 642 639 (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])); 646 643 #ifdef DEBUG 647 644 return DISInstrEx(pCpu, InstrGC, 0, pOpsize, pszOutput, OPTYPE_ALL); … … 718 715 DISCPUSTATE cpu; 719 716 uint8_t *pCurInstrHC = 0; 720 bool disret;721 717 722 718 if (cbInstr + opsize >= SIZEOF_NEARJUMP32) … … 741 737 742 738 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)) 746 742 break; 747 743 } … … 889 885 uint32_t opsize; 890 886 uint8_t *pCurInstrHC = 0; 891 bool disret;887 int rc2; 892 888 #ifdef DEBUG 893 889 char szOutput[256]; … … 924 920 STAM_PROFILE_START(&pVM->csam.s.StatTimeDisasm, a); 925 921 #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)); 928 924 #else 929 disret= CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, NULL);925 rc2 = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, NULL); 930 926 #endif 931 927 STAM_PROFILE_STOP(&pVM->csam.s.StatTimeDisasm, a); 932 if ( disret == false)928 if (VBOX_FAILURE(rc2)) 933 929 { 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)); 935 931 goto done; 936 932 } … … 1073 1069 uint32_t opsize; 1074 1070 R3PTRTYPE(uint8_t *) pCurInstrHC = 0; 1075 bool disret;1071 int rc2; 1076 1072 1077 1073 #ifdef DEBUG … … 1134 1130 STAM_PROFILE_START(&pVM->csam.s.StatTimeDisasm, a); 1135 1131 #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)); 1138 1134 #else 1139 1135 disret = CSAMR3DISInstr(pVM, &cpu, pCurInstrGC, pCurInstrHC, &opsize, NULL); 1140 1136 #endif 1141 1137 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)); 1145 1141 rc = VINF_SUCCESS; 1146 1142 goto done; -
trunk/src/VBox/VMM/PATM/PATM.cpp
r4776 r4953 506 506 * @param pDest HC destination pointer 507 507 * @param size Number of bytes to read 508 * @param dwUserdata Callback specific user data (pCpu)509 * 510 */ 511 int 32_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 */ 511 int patmReadBytes(RTHCUINTPTR pSrc, uint8_t *pDest, unsigned size, void *pvUserdata) 512 { 513 DISCPUSTATE *pCpu = (DISCPUSTATE *)pvUserdata; 514 PATMDISASM *pDisInfo = (PATMDISASM *)pCpu->apvUserData[0]; 515 515 int orgsize = size; 516 516 -
trunk/src/VBox/VMM/PATM/PATMInternal.h
r4776 r4953 662 662 * @param pDest HC destination pointer 663 663 * @param size Number of bytes to read 664 * @param dwUserdata Callback specific user data (pCpu)665 * 666 */ 667 int 32_t patmReadBytes(RTHCUINTPTR pSrc, uint8_t *pDest, uint32_t size, RTHCUINTPTR dwUserdata);664 * @param pvUserdata Callback specific user data (pCpu) 665 * 666 */ 667 int patmReadBytes(RTHCUINTPTR pSrc, uint8_t *pDest, unsigned size, void *pvUserdata); 668 668 669 669 … … 697 697 disinfo.fReadFlags = fReadFlags; 698 698 (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)); 701 701 } 702 702 #endif /* !IN_GC */
Note:
See TracChangeset
for help on using the changeset viewer.