Index: arch/ia32/src/boot/boot.S
===================================================================
--- arch/ia32/src/boot/boot.S	(revision 6c68b975fa0cd622fb0bc38e292185539102f597)
+++ arch/ia32/src/boot/boot.S	(revision 961b5f01ab0baf25db1ae2fde08e1dd39e0e62bc)
@@ -173,4 +173,5 @@
 		movl 4(%esi), %ecx						# mods->mod_end
 		subl %edx, %ecx
+		addl $0x80000000, %edx
 		
 		mods_invalid:
Index: generic/include/mm/frame.h
===================================================================
--- generic/include/mm/frame.h	(revision 6c68b975fa0cd622fb0bc38e292185539102f597)
+++ generic/include/mm/frame.h	(revision 961b5f01ab0baf25db1ae2fde08e1dd39e0e62bc)
@@ -50,5 +50,5 @@
 #define IS_BUDDY_RIGHT_BLOCK(zone, frame)	(((FRAME_INDEX((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1)
 
-#define ZONE_BLACKLIST_SIZE	3
+#define ZONE_BLACKLIST_SIZE	4
 
 struct zone {
Index: generic/src/main/kinit.c
===================================================================
--- generic/src/main/kinit.c	(revision 6c68b975fa0cd622fb0bc38e292185539102f597)
+++ generic/src/main/kinit.c	(revision 961b5f01ab0baf25db1ae2fde08e1dd39e0e62bc)
@@ -163,5 +163,8 @@
 		panic("vm_area_create: vm_text\n");
 	vm_area_map(a, m);
-	memcpy((void *) PA2KA(a->mapping[0]), (void *) utext, utext_size < PAGE_SIZE ? utext_size : PAGE_SIZE);
+	if (config.init_size > 0)
+		memcpy((void *) PA2KA(a->mapping[0]), (void *) config.init_addr, config.init_size < PAGE_SIZE ? config.init_size : PAGE_SIZE);
+	else
+		memcpy((void *) PA2KA(a->mapping[0]), (void *) utext, utext_size < PAGE_SIZE ? utext_size : PAGE_SIZE);
 
 	/*
Index: generic/src/mm/frame.c
===================================================================
--- generic/src/mm/frame.c	(revision 6c68b975fa0cd622fb0bc38e292185539102f597)
+++ generic/src/mm/frame.c	(revision 961b5f01ab0baf25db1ae2fde08e1dd39e0e62bc)
@@ -70,4 +70,6 @@
 	if (config.cpu_active == 1) {
 		frame_region_not_free(KA2PA(config.base), config.kernel_size);
+		if (config.init_size > 0)
+			frame_region_not_free(KA2PA(config.init_addr), config.init_size);
 	}
 
