Index: kernel/arch/arm32/include/arch.h
===================================================================
--- kernel/arch/arm32/include/arch.h	(revision edd7aa6d2706f6923818608ee4bd2df91876ad58)
+++ kernel/arch/arm32/include/arch.h	(revision 96e0748d7558e9aeb4c97ff5d520f773c406eeac)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup arm32	
+/** @addtogroup arm32
  * @{
  */
@@ -37,4 +37,21 @@
 #define KERN_arm32_ARCH_H_
 
+#define TASKMAP_MAX_RECORDS  32
+#define CPUMAP_MAX_RECORDS   32
+
+#include <typedefs.h>
+
+typedef struct {
+	uintptr_t addr;
+	uint32_t size;
+} utask_t;
+
+typedef struct {
+	uint32_t cnt;
+	utask_t tasks[TASKMAP_MAX_RECORDS];
+} bootinfo_t;
+
+extern void arch_pre_main(void *entry, bootinfo_t *bootinfo);
+
 #endif
 
Index: kernel/arch/arm32/include/asm/boot.h
===================================================================
--- kernel/arch/arm32/include/asm/boot.h	(revision edd7aa6d2706f6923818608ee4bd2df91876ad58)
+++ kernel/arch/arm32/include/asm/boot.h	(revision 96e0748d7558e9aeb4c97ff5d520f773c406eeac)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup arm32	
+/** @addtogroup arm32
  * @{
  */
@@ -40,21 +40,4 @@
 #define TEMP_STACK_SIZE 0x100
 
-#ifndef __ASM__
-
-/** Kernel entry point.
- *
- * Implemented in assembly. Copies boot_bootinfo (declared as bootinfo in 
- * boot/arch/arm32/loader/main.c) to #bootinfo struct. Then jumps to
- * #arch_pre_main and #main_bsp.
- *
- * @param entry          Entry point address (not used).
- * @param boot_bootinfo  Struct holding information about loaded tasks.
- * @param bootinfo_size  Size of the bootinfo structure.
- */
-extern void kernel_image_start(void *entry, void *boot_bootinfo,
-    unsigned int bootinfo_size);
-
-#endif
-
 #endif
 
Index: kernel/arch/arm32/include/boot.h
===================================================================
--- kernel/arch/arm32/include/boot.h	(revision edd7aa6d2706f6923818608ee4bd2df91876ad58)
+++ 	(revision )
@@ -1,76 +1,0 @@
-/*
- * Copyright (c) 2006 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** @addtogroup arm32	
- * @{
- */
-/** @file
- *  @brief Bootinfo declarations.
- *
- *  Reflects boot/arch/arm32/loader/main.h.
- */
-
-#ifndef KERN_arm32_BOOT_H_
-#define KERN_arm32_BOOT_H_
-
-#include <arch/types.h>
-
-/** Maximum number of tasks in the #bootinfo_t struct. */
-#define TASKMAP_MAX_RECORDS 32
-
-
-/** Struct holding information about single loaded uspace task. */
-typedef struct {
-
-	/** Address where the task was placed. */
-	uintptr_t addr;
-
-	/** Size of the task's binary. */
-	uint32_t size;
-} utask_t;
-
-
-/** Struct holding information about loaded uspace tasks. */
-typedef struct {
-
-	/** Number of loaded tasks. */
-	uint32_t cnt;
-
-	/** Array of loaded tasks. */	
-	utask_t tasks[TASKMAP_MAX_RECORDS];
-} bootinfo_t;
-
-
-/** Bootinfo that is filled in #kernel_image_start. */ 
-extern bootinfo_t bootinfo;
-
-
-#endif
-
-/** @}
- */
Index: kernel/arch/arm32/src/arm32.c
===================================================================
--- kernel/arch/arm32/src/arm32.c	(revision edd7aa6d2706f6923818608ee4bd2df91876ad58)
+++ kernel/arch/arm32/src/arm32.c	(revision 96e0748d7558e9aeb4c97ff5d520f773c406eeac)
@@ -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 edd7aa6d2706f6923818608ee4bd2df91876ad58)
+++ kernel/arch/arm32/src/start.S	(revision 96e0748d7558e9aeb4c97ff5d520f773c406eeac)
@@ -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
-
