Changeset 66711 in vbox
- Timestamp:
- Apr 28, 2017 7:06:12 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
-
include/VBox/vmm/iem.h (modified) (1 diff)
-
src/VBox/VMM/VMMAll/IEMAll.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/iem.h
r66686 r66711 64 64 /** Delivery of an external interrupt caused a \#PF. */ 65 65 #define IEMXCPTRAISEINFO_SOFT_INT_XCPT RT_BIT_32(6) 66 /** Delivery of an NMI caused an exception. */ 67 #define IEMXCPTRAISEINFO_NMI_XCPT RT_BIT_32(7) 66 68 /** Delivery of an NMI caused a \#PF. */ 67 #define IEMXCPTRAISEINFO_NMI_PF RT_BIT_32( 7)69 #define IEMXCPTRAISEINFO_NMI_PF RT_BIT_32(8) 68 70 /** Can re-execute the instruction at CS:RIP. */ 69 #define IEMXCPTRAISEINFO_CAN_REEXEC_INSTR RT_BIT_32( 8)71 #define IEMXCPTRAISEINFO_CAN_REEXEC_INSTR RT_BIT_32(9) 70 72 /** @} */ 71 73 -
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r66688 r66711 3286 3286 { 3287 3287 enmRaise = IEMXCPTRAISE_DOUBLE_FAULT; 3288 if (enmCurXcptClass == IEMXCPTCLASS_PAGE_FAULT) 3289 fRaiseInfo = IEMXCPTRAISEINFO_PF_PF; 3290 else 3291 fRaiseInfo = IEMXCPTRAISEINFO_PF_CONTRIBUTORY_XCPT; 3288 fRaiseInfo = enmCurXcptClass == IEMXCPTCLASS_PAGE_FAULT ? IEMXCPTRAISEINFO_PF_PF 3289 : IEMXCPTRAISEINFO_PF_CONTRIBUTORY_XCPT; 3292 3290 Log2(("IEMEvaluateRecursiveXcpt: Vectoring page fault. uPrevVector=%#x uCurVector=%#x uCr2=%#RX64\n", uPrevVector, 3293 3291 uCurVector, IEM_GET_CTX(pVCpu)->cr2)); … … 3309 3307 else 3310 3308 { 3311 if ( uPrevVector == X86_XCPT_NMI 3312 && uCurVector == X86_XCPT_PF) 3309 if (uPrevVector == X86_XCPT_NMI) 3313 3310 { 3314 fRaiseInfo = IEMXCPTRAISEINFO_NMI_PF; 3315 Log2(("IEMEvaluateRecursiveXcpt: NMI delivery caused a page fault\n")); 3311 fRaiseInfo = IEMXCPTRAISEINFO_NMI_XCPT; 3312 if (uCurVector == X86_XCPT_PF) 3313 { 3314 fRaiseInfo |= IEMXCPTRAISEINFO_NMI_PF; 3315 Log2(("IEMEvaluateRecursiveXcpt: NMI delivery caused a page fault\n")); 3316 } 3316 3317 } 3317 3318 else if ( uPrevVector == X86_XCPT_AC
Note:
See TracChangeset
for help on using the changeset viewer.

