mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
Add a hack in KiSystemStartupReal function until Better Times.
svn path=/trunk/; revision=42305
This commit is contained in:
parent
cd03260db2
commit
a640545b8b
1 changed files with 26 additions and 10 deletions
|
@ -712,6 +712,21 @@ KiSystemStartupReal(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
|||
Ke386SetDs(KGDT_R3_DATA | RPL_MASK);
|
||||
Ke386SetEs(KGDT_R3_DATA | RPL_MASK);
|
||||
|
||||
/* HACK compensates for KiRosPrepareForSystemStartup hack */
|
||||
if ((ULONG)Idt == KiIdtDescriptor.Base)
|
||||
{
|
||||
USHORT FlippedSelector;
|
||||
|
||||
FlippedSelector = KiIdt[2].Selector;
|
||||
KiIdt[2].Selector = KiIdt[2].ExtendedOffset;
|
||||
KiIdt[2].ExtendedOffset = FlippedSelector;
|
||||
|
||||
FlippedSelector = KiIdt[8].Selector;
|
||||
KiIdt[8].Selector = KiIdt[8].ExtendedOffset;
|
||||
KiIdt[8].ExtendedOffset = FlippedSelector;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Save NMI and double fault traps */
|
||||
RtlCopyMemory(&NmiEntry, &Idt[2], sizeof(KIDTENTRY));
|
||||
RtlCopyMemory(&DoubleFaultEntry, &Idt[8], sizeof(KIDTENTRY));
|
||||
|
@ -724,6 +739,7 @@ KiSystemStartupReal(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
|||
/* Restore NMI and double fault */
|
||||
RtlCopyMemory(&Idt[2], &NmiEntry, sizeof(KIDTENTRY));
|
||||
RtlCopyMemory(&Idt[8], &DoubleFaultEntry, sizeof(KIDTENTRY));
|
||||
}
|
||||
|
||||
AppCpuInit:
|
||||
/* Loop until we can release the freeze lock */
|
||||
|
|
Loading…
Reference in a new issue