Index: arch/mips32/src/mm/frame.c
===================================================================
--- arch/mips32/src/mm/frame.c	(revision cf585c9d13b2a99d59f18755568c21ec59dd48f7)
+++ arch/mips32/src/mm/frame.c	(revision 9ebc238661f7f09b9e25d99829f29144df068cbb)
@@ -37,6 +37,4 @@
 void frame_arch_init(void)
 {
-	/* Disable Everything until load address */
-	frame_region_not_free(0, KA2PA(KERNEL_LOAD_ADDRESS) + FRAME_SIZE);
-        zone_create_in_region(0, config.memory_size & ~(FRAME_SIZE-1));
+        zone_create_in_region(KA2PA(KERNEL_LOAD_ADDRESS), config.memory_size & ~(FRAME_SIZE-1));
 }
Index: generic/src/mm/frame.c
===================================================================
--- generic/src/mm/frame.c	(revision cf585c9d13b2a99d59f18755568c21ec59dd48f7)
+++ generic/src/mm/frame.c	(revision 9ebc238661f7f09b9e25d99829f29144df068cbb)
@@ -39,4 +39,5 @@
 #include <arch.h>
 #include <print.h>
+#include <align.h>
 
 spinlock_t zone_head_lock;       /**< this lock protects zone_head list */
@@ -63,5 +64,5 @@
 	if (config.cpu_active == 1) {
 		zone_init();
-		frame_region_not_free(config.base, config.base + config.kernel_size + CONFIG_STACK_SIZE);
+		frame_region_not_free(config.base, config.kernel_size);
 	}
 
@@ -212,5 +213,5 @@
 	
 	if (size % FRAME_SIZE != 0) {
-		size = size + (FRAME_SIZE - size % FRAME_SIZE);
+		size = ALIGN(size, FRAME_SIZE);
 	}
 	ASSERT(size % FRAME_SIZE == 0);
