Index: kernel/arch/amd64/src/amd64.c
===================================================================
--- kernel/arch/amd64/src/amd64.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/amd64/src/amd64.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -166,9 +166,7 @@
 {
 	if (config.cpu_active == 1) {
-		memory_print_map();
-		
-		#ifdef CONFIG_SMP
+#ifdef CONFIG_SMP
 		acpi_init();
-		#endif /* CONFIG_SMP */
+#endif /* CONFIG_SMP */
 	}
 }
Index: kernel/arch/amd64/src/mm/memory_init.c
===================================================================
--- kernel/arch/amd64/src/mm/memory_init.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/amd64/src/mm/memory_init.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -47,33 +47,4 @@
 }
 
-void memory_print_map(void)
-{
-	uint8_t i;
-	
-	for (i = 0; i < e820counter; i++) {
-		printf("E820 base: %#llx size: %#llx type: ", e820table[i].base_address, e820table[i].size);
-		switch (e820table[i].type) {
-		case MEMMAP_MEMORY_AVAILABLE: 
-			printf("available memory\n");
-			break;
-		case MEMMAP_MEMORY_RESERVED: 
-			printf("reserved memory\n");
-			break;
-		case MEMMAP_MEMORY_ACPI: 
-			printf("ACPI table\n");
-			break;
-		case MEMMAP_MEMORY_NVS: 
-			printf("NVS\n");
-			break;
-		case MEMMAP_MEMORY_UNUSABLE: 
-			printf("unusable memory\n");
-			break;
-		default:
-			printf("undefined memory type\n");
-		}
-	}
-
-}
-
 /** @}
  */
Index: kernel/arch/ia32/include/mm/memory_init.h
===================================================================
--- kernel/arch/ia32/include/mm/memory_init.h	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ia32/include/mm/memory_init.h	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -39,6 +39,4 @@
 size_t get_memory_size(void);
 
-void memory_print_map(void);
-
 #endif
 
Index: kernel/arch/ia32/src/ia32.c
===================================================================
--- kernel/arch/ia32/src/ia32.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ia32/src/ia32.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -117,6 +117,4 @@
 {
 	if (config.cpu_active == 1) {
-		memory_print_map();
-		
 #ifdef CONFIG_SMP
 		acpi_init();
Index: kernel/arch/ia32/src/mm/frame.c
===================================================================
--- kernel/arch/ia32/src/mm/frame.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ia32/src/mm/frame.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -104,5 +104,5 @@
 		printf("%#18llx %#18llx %s\n", e820table[i].base_address,
 			e820table[i].size, name);
-	}			
+	}
 }
 
Index: kernel/arch/ia32/src/mm/memory_init.c
===================================================================
--- kernel/arch/ia32/src/mm/memory_init.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ia32/src/mm/memory_init.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -47,33 +47,4 @@
 }
 
-void memory_print_map(void)
-{
-	uint8_t i;
-	
-	for (i = 0; i < e820counter; i++) {
-		printf("E820 base: %#.16llx size: %#.16llx type: ", e820table[i].base_address, e820table[i].size);
-		switch (e820table[i].type) {
-		case MEMMAP_MEMORY_AVAILABLE: 
-			printf("available memory\n");
-			break;
-		case MEMMAP_MEMORY_RESERVED: 
-			printf("reserved memory\n");
-			break;
-		case MEMMAP_MEMORY_ACPI: 
-			printf("ACPI table\n");
-			break;
-		case MEMMAP_MEMORY_NVS: 
-			printf("NVS\n");
-			break;
-		case MEMMAP_MEMORY_UNUSABLE: 
-			printf("unusable memory\n");
-			break;
-		default:
-			printf("undefined memory type\n");
-		}
-	}
-
-}
-
 /** @}
  */
Index: kernel/arch/ia32xen/include/mm/frame.h
===================================================================
--- kernel/arch/ia32xen/include/mm/frame.h	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ia32xen/include/mm/frame.h	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -47,5 +47,5 @@
 
 extern void frame_arch_init(void);
-#define physmem_print()
+extern void physmem_print(void);
 
 #endif /* __ASM__ */
Index: kernel/arch/ia32xen/include/mm/memory_init.h
===================================================================
--- kernel/arch/ia32xen/include/mm/memory_init.h	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ia32xen/include/mm/memory_init.h	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -41,6 +41,4 @@
 size_t get_memory_size(void);
 
-void memory_print_map(void);
-
 #endif
 
