Index: kernel/arch/sparc64/src/drivers/kbd.c
===================================================================
--- kernel/arch/sparc64/src/drivers/kbd.c	(revision a63253421fd9024f28592eebed582cbddb29621e)
+++ kernel/arch/sparc64/src/drivers/kbd.c	(revision d99b3f2e89a5554f23c6edd0cb5ee8944fa16d8f)
@@ -87,13 +87,13 @@
 	uint32_t interrupts;
 	prop = ofw_tree_getprop(node, "interrupts");
-	if (!prop || !prop->value)
+	if ((!prop) || (!prop->value))
 		panic("Can't find \"interrupts\" property.\n");
 	interrupts = *((uint32_t *) prop->value);
-
+	
 	/*
 	 * Read 'reg' property.
 	 */
 	prop = ofw_tree_getprop(node, "reg");
-	if (!prop || !prop->value)
+	if ((!prop) || (!prop->value))
 		panic("Can't find \"reg\" property.\n");
 	
@@ -101,5 +101,4 @@
 	size_t size;
 	inr_t inr;
-	devno_t devno = device_assign_devno();
 	
 	switch (kbd_type) {
@@ -133,7 +132,7 @@
 		};
 		break;
-
+		
 	default:
-		panic("Unexpected type.\n");
+		panic("Unexpected keyboard type.\n");
 	}
 	
@@ -146,15 +145,16 @@
 	aligned_addr = ALIGN_DOWN(pa, PAGE_SIZE);
 	offset = pa - aligned_addr;
-	uintptr_t vaddr = hw_map(aligned_addr, offset + size) + offset;
-
+	
 	switch (kbd_type) {
 #ifdef CONFIG_Z8530
 	case KBD_Z8530:
-		z8530_init(devno, vaddr, inr, cir, cir_arg);
+		z8530_init(device_assign_devno(),
+		    hw_map(aligned_addr, offset + size) + offset, inr, cir, cir_arg);
 		break;
 #endif
 #ifdef CONFIG_NS16550
 	case KBD_NS16550:
-		ns16550_init(devno, (ioport_t)vaddr, inr, cir, cir_arg);
+		ns16550_init(device_assign_devno(),
+		    (ioport_t) (hw_map(aligned_addr, offset + size) + offset), inr, cir, cir_arg);
 		break;
 #endif
