Index: kernel/arch/arm32/include/mm/frame.h
===================================================================
--- kernel/arch/arm32/include/mm/frame.h	(revision 12b0d51de9d4343bcc2d442e78f69a0a65d854e6)
+++ kernel/arch/arm32/include/mm/frame.h	(revision 6250c37234323890b9e9a2f06fea02651a75d6c2)
@@ -46,8 +46,19 @@
 
 #define BOOT_PAGE_TABLE_SIZE     0x4000
-#define BOOT_PAGE_TABLE_ADDRESS  0x8000
+
+#ifdef MACHINE_gta02
+#define BOOT_PAGE_TABLE_ADDRESS  0x30010000
+#else
+#define BOOT_PAGE_TABLE_ADDRESS  0x00008000
+#endif
 
 #define BOOT_PAGE_TABLE_START_FRAME     (BOOT_PAGE_TABLE_ADDRESS >> FRAME_WIDTH)
 #define BOOT_PAGE_TABLE_SIZE_IN_FRAMES  (BOOT_PAGE_TABLE_SIZE >> FRAME_WIDTH)
+
+#ifdef MACHINE_gta02
+#define PHYSMEM_START_ADDR	0x30008000
+#else
+#define PHYSMEM_START_ADDR	0x00000000
+#endif
 
 extern uintptr_t last_frame;
Index: kernel/arch/arm32/src/mach/gta02/gta02.c
===================================================================
--- kernel/arch/arm32/src/mach/gta02/gta02.c	(revision 12b0d51de9d4343bcc2d442e78f69a0a65d854e6)
+++ kernel/arch/arm32/src/mach/gta02/gta02.c	(revision 6250c37234323890b9e9a2f06fea02651a75d6c2)
@@ -76,10 +76,10 @@
 /** Get extents of available memory.
  *
- * @param start		Place to store memory start address.
+ * @param start		Place to store memory start address (physical).
  * @param size		Place to store memory size.
  */
 static void gta02_get_memory_extents(uintptr_t *start, uintptr_t *size)
 {
-	*start = PA2KA(GTA02_MEMORY_START) + GTA02_MEMORY_SKIP;
+	*start = GTA02_MEMORY_START + GTA02_MEMORY_SKIP;
 	*size  = GTA02_MEMORY_SIZE - GTA02_MEMORY_SKIP;
 }
Index: kernel/arch/arm32/src/mm/frame.c
===================================================================
--- kernel/arch/arm32/src/mm/frame.c	(revision 12b0d51de9d4343bcc2d442e78f69a0a65d854e6)
+++ kernel/arch/arm32/src/mm/frame.c	(revision 6250c37234323890b9e9a2f06fea02651a75d6c2)
@@ -56,5 +56,5 @@
 	
 	/* All memory as one zone */
-	zone_create(first_frame, num_frames,
+	zone_create(first_frame >> FRAME_WIDTH, num_frames,
 	    BOOT_PAGE_TABLE_START_FRAME + BOOT_PAGE_TABLE_SIZE_IN_FRAMES, 0);
 	
Index: kernel/arch/arm32/src/mm/page.c
===================================================================
--- kernel/arch/arm32/src/mm/page.c	(revision 12b0d51de9d4343bcc2d442e78f69a0a65d854e6)
+++ kernel/arch/arm32/src/mm/page.c	(revision 6250c37234323890b9e9a2f06fea02651a75d6c2)
@@ -58,5 +58,5 @@
 	uintptr_t cur;
 	/* Kernel identity mapping */
-	for (cur = 0; cur < last_frame; cur += FRAME_SIZE)
+	for (cur = PHYSMEM_START_ADDR; cur < last_frame; cur += FRAME_SIZE)
 		page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags);
 	
