Index: kernel/generic/src/main/kinit.c
===================================================================
--- kernel/generic/src/main/kinit.c	(revision 1ccd0aa8618b54ae95b1c86d22c61eb39bb9593a)
+++ kernel/generic/src/main/kinit.c	(revision 221c9ec0fbbc7f15c19b6c609e290af3d4ea2b17)
@@ -205,17 +205,8 @@
 		 * Create virtual memory mappings for init task images.
 		 */
-		size_t size = ALIGN_UP(init.tasks[i].size, PAGE_SIZE);
-		size_t offs;
-		uintptr_t page = km_page_alloc(size, PAGE_SIZE);
-		uintptr_t frame = init.tasks[i].paddr;
-
-		page_table_lock(AS_KERNEL, true);
-		for (offs = 0; offs < size; offs += PAGE_SIZE) {
-			page_mapping_insert(AS_KERNEL, page + offs,
-			    frame + offs,
-			    PAGE_READ | PAGE_WRITE | PAGE_CACHEABLE |
-			    PAGE_PRESENT);
-		}
-		page_table_unlock(AS_KERNEL, true);
+		uintptr_t page = km_map(init.tasks[i].paddr,
+		    init.tasks[i].size,
+		    PAGE_READ | PAGE_WRITE | PAGE_CACHEABLE);
+		ASSERT(page);
 		
 		int rc = program_create_from_image((void *) page, namebuf,
@@ -243,5 +234,5 @@
 			 * Assume the last task is the RAM disk.
 			 */
-			init_rd((void *) frame, init.tasks[i].size);
+			init_rd((void *) init.tasks[i].paddr, init.tasks[i].size);
 		} else
 			printf("init[%zu]: Init binary load failed (error %d)\n", i, rc);
