/* FUNCTIONS *****************************************************************/
+INIT_SECTION
VOID
NTAPI
-INIT_FUNCTION
KiInitMachineDependent(VOID)
{
ULONG CpuCount;
KiSetCR0Bits();
}
+INIT_SECTION
VOID
NTAPI
-INIT_FUNCTION
KiInitializePcr(IN ULONG ProcessorNumber,
IN PKIPCR Pcr,
IN PKIDTENTRY Idt,
Pcr->PrcbData.MultiThreadProcessorSet = Pcr->PrcbData.SetMember;
}
+INIT_SECTION
VOID
NTAPI
-INIT_FUNCTION
KiInitializeKernel(IN PKPROCESS InitProcess,
IN PKTHREAD InitThread,
IN PVOID IdleStack,
ULONG PageDirectory[2];
PVOID DpcStack;
ULONG Vendor[3];
+ KIRQL DummyIrql;
/* Detect and set the CPU Type */
KiSetProcessorType();
}
/* Raise to Dispatch */
- KfRaiseIrql(DISPATCH_LEVEL);
+ KeRaiseIrql(DISPATCH_LEVEL,
+ &DummyIrql);
/* Set the Idle Priority to 0. This will jump into Phase 1 */
KeSetPriorityThread(InitThread, 0);
KiReleasePrcbLock(Prcb);
/* Raise back to HIGH_LEVEL and clear the PRCB for the loader block */
- KfRaiseIrql(HIGH_LEVEL);
+ KeRaiseIrql(HIGH_LEVEL,
+ &DummyIrql);
LoaderBlock->Prcb = 0;
}
+INIT_SECTION
VOID
FASTCALL
-INIT_FUNCTION
KiGetMachineBootPointers(IN PKGDTENTRY *Gdt,
IN PKIDTENTRY *Idt,
IN PKIPCR *Pcr,
TssSelector.HighWord.Bytes.BaseHi << 24);
}
+INIT_SECTION
VOID
NTAPI
-INIT_FUNCTION
KiSystemStartupBootStack(VOID)
{
PKTHREAD Thread;
/* Force interrupts enabled and lower IRQL back to DISPATCH_LEVEL */
_enable();
- KfLowerIrql(DISPATCH_LEVEL);
+ KeLowerIrql(DISPATCH_LEVEL);
/* Set the right wait IRQL */
Thread->WaitIrql = DISPATCH_LEVEL;
__invlpg(Address);
}
+INIT_SECTION
VOID
NTAPI
-INIT_FUNCTION
KiSystemStartup(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
{
ULONG Cpu;
KIDTENTRY NmiEntry, DoubleFaultEntry;
PKTSS Tss;
PKIPCR Pcr;
+ KIRQL DummyIrql;
/* Boot cycles timestamp */
BootCycles = __rdtsc();
}
/* Raise to HIGH_LEVEL */
- KfRaiseIrql(HIGH_LEVEL);
+ KeRaiseIrql(HIGH_LEVEL,
+ &DummyIrql);
/* Switch to new kernel stack and start kernel bootstrapping */
KiSwitchToBootStack(InitialStack & ~3);
}
/* Go to APC level */
- OldIrql = KfRaiseIrql(APC_LEVEL);
+ KeRaiseIrql(APC_LEVEL, &OldIrql);
_enable();
/* Check for BOP */
}
/* Bring IRQL back */
- KfLowerIrql(OldIrql);
+ KeLowerIrql(OldIrql);
_disable();
/* Do a quick V86 exit if possible */
}
/* Go to APC level */
- OldIrql = KfRaiseIrql(APC_LEVEL);
+ KeRaiseIrql(APC_LEVEL, &OldIrql);
_enable();
/* Handle the V86 opcode */
}
/* Bring IRQL back */
- KfLowerIrql(OldIrql);
+ KeLowerIrql(OldIrql);
_disable();
/* Do a quick V86 exit if possible */
FASTCALL
KiGetTickCountHandler(IN PKTRAP_FRAME TrapFrame)
{
- UNIMPLEMENTED_DBGBREAK();
+ /* Save trap frame */
+ KiEnterTrap(TrapFrame);
+
+ /*
+ * Just fail the request
+ */
+ DbgPrint("INT 0x2A attempted, returning 0 tick count\n");
+ TrapFrame->Eax = 0;
+
+ /* Exit the trap */
+ KiEoiHelper(TrapFrame);
}
VOID
Kei386EoiHelper(VOID)
{
/* We should never see this call happening */
- ERROR_FATAL("Mismatched NT/HAL version");
+ KeBugCheck(MISMATCHED_HAL);
}
/* EOF */