diff --git a/extras/mini-os/arch/x86/setup.c b/extras/mini-os/arch/x86/setup.c index db24b41ebc..8106941140 100644 --- a/extras/mini-os/arch/x86/setup.c +++ b/extras/mini-os/arch/x86/setup.c @@ -45,7 +45,7 @@ union start_info_union start_info_union; * Just allocate the kernel stack here. SS:ESP is set up to point here * in head.S. */ -char stack[8192]; +char stack[2*8192]; extern char shared_info[PAGE_SIZE]; @@ -102,7 +102,7 @@ arch_init(start_info_t *si) void arch_print_info(void) { - printk(" stack: %p-%p\n", stack, stack + 8192); + printk(" stack: %p-%p\n", stack, stack + 2*8192); } diff --git a/extras/mini-os/arch/x86/x86_32.S b/extras/mini-os/arch/x86/x86_32.S index b10bc23401..b6f1be3a01 100644 --- a/extras/mini-os/arch/x86/x86_32.S +++ b/extras/mini-os/arch/x86/x86_32.S @@ -21,11 +21,12 @@ _start: cld lss stack_start,%esp + andl $(~(8192-1)), %esp push %esi call start_kernel stack_start: - .long stack+8192, __KERNEL_SS + .long stack+(2*8192), __KERNEL_SS /* Unpleasant -- the PTE that maps this page is actually overwritten */ /* to map the real shared-info page! :-) */ diff --git a/extras/mini-os/arch/x86/x86_64.S b/extras/mini-os/arch/x86/x86_64.S index 2b621784ed..1b5e0f7b37 100644 --- a/extras/mini-os/arch/x86/x86_64.S +++ b/extras/mini-os/arch/x86/x86_64.S @@ -18,11 +18,12 @@ _start: cld movq stack_start(%rip),%rsp + andq $(~(8192-1)), %rsp movq %rsi,%rdi call start_kernel stack_start: - .quad stack+8192 + .quad stack+(2*8192) /* Unpleasant -- the PTE that maps this page is actually overwritten */ /* to map the real shared-info page! :-) */