mirror of
https://github.com/reactos/reactos.git
synced 2025-07-28 15:02:16 +00:00
[NTOS:KE] Implement KeI386VirtualIntExtensions code paths for INT and IRET. CORE-19049 (#7742)
Co-authored-by: Thomas Faber <thomas.faber@reactos.org> Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org> Continued from PR #6070 JIRA issue: CORE-19049
This commit is contained in:
parent
5c505d9a9b
commit
656a5dcc1f
1 changed files with 18 additions and 4 deletions
|
@ -191,13 +191,21 @@ KiVdmOpcodeINTnn(IN PKTRAP_FRAME TrapFrame,
|
|||
V86EFlags &= (EFLAGS_ALIGN_CHECK | EFLAGS_INTERRUPT_MASK);
|
||||
|
||||
/* Check for VME support */
|
||||
ASSERT(KeI386VirtualIntExtensions == FALSE);
|
||||
if (KeI386VirtualIntExtensions)
|
||||
{
|
||||
/* Set IF based on VIF */
|
||||
V86EFlags &= ~EFLAGS_INTERRUPT_MASK;
|
||||
if (TrapEFlags & EFLAGS_VIF)
|
||||
{
|
||||
V86EFlags |= EFLAGS_INTERRUPT_MASK;
|
||||
}
|
||||
}
|
||||
|
||||
/* Mask in the relevant V86 EFlags into the trap flags */
|
||||
V86EFlags |= (TrapEFlags & ~EFLAGS_INTERRUPT_MASK);
|
||||
|
||||
/* And mask out the VIF, nested task and TF flag from the trap flags */
|
||||
TrapFrame->EFlags = TrapEFlags &~ (EFLAGS_VIF | EFLAGS_NESTED_TASK | EFLAGS_TF);
|
||||
TrapFrame->EFlags = TrapEFlags & ~(EFLAGS_VIF | EFLAGS_NESTED_TASK | EFLAGS_TF);
|
||||
|
||||
/* Add the IOPL flag to the local trap flags */
|
||||
V86EFlags |= EFLAGS_IOPL;
|
||||
|
@ -299,11 +307,17 @@ KiVdmOpcodeIRET(IN PKTRAP_FRAME TrapFrame,
|
|||
}
|
||||
|
||||
/* Mask out EFlags */
|
||||
EFlags &= ~(EFLAGS_IOPL + EFLAGS_VIF + EFLAGS_NESTED_TASK + EFLAGS_VIP);
|
||||
EFlags &= ~(EFLAGS_VIP | EFLAGS_VIF | EFLAGS_NESTED_TASK | EFLAGS_IOPL);
|
||||
V86EFlags = EFlags;
|
||||
|
||||
/* Check for VME support */
|
||||
ASSERT(KeI386VirtualIntExtensions == FALSE);
|
||||
if (KeI386VirtualIntExtensions)
|
||||
{
|
||||
if (EFlags & EFLAGS_INTERRUPT_MASK)
|
||||
{
|
||||
EFlags |= EFLAGS_VIF;
|
||||
}
|
||||
}
|
||||
|
||||
/* Add V86 and Interrupt flag */
|
||||
EFlags |= EFLAGS_V86_MASK | EFLAGS_INTERRUPT_MASK;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue