Changeset 42705 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Aug 9, 2012 8:04:22 AM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 79911
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
r42647 r42705 543 543 VMMDECL(int) CPUMSetGuestGDTR(PVMCPU pVCpu, uint64_t GCPtrBase, uint16_t cbLimit) 544 544 { 545 #ifdef VBOX_WITH_IEM 546 # ifdef VBOX_WITH_RAW_MODE_NOT_R0 547 if (!HWACCMIsEnabled(pVCpu->CTX_SUFF(pVM))) 548 VMCPU_FF_SET(pVCpu, VMCPU_FF_SELM_SYNC_GDT); 549 # endif 550 #endif 545 551 pVCpu->cpum.s.Guest.gdtr.cbGdt = cbLimit; 546 552 pVCpu->cpum.s.Guest.gdtr.pGdt = GCPtrBase; … … 551 557 VMMDECL(int) CPUMSetGuestIDTR(PVMCPU pVCpu, uint64_t GCPtrBase, uint16_t cbLimit) 552 558 { 559 #ifdef VBOX_WITH_IEM 560 # ifdef VBOX_WITH_RAW_MODE_NOT_R0 561 if (!HWACCMIsEnabled(pVCpu->CTX_SUFF(pVM))) 562 VMCPU_FF_SET(pVCpu, VMCPU_FF_TRPM_SYNC_IDT); 563 # endif 564 #endif 553 565 pVCpu->cpum.s.Guest.idtr.cbIdt = cbLimit; 554 566 pVCpu->cpum.s.Guest.idtr.pIdt = GCPtrBase; … … 559 571 VMMDECL(int) CPUMSetGuestTR(PVMCPU pVCpu, uint16_t tr) 560 572 { 573 #ifdef VBOX_WITH_IEM 574 # ifdef VBOX_WITH_RAW_MODE_NOT_R0 575 if (!HWACCMIsEnabled(pVCpu->CTX_SUFF(pVM))) 576 VMCPU_FF_SET(pVCpu, VMCPU_FF_SELM_SYNC_TSS); 577 # endif 578 #endif 561 579 pVCpu->cpum.s.Guest.tr.Sel = tr; 562 580 pVCpu->cpum.s.fChanged |= CPUM_CHANGED_TR; … … 566 584 VMMDECL(int) CPUMSetGuestLDTR(PVMCPU pVCpu, uint16_t ldtr) 567 585 { 586 #ifdef VBOX_WITH_IEM 587 # ifdef VBOX_WITH_RAW_MODE_NOT_R0 588 if ( ( ldtr != 0 589 || pVCpu->cpum.s.Guest.ldtr.Sel != 0) 590 && !HWACCMIsEnabled(pVCpu->CTX_SUFF(pVM))) 591 VMCPU_FF_SET(pVCpu, VMCPU_FF_SELM_SYNC_LDT); 592 # endif 593 #endif 568 594 pVCpu->cpum.s.Guest.ldtr.Sel = ldtr; 569 595 /* The caller will set more hidden bits if it has them. */ … … 2419 2445 #endif 2420 2446 2421 #ifdef VBOX_WITH_RAW_MODE_NOT_R0 2447 2422 2448 /** 2423 2449 * Updates the EFLAGS while we're in raw-mode. … … 2428 2454 VMMDECL(void) CPUMRawSetEFlags(PVMCPU pVCpu, uint32_t fEfl) 2429 2455 { 2430 if (!pVCpu->cpum.s.fRawEntered) 2456 #ifdef VBOX_WITH_RAW_MODE_NOT_R0 2457 if (pVCpu->cpum.s.fRawEntered) 2458 PATMRawSetEFlags(pVCpu->CTX_SUFF(pVM), CPUMCTX2CORE(&pVCpu->cpum.s.Guest), fEfl); 2459 else 2460 #endif 2431 2461 pVCpu->cpum.s.Guest.eflags.u32 = fEfl; 2432 else 2433 PATMRawSetEFlags(pVCpu->CTX_SUFF(pVM), CPUMCTX2CORE(&pVCpu->cpum.s.Guest), fEfl); 2434 } 2435 #endif /* VBOX_WITH_RAW_MODE_NOT_R0 */ 2462 } 2436 2463 2437 2464 … … 2444 2471 VMMDECL(uint32_t) CPUMRawGetEFlags(PVMCPU pVCpu) 2445 2472 { 2446 #ifdef IN_RING0 2473 #ifdef VBOX_WITH_RAW_MODE_NOT_R0 2474 if (pVCpu->cpum.s.fRawEntered) 2475 return PATMRawGetEFlags(pVCpu->CTX_SUFF(pVM), CPUMCTX2CORE(&pVCpu->cpum.s.Guest)); 2476 #endif 2447 2477 return pVCpu->cpum.s.Guest.eflags.u32; 2448 #else2449 2450 if (!pVCpu->cpum.s.fRawEntered)2451 return pVCpu->cpum.s.Guest.eflags.u32;2452 return PATMRawGetEFlags(pVCpu->CTX_SUFF(pVM), CPUMCTX2CORE(&pVCpu->cpum.s.Guest));2453 #endif2454 2478 } 2455 2479
Note:
See TracChangeset
for help on using the changeset viewer.