)\r
{\r
UINTN Status;\r
- UINTN Eflags;\r
IA32_REGISTER_SET ThunkRegSet;\r
BOOLEAN Ret;\r
UINT16 *Stack16;\r
+ BOOLEAN Enabled;\r
\r
ZeroMem (&ThunkRegSet, sizeof (ThunkRegSet));\r
ThunkRegSet.E.EFLAGS.Bits.Reserved_0 = 1;\r
//\r
// The call to Legacy16 is a critical section to EFI\r
//\r
- Eflags = AsmReadEflags ();\r
- if ((Eflags | EFI_CPU_EFLAGS_IF) != 0) {\r
- DisableInterrupts ();\r
- }\r
+ Enabled = SaveAndDisableInterrupts();\r
\r
//\r
// Set Legacy16 state. 0x08, 0x70 is legacy 8259 vector bases.\r
//\r
// End critical section\r
//\r
- if ((Eflags | EFI_CPU_EFLAGS_IF) != 0) {\r
- EnableInterrupts ();\r
- }\r
+ SetInterruptState (Enabled);\r
\r
Regs->E.EDI = ThunkRegSet.E.EDI; \r
Regs->E.ESI = ThunkRegSet.E.ESI; \r