Index: kernel/arch/arm32/include/mach/gta02/gta02.h
===================================================================
--- kernel/arch/arm32/include/mach/gta02/gta02.h	(revision bd48f4ce0bcae08987a78c5940f9588ac0feddb2)
+++ kernel/arch/arm32/include/mach/gta02/gta02.h	(revision bd48f4ce0bcae08987a78c5940f9588ac0feddb2)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2010 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup arm32gta02 GTA02
+ *  @brief Openmoko GTA02 platform.
+ *  @ingroup arm32
+ * @{
+ */
+/** @file
+ *  @brief Openmoko GTA02 platform driver.
+ */
+
+#ifndef KERN_arm32_gta02_H_
+#define KERN_arm32_gta02_H_
+
+#include <arch/machine_func.h>
+
+extern struct arm_machine_ops gta02_machine_ops;
+
+#endif
+
+/** @}
+ */
Index: kernel/arch/arm32/include/mach/integratorcp/integratorcp.h
===================================================================
--- kernel/arch/arm32/include/mach/integratorcp/integratorcp.h	(revision 7a0359b903311f67678b4a0a3ebbcf0daf6eab38)
+++ kernel/arch/arm32/include/mach/integratorcp/integratorcp.h	(revision bd48f4ce0bcae08987a78c5940f9588ac0feddb2)
@@ -103,5 +103,5 @@
 extern void icp_cpu_halt(void);
 extern void icp_irq_exception(unsigned int, istate_t *);
-extern uintptr_t icp_get_memory_size(void);
+extern void icp_get_memory_extents(uintptr_t *, uintptr_t *);
 extern void icp_frame_init(void);
 
Index: kernel/arch/arm32/include/mach/testarm/testarm.h
===================================================================
--- kernel/arch/arm32/include/mach/testarm/testarm.h	(revision 7a0359b903311f67678b4a0a3ebbcf0daf6eab38)
+++ kernel/arch/arm32/include/mach/testarm/testarm.h	(revision bd48f4ce0bcae08987a78c5940f9588ac0feddb2)
@@ -73,5 +73,5 @@
 extern void gxemul_cpu_halt(void);
 extern void gxemul_irq_exception(unsigned int, istate_t *);
-extern uintptr_t gxemul_get_memory_size(void);
+extern void gxemul_get_memory_extents(uintptr_t *, uintptr_t *);
 extern void gxemul_frame_init(void);
 
Index: kernel/arch/arm32/include/machine_func.h
===================================================================
--- kernel/arch/arm32/include/machine_func.h	(revision 7a0359b903311f67678b4a0a3ebbcf0daf6eab38)
+++ kernel/arch/arm32/include/machine_func.h	(revision bd48f4ce0bcae08987a78c5940f9588ac0feddb2)
@@ -47,12 +47,12 @@
 
 struct arm_machine_ops {
-	void		(*machine_init)(void);
-	void		(*machine_timer_irq_start)(void);
-	void		(*machine_cpu_halt)(void);
-	uintptr_t	(*machine_get_memory_size)(void);
-	void		(*machine_irq_exception)(unsigned int, istate_t*);
-	void		(*machine_frame_init)(void);
-	void		(*machine_output_init)(void);
-	void		(*machine_input_init)(void);
+	void (*machine_init)(void);
+	void (*machine_timer_irq_start)(void);
+	void (*machine_cpu_halt)(void);
+	void (*machine_get_memory_extents)(uintptr_t *, uintptr_t *);
+	void (*machine_irq_exception)(unsigned int, istate_t *);
+	void (*machine_frame_init)(void);
+	void (*machine_output_init)(void);
+	void (*machine_input_init)(void);
 };
 
@@ -74,11 +74,10 @@
 extern void machine_cpu_halt(void);
 
-
-/** Returns size of available memory.
+/** Get extents of available memory.
  *
- *  @return Size of available memory.
+ * @param start		Place to store memory start address.
+ * @param size		Place to store memory size.
  */
-extern uintptr_t machine_get_memory_size(void);
-
+extern void machine_get_memory_extents(uintptr_t *start, uintptr_t *size);
 
 /** Interrupt exception handler.
Index: kernel/arch/arm32/include/mm/frame.h
===================================================================
--- kernel/arch/arm32/include/mm/frame.h	(revision 7a0359b903311f67678b4a0a3ebbcf0daf6eab38)
+++ kernel/arch/arm32/include/mm/frame.h	(revision bd48f4ce0bcae08987a78c5940f9588ac0feddb2)
@@ -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;
