Index: kernel/arch/ppc32/src/mm/frame.c
===================================================================
--- kernel/arch/ppc32/src/mm/frame.c	(revision 0867321c69ae9c3f09757e7ced1c100a578f28e3)
+++ kernel/arch/ppc32/src/mm/frame.c	(revision 96e0748d7558e9aeb4c97ff5d520f773c406eeac)
@@ -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 0867321c69ae9c3f09757e7ced1c100a578f28e3)
+++ kernel/arch/ppc32/src/mm/page.c	(revision 96e0748d7558e9aeb4c97ff5d520f773c406eeac)
@@ -64,4 +64,10 @@
 }
 
+void hw_area(uintptr_t *physaddr, pfn_t *frames)
+{
+	*physaddr = end_frame;
+	*frames = ADDR2PFN(0xffffffff - end_frame);
+}
+
 /** @}
  */
