Index: kernel/arch/sparc64/Makefile.inc
===================================================================
--- kernel/arch/sparc64/Makefile.inc	(revision 00287cc152fcd78464c9296775809f965d6e96fd)
+++ kernel/arch/sparc64/Makefile.inc	(revision 0b16e9d48618c92f8b54ebb03d267308bf8fbedf)
@@ -77,5 +77,6 @@
 	arch/$(KARCH)/src/drivers/kbd.c \
 	arch/$(KARCH)/src/drivers/sgcn.c \
-	arch/$(KARCH)/src/drivers/pci.c
+	arch/$(KARCH)/src/drivers/pci.c \
+	arch/$(KARCH)/src/drivers/fhc.c
 
 ifeq ($(CONFIG_FB),y)
@@ -94,7 +95,2 @@
 		arch/$(KARCH)/src/mm/tsb.c
 endif
-
-ifdef CONFIG_Z8530
-	ARCH_SOURCES += \
-		arch/$(KARCH)/src/drivers/fhc.c
-endif
Index: kernel/arch/sparc64/src/console.c
===================================================================
--- kernel/arch/sparc64/src/console.c	(revision 00287cc152fcd78464c9296775809f965d6e96fd)
+++ kernel/arch/sparc64/src/console.c	(revision 0b16e9d48618c92f8b54ebb03d267308bf8fbedf)
@@ -63,32 +63,27 @@
 {
 #ifdef CONFIG_FB
-	ofw_tree_property_t *prop;
-	ofw_tree_node_t *screen;
-	ofw_tree_node_t *keyboard;
+	ofw_tree_property_t *prop_scr = ofw_tree_getprop(aliases, "screen");
+	if (!prop_scr)
+		panic("Cannot find property 'screen'.");
+	if (!prop_scr->value)
+		panic("Cannot find screen alias.");
+	ofw_tree_node_t *screen = ofw_tree_lookup(prop_scr->value);
+	if (!screen)
+		panic("Cannot find %s.", prop_scr->value);
 	
-	prop = ofw_tree_getprop(aliases, "screen");
-	if (!prop)
-		panic("Cannot find property 'screen'.");
-	if (!prop->value)
-		panic("Cannot find screen alias.");
-	screen = ofw_tree_lookup(prop->value);
-	if (!screen)
-		panic("Cannot find %s.", prop->value);
+	scr_init(screen);
+#endif
 
-	scr_init(screen);
-
-	prop = ofw_tree_getprop(aliases, "keyboard");
-	if (!prop)
+#ifdef CONFIG_SUN_KBD
+	ofw_tree_property_t *prop_kbd = ofw_tree_getprop(aliases, "keyboard");
+	if (!prop_kbd)
 		panic("Cannot find property 'keyboard'.");
-	if (!prop->value)
+	if (!prop_kbd->value)
 		panic("Cannot find keyboard alias.");
-	keyboard = ofw_tree_lookup(prop->value);
+	ofw_tree_node_t *keyboard = ofw_tree_lookup(prop_kbd->value);
 	if (!keyboard)
-		panic("Cannot find %s.", prop->value);
-
+		panic("Cannot find %s.", prop_kbd->value);
+	
 	kbd_init(keyboard);
-#else
-	panic("Standard console requires FB, "
-	      "but the kernel is not compiled with FB support.");
 #endif
 }
Index: kernel/arch/sparc64/src/drivers/kbd.c
===================================================================
--- kernel/arch/sparc64/src/drivers/kbd.c	(revision 00287cc152fcd78464c9296775809f965d6e96fd)
+++ kernel/arch/sparc64/src/drivers/kbd.c	(revision 0b16e9d48618c92f8b54ebb03d267308bf8fbedf)
@@ -58,5 +58,5 @@
 kbd_type_t kbd_type = KBD_UNKNOWN;
 
