Changeset 42773 in vbox
- Timestamp:
- Aug 11, 2012 8:16:58 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 79992
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMRC/TRPMRCHandlers.cpp
r42450 r42773 58 58 #define DTRACE_EXPERIMENT 59 59 60 #if 1 61 # define TRPM_ENTER_DBG_HOOK(a_iVector) do {} while (0) 62 # define TRPM_EXIT_DBG_HOOK(a_iVector) do {} while (0) 63 # define TRPM_ENTER_DBG_HOOK_HYPER(a_iVector) do {} while (0) 64 # define TRPM_EXIT_DBG_HOOK_HYPER(a_iVector) do {} while (0) 65 #else 66 # define TRPM_ENTER_DBG_HOOK(a_iVector) \ 67 uint32_t const fDbgEFlags1 = CPUMRawGetEFlags(pVCpu); \ 68 if (!(fDbgEFlags1 & X86_EFL_IF)) Log(("%s: IF=0 ##\n", __FUNCTION__)); \ 69 else do {} while(0) 70 # define TRPM_EXIT_DBG_HOOK(a_iVector) \ 71 do { \ 72 uint32_t const fDbgEFlags2 = CPUMRawGetEFlags(pVCpu); \ 73 if ((fDbgEFlags1 ^ fDbgEFlags2) & (X86_EFL_IF | X86_EFL_IOPL)) \ 74 Log(("%s: IF=%d->%d IOPL=%d->%d !#\n", __FUNCTION__, \ 75 !!(fDbgEFlags1 & X86_EFL_IF), !!(fDbgEFlags2 & X86_EFL_IF), \ 76 X86_EFL_GET_IOPL(fDbgEFlags1), X86_EFL_GET_IOPL(fDbgEFlags2) )); \ 77 else if (!(fDbgEFlags2 & X86_EFL_IF)) Log(("%s: IF=0 [ret] ##\n", __FUNCTION__)); \ 78 } while (0) 79 # define TRPM_ENTER_DBG_HOOK_HYPER(a_iVector) do {} while (0) 80 # define TRPM_EXIT_DBG_HOOK_HYPER(a_iVector) do {} while (0) 81 #endif 60 82 61 83 /******************************************************************************* … … 260 282 } 261 283 262 AssertMsg( rc != VINF_SUCCESS 263 || ( pRegFrame->eflags.Bits.u1IF 264 && ( pRegFrame->eflags.Bits.u2IOPL < (unsigned)(pRegFrame->ss.Sel & X86_SEL_RPL) || pRegFrame->eflags.Bits.u1VM)) 265 , ("rc=%Rrc\neflags=%RX32 ss=%RTsel IOPL=%d\n", rc, pRegFrame->eflags.u32, pRegFrame->ss.Sel, pRegFrame->eflags.Bits.u2IOPL)); 284 /* Note! TRPMRCHandlersA.asm performs sanity checks in debug builds.*/ 266 285 PGMRZDynMapReleaseAutoSet(pVCpu); 267 286 return rc; … … 285 304 PVM pVM = TRPMCPU_2_VM(pTrpmCpu); 286 305 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 287 288 LogFlow(("TRPMGC01: cs:eip=%04x:%08x uDr6=%RTreg\n", pRegFrame->cs.Sel, pRegFrame->eip, uDr6));306 LogFlow(("TRPMGC01: cs:eip=%04x:%08x uDr6=%RTreg EFL=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, uDr6, CPUMRawGetEFlags(pVCpu))); 307 TRPM_ENTER_DBG_HOOK(1); 289 308 290 309 /* … … 307 326 308 327 rc = trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 309 Log6(("TRPMGC01: %Rrc (%04x:%08x %RTreg)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, uDr6)); 328 Log6(("TRPMGC01: %Rrc (%04x:%08x %RTreg %EFlag=%#x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, uDr6, CPUMRawGetEFlags(pVCpu))); 329 TRPM_EXIT_DBG_HOOK(1); 310 330 return rc; 311 331 } … … 332 352 PVM pVM = TRPMCPU_2_VM(pTrpmCpu); 333 353 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 334 354 TRPM_ENTER_DBG_HOOK_HYPER(1); 335 355 LogFlow(("TRPMGCHyper01: cs:eip=%04x:%08x uDr6=%RTreg\n", pRegFrame->cs.Sel, pRegFrame->eip, uDr6)); 336 356 … … 352 372 353 373 Log6(("TRPMGCHyper01: %Rrc (%04x:%08x %RTreg)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, uDr6)); 374 TRPM_EXIT_DBG_HOOK_HYPER(1); 354 375 return rc; 355 376 } … … 414 435 DECLASM(int) TRPMGCTrap03Handler(PTRPMCPU pTrpmCpu, PCPUMCTXCORE pRegFrame) 415 436 { 416 LogFlow(("TRPMGC03: %04x:%08x\n", pRegFrame->cs.Sel, pRegFrame->eip));417 437 PVM pVM = TRPMCPU_2_VM(pTrpmCpu); 418 438 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 419 439 int rc; 440 LogFlow(("TRPMGC03: %04x:%08x EFL=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 441 TRPM_ENTER_DBG_HOOK(3); 420 442 PGMRZDynMapStartAutoSet(pVCpu); 421 443 … … 433 455 { 434 456 rc = trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 435 Log6(("TRPMGC03: %Rrc (%04x:%08x) (PATM)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 457 Log6(("TRPMGC03: %Rrc (%04x:%08x EFL=%x) (PATM)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 458 TRPM_EXIT_DBG_HOOK(3); 436 459 return rc; 437 460 } … … 441 464 /* anything we should do with this? Schedule it in GC? */ 442 465 rc = trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 443 Log6(("TRPMGC03: %Rrc (%04x:%08x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 466 Log6(("TRPMGC03: %Rrc (%04x:%08x EFL=%x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 467 TRPM_EXIT_DBG_HOOK(3); 444 468 return rc; 445 469 } … … 462 486 DECLASM(int) TRPMGCHyperTrap03Handler(PTRPMCPU pTrpmCpu, PCPUMCTXCORE pRegFrame) 463 487 { 464 LogFlow(("TRPMGCHyper03: %04x:%08x\n", pRegFrame->cs.Sel, pRegFrame->eip));465 488 PVM pVM = TRPMCPU_2_VM(pTrpmCpu); 466 489 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 490 LogFlow(("TRPMGCHyper03: %04x:%08x EFL=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 491 TRPM_ENTER_DBG_HOOK_HYPER(3); 467 492 468 493 /* … … 472 497 AssertStmt(rc != VINF_EM_RAW_GUEST_TRAP, rc = VERR_TRPM_IPE_2); 473 498 474 Log6(("TRPMGCHyper03: %Rrc (%04x:%08x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 499 Log6(("TRPMGCHyper03: %Rrc (%04x:%08x EFL=%x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 500 TRPM_EXIT_DBG_HOOK_HYPER(3); 475 501 return rc; 476 502 } … … 490 516 DECLASM(int) TRPMGCTrap06Handler(PTRPMCPU pTrpmCpu, PCPUMCTXCORE pRegFrame) 491 517 { 492 LogFlow(("TRPMGC06: %04x:%08x efl=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, pRegFrame->eflags.u32));493 518 PVM pVM = TRPMCPU_2_VM(pTrpmCpu); 494 519 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 495 520 int rc; 521 LogFlow(("TRPMGC06: %04x:%08x EFL=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, pRegFrame->eflags.u32, CPUMRawGetEFlags(pVCpu))); 522 TRPM_ENTER_DBG_HOOK(6); 496 523 PGMRZDynMapStartAutoSet(pVCpu); 497 524 … … 508 535 Log(("TRPMGCTrap06Handler: Failed to convert %RTsel:%RX32 (cpl=%d) - rc=%Rrc !!\n", pRegFrame->cs.Sel, pRegFrame->eip, pRegFrame->ss.Sel & X86_SEL_RPL, rc)); 509 536 rc = trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_GUEST_TRAP, pRegFrame); 510 Log6(("TRPMGC06: %Rrc (%04x:%08x) (SELM)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 537 Log6(("TRPMGC06: %Rrc (%04x:%08x EFL=%x) (SELM)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 538 TRPM_EXIT_DBG_HOOK(6); 511 539 return rc; 512 540 } … … 518 546 { 519 547 rc = trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_EMULATE_INSTR, pRegFrame); 520 Log6(("TRPMGC06: %Rrc (%04x:%08x) (EM)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 548 Log6(("TRPMGC06: %Rrc (%04x:%08x EFL=%x) (EM)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 549 TRPM_EXIT_DBG_HOOK(6); 521 550 return rc; 522 551 } … … 540 569 { 541 570 rc = trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 542 Log6(("TRPMGC06: %Rrc (%04x:%08x) (PATM)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 571 Log6(("TRPMGC06: %Rrc (%04x:%08x EFL=%x) (PATM)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 572 TRPM_EXIT_DBG_HOOK(6); 543 573 return rc; 544 574 } … … 581 611 582 612 rc = trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 583 Log6(("TRPMGC06: %Rrc (%04x:%08x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 613 Log6(("TRPMGC06: %Rrc (%04x:%08x EFL=%x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 614 TRPM_EXIT_DBG_HOOK(6); 584 615 return rc; 585 616 } … … 601 632 DECLASM(int) TRPMGCTrap07Handler(PTRPMCPU pTrpmCpu, PCPUMCTXCORE pRegFrame) 602 633 { 603 LogFlow(("TRPMGC07: %04x:%08x\n", pRegFrame->cs.Sel, pRegFrame->eip));604 634 PVM pVM = TRPMCPU_2_VM(pTrpmCpu); 605 635 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 636 LogFlow(("TRPMGC07: %04x:%08x EFL=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 637 TRPM_ENTER_DBG_HOOK(7); 606 638 PGMRZDynMapStartAutoSet(pVCpu); 607 639 608 640 int rc = CPUMHandleLazyFPU(pVCpu); 609 641 rc = trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 610 Log6(("TRPMGC07: %Rrc (%04x:%08x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 642 Log6(("TRPMGC07: %Rrc (%04x:%08x EFL=%x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 643 TRPM_EXIT_DBG_HOOK(7); 611 644 return rc; 612 645 } … … 626 659 DECLASM(int) TRPMGCTrap0bHandler(PTRPMCPU pTrpmCpu, PCPUMCTXCORE pRegFrame) 627 660 { 628 LogFlow(("TRPMGC0b: %04x:%08x\n", pRegFrame->cs.Sel, pRegFrame->eip));629 661 PVM pVM = TRPMCPU_2_VM(pTrpmCpu); 630 662 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 663 LogFlow(("TRPMGC0b: %04x:%08x EFL=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 664 TRPM_ENTER_DBG_HOOK(0xb); 631 665 PGMRZDynMapStartAutoSet(pVCpu); 632 666 … … 702 736 */ 703 737 pTrpmCpu->uActiveVector = UINT32_MAX; 704 Log6(("TRPMGC0b: %Rrc (%04x:%08x) (CG)\n", VINF_EM_RAW_RING_SWITCH, pRegFrame->cs.Sel, pRegFrame->eip)); 738 Log6(("TRPMGC0b: %Rrc (%04x:%08x EFL=%x) (CG)\n", VINF_EM_RAW_RING_SWITCH, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 739 TRPM_EXIT_DBG_HOOK(0xb); 705 740 PGMRZDynMapReleaseAutoSet(pVCpu); 706 741 return VINF_EM_RAW_RING_SWITCH; … … 711 746 * Pass trap 0b as is to the recompiler in all other cases. 712 747 */ 713 Log6(("TRPMGC0b: %Rrc (%04x:%08x )\n", VINF_EM_RAW_GUEST_TRAP, pRegFrame->cs.Sel, pRegFrame->eip));748 Log6(("TRPMGC0b: %Rrc (%04x:%08x EFL=%x)\n", VINF_EM_RAW_GUEST_TRAP, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 714 749 PGMRZDynMapReleaseAutoSet(pVCpu); 750 TRPM_EXIT_DBG_HOOK(0xb); 715 751 return VINF_EM_RAW_GUEST_TRAP; 716 752 } … … 733 769 { 734 770 int rc; 771 TRPM_ENTER_DBG_HOOK(0xd); 735 772 736 773 /* … … 761 798 rc = TRPMForwardTrap(pVCpu, pRegFrame, (uint32_t)pCpu->Param1.uValue, pCpu->cbInstr, TRPM_TRAP_NO_ERRORCODE, TRPM_SOFTWARE_INT, 0xd); 762 799 if (RT_SUCCESS(rc) && rc != VINF_EM_RAW_GUEST_TRAP) 800 { 801 TRPM_EXIT_DBG_HOOK(0xd); 763 802 return trpmGCExitTrap(pVM, pVCpu, VINF_SUCCESS, pRegFrame); 803 } 764 804 765 805 pVCpu->trpm.s.uActiveVector = (pVCpu->trpm.s.uActiveErrorCode & X86_TRAP_ERR_SEL_MASK) >> X86_TRAP_ERR_SEL_SHIFT; … … 772 812 case OP_SYSRET: 773 813 rc = PATMSysCall(pVM, pRegFrame, pCpu); 814 TRPM_EXIT_DBG_HOOK(0xd); 774 815 return trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 775 816 #endif … … 781 822 782 823 pRegFrame->eip += pCpu->cbInstr; 824 TRPM_EXIT_DBG_HOOK(0xd); 783 825 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_HALT, pRegFrame); 784 826 … … 809 851 if (rc == VERR_EM_INTERPRETER) 810 852 rc = VINF_EM_RAW_EXCEPTION_PRIVILEGED; 853 TRPM_EXIT_DBG_HOOK(0xd); 811 854 return trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 812 855 } 813 856 } 814 857 858 TRPM_EXIT_DBG_HOOK(0xd); 815 859 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_EXCEPTION_PRIVILEGED, pRegFrame); 816 860 } … … 834 878 int rc; 835 879 Assert(!pRegFrame->eflags.Bits.u1VM); 880 TRPM_ENTER_DBG_HOOK(0xd); 836 881 837 882 switch (pCpu->pCurInstr->uOpcode) … … 853 898 rc = TRPMForwardTrap(pVCpu, pRegFrame, (uint32_t)pCpu->Param1.uValue, pCpu->cbInstr, TRPM_TRAP_NO_ERRORCODE, TRPM_SOFTWARE_INT, 0xd); 854 899 if (RT_SUCCESS(rc) && rc != VINF_EM_RAW_GUEST_TRAP) 900 { 901 TRPM_EXIT_DBG_HOOK(0xd); 855 902 return trpmGCExitTrap(pVM, pVCpu, VINF_SUCCESS, pRegFrame); 903 } 856 904 857 905 pVCpu->trpm.s.uActiveVector = (pVCpu->trpm.s.uActiveErrorCode & X86_TRAP_ERR_SEL_MASK) >> X86_TRAP_ERR_SEL_SHIFT; 858 906 pVCpu->trpm.s.enmActiveType = TRPM_SOFTWARE_INT; 907 TRPM_EXIT_DBG_HOOK(0xd); 859 908 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_RING_SWITCH_INT, pRegFrame); 860 909 } … … 868 917 rc = PATMSysCall(pVM, pRegFrame, pCpu); 869 918 if (rc == VINF_SUCCESS) 919 { 920 TRPM_EXIT_DBG_HOOK(0xd); 870 921 return trpmGCExitTrap(pVM, pVCpu, VINF_SUCCESS, pRegFrame); 922 } 871 923 /* else no break; */ 872 924 #endif … … 874 926 case OP_INTO: 875 927 pVCpu->trpm.s.uActiveVector = UINT32_MAX; 928 TRPM_EXIT_DBG_HOOK(0xd); 876 929 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_RING_SWITCH, pRegFrame); 877 930 … … 885 938 if (rc == VERR_EM_INTERPRETER) 886 939 rc = VINF_EM_RAW_EXCEPTION_PRIVILEGED; 940 TRPM_EXIT_DBG_HOOK(0xd); 887 941 return trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 888 942 } … … 898 952 { 899 953 LogFlow(("trpmGCTrap0dHandlerRing3: CLI/STI -> REM\n")); 954 TRPM_EXIT_DBG_HOOK(0xd); 900 955 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_RESCHEDULE_REM, pRegFrame); 901 956 } … … 908 963 * A genuine guest fault. 909 964 */ 965 TRPM_EXIT_DBG_HOOK(0xd); 910 966 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_GUEST_TRAP, pRegFrame); 911 967 } … … 925 981 { 926 982 STAM_COUNTER_INC(&pVM->trpm.s.StatTrap0dRdTsc); 983 TRPM_ENTER_DBG_HOOK(0xd); 927 984 928 985 if (CPUMGetGuestCR4(pVCpu) & X86_CR4_TSD) 986 { 987 TRPM_EXIT_DBG_HOOK(0xd); 929 988 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_EMULATE_INSTR, pRegFrame); /* will trap (optimize later). */ 989 } 930 990 931 991 uint64_t uTicks = TMCpuTickGet(pVCpu); … … 933 993 pRegFrame->edx = uTicks >> 32; 934 994 pRegFrame->eip += 2; 995 TRPM_EXIT_DBG_HOOK(0xd); 935 996 return trpmGCExitTrap(pVM, pVCpu, VINF_SUCCESS, pRegFrame); 936 997 } … … 950 1011 static int trpmGCTrap0dHandler(PVM pVM, PTRPMCPU pTrpmCpu, PCPUMCTXCORE pRegFrame) 951 1012 { 952 LogFlow(("trpmGCTrap0dHandler: cs:eip=%RTsel:%08RX32 uErr=%RGv\n", pRegFrame->cs.Sel, pRegFrame->eip, pTrpmCpu->uActiveErrorCode));953 1013 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 1014 LogFlow(("trpmGCTrap0dHandler: cs:eip=%RTsel:%08RX32 uErr=%RGv EFL=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, pTrpmCpu->uActiveErrorCode, CPUMRawGetEFlags(pVCpu))); 1015 TRPM_ENTER_DBG_HOOK(0xd); 954 1016 955 1017 /* … … 964 1026 Log(("trpmGCTrap0dHandler: Failed to convert %RTsel:%RX32 (cpl=%d) - rc=%Rrc !!\n", 965 1027 pRegFrame->cs.Sel, pRegFrame->eip, pRegFrame->ss.Sel & X86_SEL_RPL, rc)); 1028 TRPM_EXIT_DBG_HOOK(0xd); 966 1029 STAM_PROFILE_STOP(&pVM->trpm.s.StatTrap0dDisasm, a); 967 1030 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_EMULATE_INSTR, pRegFrame); … … 977 1040 { 978 1041 AssertMsgFailed(("DISCoreOneEx failed to PC=%RGv rc=%Rrc\n", PC, rc)); 1042 TRPM_EXIT_DBG_HOOK(0xd); 979 1043 STAM_PROFILE_STOP(&pVM->trpm.s.StatTrap0dDisasm, a); 980 1044 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_EMULATE_INSTR, pRegFrame); … … 1002 1066 pRegFrame->rip += cbOp; 1003 1067 rc = VBOXSTRICTRC_TODO(rcStrict); 1068 TRPM_EXIT_DBG_HOOK(0xd); 1004 1069 return trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 1005 1070 } … … 1035 1100 rc = TRPMForwardTrap(pVCpu, pRegFrame, 0xD, 0, TRPM_TRAP_HAS_ERRORCODE, TRPM_TRAP, 0xd); 1036 1101 Assert(rc == VINF_EM_RAW_GUEST_TRAP); 1102 TRPM_EXIT_DBG_HOOK(0xd); 1037 1103 return trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 1038 1104 } 1105 TRPM_EXIT_DBG_HOOK(0xd); 1039 1106 return trpmGCExitTrap(pVM, pVCpu, VINF_EM_RAW_EMULATE_INSTR, pRegFrame); 1040 1107 } … … 1056 1123 PVM pVM = TRPMCPU_2_VM(pTrpmCpu); 1057 1124 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 1058 1059 LogFlow(("TRPMGC0d: %04x:%08x err=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, (uint32_t)pVCpu->trpm.s.uActiveErrorCode));1125 LogFlow(("TRPMGC0d: %04x:%08x err=%x EFL=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, (uint32_t)pVCpu->trpm.s.uActiveErrorCode, CPUMRawGetEFlags(pVCpu))); 1126 TRPM_ENTER_DBG_HOOK(0xd); 1060 1127 1061 1128 PGMRZDynMapStartAutoSet(pVCpu); … … 1092 1159 break; 1093 1160 } 1094 Log6(("TRPMGC0d: %Rrc (%04x:%08x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 1161 Log6(("TRPMGC0d: %Rrc (%04x:%08x EFL=%x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 1162 TRPM_EXIT_DBG_HOOK(0xd); 1095 1163 return rc; 1096 1164 } … … 1115 1183 PVM pVM = TRPMCPU_2_VM(pTrpmCpu); 1116 1184 PVMCPU pVCpu = TRPMCPU_2_VMCPU(pTrpmCpu); 1117 1118 LogFlow(("TRPMGC0e: %04x:%08x err=%x cr2=%08x\n", pRegFrame->cs.Sel, pRegFrame->eip, (uint32_t)pVCpu->trpm.s.uActiveErrorCode, (uint32_t)pVCpu->trpm.s.uActiveCR2));1185 LogFlow(("TRPMGC0e: %04x:%08x err=%x cr2=%08x EFL=%x\n", pRegFrame->cs.Sel, pRegFrame->eip, (uint32_t)pVCpu->trpm.s.uActiveErrorCode, (uint32_t)pVCpu->trpm.s.uActiveCR2, CPUMRawGetEFlags(pVCpu))); 1186 TRPM_ENTER_DBG_HOOK(0xe); 1119 1187 1120 1188 /* … … 1139 1207 { 1140 1208 PGMRZDynMapReleaseAutoSet(pVCpu); 1209 TRPM_EXIT_DBG_HOOK(0xe); 1141 1210 return VINF_PATM_PATCH_TRAP_PF; 1142 1211 } … … 1168 1237 } 1169 1238 rc = trpmGCExitTrap(pVM, pVCpu, rc, pRegFrame); 1170 Log6(("TRPMGC0e: %Rrc (%04x:%08x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip)); 1239 Log6(("TRPMGC0e: %Rrc (%04x:%08x EFL=%x)\n", rc, pRegFrame->cs.Sel, pRegFrame->eip, CPUMRawGetEFlags(pVCpu))); 1240 TRPM_EXIT_DBG_HOOK(0xe); 1171 1241 return rc; 1172 1242 }
Note:
See TracChangeset
for help on using the changeset viewer.