vbox的更動 13635 路徑 trunk/src/VBox/VMM/VMMGC/TRPMGC.cpp
- 時間撮記:
- 2008-10-28 下午08:27:33 (16 年 以前)
- 檔案:
-
- 修改 1 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/VMM/VMMGC/TRPMGC.cpp
r13027 r13635 105 105 * (If it's a EIP range this's the EIP, if not it's pvFault.) 106 106 */ 107 VMMRCDECL(int) trpm gcGuestIDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange)107 VMMRCDECL(int) trpmRCGuestIDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange) 108 108 { 109 109 uint16_t cbIDT; … … 118 118 119 119 #if 0 120 /* * @notethis causes problems in Windows XP as instructions following the update can be dangerous (str eax has been seen) */121 /* * @notenot 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. */ 122 122 /* Check if we can handle the write here. */ 123 123 if ( iGate != 3 /* Gate 3 is handled differently; could do it here as well, but let ring 3 handle this case for now. */ … … 130 130 uint32_t iGate1 = (offRange + cb - 1)/sizeof(VBOXIDTE); 131 131 132 Log(("trpm gcGuestIDTWriteHandler: 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)); 133 133 134 134 trpmClearGuestTrapHandler(pVM, iGate); … … 136 136 trpmClearGuestTrapHandler(pVM, iGate1); 137 137 138 STAM_COUNTER_INC(&pVM->trpm.s.Stat GCWriteGuestIDTHandled);138 STAM_COUNTER_INC(&pVM->trpm.s.StatRCWriteGuestIDTHandled); 139 139 return VINF_SUCCESS; 140 140 } … … 144 144 #endif 145 145 146 Log(("trpm gcGuestIDTWriteHandler: 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)); 147 147 148 148 /** @todo Check which IDT entry and keep the update cost low in TRPMR3SyncIDT() and CSAMCheckGates(). */ 149 149 VM_FF_SET(pVM, VM_FF_TRPM_SYNC_IDT); 150 150 151 STAM_COUNTER_INC(&pVM->trpm.s.Stat GCWriteGuestIDTFault);151 STAM_COUNTER_INC(&pVM->trpm.s.StatRCWriteGuestIDTFault); 152 152 return VINF_EM_RAW_EMULATE_INSTR_IDT_FAULT; 153 153 } … … 166 166 * (If it's a EIP range this's the EIP, if not it's pvFault.) 167 167 */ 168 VMMRCDECL(int) trpm gcShadowIDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange)168 VMMRCDECL(int) trpmRCShadowIDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange) 169 169 { 170 LogRel(("FATAL ERROR: trpm gcShadowIDTWriteHandler: 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)); 171 171 172 172 /* 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
來幫助您使用更動檢視器