Index: kernel/arch/arm32/src/mm/page.c
===================================================================
--- kernel/arch/arm32/src/mm/page.c	(revision e6c4b94cb4a5a3730c601df1c90e0fd495351478)
+++ kernel/arch/arm32/src/mm/page.c	(revision 9d4e1704695fcf4bdd0d097a2dc12155e07a840f)
@@ -37,4 +37,5 @@
 #include <genarch/mm/page_pt.h>
 #include <mm/page.h>
+#include <arch/mm/frame.h>
 #include <align.h>
 #include <config.h>
@@ -42,5 +43,5 @@
 #include <typedefs.h>
 #include <interrupt.h>
-#include <arch/mm/frame.h>
+#include <macros.h>
 
 /** Initializes page tables.
@@ -58,11 +59,14 @@
 	uintptr_t cur;
 	/* Kernel identity mapping */
-	for (cur = PHYSMEM_START_ADDR; cur < last_frame; cur += FRAME_SIZE)
+	for (cur = PHYSMEM_START_ADDR;
+	    cur < min(config.identity_base, last_frame); cur += FRAME_SIZE)
 		page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags);
 	
 	/* Create mapping for exception table at high offset */
 #ifdef HIGH_EXCEPTION_VECTORS
+	// XXX: fixme to use proper non-identity page
 	void *virtaddr = frame_alloc(ONE_FRAME, FRAME_KA);
-	page_mapping_insert(AS_KERNEL, EXC_BASE_ADDRESS, KA2PA(virtaddr), flags);
+	page_mapping_insert(AS_KERNEL, EXC_BASE_ADDRESS, KA2PA(virtaddr),
+	    flags);
 #else
 #error "Only high exception vector supported now"
