Let kernel initialize stack on it's own without relying on boot loader
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
2023-02-05 09:55:59 +01:00
parent 0b743a5f26
commit d6aac59199
10 changed files with 38 additions and 60 deletions

View File

@@ -15,11 +15,5 @@ HAL_FRAMEBUFFER_DATA HlpFrameBufferData;
/* Kernel initialization block passed by boot loader */
PKERNEL_INITIALIZATION_BLOCK KeInitializationBlock;
/* Kernel own boot stack */
UCHAR KepKernelBootStackData[KERNEL_STACK_SIZE] = {0};
/* Kernel own fault stack */
UCHAR KepKernelFaultStackData[KERNEL_STACK_SIZE] = {0};
/* Pointer to boot loader provided DbgPrint() routine */
VOID (*LdrDbgPrint)(IN PWCHAR Format, IN ...) = NULL;

View File

@@ -46,9 +46,6 @@ KeStartXtSystem(IN PKERNEL_INITIALIZATION_BLOCK Parameters)
/* Save the kernel initialization block */
KeInitializationBlock = Parameters;
/* Initialize kernel stacks */
KepInitializeStack(Parameters);
/* Architecture specific initialization */
KepArchInitialize();
@@ -56,36 +53,5 @@ KeStartXtSystem(IN PKERNEL_INITIALIZATION_BLOCK Parameters)
ArInitializeProcessor();
/* Switch boot stack alligning it to 4 byte boundary */
KepSwitchBootStack(KeInitializationBlock->KernelBootStack & ~0x3);
}
/**
* Initializes a stack needed by the kernel.
*
* @param Parameters
* Supplies a pointer to memory area containing parameters passed to kernel by bootloader.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTAPI
VOID
KepInitializeStack(IN PKERNEL_INITIALIZATION_BLOCK Parameters)
{
/* Make sure kernel boot stack is initialized */
if(!Parameters->KernelBootStack)
{
/* Initialize kernel boot stack */
LdrPrint(L"Initializing kernel boot stack\n");
Parameters->KernelBootStack = (ULONG_PTR)&KepKernelBootStackData[KERNEL_STACK_SIZE];
}
/* Make sure kernel fault stack is initialized */
if(!Parameters->KernelFaultStack)
{
/* Initialize kernel fault stack */
LdrPrint(L"Initializing kernel fault stack\n");
Parameters->KernelFaultStack = (ULONG_PTR)&KepKernelFaultStackData[KERNEL_STACK_SIZE];
}
KepSwitchBootStack((ULONG_PTR)&ArKernelBootStack & ~0x3);
}