vbox的更動 55895 路徑 trunk/src/VBox/VMM/VMMRC/SELMRC.cpp
- 時間撮記:
- 2015-5-17 下午07:42:38 (10 年 以前)
- svn:sync-xref-src-repo-rev:
- 100352
- 檔案:
-
- 修改 1 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/VMM/VMMRC/SELMRC.cpp
r49914 r55895 223 223 224 224 225 226 225 /** 227 226 * \#PF Virtual Handler callback for Guest write access to the Guest's own GDT. … … 236 235 * (If it's a EIP range this is the EIP, if not it's pvFault.) 237 236 */ 238 VMMRCDECL(int) selmRCGuestGDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange) 237 DECLEXPORT(int) selmRCGuestGDTWritePfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 238 RTGCPTR pvRange, uintptr_t offRange, void *pvUser) 239 239 { 240 240 PVMCPU pVCpu = VMMGetCpu0(pVM); 241 LogFlow(("selmRCGuestGDTWrite Handler errcode=%x fault=%RGv offRange=%08x\n", (uint32_t)uErrorCode, pvFault, offRange));242 NOREF(pvRange); 241 LogFlow(("selmRCGuestGDTWritePfHandler errcode=%x fault=%RGv offRange=%08x\n", (uint32_t)uErrorCode, pvFault, offRange)); 242 NOREF(pvRange); NOREF(pvUser); 243 243 244 244 /* … … 328 328 * @param offRange The offset of the access into this range. 329 329 * (If it's a EIP range this is the EIP, if not it's pvFault.) 330 */ 331 VMMRCDECL(int) selmRCGuestLDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange) 330 * @param pvUser Unused. 331 */ 332 DECLEXPORT(int) selmRCGuestLDTWritePfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 333 RTGCPTR pvRange, uintptr_t offRange, void *pvUser) 332 334 { 333 335 /** @todo To be implemented. */ 334 336 ////LogCom(("selmRCGuestLDTWriteHandler: eip=%08X pvFault=%RGv pvRange=%RGv\r\n", pRegFrame->eip, pvFault, pvRange)); 335 NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(pvRange); NOREF(offRange); 337 NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(pvRange); NOREF(offRange); NOREF(pvUser); 336 338 337 339 VMCPU_FF_SET(VMMGetCpu0(pVM), VMCPU_FF_SELM_SYNC_LDT); … … 381 383 * @param offRange The offset of the access into this range. 382 384 * (If it's a EIP range this is the EIP, if not it's pvFault.) 383 */ 384 VMMRCDECL(int) selmRCGuestTSSWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange) 385 * @param pvUser Unused. 386 */ 387 DECLEXPORT(int) selmRCGuestTSSWritePfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 388 RTGCPTR pvRange, uintptr_t offRange, void *pvUser) 385 389 { 386 390 PVMCPU pVCpu = VMMGetCpu0(pVM); 387 LogFlow(("selmRCGuestTSSWrite Handler errcode=%x fault=%RGv offRange=%08x\n", (uint32_t)uErrorCode, pvFault, offRange));388 NOREF(pvRange); 391 LogFlow(("selmRCGuestTSSWritePfHandler errcode=%x fault=%RGv offRange=%08x\n", (uint32_t)uErrorCode, pvFault, offRange)); 392 NOREF(pvRange); NOREF(pvUser); 389 393 390 394 /* … … 409 413 ) 410 414 { 411 Log(("selmRCGuestTSSWrite Handler: R0 stack: %RTsel:%RGv -> %RTsel:%RGv\n",415 Log(("selmRCGuestTSSWritePfHandler: R0 stack: %RTsel:%RGv -> %RTsel:%RGv\n", 412 416 (RTSEL)(pVM->selm.s.Tss.ss1 & ~1), (RTGCPTR)pVM->selm.s.Tss.esp1, (RTSEL)pGuestTss->ss0, (RTGCPTR)pGuestTss->esp0)); 413 417 pVM->selm.s.Tss.esp1 = pGuestTss->esp0; … … 423 427 ) 424 428 { 425 Log(("selmRCGuestTSSWrite Handler: R1 stack: %RTsel:%RGv -> %RTsel:%RGv\n",429 Log(("selmRCGuestTSSWritePfHandler: R1 stack: %RTsel:%RGv -> %RTsel:%RGv\n", 426 430 (RTSEL)((pVM->selm.s.Tss.ss2 & ~2) | 1), (RTGCPTR)pVM->selm.s.Tss.esp2, (RTSEL)pGuestTss->ss1, (RTGCPTR)pGuestTss->esp1)); 427 431 pVM->selm.s.Tss.esp2 = pGuestTss->esp1; … … 447 451 ) 448 452 { 449 Log(("selmRCGuestTSSWrite Handler: R0 stack: %RTsel:%RGv -> %RTsel:%RGv [x-page]\n",453 Log(("selmRCGuestTSSWritePfHandler: R0 stack: %RTsel:%RGv -> %RTsel:%RGv [x-page]\n", 450 454 (RTSEL)(pVM->selm.s.Tss.ss1 & ~1), (RTGCPTR)pVM->selm.s.Tss.esp1, (RTSEL)s.ss0, (RTGCPTR)s.esp0)); 451 455 pVM->selm.s.Tss.esp1 = s.esp0; … … 534 538 * @param offRange The offset of the access into this range. 535 539 * (If it's a EIP range this is the EIP, if not it's pvFault.) 536 */ 537 VMMRCDECL(int) selmRCShadowGDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange) 538 { 539 LogRel(("FATAL ERROR: selmRCShadowGDTWriteHandler: eip=%08X pvFault=%RGv pvRange=%RGv\r\n", pRegFrame->eip, pvFault, pvRange)); 540 NOREF(pVM); NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(pvRange); NOREF(offRange); 540 * @param pvUser Unused. 541 */ 542 DECLEXPORT(int) selmRCShadowGDTWritePfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 543 RTGCPTR pvRange, uintptr_t offRange, void *pvUser) 544 { 545 LogRel(("FATAL ERROR: selmRCShadowGDTWritePfHandler: eip=%08X pvFault=%RGv pvRange=%RGv\r\n", pRegFrame->eip, pvFault, pvRange)); 546 NOREF(pVM); NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(pvRange); NOREF(offRange); NOREF(pvUser); 541 547 return VERR_SELM_SHADOW_GDT_WRITE; 542 548 } … … 556 562 * @param offRange The offset of the access into this range. 557 563 * (If it's a EIP range this is the EIP, if not it's pvFault.) 558 */ 559 VMMRCDECL(int) selmRCShadowLDTWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange) 560 { 561 LogRel(("FATAL ERROR: selmRCShadowLDTWriteHandler: eip=%08X pvFault=%RGv pvRange=%RGv\r\n", pRegFrame->eip, pvFault, pvRange)); 564 * @param pvUser Unused. 565 */ 566 DECLEXPORT(int) selmRCShadowLDTWritePfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 567 RTGCPTR pvRange, uintptr_t offRange, void *pvUser) 568 { 569 LogRel(("FATAL ERROR: selmRCShadowLDTWritePfHandler: eip=%08X pvFault=%RGv pvRange=%RGv\r\n", pRegFrame->eip, pvFault, pvRange)); 562 570 Assert(pvFault - (uintptr_t)pVM->selm.s.pvLdtRC < (unsigned)(65536U + PAGE_SIZE)); 563 NOREF(pVM); NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(pvRange); NOREF(offRange); 571 NOREF(pVM); NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(pvRange); NOREF(offRange); NOREF(pvUser); 564 572 return VERR_SELM_SHADOW_LDT_WRITE; 565 573 } … … 579 587 * @param offRange The offset of the access into this range. 580 588 * (If it's a EIP range this is the EIP, if not it's pvFault.) 581 */ 582 VMMRCDECL(int) selmRCShadowTSSWriteHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPTR pvRange, uintptr_t offRange) 583 { 584 LogRel(("FATAL ERROR: selmRCShadowTSSWriteHandler: eip=%08X pvFault=%RGv pvRange=%RGv\r\n", pRegFrame->eip, pvFault, pvRange)); 585 NOREF(pVM); NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(pvRange); NOREF(offRange); 589 * @param pvUser Unused. 590 */ 591 DECLEXPORT(int) selmRCShadowTSSWritePfHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, 592 RTGCPTR pvRange, uintptr_t offRange, void *pvUser) 593 { 594 LogRel(("FATAL ERROR: selmRCShadowTSSWritePfHandler: eip=%08X pvFault=%RGv pvRange=%RGv\r\n", pRegFrame->eip, pvFault, pvRange)); 595 NOREF(pVM); NOREF(uErrorCode); NOREF(pRegFrame); NOREF(pvFault); NOREF(pvRange); NOREF(offRange); NOREF(pvUser); 586 596 return VERR_SELM_SHADOW_TSS_WRITE; 587 597 }
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器