Index: kernel/generic/src/main/main.c
===================================================================
--- kernel/generic/src/main/main.c	(revision 0fa6044030c5c9175f76bf5a500b45f6f66598e6)
+++ kernel/generic/src/main/main.c	(revision 61e90ddd605dc4854cbb016a4be65d1cd1e9510c)
@@ -95,4 +95,10 @@
 };
 
+/** Boot allocations. */
+ballocs_t ballocs = {
+	.base = NULL,
+	.size = 0
+};
+
 context_t ctx;
 
@@ -106,5 +112,5 @@
 size_t hardcoded_kdata_size = 0;	/**< Size of the kernel data in bytes. */
 
-uintptr_t stack_safe = 0;	/**< Lowest safe stack virtual address */
+uintptr_t stack_safe = 0;		/**< Lowest safe stack virtual address */
 
 void main_bsp(void);
@@ -152,4 +158,10 @@
 		if (PA_overlaps(config.stack_base, config.stack_size, init.tasks[i].addr, init.tasks[i].size))
 			config.stack_base = ALIGN_UP(init.tasks[i].addr + init.tasks[i].size, config.stack_size);
+	}
+
+	/* Avoid placing stack on top of boot allocations. */
+	if (ballocs.size) {
+		if (PA_overlaps(config.stack_base, config.stack_size, ballocs.base, ballocs.size))
+			config.stack_base = ALIGN_UP(ballocs.base + ballocs.size, PAGE_SIZE);
 	}
 	
