Index: kernel/arch/amd64/src/asm.S
===================================================================
--- kernel/arch/amd64/src/asm.S	(revision 6e5252a21fc011ffd91ddded1ae5f8647705f169)
+++ kernel/arch/amd64/src/asm.S	(revision 948e85bbb286f1f77adeaa39ad195cd5068091b9)
@@ -34,4 +34,11 @@
 #include <arch/cpu.h>
 #include <arch/smp/apic.h>
+#include <arch/boot/boot.h>
+
+.section .bootstack, "a", @nobits
+.align 16
+SYMBOL(bootstack_bottom)
+.skip BOOT_STACK_SIZE
+SYMBOL(bootstack_top)
 
 .text
Index: kernel/arch/amd64/src/boot/multiboot.S
===================================================================
--- kernel/arch/amd64/src/boot/multiboot.S	(revision 6e5252a21fc011ffd91ddded1ae5f8647705f169)
+++ kernel/arch/amd64/src/boot/multiboot.S	(revision 948e85bbb286f1f77adeaa39ad195cd5068091b9)
@@ -44,6 +44,4 @@
 //       the image to get very early debug output.
 
-#define START_STACK  (BOOT_OFFSET - BOOT_STACK_SIZE)
-
 .section .multiboot, "a"
 
@@ -99,5 +97,5 @@
 
 	/* Initialize stack pointer */
-	movl $START_STACK, %esp
+	movl $bootstack_top, %esp
 
 	/*
@@ -436,5 +434,5 @@
 	 */
 
-	movq $(PA2KA(START_STACK)), %rsp
+	movq $(PA2KA(bootstack_top)), %rsp
 
 	/* Create the first stack frame */
