Index: kernel/arch/arm32/src/arm32.c
===================================================================
--- kernel/arch/arm32/src/arm32.c	(revision ae318d3535cba06a6996f270db31a961fae402ad)
+++ kernel/arch/arm32/src/arm32.c	(revision 5cb223fc45a97511d5661289ec56529d021ec8f6)
@@ -35,5 +35,4 @@
 
 #include <arch.h>
-#include <arch/boot.h>
 #include <config.h>
 #include <arch/console.h>
@@ -49,20 +48,17 @@
 #include <arch/machine.h>
 #include <userspace.h>
-
-/** Information about loaded tasks. */
-bootinfo_t bootinfo;
+#include <macros.h>
 
 /** Performs arm32 specific initialization before main_bsp() is called. */
-void arch_pre_main(void)
+void arch_pre_main(void *entry __attribute__((unused)), bootinfo_t *bootinfo)
 {
 	unsigned int i;
-
-	init.cnt = bootinfo.cnt;
-
-	for (i = 0; i < bootinfo.cnt; ++i) {
-		init.tasks[i].addr = bootinfo.tasks[i].addr;
-		init.tasks[i].size = bootinfo.tasks[i].size;
+	
+	init.cnt = bootinfo->cnt;
+	
+	for (i = 0; i < min3(bootinfo->cnt, TASKMAP_MAX_RECORDS, CONFIG_INIT_TASKS); ++i) {
+		init.tasks[i].addr = bootinfo->tasks[i].addr;
+		init.tasks[i].size = bootinfo->tasks[i].size;
 	}
-	
 }
 
Index: kernel/arch/arm32/src/start.S
===================================================================
--- kernel/arch/arm32/src/start.S	(revision ae318d3535cba06a6996f270db31a961fae402ad)
+++ kernel/arch/arm32/src/start.S	(revision 5cb223fc45a97511d5661289ec56529d021ec8f6)
@@ -41,28 +41,10 @@
 	bic r3, r3, #0x1f
 	orr r3, r3, #0x13
-	msr cpsr_c, r3	
+	msr cpsr_c, r3
 	
 	ldr sp, =temp_stack
-
-	cmp r2, #0
-	beq bootinfo_end
-
-	ldr r3, =bootinfo
-
-	bootinfo_loop:
-		ldr r4, [r1]
-		str r4, [r3]
-
-		add r1, r1, #4
-		add r3, r3, #4
-		add r2, r2, #-4
-
-		cmp r2, #0
-		bne bootinfo_loop
 	
-	bootinfo_end:
-
 	bl arch_pre_main
-
+	
 	bl main_bsp
 
@@ -75,3 +57,2 @@
 supervisor_sp:
 	.space 4
-
