Index: arch/mips32/src/drivers/arc.c
===================================================================
--- arch/mips32/src/drivers/arc.c	(revision 052da81d6e492cc87ae6e70a7e8929262d1ceabc)
+++ arch/mips32/src/drivers/arc.c	(revision e09d68ab5aa5fe4f5aa0dde9fa751a6fb3d7f2a0)
@@ -39,4 +39,5 @@
 #include <console/kconsole.h>
 #include <console/cmd.h>
+#include <mm/slab.h>
 
 /* This is a good joke, SGI HAS different types than NT bioses... */
@@ -112,4 +113,50 @@
 }
 
+
+/** Print configuration data that ARC reports about component */
+static void arc_print_confdata(arc_component *c)
+{
+	cm_resource_list *configdata;
+	int i;
+
+	if (!c->configdatasize)
+		return; /* No configuration data */
+
+	configdata = malloc(c->configdatasize, 0);
+
+	if (arc_entry->getconfigurationdata(configdata, c)) {
+		free(configdata);
+		return;
+	}
+	/* Does not seem to return meaningful data, don't use now */
+	free(configdata);
+	return;
+	
+	for (i=0; i < configdata->count; i++) {
+		switch (configdata->descr[i].type) {
+		case CmResourceTypePort:
+			printf("Port: %P-size:%d ",
+			       (__address)configdata->descr[i].u.port.start,
+			       configdata->descr[i].u.port.length);
+			break;
+		case CmResourceTypeInterrupt:
+			printf("Irq: level(%d) vector(%d) ",
+			       configdata->descr[i].u.interrupt.level,
+			       configdata->descr[i].u.interrupt.vector);
+			break;
+		case CmResourceTypeMemory:
+			printf("Memory: %P-size:%d ",
+			       (__address)configdata->descr[i].u.port.start,
+			       configdata->descr[i].u.port.length);
+			break;
+		default:
+			break;
+		}
+	}
+
+	free(configdata);
+}
+
+/** Print information about component */
 static void arc_print_component(arc_component *c)
 {
@@ -118,14 +165,17 @@
 	printf("%s: ",ctypes[c->type]);
 	for (i=0;i < c->identifier_len;i++)
-		arc_putchar(c->identifier[i]);
-	arc_putchar('\n');
-}
-
-void arc_print_devices(void)
+		printf("%c",c->identifier[i]);
+
+	printf(" ");
+	arc_print_confdata(c);
+	printf("\n");
+}
+
+/**
+ * Read from ARC bios configuration data and print it
+ */
+static int cmd_arc_print_devices(cmd_arg_t *argv)
 {
 	arc_component *c,*next;
-
-	if (!arc_enabled())
-		return;
 
 	c = arc_entry->getchild(NULL);
@@ -138,16 +188,24 @@
 				c = arc_entry->getparent(c);
 			if (!c)
-				return;
+				return 0;
 		}
 		c = next;
 	}
-}
-
-void arc_print_memory_map(void)
+	return 1;
+}
+static cmd_info_t devlist_info = {
+	.name = "arcdevlist",
+	.description = "Print arc device list",
+	.func = cmd_arc_print_devices,
+	.argc = 0
+};
+
+
+/** Read from arc bios memory map and print it
+ *
+ */
+static int cmd_arc_print_memmap(cmd_arg_t *argv)
 {
 	arc_memdescriptor_t *desc;
-
-	if (!arc_enabled())
-		return;
 
 	printf("Memory map:\n");
@@ -161,5 +219,12 @@
 		desc = arc_entry->getmemorydescriptor(desc);
 	}
-}
+	return 1;
+}
+static cmd_info_t memmap_info = {
+	.name = "arcmemmap",
+	.description = "Print arc memory map",
+	.func = cmd_arc_print_memmap,
+	.argc = 0
+};
 
 /** Print charactor to console */
@@ -208,4 +273,8 @@
 	cmd_initialize(&reboot_info);
 	cmd_register(&reboot_info);
+	cmd_initialize(&memmap_info);
+	cmd_register(&memmap_info);
+	cmd_initialize(&devlist_info);
+	cmd_register(&devlist_info);
 
 	return 0;
Index: arch/mips32/src/mips32.c
===================================================================
--- arch/mips32/src/mips32.c	(revision 052da81d6e492cc87ae6e70a7e8929262d1ceabc)
+++ arch/mips32/src/mips32.c	(revision e09d68ab5aa5fe4f5aa0dde9fa751a6fb3d7f2a0)
@@ -94,6 +94,4 @@
 	console_init();
 	debugger_init();
-	arc_print_memory_map();
-	arc_print_devices();
 	/* Setup usermode...*/
 	config.init_addr = INIT_ADDRESS;
