Index: arch/mips32/src/drivers/arc.c
===================================================================
--- arch/mips32/src/drivers/arc.c	(revision 1b5013579e061f82453afdbbfe88ef4c82c71fab)
+++ arch/mips32/src/drivers/arc.c	(revision 1c9b02df11a8bf45e2d7c5fa06ed31fa4ba55dcf)
@@ -46,4 +46,51 @@
 };
 
+static char *ctypes[] = {
+	"ARC_type",
+	"CPU_type",
+	"FPU_type",
+	"PrimaryICache",
+	"PrimaryDCache",
+	"SecondaryICache",
+	"SecondaryDCache",
+	"SecondaryCache",
+	"Memory",
+	"EISAAdapter",
+	"TCAdapter",
+	"SCSIAdapter",
+	"DTIAdapter",
+	"MultiFunctionAdapter",
+	"DiskController",
+	"TapeController",
+	"CDROMController",
+	"WORMController",
+	"SerialController",
+	"NetworkController",
+	"DisplayController",
+	"ParallelController",
+	"PointerController",
+	"KeyboardController",
+	"AudioController",
+	"OtherController",
+	"DiskPeripheral",
+	"FloppyDiskPeripheral",
+	"TapePeripheral",
+	"ModemPeripheral",
+	"MonitorPeripheral",
+	"PrinterPeripheral",
+	"PointerPeripheral",
+	"KeyboardPeripheral",
+	"TerminalPeripheral",
+	"OtherPeripheral",
+	"LinePeripheral",
+	"NetworkPeripheral"
+	"OtherPeripheral",
+	"XTalkAdapter",
+	"PCIAdapter",
+	"GIOAdapter",
+	"TPUAdapter",
+	"Anonymous"
+};
+
 static arc_sbp *sbp = (arc_sbp *)PA2KA(0x1000);
 static arc_func_vector_t *arc_entry; 
@@ -75,9 +122,41 @@
 }
 
+static void arc_print_component(arc_component *c)
+{
+	int i;
+
+	printf("%s: ",ctypes[c->type]);
+	for (i=0;i < c->identifier_len;i++)
+		putchar(c->identifier[i]);
+	putchar('\n');
+}
+
+void arc_print_devices(void)
+{
+	arc_component *c,*next;
+
+	if (!arc_enabled())
+		return;
+
+	c = arc_entry->getchild(NULL);
+	while (c) {
+		arc_print_component(c);
+		next = arc_entry->getchild(c);
+		while (!next) {
+			next = arc_entry->getpeer(c);
+			if (!next)
+				c = arc_entry->getparent(c);
+			if (!c)
+				return;
+		}
+		c = next;
+	}
+}
+
 void arc_print_memory_map(void)
 {
 	arc_memdescriptor_t *desc;
 
-	if (!sbp) {
+	if (!arc_enabled()) {
 		printf("ARC not enabled.\n");
 		return;
Index: arch/mips32/src/mips32.c
===================================================================
--- arch/mips32/src/mips32.c	(revision 1b5013579e061f82453afdbbfe88ef4c82c71fab)
+++ arch/mips32/src/mips32.c	(revision 1c9b02df11a8bf45e2d7c5fa06ed31fa4ba55dcf)
@@ -84,4 +84,5 @@
 	console_init();
 	arc_print_memory_map();
+	arc_print_devices();
 }
 
