VirtualBox

忽略:
時間撮記:
2008-10-28 下午08:27:33 (16 年 以前)
作者:
vboxsync
訊息:

#1865: TRPM.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/VMM/VMMGC/TRPMGC.cpp

    r13027 r13635  
    105105 *                      (If it's a EIP range this's the EIP, if not it's pvFault.)
    106106 */
    107 VMMRCDECL(int) trpmgcGuestIDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange)
     107VMMRCDECL(int) trpmRCGuestIDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange)
    108108{
    109109    uint16_t    cbIDT;
     
    118118
    119119#if 0
    120     /** @note this causes problems in Windows XP as instructions following the update can be dangerous (str eax has been seen) */
    121     /** @note not going back to ring 3 could make the code scanner miss them. */
     120    /* Note! this causes problems in Windows XP as instructions following the update can be dangerous (str eax has been seen) */
     121    /* Note! not going back to ring 3 could make the code scanner miss them. */
    122122    /* Check if we can handle the write here. */
    123123    if (     iGate != 3                                         /* Gate 3 is handled differently; could do it here as well, but let ring 3 handle this case for now. */
     
    130130            uint32_t iGate1 = (offRange + cb - 1)/sizeof(VBOXIDTE);
    131131
    132             Log(("trpmgcGuestIDTWriteHandler: write to gate %x (%x) offset %x cb=%d\n", iGate, iGate1, offRange, cb));
     132            Log(("trpmRCGuestIDTWriteHandler: write to gate %x (%x) offset %x cb=%d\n", iGate, iGate1, offRange, cb));
    133133
    134134            trpmClearGuestTrapHandler(pVM, iGate);
     
    136136                trpmClearGuestTrapHandler(pVM, iGate1);
    137137
    138             STAM_COUNTER_INC(&pVM->trpm.s.StatGCWriteGuestIDTHandled);
     138            STAM_COUNTER_INC(&pVM->trpm.s.StatRCWriteGuestIDTHandled);
    139139            return VINF_SUCCESS;
    140140        }
     
    144144#endif
    145145
    146     Log(("trpmgcGuestIDTWriteHandler: eip=%VGv write to gate %x offset %x\n", pRegFrame->eip, iGate, offRange));
     146    Log(("trpmRCGuestIDTWriteHandler: eip=%VGv write to gate %x offset %x\n", pRegFrame->eip, iGate, offRange));
    147147
    148148    /** @todo Check which IDT entry and keep the update cost low in TRPMR3SyncIDT() and CSAMCheckGates(). */
    149149    VM_FF_SET(pVM, VM_FF_TRPM_SYNC_IDT);
    150150
    151     STAM_COUNTER_INC(&pVM->trpm.s.StatGCWriteGuestIDTFault);
     151    STAM_COUNTER_INC(&pVM->trpm.s.StatRCWriteGuestIDTFault);
    152152    return VINF_EM_RAW_EMULATE_INSTR_IDT_FAULT;
    153153}
     
    166166 *                      (If it's a EIP range this's the EIP, if not it's pvFault.)
    167167 */
    168 VMMRCDECL(int) trpmgcShadowIDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange)
     168VMMRCDECL(int) trpmRCShadowIDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange)
    169169{
    170     LogRel(("FATAL ERROR: trpmgcShadowIDTWriteHandler: eip=%08X pvFault=%VGv pvRange=%08X\r\n", pRegFrame->eip, pvFault, pvRange));
     170    LogRel(("FATAL ERROR: trpmRCShadowIDTWriteHandler: eip=%08X pvFault=%VGv pvRange=%08X\r\n", pRegFrame->eip, pvFault, pvRange));
    171171
    172172    /* If we ever get here, then the guest has executed an sidt instruction that we failed to patch. In theory this could be very bad, but
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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