Changeset 97183 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Oct 17, 2022 10:27:05 PM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 154158
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/CPUM.cpp
r97178 r97183 3089 3089 * 3090 3090 * @param pszEFlags Where to write the mnemonics. (Assumes sufficient buffer space.) 3091 * @param efl The EFLAGS value .3091 * @param efl The EFLAGS value with fInhibit in bits 31:24. 3092 3092 */ 3093 3093 static void cpumR3InfoFormatFlags(char *pszEFlags, uint32_t efl) … … 3116 3116 { "po", "pe", X86_EFL_PF }, 3117 3117 { "cy", "nc", X86_EFL_CF }, 3118 { "inh-ss", NULL, (uint32_t)CPUMCTX_INHIBIT_SHADOW_SS << 24 }, 3119 { "inh-sti", NULL, (uint32_t)CPUMCTX_INHIBIT_SHADOW_STI << 24 }, 3120 { "inh-nmi", NULL, (uint32_t)CPUMCTX_INHIBIT_NMI << 24 }, 3118 3121 }; 3119 3122 char *psz = pszEFlags; … … 3152 3155 uint32_t efl = pCtxCore->eflags.u32; 3153 3156 char szEFlags[80]; 3154 cpumR3InfoFormatFlags(&szEFlags[0], efl );3157 cpumR3InfoFormatFlags(&szEFlags[0], efl | ((uint32_t)pCtx->fInhibit << 24)); 3155 3158 3156 3159 /* -
trunk/src/VBox/VMM/VMMR3/NEMR3Native-linux.cpp
r97178 r97183 1476 1476 pVCpu->cpum.GstCtx.rip = pRun->s.regs.regs.rip; 1477 1477 1478 CPUMUpdateInterruptShadowEx(&pVCpu->cpum.GstCtx, KvmEvents.interrupt.shadow != 0, pVCpu->cpum.GstCtx.rip); 1478 CPUMUpdateInterruptShadowSsStiEx(&pVCpu->cpum.GstCtx, 1479 RT_BOOL(KvmEvents.interrupt.shadow & KVM_X86_SHADOW_INT_MOV_SS), 1480 RT_BOOL(KvmEvents.interrupt.shadow & KVM_X86_SHADOW_INT_STI), 1481 pVCpu->cpum.GstCtx.rip); 1479 1482 CPUMUpdateInterruptInhibitingByNmi(&pVCpu->cpum.GstCtx, KvmEvents.nmi.masked != 0); 1480 1483 … … 1865 1868 { /* probably likely */ } 1866 1869 else 1867 KvmEvents.interrupt.shadow = KVM_X86_SHADOW_INT_MOV_SS | KVM_X86_SHADOW_INT_STI; 1870 KvmEvents.interrupt.shadow = (CPUMIsInInterruptShadowAfterSs() ? KVM_X86_SHADOW_INT_MOV_SS : 0) 1871 | (CPUMIsInInterruptShadowAfterSti() ? KVM_X86_SHADOW_INT_STI : 0); 1868 1872 1869 1873 /* No flag - this is updated unconditionally. */ … … 2049 2053 if (!(pVCpu->cpum.GstCtx.fExtrn & CPUMCTX_EXTRN_INHIBIT_INT)) 2050 2054 KvmEvents.interrupt.shadow = !CPUMIsInInterruptShadowWithUpdate(&pVCpu->cpum.GstCtx) ? 0 2051 : KVM_X86_SHADOW_INT_MOV_SS | KVM_X86_SHADOW_INT_STI; 2055 : (CPUMIsInInterruptShadowAfterSs() ? KVM_X86_SHADOW_INT_MOV_SS : 0) 2056 | (CPUMIsInInterruptShadowAfterSti() ? KVM_X86_SHADOW_INT_STI : 0); 2052 2057 else 2053 CPUMUpdateInterruptShadowEx(&pVCpu->cpum.GstCtx, KvmEvents.interrupt.shadow != 0, pRun->s.regs.regs.rip); 2058 CPUMUpdateInterruptShadowSsStiEx(&pVCpu->cpum.GstCtx, 2059 RT_BOOL(KvmEvents.interrupt.shadow & KVM_X86_SHADOW_INT_MOV_SS), 2060 RT_BOOL(KvmEvents.interrupt.shadow & KVM_X86_SHADOW_INT_MOV_STI), 2061 pRun->s.regs.regs.rip); 2054 2062 2055 2063 if (!(pVCpu->cpum.GstCtx.fExtrn & CPUMCTX_EXTRN_INHIBIT_NMI))
Note:
See TracChangeset
for help on using the changeset viewer.