- Timestamp:
- Sep 5, 2013 12:32:23 AM (11 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r48262 r48284 6801 6801 6802 6802 /* Check if the interrupt handler is present in the IVT (real-mode IDT). IDT limit is (4N - 1). */ 6803 const size_t cbIdtEntry = 4;6803 const size_t cbIdtEntry = sizeof(X86IDTR16); 6804 6804 if (uVector * cbIdtEntry + (cbIdtEntry - 1) > pMixedCtx->idtr.cbIdt) 6805 6805 { … … 6830 6830 6831 6831 /* Get the code segment selector and offset from the IDT entry for the interrupt handler. */ 6832 uint16_t offIdtEntry = 0; 6833 RTSEL selIdtEntry = 0; 6832 X86IDTR16 IdtEntry; 6834 6833 RTGCPHYS GCPhysIdtEntry = (RTGCPHYS)pMixedCtx->idtr.pIdt + uVector * cbIdtEntry; 6835 rc = PGMPhysSimpleReadGCPhys(pVM, &offIdtEntry, GCPhysIdtEntry, sizeof(offIdtEntry)); 6836 rc |= PGMPhysSimpleReadGCPhys(pVM, &selIdtEntry, GCPhysIdtEntry + 2, sizeof(selIdtEntry)); 6834 rc = PGMPhysSimpleReadGCPhys(pVM, &IdtEntry, GCPhysIdtEntry, cbIdtEntry); 6837 6835 AssertRCReturn(rc, rc); 6838 6836 … … 6847 6845 { 6848 6846 pMixedCtx->eflags.u32 &= ~(X86_EFL_IF | X86_EFL_TF | X86_EFL_RF | X86_EFL_AC); 6849 pMixedCtx->rip = offIdtEntry;6850 pMixedCtx->cs.Sel = selIdtEntry;6851 pMixedCtx->cs.u64Base = selIdtEntry<< cbIdtEntry;6847 pMixedCtx->rip = IdtEntry.offSel; 6848 pMixedCtx->cs.Sel = IdtEntry.uSel; 6849 pMixedCtx->cs.u64Base = IdtEntry.uSel << cbIdtEntry; 6852 6850 if ( uIntrType == VMX_EXIT_INTERRUPTION_INFO_TYPE_HW_XCPT 6853 6851 && uVector == X86_XCPT_PF) -
trunk/src/VBox/VMM/include/HMInternal.h
r48262 r48284 555 555 /** Current VMX_VMCS32_CTRL_ENTRY. */ 556 556 uint32_t u32EntryCtls; 557 557 558 /** Physical address of the virtual APIC page for TPR caching. */ 558 559 RTHCPHYS HCPhysVirtApic; … … 610 611 /** Last use TSC offset value. (cached) */ 611 612 uint64_t u64TSCOffset; 613 612 614 /** VMCS cache. */ 613 615 VMCSCACHE VMCSCache; … … 616 618 struct 617 619 { 618 X86DESCATTR 619 X86DESCATTR 620 X86DESCATTR 621 X86DESCATTR 622 X86DESCATTR 623 X86DESCATTR 624 X86EFLAGS 625 uint32_t 620 X86DESCATTR AttrCS; 621 X86DESCATTR AttrDS; 622 X86DESCATTR AttrES; 623 X86DESCATTR AttrFS; 624 X86DESCATTR AttrGS; 625 X86DESCATTR AttrSS; 626 X86EFLAGS Eflags; 627 uint32_t fRealOnV86Active; 626 628 } RealMode; 627 629
Note:
See TracChangeset
for help on using the changeset viewer.