Index: kernel/arch/ia64/include/mm/frame.h
===================================================================
--- kernel/arch/ia64/include/mm/frame.h	(revision 6cd9aa607e6515e17e369c7e888779416251db4d)
+++ kernel/arch/ia64/include/mm/frame.h	(revision ae318d3535cba06a6996f270db31a961fae402ad)
@@ -45,4 +45,5 @@
 
 extern uintptr_t last_frame;
+extern uintptr_t end_frame;
 
 extern void frame_arch_init(void);
Index: kernel/arch/ia64/src/mm/frame.c
===================================================================
--- kernel/arch/ia64/src/mm/frame.c	(revision 6cd9aa607e6515e17e369c7e888779416251db4d)
+++ kernel/arch/ia64/src/mm/frame.c	(revision ae318d3535cba06a6996f270db31a961fae402ad)
@@ -52,4 +52,5 @@
 
 uintptr_t last_frame = 0;
+uintptr_t end_frame = 0;
 
 void frame_arch_init(void)
Index: kernel/arch/ia64/src/mm/page.c
===================================================================
--- kernel/arch/ia64/src/mm/page.c	(revision 6cd9aa607e6515e17e369c7e888779416251db4d)
+++ kernel/arch/ia64/src/mm/page.c	(revision ae318d3535cba06a6996f270db31a961fae402ad)
@@ -275,4 +275,10 @@
 }
 
+void hw_area(uintptr_t *physaddr, pfn_t *frames)
+{
+	*physaddr = end_frame;
+	*frames = ADDR2PFN(0x7fffffffffffffffUL - end_frame);
+}
+
 /** @}
  */
