Changeset 47689 in vbox for trunk/src/VBox
- Timestamp:
- Aug 13, 2013 12:53:07 PM (11 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/VMMTests.cpp
r45618 r47689 70 70 return rc; 71 71 72 Log(("vmmR3DoGCTest: %d %#x\n", enmTestcase, uVariation)); 72 73 CPUMSetHyperState(pVCpu, pVM->vmm.s.pfnCallTrampolineRC, pVCpu->vmm.s.pbEMTStackBottomRC, 0, 0); 73 74 vmmR3TestClearStack(pVCpu); … … 79 80 Assert(CPUMGetHyperCR3(pVCpu) && CPUMGetHyperCR3(pVCpu) == PGMGetHyperCR3(pVCpu)); 80 81 rc = SUPR3CallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN, 0); 82 83 #if 1 84 /* flush the raw-mode logs. */ 85 # ifdef LOG_ENABLED 86 PRTLOGGERRC pLogger = pVM->vmm.s.pRCLoggerR3; 87 if ( pLogger 88 && pLogger->offScratch > 0) 89 RTLogFlushRC(NULL, pLogger); 90 # endif 91 # ifdef VBOX_WITH_RC_RELEASE_LOGGING 92 PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3; 93 if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0)) 94 RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger); 95 # endif 96 #endif 97 98 Log(("vmmR3DoGCTest: rc=%Rrc iLastGZRc=%Rrc\n", rc, pVCpu->vmm.s.iLastGZRc)); 81 99 if (RT_LIKELY(rc == VINF_SUCCESS)) 82 100 rc = pVCpu->vmm.s.iLastGZRc; … … 246 264 { 247 265 RTPrintf("VMM: Nop test failed, rc=%Rrc not VINF_SUCCESS\n", rc); 248 return rc;266 return RT_FAILURE(rc) ? rc : VERR_IPE_UNEXPECTED_INFO_STATUS; 249 267 } 250 268 … … 260 278 { 261 279 RTPrintf("VMM: DR0=0x10000 test failed with rc=%Rrc!\n", rc); 262 return rc;280 return RT_FAILURE(rc) ? rc : VERR_IPE_UNEXPECTED_INFO_STATUS; 263 281 } 264 282 … … 273 291 { 274 292 RTPrintf("VMM: DR1=VMMGCEntry test failed with rc=%Rrc! expected VINF_EM_RAW_BREAKPOINT_HYPER\n", rc); 275 return rc;293 return RT_FAILURE(rc) ? rc : VERR_IPE_UNEXPECTED_INFO_STATUS; 276 294 } 277 295 … … 283 301 { 284 302 RTPrintf("VMM: failed to resume on hyper breakpoint, rc=%Rrc = KNOWN BUG\n", rc); /** @todo fix VMMR3ResumeHyper */ 285 return rc;303 return RT_FAILURE(rc) ? rc : VERR_IPE_UNEXPECTED_INFO_STATUS; 286 304 } 287 305 … … 292 310 { 293 311 RTPrintf("VMM: DR1=VMMGCEntry test failed with rc=%Rrc! expected VINF_EM_RAW_BREAKPOINT_HYPER\n", rc); 294 return rc;312 return RT_FAILURE(rc) ? rc : VERR_IPE_UNEXPECTED_INFO_STATUS; 295 313 } 296 314 … … 305 323 { 306 324 RTPrintf("\nVMM: failed to step on hyper breakpoint, rc=%Rrc\n", rc); 307 return rc;325 return RT_FAILURE(rc) ? rc : VERR_IPE_UNEXPECTED_INFO_STATUS; 308 326 } 309 327 RTGCUINTREG Pc = CPUMGetHyperEIP(pVCpu); … … 329 347 { 330 348 RTPrintf("VMM: NOP failed, rc=%Rrc\n", rc); 331 return rc;349 return RT_FAILURE(rc) ? rc : VERR_IPE_UNEXPECTED_INFO_STATUS; 332 350 } 333 351 … … 343 361 { 344 362 RTPrintf("VMM: Interrupt masking failed: rc=%Rrc\n", rc); 345 return rc;363 return RT_FAILURE(rc) ? rc : VERR_IPE_UNEXPECTED_INFO_STATUS; 346 364 } 347 365 uint64_t Ticks = ASMReadTSC() - StartTick; -
trunk/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac
r47686 r47689 784 784 .if_clear_out: 785 785 %endif 786 mov edi, eax ; save return code in EDI (careful with COM_DWORD_REG from here on!) 787 786 788 ; str [edx + CPUMCPU.Hyper.tr] - double fault only, and it won't be right then either. 787 789 sldt [edx + CPUMCPU.Hyper.ldtr.Sel] … … 791 793 792 794 ; Disable debug registers if active so they cannot trigger while switching. 793 test dword [ed i+ CPUMCPU.fUseFlags], CPUM_USED_DEBUG_REGS_HYPER795 test dword [edx + CPUMCPU.fUseFlags], CPUM_USED_DEBUG_REGS_HYPER 794 796 jz .gth_disabled_dr7 795 797 mov eax, X86_DR7_INIT_VAL … … 800 802 ;; Load Intermediate memory context. 801 803 ;; 802 mov edi, eax ; save return code in EDI (careful with COM_DWORD_REG from here on!)803 804 FIXUP SWITCHER_FIX_INTER_CR3_GC, 1 804 805 mov eax, 0ffffffffh -
trunk/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac
r47660 r47689 515 515 mov eax, dr3 516 516 mov [edx + CPUMCPU.Host.dr3], eax 517 or dword [ed i+ CPUMCPU.fUseFlags], CPUM_USED_DEBUG_REGS_HOST517 or dword [edx + CPUMCPU.fUseFlags], CPUM_USED_DEBUG_REGS_HOST 518 518 519 519 ; load hyper DR0-7 … … 530 530 mov eax, [edx + CPUMCPU.Hyper.dr + 8*7] 531 531 mov dr7, eax 532 or dword [ed i+ CPUMCPU.fUseFlags], CPUM_USED_DEBUG_REGS_HYPER532 or dword [edx + CPUMCPU.fUseFlags], CPUM_USED_DEBUG_REGS_HYPER 533 533 jmp htg_debug_regs_guest_done 534 534 … … 682 682 ; special registers which may change. 683 683 vmmRCToHostAsm_SaveNoGeneralRegs: 684 mov edi, eax ; save return code in EDI (careful with COM_DWORD_REG from here on!) 684 685 ; str [edx + CPUMCPU.Hyper.tr] - double fault only, and it won't be right then either. 685 686 sldt [edx + CPUMCPU.Hyper.ldtr.Sel] … … 689 690 690 691 ; Disable debug regsiters if active so they cannot trigger while switching. 691 test dword [ed i+ CPUMCPU.fUseFlags], CPUM_USED_DEBUG_REGS_HYPER692 test dword [edx + CPUMCPU.fUseFlags], CPUM_USED_DEBUG_REGS_HYPER 692 693 jz .gth_disabled_dr7 693 694 mov eax, X86_DR7_INIT_VAL … … 700 701 ; 701 702 mov esi, edx 702 mov edi, eax703 703 704 704 xor edx, edx … … 707 707 wrmsr 708 708 709 mov eax, edi710 709 mov edx, esi 711 710 %endif … … 715 714 ;; Load Intermediate memory context. 716 715 ;; 717 mov edi, eax ; save return code in EDI (careful with COM_DWORD_REG from here on!)718 716 mov ecx, [edx + CPUMCPU.Host.cr3] 719 717 FIXUP SWITCHER_FIX_INTER_CR3_GC, 1
Note:
See TracChangeset
for help on using the changeset viewer.