Index: kernel/arch/ppc32/src/mm/frame.c
===================================================================
--- kernel/arch/ppc32/src/mm/frame.c	(revision 6cd9aa607e6515e17e369c7e888779416251db4d)
+++ kernel/arch/ppc32/src/mm/frame.c	(revision 06da55b579d4404672ea2a8664146ec81c2b9df2)
@@ -41,4 +41,5 @@
 
 uintptr_t last_frame = 0;
+uintptr_t end_frame = 0;
 
 void physmem_print(void)
@@ -75,5 +76,7 @@
 			last_frame = ALIGN_UP(bootinfo.memmap.zones[i].start + bootinfo.memmap.zones[i].size, FRAME_SIZE);
 	}
-
+	
+	end_frame = last_frame;
+	
 	/* First is exception vector, second is 'implementation specific',
 	   third and fourth is reserved, other contain real mode code */
Index: kernel/arch/ppc32/src/mm/page.c
===================================================================
--- kernel/arch/ppc32/src/mm/page.c	(revision 6cd9aa607e6515e17e369c7e888779416251db4d)
+++ kernel/arch/ppc32/src/mm/page.c	(revision 06da55b579d4404672ea2a8664146ec81c2b9df2)
@@ -64,4 +64,10 @@
 }
 
+void hw_area(uintptr_t *physaddr, pfn_t *frames)
+{
+	*physaddr = end_frame;
+	*frames = ADDR2PFN(0xffffffff - end_frame);
+}
+
 /** @}
  */
