Index: kernel/arch/ia32/include/mm/tlb.h
===================================================================
--- kernel/arch/ia32/include/mm/tlb.h	(revision 70554dddbb6288c84c93b2b9a9b684e7df443f3e)
+++ kernel/arch/ia32/include/mm/tlb.h	(revision 9979acb60a5eb42e08938818e5cc4fd945626555)
@@ -27,5 +27,5 @@
  */
 
-/** @addtogroup ia32mm	
+/** @addtogroup ia32mm
  * @{
  */
@@ -36,7 +36,4 @@
 #define KERN_ia32_TLB_H_
 
-#define tlb_arch_init()
-#define tlb_print()
-
 #endif
 
Index: kernel/arch/ia32/src/mm/page.c
===================================================================
--- kernel/arch/ia32/src/mm/page.c	(revision 70554dddbb6288c84c93b2b9a9b684e7df443f3e)
+++ kernel/arch/ia32/src/mm/page.c	(revision 9979acb60a5eb42e08938818e5cc4fd945626555)
@@ -35,4 +35,6 @@
 #include <arch/mm/page.h>
 #include <genarch/mm/page_pt.h>
+#include <genarch/drivers/ega/ega.h>
+#include <genarch/drivers/legacy/ia32/io.h>
 #include <arch/mm/frame.h>
 #include <mm/frame.h>
@@ -49,4 +51,9 @@
 #include <print.h>
 #include <interrupt.h>
+#include <ddi/ddi.h>
+
+/** Physical memory area for devices. */
+static parea_t dev_area;
+static parea_t ega_area;
 
 void page_arch_init(void)
@@ -94,8 +101,13 @@
 }
 
-void hw_area(uintptr_t *physaddr, pfn_t *frames)
+void hw_area(void)
 {
-	*physaddr = end_frame;
-	*frames = ADDR2PFN(0xffffffff - end_frame);
+	dev_area.pbase = end_frame;
+	dev_area.frames = SIZE2FRAMES(0xffffffff - end_frame);
+	ddi_parea_register(&dev_area);
+	
+	ega_area.pbase = EGA_VIDEORAM;
+	ega_area.frames = SIZE2FRAMES(EGA_VRAM_SIZE);
+	ddi_parea_register(&ega_area);
 }
 
Index: kernel/arch/ia32/src/mm/tlb.c
===================================================================
--- kernel/arch/ia32/src/mm/tlb.c	(revision 70554dddbb6288c84c93b2b9a9b684e7df443f3e)
+++ kernel/arch/ia32/src/mm/tlb.c	(revision 9979acb60a5eb42e08938818e5cc4fd945626555)
@@ -68,4 +68,12 @@
 }
 
+void tlb_arch_init(void)
+{
+}
+
+void tlb_print(void)
+{
+}
+
 /** @}
  */
