Index: kernel/generic/include/main/main.h
===================================================================
--- kernel/generic/include/main/main.h	(revision e3444229c8e3295e9e2bed75246c19263f3c51a6)
+++ kernel/generic/include/main/main.h	(revision bae43dceb647887d723d7a5e7253c545ad767440)
@@ -38,7 +38,9 @@
 #include <typedefs.h>
 
-extern size_t hardcoded_kdata_size;
-extern size_t hardcoded_ktext_size;
-extern uintptr_t hardcoded_load_address;
+/* Address of the start of the kernel image. */
+extern uint8_t kernel_load_address[];
+/* Address of the end of kernel. */
+extern uint8_t kdata_end[];
+
 extern uintptr_t stack_safe;
 
Index: kernel/generic/src/main/main.c
===================================================================
--- kernel/generic/src/main/main.c	(revision e3444229c8e3295e9e2bed75246c19263f3c51a6)
+++ kernel/generic/src/main/main.c	(revision bae43dceb647887d723d7a5e7253c545ad767440)
@@ -168,7 +168,8 @@
 	config.cpu_active = 1;
 
-	config.base = hardcoded_load_address;
-	config.kernel_size = ALIGN_UP(hardcoded_ktext_size +
-	    hardcoded_kdata_size, PAGE_SIZE);
+	config.base = (uintptr_t) kernel_load_address;
+
+	config.kernel_size =
+	    ALIGN_UP((uintptr_t) kdata_end - config.base, PAGE_SIZE);
 	config.stack_size = STACK_SIZE;
 