-#if defined (CONFIG_Z8530) || defined (CONFIG_NS16550)
+#ifdef CONFIG_SUN_KBD
 
 /** Initialize keyboard.
@@ -169,7 +169,7 @@
 		    offset;
 		
-		indev_t *kbrdin = z8530_init(z8530, devno, inr, cir, cir_arg);
-		if (kbrdin)
-			kbrd_init(kbrdin);
+		indev_t *kbrdin_z8530 = z8530_init(z8530, devno, inr, cir, cir_arg);
+		if (kbrdin_z8530)
+			kbrd_init(kbrdin_z8530);
 		
 		/*
@@ -192,7 +192,7 @@
 		    offset;
 		
-		indev_t *kbrdin = ns16550_init(ns16550, devno, inr, cir, cir_arg);
-		if (kbrdin)
-			kbrd_init(kbrdin);
+		indev_t *kbrdin_ns16550 = ns16550_init(ns16550, devno, inr, cir, cir_arg);
+		if (kbrdin_ns16550)
+			kbrd_init(kbrdin_ns16550);
 		
 		/*
@@ -215,5 +215,6 @@
 }
 
-	#endif
+#endif
+
 /** @}
  */
Index: kernel/genarch/include/drivers/z8530/z8530.h
===================================================================
--- kernel/genarch/include/drivers/z8530/z8530.h	(revision 00287cc152fcd78464c9296775809f965d6e96fd)
+++ kernel/genarch/include/drivers/z8530/z8530.h	(revision 0b16e9d48618c92f8b54ebb03d267308bf8fbedf)
@@ -121,5 +121,5 @@
 } z8530_instance_t;
 
-extern devin_t *z8530_init(z8530_t *, devno_t, inr_t, cir_t, void *);
+extern indev_t *z8530_init(z8530_t *, devno_t, inr_t, cir_t, void *);
 
 #endif
Index: kernel/genarch/src/drivers/dsrln/dsrlnin.c
===================================================================
--- kernel/genarch/src/drivers/dsrln/dsrlnin.c	(revision 00287cc152fcd78464c9296775809f965d6e96fd)
+++ kernel/genarch/src/drivers/dsrln/dsrlnin.c	(revision 0b16e9d48618c92f8b54ebb03d267308bf8fbedf)
@@ -40,5 +40,5 @@
 #include <arch/asm.h>
 
-indev_operations_t kbrdin_ops = {
+static indev_operations_t kbrdin_ops = {
 	.poll = NULL
 };
Index: kernel/genarch/src/drivers/i8042/i8042.c
===================================================================
--- kernel/genarch/src/drivers/i8042/i8042.c	(revision 00287cc152fcd78464c9296775809f965d6e96fd)
+++ kernel/genarch/src/drivers/i8042/i8042.c	(revision 0b16e9d48618c92f8b54ebb03d267308bf8fbedf)
@@ -43,5 +43,5 @@
 #include <mm/slab.h>
 
-indev_operations_t kbrdin_ops = {
+static indev_operations_t kbrdin_ops = {
 	.poll = NULL
 };
Index: kernel/genarch/src/drivers/ns16550/ns16550.c
===================================================================
--- kernel/genarch/src/drivers/ns16550/ns16550.c	(revision 00287cc152fcd78464c9296775809f965d6e96fd)
+++ kernel/genarch/src/drivers/ns16550/ns16550.c	(revision 0b16e9d48618c92f8b54ebb03d267308bf8fbedf)
@@ -43,5 +43,5 @@
 #define LSR_DATA_READY  0x01
 
-indev_operations_t kbrdin_ops = {
+static indev_operations_t kbrdin_ops = {
 	.poll = NULL
 };
@@ -65,5 +65,5 @@
 	if (pio_read_8(&dev->lsr) & LSR_DATA_READY) {
 		uint8_t x = pio_read_8(&dev->rbr);
-		chardev_push_character(&instance->kbrdin, x);
+		indev_push_character(&instance->kbrdin, x);
 	}
 }
Index: kernel/genarch/src/drivers/z8530/z8530.c
===================================================================
--- kernel/genarch/src/drivers/z8530/z8530.c	(revision 00287cc152fcd78464c9296775809f965d6e96fd)
+++ kernel/genarch/src/drivers/z8530/z8530.c	(revision 0b16e9d48618c92f8b54ebb03d267308bf8fbedf)
@@ -41,5 +41,5 @@
 #include <mm/slab.h>
 
-indev_operations_t kbrdin_ops = {
+static indev_operations_t kbrdin_ops = {
 	.poll = NULL
 };
@@ -83,5 +83,5 @@
 	if (z8530_read(&dev->ctl_a, RR0) & RR0_RCA) {
 		uint8_t x = z8530_read(&dev->ctl_a, RR8);
-		chardev_push_character(&instance->kbrdin, x);
+		indev_push_character(&instance->kbrdin, x);
 	}
 }