Index: kernel/arch/ia32xen/src/ia32xen.c
===================================================================
--- kernel/arch/ia32xen/src/ia32xen.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ia32xen/src/ia32xen.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -161,6 +161,4 @@
 {
 	if (config.cpu_active == 1) {
-		memory_print_map();
-		
 #ifdef CONFIG_SMP
 		acpi_init();
Index: kernel/arch/ia32xen/src/mm/frame.c
===================================================================
--- kernel/arch/ia32xen/src/mm/frame.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ia32xen/src/mm/frame.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -37,4 +37,12 @@
 #include <config.h>
 
+void physmem_print(void)
+{
+	printf("Base       Size       Reserved\n");
+	printf("---------- ---------- ---------\n");
+	printf("%#10x %#10x %#10x\n", PFN2ADDR(meminfo.start),
+		PFN2ADDR(meminfo.size), PFN2ADDR(meminfo.reserved));
+}
+
 void frame_arch_init(void)
 {
Index: kernel/arch/ia32xen/src/mm/memory_init.c
===================================================================
--- kernel/arch/ia32xen/src/mm/memory_init.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ia32xen/src/mm/memory_init.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -43,9 +43,4 @@
 }
 
-void memory_print_map(void)
-{
-	printf("Xen memory: %p size: %d (reserved %d)\n", PFN2ADDR(meminfo.start), PFN2ADDR(meminfo.size - meminfo.reserved), PFN2ADDR(meminfo.reserved));
-}
-
 /** @}
  */
Index: kernel/arch/ppc32/include/mm/frame.h
===================================================================
--- kernel/arch/ppc32/include/mm/frame.h	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc32/include/mm/frame.h	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -47,5 +47,5 @@
 
 extern void frame_arch_init(void);
-#define physmem_print()
+extern void physmem_print(void);
 
 #endif /* __ASM__ */
Index: kernel/arch/ppc32/include/mm/memory_init.h
===================================================================
--- kernel/arch/ppc32/include/mm/memory_init.h	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc32/include/mm/memory_init.h	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -38,6 +38,4 @@
 size_t get_memory_size(void);
 
-void memory_print_map(void);
-
 #endif
 
Index: kernel/arch/ppc32/src/mm/frame.c
===================================================================
--- kernel/arch/ppc32/src/mm/frame.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc32/src/mm/frame.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -39,6 +39,20 @@
 #include <align.h>
 #include <macros.h>
+#include <print.h>
 
 uintptr_t last_frame = 0;
+
+void physmem_print(void)
+{
+	unsigned int i;
+	
+	printf("Base       Size\n");
+	printf("---------- ----------\n");
+		
+	for (i = 0; i < bootinfo.memmap.count; i++) {
+		printf("%#10x %#10x\n", bootinfo.memmap.zones[i].start,
+			bootinfo.memmap.zones[i].size);
+	}
+}
 
 void frame_arch_init(void)
Index: kernel/arch/ppc32/src/mm/memory_init.c
===================================================================
--- kernel/arch/ppc32/src/mm/memory_init.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc32/src/mm/memory_init.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -43,13 +43,4 @@
 }
 
-
-void memory_print_map(void)
-{
-	count_t i;
-	
-	for (i = 0; i < bootinfo.memmap.count; i++)
-		printf("base: %.*p size: %#x\n", sizeof(bootinfo.memmap.zones[i].start) * 2, bootinfo.memmap.zones[i].start, bootinfo.memmap.zones[i].size);
-}
-
 /** @}
  */
Index: kernel/arch/ppc32/src/ppc32.c
===================================================================
--- kernel/arch/ppc32/src/ppc32.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc32/src/ppc32.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -118,5 +118,4 @@
 void arch_pre_smp_init(void)
 {
-	memory_print_map();
 }
 
Index: kernel/arch/ppc64/include/mm/frame.h
===================================================================
--- kernel/arch/ppc64/include/mm/frame.h	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc64/include/mm/frame.h	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -47,5 +47,5 @@
 
 extern void frame_arch_init(void);
-#define physmem_print()
+extern void physmem_print(void);
 
 #endif /* __ASM__ */
Index: kernel/arch/ppc64/include/mm/memory_init.h
===================================================================
--- kernel/arch/ppc64/include/mm/memory_init.h	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc64/include/mm/memory_init.h	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -38,6 +38,4 @@
 size_t get_memory_size(void);
 
-void memory_print_map(void);
-
 #endif
 
Index: kernel/arch/ppc64/src/mm/frame.c
===================================================================
--- kernel/arch/ppc64/src/mm/frame.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc64/src/mm/frame.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -39,6 +39,20 @@
 #include <align.h>
 #include <macros.h>
+#include <print.h>
 
 uintptr_t last_frame = 0;
+
+void physmem_print(void)
+{
+	unsigned int i;
+	
+	printf("Base       Size\n");
+	printf("---------- ----------\n");
+		
+	for (i = 0; i < bootinfo.memmap.count; i++) {
+		printf("%#10x %#10x\n", bootinfo.memmap.zones[i].start,
+			bootinfo.memmap.zones[i].size);
+	}
+}
 
 void frame_arch_init(void)
Index: kernel/arch/ppc64/src/mm/memory_init.c
===================================================================
--- kernel/arch/ppc64/src/mm/memory_init.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc64/src/mm/memory_init.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -44,12 +44,4 @@
 
 
-void memory_print_map(void)
-{
-	count_t i;
-	
-	for (i = 0; i < bootinfo.memmap.count; i++)
-		printf("base: %#x size: %#x\n", bootinfo.memmap.zones[i].start, bootinfo.memmap.zones[i].size);
-}
-
 /** @}
  */
Index: kernel/arch/ppc64/src/ppc64.c
===================================================================
--- kernel/arch/ppc64/src/ppc64.c	(revision b5ed4f8617310b06cf9b34a72a976bd4eaad6a71)
+++ kernel/arch/ppc64/src/ppc64.c	(revision 1b0673154d95f4f1bd78a65c9fc775c3cbe11cc8)
@@ -103,5 +103,4 @@
 void arch_pre_smp_init(void)
 {
-	memory_print_map();
 }
 
