Index: arch/ppc32/src/mm/frame.c
===================================================================
--- arch/ppc32/src/mm/frame.c	(revision 6f8a42644f9f520c53d9e649da934ac91623d29f)
+++ arch/ppc32/src/mm/frame.c	(revision 0d3ff9a3978f9e8a18d27ef1dd0ee2ea44191f3c)
@@ -30,10 +30,9 @@
 #include <arch/mm/memory_init.h>
 #include <mm/frame.h>
-#include <config.h>
-#include <panic.h>
+#include <genarch/ofw/memory_init.h>
 
 void frame_arch_init(void)
 {
-	ppc_init_zones();
+	ofw_init_zones();
 	/* First is exception vector, second is 'implementation specific' */
 	frame_mark_unavailable(0, 2);
Index: arch/ppc32/src/mm/memory_init.c
===================================================================
--- arch/ppc32/src/mm/memory_init.c	(revision 6f8a42644f9f520c53d9e649da934ac91623d29f)
+++ arch/ppc32/src/mm/memory_init.c	(revision 0d3ff9a3978f9e8a18d27ef1dd0ee2ea44191f3c)
@@ -28,63 +28,14 @@
 
 #include <arch/mm/memory_init.h>
-#include <genarch/ofw/ofw.h>
-#include <panic.h>
-#include <mm/frame.h>
-#include <align.h>
-
-#define MEMMAP_MAX_RECORDS 32
-
-typedef struct {
-	__u32 start;
-	__u32 size;
-} memmap_t;
-
-static memmap_t memmap[MEMMAP_MAX_RECORDS];
-size_t total_mem = 0;
-
-static void init_memmap(void)
-{
-	int i;
-
-	phandle handle = ofw_find_device("/memory");
-	if (handle == -1)
-		panic("No RAM\n");
-	
-	size_t ret = ofw_get_property(handle, "reg", &memmap, sizeof(memmap));
-	if (ret == -1)
-		panic("Device /memory has no reg property\n");
-	
-	
-	for (i = 0; i < MEMMAP_MAX_RECORDS; i++) {
-		if (memmap[i].size == 0)
-			break;
-		total_mem += memmap[i].size;
-	}
-}
+#include <genarch/ofw/memory_init.h>
+#include <typedefs.h>
 
 void preboot_read_config(void)
 {
-	init_memmap();
+	ofw_init_memmap();
 }
 
 size_t get_memory_size(void) 
 {
-	return total_mem;
+	return ofw_get_memory_size();
 }
-
-void ppc_init_zones(void)
-{
-	int i;
-	pfn_t confdata;
-
-	for (i = 0; i < MEMMAP_MAX_RECORDS; i++) {
-		if (memmap[i].size == 0)
-			break;
-		confdata = ADDR2PFN(memmap[i].start);
-		if (confdata == 0)
-			confdata = 2;
-		zone_create(ADDR2PFN(memmap[i].start),
-			    SIZE2FRAMES(ALIGN_DOWN(memmap[i].size,PAGE_SIZE)),
-			    confdata, 0);
-	}
-}
