From c5cef89ee945425ce37f18fd9bac14c69c827dda Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 22 Aug 2008 12:20:01 +0000 Subject: [PATCH] Fix handling of stack svn path=/branches/ros-amd64-bringup/; revision=35527 --- reactos/ntoskrnl/ke/amd64/boot.S | 1 + reactos/ntoskrnl/ke/amd64/kiinit.c | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reactos/ntoskrnl/ke/amd64/boot.S b/reactos/ntoskrnl/ke/amd64/boot.S index ef33b63eb0a..cb3f393a999 100644 --- a/reactos/ntoskrnl/ke/amd64/boot.S +++ b/reactos/ntoskrnl/ke/amd64/boot.S @@ -50,6 +50,7 @@ _KiSetupStackAndInitializeKernel: /* Setup the new stack */ mov rsp, r8 + sub rsp, 0x300 // FIXME /* Copy stack parameters to the new stack */ sub rsp, 0x38 diff --git a/reactos/ntoskrnl/ke/amd64/kiinit.c b/reactos/ntoskrnl/ke/amd64/kiinit.c index 9bde7fb410a..d784d7d7b0d 100644 --- a/reactos/ntoskrnl/ke/amd64/kiinit.c +++ b/reactos/ntoskrnl/ke/amd64/kiinit.c @@ -694,6 +694,9 @@ KiSystemStartupReal(IN PLOADER_PARAMETER_BLOCK LoaderBlock) InitialStack = LoaderBlock->KernelStack; // Chekme InitialThread = (PKTHREAD)LoaderBlock->Thread; + /* Align stack to 16 bytes */ + InitialStack &= ~(16 - 1); + /* Clean the APC List Head */ InitializeListHead(&InitialThread->ApcState.ApcListHead[KernelMode]); @@ -785,10 +788,6 @@ FrLdrDbgPrint("Gdt = %p, Idt = %p, Pcr = %p, Tss = %p\n", Gdt, Idt, Pcr, Tss); /* Raise to HIGH_LEVEL */ KfRaiseIrql(HIGH_LEVEL); - /* Align stack and make space for the trap frame */ - InitialStack -= sizeof(KTRAP_FRAME) + 0x100; // FIXME - InitialStack &= ~(16 - 1); - /* Switch to new kernel stack and start kernel bootstrapping */ KiSetupStackAndInitializeKernel(&KiInitialProcess.Pcb, InitialThread,