Index: arch/ppc32/include/arch.h
===================================================================
--- arch/ppc32/include/arch.h	(revision a175a672ae67972fd0aeeaae855819ca1135ee7c)
+++ arch/ppc32/include/arch.h	(revision 732fd3cacb593da9b47dbd98af7a9b5528820058)
@@ -30,3 +30,5 @@
 #define __ppc32_ARCH_H__
 
+#include <arch/drivers/cuda.h>
+
 #endif
Index: arch/ppc32/include/drivers/cuda.h
===================================================================
--- arch/ppc32/include/drivers/cuda.h	(revision a175a672ae67972fd0aeeaae855819ca1135ee7c)
+++ arch/ppc32/include/drivers/cuda.h	(revision 732fd3cacb593da9b47dbd98af7a9b5528820058)
@@ -31,8 +31,11 @@
 
 #include <arch/types.h>
+#include <console/chardev.h>
 #include <typedefs.h>
 
 #define CUDA_IRQ 10
 
+chardev_t kbrd;
+
 extern void cuda_init(__address base, size_t size);
 
Index: arch/ppc32/src/drivers/cuda.c
===================================================================
--- arch/ppc32/src/drivers/cuda.c	(revision a175a672ae67972fd0aeeaae855819ca1135ee7c)
+++ arch/ppc32/src/drivers/cuda.c	(revision 732fd3cacb593da9b47dbd98af7a9b5528820058)
@@ -29,7 +29,7 @@
 #include <arch/drivers/cuda.h>
 #include <arch/asm.h>
-#include <console/chardev.h>
 #include <console/console.h>
 #include <arch/drivers/pic.h>
+#include <sysinfo/sysinfo.h>
 #include <interrupt.h>
 #include <stdarg.h>
@@ -130,5 +130,5 @@
 
 
-static chardev_t kbrd;
+chardev_t kbrd;
 static chardev_operations_t ops = {
 	.suspend = cuda_suspend,
@@ -163,4 +163,7 @@
 	chardev_initialize("cuda_kbd", &kbrd, &ops);
 	stdin = &kbrd;
+	
+	sysinfo_set_item_val("cuda", NULL, true);
+	sysinfo_set_item_val("cuda.irq", NULL, CUDA_IRQ);
 }
 
Index: arch/ppc32/src/drivers/pic.c
===================================================================
--- arch/ppc32/src/drivers/pic.c	(revision a175a672ae67972fd0aeeaae855819ca1135ee7c)
+++ arch/ppc32/src/drivers/pic.c	(revision 732fd3cacb593da9b47dbd98af7a9b5528820058)
@@ -47,5 +47,5 @@
 		pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] | (1 << intnum);
 	} else {
-		pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] | (1 << (intnum-32));
+		pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] | (1 << (intnum - 32));
 	}
 	
@@ -57,5 +57,5 @@
 		pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] & (~(1 << intnum));
 	} else {
-		pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] & (~(1 << (intnum-32)));
+		pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] & (~(1 << (intnum - 32)));
 	}
 }
@@ -66,5 +66,5 @@
 		pic[PIC_ACK_LOW] = 1 << intnum;
 	else 
-		pic[PIC_ACK_HIGH] = 1 << (intnum-32);
+		pic[PIC_ACK_HIGH] = 1 << (intnum - 32);
 }
 
Index: generic/include/ipc/irq.h
===================================================================
--- generic/include/ipc/irq.h	(revision a175a672ae67972fd0aeeaae855819ca1135ee7c)
+++ generic/include/ipc/irq.h	(revision 732fd3cacb593da9b47dbd98af7a9b5528820058)
@@ -50,4 +50,5 @@
 	CMD_PORT_WRITE_1,
 	CMD_IA64_GETCHAR,
+	CMD_PPC32_GETCHAR,
 	CMD_LAST
 } irq_cmd_type;
Index: generic/src/ipc/irq.c
===================================================================
--- generic/src/ipc/irq.c	(revision a175a672ae67972fd0aeeaae855819ca1135ee7c)
+++ generic/src/ipc/irq.c	(revision 732fd3cacb593da9b47dbd98af7a9b5528820058)
@@ -108,4 +108,9 @@
 		case CMD_IA64_GETCHAR:
 			IPC_SET_ARG2(call->data, _getc(&ski_uconsole));
+			break;
+#endif
+#if defined(ppc32) 
+		case CMD_PPC32_GETCHAR:
+			IPC_SET_ARG2(call->data, _getc(&kbrd));
 			break;
 #endif
